Rediscovering. Modularity. Stuttgart JUG November 20 th 2012
|
|
- Moses Knight
- 5 years ago
- Views:
Transcription
1 Rediscovering Modularity Stuttgart JUG November 20 th 2012
2 Modularity Manage complexity by Encapsulation
3 Information hiding Modularity Manage complexity by Encapsulation
4 Defined interface Information hiding Modularity Manage complexity by Encapsulation
5 Information hiding Defined interface Clear responsibility Modularity Manage complexity by Encapsulation
6 Information hiding Defined interface Clear responsibility Modularity Manage complexity by Cohesion Encapsulation
7 Information hiding Defined interface Clear responsibility Modularity Manage complexity by Cohesion Encapsulation Coupling
8 Information hiding Defined interface Clear responsibility Cohesion Modularity Manage complexity by Encapsulation Coupling Abstraction
9
10
11 Information hiding Defined interface Clear responsibility Encapsulation Cohesion Coupling Abstraction
12 Information hiding Defined interface Clear responsibility Encapsulation Coupling Abstraction Cohesion Modularity
13 Complexity Composition
14 Complexity Composition Cyclomatic Complexity (CC)
15
16
17
18
19 (same problem)
20
21 Information hiding Defined interface Clear responsibility Encapsulation Coupling Abstraction Cohesion Modularity
22
23 Complexity Composition Cyclomatic Complexity (CC)
24 Complexity Composition Compositional Complexity (CC)
25
26
27 Packages Classes
28 Defined interface? Information hiding? Clear responsibility Encapsulation Coupling? Abstraction Cohesion Modularity?
29 Complexity Composition Compositional Complexity (CC)
30 Complexity Composition Compositional Complexity (CC) +Hierarchical => Scalable
31 Coupling
32 Dependencies
33 Dependencies
34
35
36 Tangles
37
38
39
40
41
42
43
44
45
46
47 =
48 = Not scalable!!
49 Ideally Start with a loose architecture
50 Ideally Start with a loose architecture Let suitable architecture emerge, without baggage
51 Ideally Start with a loose architecture Let suitable architecture emerge, without baggage At some point stronger, higher-level abstractions are needed
52 Ideally Start with a loose architecture Let suitable architecture emerge, without baggage At some point stronger, higher-level abstractions are needed (~50Kloc Martin, Foote)
53 Ideally Start with a loose architecture Let suitable architecture emerge, without baggage At some point stronger, higher-level abstractions are needed (~50Kloc Martin, Foote) Restructure to defined architecture
54 Ideally Start with a loose architecture Let suitable architecture emerge, without baggage At some point stronger, higher-level abstractions are needed (~50Kloc Martin, Foote) Restructure to defined architecture Iterate with development
55 Ideally Start with a loose architecture Let suitable architecture emerge, without baggage At some point stronger, higher-level abstractions are needed (~50Kloc Martin, Foote) Restructure to defined architecture Iterate with development Strengthen with growth
56 0.7.2 Mar 04
57 0.8.6 Oct 04
58 0.8.7 Apr 05
59 Erosion Sometimes the developers manage to maintain this purity of design through the initial development and into the first release. More often something goes wrong. The software starts to rot like a piece of bad meat. Bob Martin, Agile Software Development
60 0.8.8 May 05
61 1.0.0 Jun 06
62 1.3.0 Nov 07
63 1.3.5 Sep 08
64 Cost
65 Cost Miserable developers
66 Cost Miserable developers Cost per feature increases
67 Cost Miserable developers Cost per feature increases Unexpected impacts of change
68 Cost Miserable developers Cost per feature increases Unexpected impacts of change Unreliable schedules
69 Cost Miserable developers Cost per feature increases Unexpected impacts of change Unreliable schedules Test cycles increase
70 Cost Miserable developers Cost per feature increases Unexpected impacts of change Unreliable schedules Test cycles increase Reuse less
71 Cost Miserable developers Cost per feature increases Unexpected impacts of change Unreliable schedules Test cycles increase Reuse less Value of your code base declines
72 Technical Debt
73 Technical Debt
74 Technical Debt
75 Technical Debt
76
77
78
79
80
81
82
83 bstraction
84 bstraction
85 bstraction
86 bstraction
87 bstraction
88 bstraction
89 Abstraction
90 Abstraction
91 Refactoring Restructuring
92 Refactoring Changing code without modifying behavior to improve nonfunctional attributes. Restructuring Reorganizing a code-base without modifying the code to improve modularity
93 Refactoring Changing code without modifying behavior to improve nonfunctional attributes. Code is readable Restructuring Reorganizing a code-base without modifying the code to improve modularity Code-base is understandable
94 Refactoring Changing code without modifying behavior to improve nonfunctional attributes. Code is readable A lot of invasive code editing Restructuring Reorganizing a code-base without modifying the code to improve modularity Code-base is understandable Minimal invasive code editing
95 Refactoring Changing code without modifying behavior to improve nonfunctional attributes. Code is readable A lot of invasive code editing Scope: small worlds of a few classes at a time; what you see in the IDE. Restructuring Reorganizing a code-base without modifying the code to improve modularity Code-base is understandable Minimal invasive code editing Scope: whole code base; what you don t see in the IDE
96 Retrofitting
97 Retrofitting Physical or virtual?
98 Retrofitting Physical or virtual? Top-down or bottom-up?
99 Retrofitting Physical or virtual? Top-down or bottom-up? Bust big class tangles
100 Retrofitting Physical or virtual? Top-down or bottom-up? Bust big class tangles Create a structured model (levelized+cc) (use strategies)
101 Retrofitting Physical or virtual? Top-down or bottom-up? Bust big class tangles Create a structured model (levelized+cc) (use strategies) Adjust module boundaries (strengthen abstractions)
102 Retrofitting Physical or virtual? Top-down or bottom-up? Bust big class tangles Create a structured model (levelized+cc) (use strategies) Adjust module boundaries (strengthen abstractions) Define layers, visibility
103 Retrofitting Physical or virtual? Top-down or bottom-up? Bust big class tangles Create a structured model (levelized+cc) (use strategies) Adjust module boundaries (strengthen abstractions) Define layers, visibility Repair violations in the implementation levels
104
105 Structure101
106 Restructure101 Structure101
107 Restructure101 Structure101 Visualization
108 Restructure101 Structure101
109 Architecture Modularity Structure Mud defined, communicated, enforced interfaces, responsibility encapsulation, coupling Thank you!
Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer
Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer http://ewolff.com Why Microservices? Why Microservices? Strong modularization Replaceability Small units Sustainable Development
More informationTopics. Software Process. Agile. Requirements. Basic Design. Modular Design. Design Patterns. Testing. Quality. Refactoring.
CS310 - REVIEW Topics Process Agile Requirements Basic Design Modular Design Design Patterns Testing Quality Refactoring UI Design How these things relate Process describe benefits of using a software
More informationFrom Module To Objects
From Module To Objects It is very difficult to maintain a large monolithic block of code The solution is to divide the code into smaller pieces, called modules What is a Module? A small and manageable
More informationUnderstading Refactorings
Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations
More informationAgile Architecture. The Why, the What and the How
Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile
More informationSoftware Design COSC 4353/6353 D R. R A J S I N G H
Software Design COSC 4353/6353 D R. R A J S I N G H Week 5 Refactoring What is Refactoring? Code Smells Why Refactoring? Techniques IDEs What is Refactoring? Art of improving the design of existing code
More informationTest Driven Development (TDD)
Test Driven Development (TDD) Test Driven Development Introduction Good programmers write code, great programmers write tests Never, in the field of programming, have so many owed so much to so few - Martin
More information(Practical) SW Architectures. November 14, 2013
(Practical) SW Architectures November 14, 2013 SW Architecture SW Architecture The structure of an SW system. Separation of a software system into its components. Fundamental organization of the components.
More informationCS 575: Software Design
CS 575: Software Design Introduction 1 Software Design A software design is a precise description of a system, using a variety of different perspectives Structural Behavioral Packaging Requirements, Test/Validation
More informationA few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through
A few more things about Agile and SE Could help in interviews, but don t try to bluff your way through 1 Refactoring How to do it, where it fits in http://www.cse.ohio-state.edu/~crawfis/cse3902/index.htm
More informationDesign Concepts and Principles
Design Concepts and Principles Analysis to Design Data Object Description Entity- Relationship Diagram Data Flow Diagram Process Specification (PSPEC) Component level design (or) procedural design Data
More informationCS 292 Software Development
CS 292 Software Development and Professional Practice Structured Design and More Design Principles CS 292 Design Principles 1 Unless otherwise expressly stated, all original material of whatever nature
More informationCHAPTER 5 GENERAL OOP CONCEPTS
CHAPTER 5 GENERAL OOP CONCEPTS EVOLUTION OF SOFTWARE A PROGRAMMING LANGUAGE SHOULD SERVE 2 RELATED PURPOSES : 1. It should provide a vehicle for programmer to specify actions to be executed. 2. It should
More informationCSC207H: Software Design SOLID. CSC207 Winter 2018
SOLID CSC207 Winter 2018 1 SOLID Principles of Object-Oriented Design How do we make decisions about what is better and what is worse design? Principles to aim for instead of rules. e.g. there is no maximum
More informationArchitectural Code Analysis. Using it in building Microservices NYC Cloud Expo 2017 (June 6-8)
Architectural Code Analysis Using it in building Microservices NYC Cloud Expo 2017 (June 6-8) Agenda Intro to Structural Analysis Challenges addressed during traditional software development The new world
More informationCourse December Adrian Iftene
Course 10 12 December 2016 Adrian Iftene adiftene@info.uaic.ro Recapitulation QoS Functional Testing Non-Functional Testing Rotting Design Refactoring 2 QoS = ability to provide different priority to different
More informationTechnical Metrics for OO Systems
Technical Metrics for OO Systems 1 Last time: Metrics Non-technical: about process Technical: about product Size, complexity (cyclomatic, function points) How to use metrics Prioritize work Measure programmer
More informationSoftware Engineering
Software Engineering CSC 331/631 - Spring 2018 Object-Oriented Design Principles Paul Pauca April 10 Design Principles DP1. Identify aspects of the application that vary and separate them from what stays
More informationExpanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011
Expanding Our Horizons CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 1 Goals of the Lecture Cover the material in Chapter 8 of our textbook New perspective on objects and encapsulation
More informationChapter 1: Programming Principles
Chapter 1: Programming Principles Object Oriented Analysis and Design Abstraction and information hiding Object oriented programming principles Unified Modeling Language Software life-cycle models Key
More informationPC204. Lecture 5 Programming Methodologies. Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved. Programming Paradigms Software Engineering Exploratory Programming
More informationAntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation
AntiPatterns EEC 421/521: Software Engineering Definition: An AntiPattern describes a commonly occurring solution to a problem that generates decidedly negative consequences Refactoring Reference: Refactoring
More informationNew Concept for Article 36 Networking and Management of the List
New Concept for Article 36 Networking and Management of the List Kerstin Gross-Helmert, AFSCO 28 th Meeting of the Focal Point Network EFSA, MTG SEAT 00/M08-09 THE PRESENTATION Why a new concept? What
More informationIntroduction to System Design
Introduction to System Design Software Requirements and Design CITS 4401 Lecture 8 System Design is a creative process no cook book solutions goal driven we create a design for solving some problem constraint
More informationSetting the stage... Key Design Issues. Main purpose - Manage software system complexity by improving software quality factors
Setting the stage... Dr. Radu Marinescu 1 1946 Key Design Issues Main purpose - Manage software system complexity by...... improving software quality factors... facilitating systematic reuse Dr. Radu Marinescu
More informationAdvanced Data Modeling: Be Happier, Add More Value and Be More Valued
Advanced Data Modeling: Be Happier, Add More Value and Be More Valued Karen Lopez Karen López, A frequent speaker on data modeling, data-driven methodologies and pattern data models. SQL Server MVP She
More informationCOURSE 2 DESIGN PATTERNS
COURSE 2 DESIGN PATTERNS CONTENT Fundamental principles of OOP Encapsulation Inheritance Abstractisation Polymorphism [Exception Handling] Fundamental Patterns Inheritance Delegation Interface Abstract
More informationThe Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed
The Software Design Process CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed Outline Challenges in Design Design Concepts Heuristics Practices Challenges in Design A problem that can only be defined
More informationObject Oriented Metrics. Impact on Software Quality
Object Oriented Metrics Impact on Software Quality Classic metrics Lines Of Code Function points Complexity Code coverage - testing Maintainability Index discussed later Lines of Code KLOC = 1000 Lines
More informationEr. Himanshi Vashisht, Sanjay Bharadwaj, Sushma Sharma
International Journal Scientific Research in Computer Science, Engineering and Information Technology 2018 IJSRCSEIT Volume 3 Issue 8 ISSN : 2456-3307 DOI : https://doi.org/10.32628/cseit183833 Impact
More informationDesign Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.)
Design Pattern CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) A. Design Pattern Design patterns represent the best practices used by experienced
More informationLecture 19 Engineering Design Resolution: Generating and Evaluating Architectures
Lecture 19 Engineering Design Resolution: Generating and Evaluating Architectures Software Engineering ITCS 3155 Fall 2008 Dr. Jamie Payton Department of Computer Science University of North Carolina at
More informationChapter 1: Principles of Programming and Software Engineering
Chapter 1: Principles of Programming and Software Engineering Data Abstraction & Problem Solving with C++ Fifth Edition by Frank M. Carrano Software Engineering and Object-Oriented Design Coding without
More informationSOLID: Principles of OOD
SOLID: Principles of OOD CS480 Software Engineering http://cs480.yusun.io February 18, 2015 Yu Sun, Ph.D. http://yusun.io yusun@cpp.edu Software Nature Software Entropy Software tends to degrade / decay
More informationAn Introduction to Software Architecture By David Garlan & Mary Shaw 94
IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark a class discussion An Introduction to
More informationElementary Concepts of Object Class
Elementary Concepts of Object Class Modeling entities and their behaviour by objects. A class as a specification of objects and as an object factory, computation as message passing/function call between
More informationChapter 8: Class and Method Design
Chapter 8: Class and Method Design Objectives Become familiar with coupling, cohesion, and connascence. Be able to specify, restructure, and optimize object designs. Be able to identify the reuse of predefined
More informationRoll No. :. Invigilator's Signature :.. CS/MCA/SEM-4/MCA-401/ SOFTWARE ENGINEERING & TQM. Time Allotted : 3 Hours Full Marks : 70
Name : Roll No. :. Invigilator's Signature :.. CS/MCA/SEM-4/MCA-401/2012 2012 SOFTWARE ENGINEERING & TQM Time Allotted : 3 Hours Full Marks : 70 The figures in the margin indicate full marks. Candidates
More informationCOURSE 11 DESIGN PATTERNS
COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/
More informationMaintenance Coordinator SQL SERVERS EXPRESS REVISIONS 8x
Current Patch: 8.0.2.5 IMPORTANT NOTE: At many times patches are added to the download without any notification. Also note that there may be fixes not recorded here. How to install update To install an
More informationA Separation of Concerns Clean Architecture on Android
A Separation of Concerns Clean Architecture on Android Kamal Kamal Mohamed Android Developer, //TODO Find Better Title @ Outware Mobile Ryan Hodgman Official Despiser of Utils Classes @ Outware Mobile
More informationSupplementary Notes for Software Reengineering - July 8, 2011
Supplementary Notes for Software Reengineering - July 8, 2011 Note that these add to the material presented in the lecture slides. There will be exam question(s) on this topic! Most of our courses have
More informationJava Software Solutions
Chapter 7 Object-Oriented Design Concepts Java Software Solutions Foundations of Program Design Seventh Edition John Lewis William Loftus OO Class Terminology Interface (conceptual definition): Set of
More informationPrinciples of Software Construction: Objects, Design, and Concurrency
Principles of Software Construction: Objects, Design, and Concurrency Designing (sub-) systems Responsibility assignment Charlie Garrod Michael Hilton School of Computer Science 1 Administrivia Reading
More informationENCAPSULATION. private, public, scope and visibility rules. packages and package level access.
ENCAPSULATION private, public, scope and visibility rules. packages and package level access. Q. Explain the term Encapsulation with an example? Ans: The wrapping up to data and methods into a single units
More informationObject-Oriented Design
Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration
More informationCreating a Lattix Dependency Model The Process
Creating a Lattix Dependency Model The Process Whitepaper January 2005 Copyright 2005-7 Lattix, Inc. All rights reserved The Lattix Dependency Model The Lattix LDM solution employs a unique and powerful
More informationDesigning with patterns - Refactoring. What is Refactoring?
Designing with patterns - Refactoring Bottom up based application of patterns Improving the design after it has been written What is Refactoring? Two definitions, the object and act of change in software
More informationKlocwork Architecture Excavation Methodology. Nikolai Mansurov Chief Scientist & Architect
Klocwork Architecture Excavation Methodology Nikolai Mansurov Chief Scientist & Architect Overview Introduction Production of software is evolutionary and involves multiple releases Evolution of existing
More informationThis report is based on sampled data. Jun 1 Jul 6 Aug 10 Sep 14 Oct 19 Nov 23 Dec 28 Feb 1 Mar 8 Apr 12 May 17 Ju
0 - Total Traffic Content View Query This report is based on sampled data. Jun 1, 2009 - Jun 25, 2010 Comparing to: Site 300 Unique Pageviews 300 150 150 0 0 Jun 1 Jul 6 Aug 10 Sep 14 Oct 19 Nov 23 Dec
More informationInheritance. EEC 521: Software Engineering. Dealing with Change. Polymorphism. Software Design. Changing requirements Code needs to be flexible
Inheritance EEC 521: Software Engineering Software Design Design Patterns: Decoupling Dependencies 10/15/09 EEC 521: Software Engineering 1 Inheritance is the mechanism by which one class can acquire properties/responsibilities
More informationThe Design Patterns Matrix From Analysis to Implementation
The Design Patterns Matrix From Analysis to Implementation This is an excerpt from Shalloway, Alan and James R. Trott. Design Patterns Explained: A New Perspective for Object-Oriented Design. Addison-Wesley
More informationMSO Lecture 6. Wouter Swierstra. September 24, 2015
1 MSO Lecture 6 Wouter Swierstra September 24, 2015 2 LAST LECTURE Case study: CAD/CAM system What are design patterns? Why are they important? What are the Facade and Adapter patterns? 3 THIS LECTURE
More informationWhat is a Programming Paradigm
INTRODUCTION This chapter begins with brief discussion of various Programming paradigms that C++ supports i.e., procedural programming style, object based programming style and object oriented programming
More informationRefactoring Practice: How it is and How it Should be Supported
Refactoring Practice: How it is and How it Should be Supported Zhenchang Xing and EleniStroulia Presented by: Sultan Almaghthawi 1 Outline Main Idea Related Works/Literature Alignment Overview of the Case
More information04 Webservices. Web APIs REST Coulouris. Roy Fielding, Aphrodite, chp.9. Chp 5/6
04 Webservices Web APIs REST Coulouris chp.9 Roy Fielding, 2000 Chp 5/6 Aphrodite, 2002 http://www.xml.com/pub/a/2004/12/01/restful-web.html http://www.restapitutorial.com Webservice "A Web service is
More informationROBOT OOP. Learning the basics of Object Oriented Programming using robots from popular culture
ROBOT OOP Learning the basics of Object Oriented Programming using robots from popular culture GOOD SOFTWARE Highly cohesive Loosely coupled IN THE BEGINNING Before OOP there was Procedural A procedure
More information5. Application Layer. Introduction
Book Preview This is a sample chapter of Professional PHP - Building maintainable and secure applications. The book starts with a few theory chapters and after that it is structured as a tutorial. The
More informationSoftware Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6
Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6 Some Terms: Architecture the manner in which the components of a computer
More informationOverview. Introduction to Embedded Systems. What is an embedded system? What are some of their characteristics? What is the required skill set?
Embedded Basics Overview Introduction to Embedded Systems What is an embedded system? What are some of their characteristics? What is the required skill set? Software Development Process Waterfall vs Agile
More informationIdeation to Integration: Smart Glasses for Enterprise
Ideation to Integration: Smart Glasses for Enterprise Tony Sun Analyst May 10, 2016 Agenda Idea origin: Looking for the next smartphone Evolution of idea: Failure in the initial market Execution of idea:
More informationProgramming Languages. Function-Closure Idioms. Adapted from Dan Grossman's PL class, U. of Washington
Programming Languages Function-Closure Idioms Adapted from Dan Grossman's PL class, U. of Washington More idioms We know the rule for lexical scope and function closures Now what is it good for A partial
More informationIntro to: Design Principles
Intro to: Design Principles Pragmatic Programmer: Eliminate Effects Between Unrelated Things design components that are: self-contained, independent, and have a single, well-defined purpose Software Design
More informationCPSC 310: Sample Final Exam Study Questions 2014S1 (These are in addition to the Study Questions listed at the end of some lectures)
CPSC 310: Sample Final Exam Study Questions 2014S1 (These are in addition to the Study Questions listed at the end of some lectures) 1. Select the best functional requirement from the list of requirements
More informationMSO Object Creation Singleton & Object Pool
MSO Object Creation Singleton & Object Pool Wouter Swierstra & Hans Philippi October 25, 2018 Object Creation: Singleton & Object Pool 1 / 37 This lecture How to create objects The Singleton Pattern The
More informationFaster, Better, and Cheaper? Building the SD-WAN Business Case
Faster, Better, and Cheaper? Building the SD-WAN Business Case John Burke CIO & Principal Research Analyst Nemertes Research john@nemertes.com @burkejohne #FutureWAN Agenda ±About Nemertes ±The Current
More informationDescribing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms?
Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms? CIS 8690 Enterprise Architectures Duane Truex, 2013 Cognitive Map of 8090
More informationSoftware Architecture and Design I
Software Architecture and Design I Instructor: Yongjie Zheng February 23, 2017 CS 490MT/5555 Software Methods and Tools Outline What is software architecture? Why do we need software architecture? How
More informationMSO Lecture 6. Wouter Swierstra (adapted by HP) September 28, 2017
1 MSO Lecture 6 Wouter Swierstra (adapted by HP) September 28, 2017 2 LAST LECTURE Case study: CAD/CAM system What are design patterns? Why are they important? What are the Facade and Adapter patterns?
More informationRecap: Class Diagrams
Com S 362: Object-Oriented Analysis and Design Recap: Class Diagrams Class diagrams represent design structure Three parts: name, attribute, operations Visibility, attribute type, multiplicity Association,
More informationIn this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks
In this Lecture you will Learn: Design Patterns Chapter 15 What types of patterns have been identified in software development How to apply design patterns during software development The benefits and
More information2. First Program Stuff
CSE 232 First Midterm, Overview: 1. Getting Started 1. we got started 2. First Program Stuff 1. Compiler vs. Intepreter a. do you know all the steps to create an executable? 2. Variables are declared a.
More informationCS 370 High-Quality Routines D R. M I C H A E L J. R E A L E F A L L
CS 370 High-Quality Routines D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction Routine An individual method or procedure invocable for a single purpose Examples: function in C++, method in Java,
More informationObject-Oriented and Classical Software Engineering DESIGN 11/12/2017. CET/CSC490 Software Engineering Design CHAPTER 14. Stephen R. Schach.
Slide 14.1 CHAPTER 14 Slide 14.2 Object-Oriented and Classical Software Engineering DESIGN Eighth Edition, WCB/McGraw-Hill, 2011 Stephen R. Schach Overview Slide 14.3 Overview (contd) Slide 14.4 and abstraction
More informationCS560: Formal Modelling and Implementation of Systems (Term II)
CS560: Formal Modelling and Implementation of Systems (Term II) Software Design A.P.O Riordan, 2009 Email: a.oriordan@cs.ucc.ie Course Webpage: http://www.cs.ucc.ie/~adrian/cs560.html CS560 1 Design Design
More informationDesign Patterns Thinking and Architecture at Scale
Design Patterns Thinking and Architecture at Scale This talk is based on Net Objectives design patterns training and Al Shalloway and Jim Trott s book Design Patterns Explained. Please contact Al at alshall@netobjectives.com
More informationInformation Hiding and Aspect-Oriented Modeling
Information Hiding and Aspect-Oriented Modeling Wisam Al Abed and Jörg Kienzle School of Computer Science, McGill University Montreal, QC H3A2A7, Canada Wisam.Alabed@mail.mcgill.ca, Joerg.Kienzle@mcgill.ca
More informationSoftware Design Heuristics
Software Design Heuristics Software Design Heuristics CONTENT 1. Introduction 2. Encapsulation/Information Hiding 3. Strong Cohesion 4. Loose Dr. Samira Sadaoui 1 Introduction Introduction Software Design
More informationClient Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module
Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as
More informationArchitectural Blueprint
IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark a class discussion Architectural Blueprint
More informationCSC 408F/CSC2105F Lecture Notes
CSC 408F/CSC2105F Lecture Notes These lecture notes are provided for the personal use of students taking CSC 408H/CSC 2105H in the Fall term 2004/2005 at the University of Toronto. Copying for purposes
More informationMSO Refactoring. Hans Philippi. October 2, Refactoring 1 / 49
MSO Refactoring Hans Philippi October 2, 2018 Refactoring 1 / 49 This lecture What is refactoring?... or how to deal with the horrible code your colleagues have created... or how to deal with the horrible
More informationDesign Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman
Chapter 8 Design Concepts Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit educational
More informationCSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich
CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and
More informationAn Introduction to Software Architecture. David Garlan & Mary Shaw 94
An Introduction to Software Architecture David Garlan & Mary Shaw 94 Motivation Motivation An increase in (system) size and complexity structural issues communication (type, protocol) synchronization data
More informationDavid Bernstein Five Development Practices Essential for Scrum Teams
David Bernstein Five Development Practices Essential for Scrum Teams 1 Welcome! I m David Scott Bernstein Software developer since 1980 Trained 8,000 developers since 1990 Published author since 2015 Website:
More informationJonathan Haulund. AEHF Program Office United States Air Force. Reuse: Dealing With The Hand You re Dealt
Jonathan Haulund Chieff Software f Engineer AEHF Program Office United States Air Force 1 Definition of software reuse: Check Wikipedia Let s focus on extant code reuse - extending software from an existing
More informationBuilding Routines. Quality Routines. Quality Routines. Quality Routines. Quality Routines. Routine. What makes a quality routine
Building Routines Routine individual function or procedure invocable for a single purpose What makes a quality routine easier to see a low quality routine low quality routine coming up Procedure HandleStuff(
More informationQuantify the project. Better Estimates. Resolve Software crises
Quantify the project Quantifying schedule, performance,work effort, project status Helps software to be compared and evaluated Better Estimates Use the measure of your current performance to improve your
More informationHow It All Stacks Up - or - Bar Charts with Plotly. ISC1057 Janet Peterson and John Burkardt Computational Thinking Fall Semester 2016
* How It All Stacks Up - or - Bar Charts with Plotly ISC1057 Janet Peterson and John Burkardt Computational Thinking Fall Semester 2016 In a game of poker, players bet by tossing chips into the center
More informationChapter 5 Object-Oriented Programming
Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares
More informationUNIT II Requirements Analysis and Specification & Software Design
UNIT II Requirements Analysis and Specification & Software Design Requirements Analysis and Specification Many projects fail: because they start implementing the system: without determining whether they
More informationThe Object-Oriented Paradigm
ch01.fm Page 3 Friday, June 8, 2001 11:58 AM CHAPTER 1 The Object-Oriented Paradigm Overview This chapter introduces you to the object-oriented paradigm by comparing and contrasting it with something familiar:
More informationDesign and Information Hiding
Design and Information Hiding 15-214: Foundations of Software Engineering Jonathan Aldrich Related Reading: D. L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. CACM 15(12):1053-1058,
More informationSOA = Same Old Architecture?
SOA = Same Old Architecture? Gregor Hohpe Software Engineer www.eaipatterns.com Could It Be So Easy? WSDL SOAP WS-* Int MyMethod(String text) { } WebMethod Cut Copy Paste Buzzword compliant, but not a
More informationAnalysis of the Test Driven Development by Example
Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /
More informationAnalysis of Various Software Metrics Used To Detect Bad Smells
The International Journal Of Engineering And Science (IJES) Volume 5 Issue 6 Pages PP -14-20 2016 ISSN (e): 2319 1813 ISSN (p): 2319 1805 Analysis of Various Software Metrics Used To Detect Bad Smells
More informationWelcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas
Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas What is this class about? While this class is called Design Patterns, there are many other items of critical
More informationMeasuring Complexity
Measuring Complexity outline why should we measure the complexity of a software system? what might we want to measure? complexity of the source code within a code module between code modules complexity
More informationMSO Lecture 12. Wouter Swierstra (adapted by HP) October 26, 2017
1 MSO Lecture 12 Wouter Swierstra (adapted by HP) October 26, 2017 2 LAST LECTURE Analysis matrix; Decorator pattern; Model-View-Controller; Observer pattern. 3 THIS LECTURE How to create objects 4 CATEGORIES
More information