object-oriented software...
TRANSCRIPT
![Page 1: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/1.jpg)
The University of Iowa CS:2820 (22C:22)
Object-Oriented Software Development
!
Spring 2015
Software Complexity by
Cesare Tinelli
![Page 2: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/2.jpg)
• Software systems are complex artifacts
• Failure to master this complexity results in projects that
• are late • go over budget • do not meet requirements
Complexity
![Page 3: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/3.jpg)
• The physical world is full of complex systems (both natural and man-made)
• Software’s complexity is however fundamentally different:
• Software is unbound by physical constraints
• Industrial(-strength) software exhibits a rich set of behaviors
Complexity
![Page 4: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/4.jpg)
• Process Control (oil, gas, water, ...)
• Transportation (air traffic control, ...)
• Health Care (patient monitoring, device control, ...)
• Finance (automatic trading, bank security, ...)
• Defense (intelligence, weapons control, ...)
• Manufacturing (precision milling, assembly, ...)
• ...
Industrial Software
![Page 5: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/5.jpg)
Why Software Is Inherently Complex
1. Complexity of problem domain
2. Difficulty of managing development process
3. Flexibility afforded by software
4. Difficulty of characterizing discrete system behavior
![Page 6: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/6.jpg)
Complexity of Problem Domain
• Many, often contradictory, requirements
• functional (what must be done)
• non-functional (usability, cost, performance, consumption,...)
• Communication gap between customers and developers
• Evolving requirements
![Page 7: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/7.jpg)
Difficulty of Managing Development Process
• Fundamental task of software development:
engineering the illusion of simplicity
• However, ...
![Page 8: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/8.jpg)
Difficulty of Managing Development Process
• Modern systems are huge (106 LOC, 102
modules)
• Development team is necessary
• More developers =>
• more complex communication
• more difficult coordination
• harder to maintain design unity/integrity
![Page 9: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/9.jpg)
Flexibility Afforded by Software
• Software is the ultimate flexible product
• It is technically possible for any developer to create anything with it
• This is both a blessing and a curse
• Other industries have specialization, codes and quality standards
• Software development remains a mostly artisanal labor-intensive business
![Page 10: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/10.jpg)
Difficulty of Characterizing Discrete Systems Behavior
• Physical (analog) systems exhibit continuous behavior
• Small external perturbations produce small changes in behavior
• Software (digital) systems exhibit discrete behavior
• Small changes in input can produce large changes in output
![Page 11: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/11.jpg)
Difficulty of Characterizing Discrete Systems Behavior
• Discrete systems have a combinatorial state explosion
• Describing their behavior precisely and formally is very challenging in general
• Most software professionals are poorly trained for that
• Testing for flaws is intrinsically insufficient
![Page 12: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/12.jpg)
Common Features of Good Complex Systems
1. Nearly decomposable, hierarchic structure
2. Primitive components
3. Separation of concerns
4. Combination of common patterns
5. Stable intermediate forms
![Page 13: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/13.jpg)
• Many hierarchies can be found in a complex system
• Most important for us:
• object structure ("part of" relation)
• class structure ("is a" relation)
• We refer to them together as the system's architecture
Organized Complexity
![Page 14: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/14.jpg)
Canonical Form of a Complex System
• Classes capture common features of a set of objects
• Each object is an instance of a class
• Objects are composed of and interact with other objects
![Page 15: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/15.jpg)
Successful Complex Software Systems
• Exhibit the 5 attributes characterizing good complex systems
• Have well designed and built (i) class and (ii) object structures
(i) captures common features and behavior within a system
(ii) illustrates how different objects collaborate with one another
![Page 16: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/16.jpg)
The Software Development Predicament
• The complexity of software systems is ever increasing
• The human ability to cope with complexity is fundamentally limited
• Time-honored technique to master complexity: divide et impera
• Decomposition and abstraction are key
![Page 17: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/17.jpg)
Two Alternative Decomposition Approaches
1. Algorithmic Decomposition
Each component denotes a major step in the system's overall process
2. Object-Oriented Decomposition
Each component denotes a major agent in the system's overall process
![Page 18: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/18.jpg)
Design of a program that updates the content of a master file
![Page 19: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/19.jpg)
Design of a program that updates the content of a master file
![Page 20: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/20.jpg)
Main Advantages of OO Decomposition
It facilitates
• reuse of components and mechanisms
• system evolution over time
• separation of concerns
![Page 21: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/21.jpg)
The Role of Design in Software Development
Construct a system that [Mostow]:
• Satisfies a given (perhaps informal) functional specification
• Conforms to limitations of the target medium
• Meets implicit or explicit requirements on performance and resource usage
• Satisfies implicit or explicit design criteria on the form of the artifact
• Satisfies restrictions on the design process itself, such as its length or cost, or the tools available
![Page 22: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/22.jpg)
The Importance of Model Building in Design
• Widespread in all engineering disciplines
• Appeals to the principles of abstraction, decomposition, and hierarchy
• Models
- can be evaluated and modified before the actual system is built
- allow us to focus on important aspects by abstracting away irrelevant details
![Page 23: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/23.jpg)
Basic Elements of Software Design Methodologies
Notation The language for expressing models
Process The activities leading to the orderly construction of a system's model
Tools The artifacts that facilitate the creation and validation of models
![Page 24: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/24.jpg)
Effective OO Design and Development
Requires mastery of these underlying principles:
• abstraction
• encapsulation
• modularity
• hierarchy
• typing
• concurrency
• persistence
![Page 25: Object-Oriented Software Developmenthomepage.cs.uiowa.edu/~tinelli/classes/022/Spring15/Notes/1-complexity.pdfObject-Oriented Software Development! Spring 2015 Software Complexity!](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e7a728d12901e0bea05806e/html5/thumbnails/25.jpg)
1. G. Booch et al. Object-Oriented Analysis and Design with Applications, 3rd Edition. Addison-Wesley, 2007.
References