Upload
jonathan-shields
View
217
Download
4
Embed Size (px)
Citation preview
©SoftMoore Consulting
CSCI/CSIS 603Object-Oriented Design Patterns
“Those who cannot remember the past are condemned to repeat it.” – Georges Santayana
“Those who do not study software design patterns are condemned to reinvent them.” – John Moore
Slide 1
Slide 2©SoftMoore Consulting
Learning Outcomes
Upon successful completion of this course, a student will be able to
• Explain the role of patterns in the design of object-oriented software.
• Describe numerous well-known design patterns (patterns catalog).
• Use UML to diagram the static structure and dynamic interactions of objects and classes that participate in the patterns.
• Use patterns to design object-oriented software that is more reusable and more easily modified to adapt to changing requirements.
Slide 3©SoftMoore Consulting
Five Laws of Software Development
1. Requirements documents are always incomplete and never stable.
2. Software design independent of implementation is never correct.
3. Testing by developers is always insufficient.
4. All software evolves.
5. Schedule pressures can invalidate all plans.
“The amateur software engineer is always in search of magic, some sensational method or tool whose application promises to render software development trivial. It is the mark of the professional software engineer to know that no such panacea exists.” – Grady Booch
Slide 4©SoftMoore Consulting
Software Engineering
• Focuses on the application of basic engineering principles to the development and maintenance of software
• The systematic approach to the development, operation, maintenance, and retirement of software (ANSI/IEEE)
• A disciplined approach to building useful software by making tradeoffs among goals (SofTech)
Slide 5©SoftMoore Consulting
Three Dimensions ofSoftware Engineering
• Software Development– analysis and design– programming/implementation
• Product Assurance– testing/V&V– software configuration management– quality assurance/improvement
• Management– planning – staffing– organizing – directing/controlling
Slide 6©SoftMoore Consulting
Software Engineering Technical Goals
• Reliability– correct versus robust– must be addressed early in the software life cycle– requirements must be consistent with the cost of failure
• Efficiency– macroefficiency versus microefficiency– often conflicts with other goals– usually involves a time/space tradeoff
Slide 7©SoftMoore Consulting
Software Engineering Technical Goals(continued)
• Maintainability– must be understandable (clear structure/organization)– must support changes and enhancements
• Reusability– directly affects both quality and productivity, and hence cost
“Great mathematicians stand on the shoulders of other mathematicians. Programmers tend to stand on the toes of other programmers.”
– G. Poonan
Slide 8©SoftMoore Consulting
Software Complexity
The “essence” of software engineering is themanagement of complexity for large systems!
“I have a very small head and I had better learn to live with it.”
– E. W. Dijkstra
9©SoftMoore Consulting
The Hrair Limit
Errors
Number of Items that Must be Dealt with Simultaneously
Generally BecomesUnmanageable Beyond7 2
1 42 3 5 7 10986 11
Slide 10
Managing Complexity
• Introducing structure and organization
• Abstraction: focusing on essential properties while ignoring inessential details (levels of abstraction)
• Information Hiding: making the details of an implementation inaccessible and enforcing interfaces
• Modularity: developing distinct program modules to solve distinct pieces of the problem
• Modeling: creating a simplified representation with sufficient detail for communication and evaluation
©SoftMoore Consulting Slide 10