Download presentation
Presentation is loading. Please wait.
Published byJonathan Shields Modified over 9 years ago
1
CSCI/CSIS 603 Object-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 ©SoftMoore Consulting
2
Slide 2 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. ©SoftMoore Consulting
3
Slide 3 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 ©SoftMoore Consulting
4
Slide 4 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) ©SoftMoore Consulting
5
Slide 5 Three Dimensions of Software 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 ©SoftMoore Consulting
6
Slide 6 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 ©SoftMoore Consulting
7
Slide 7 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 ©SoftMoore Consulting “Great mathematicians stand on the shoulders of other mathematicians. Programmers tend to stand on the toes of other programmers.” – G. Poonan
8
Slide 8 Software Complexity The “essence” of software engineering is the management of complexity for large systems! ©SoftMoore Consulting “I have a very small head and I had better learn to live with it.” – E. W. Dijkstra
9
The Hrair Limit 9©SoftMoore Consulting Errors Number of Items that Must be Dealt with Simultaneously Generally Becomes Unmanageable Beyond 7 2 1423571098611
10
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 ConsultingSlide 10
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.