10
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

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

Embed Size (px)

Citation preview

Page 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

©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

Page 2: 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

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.

Page 3: 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

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

Page 4: 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

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)

Page 5: 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

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

Page 6: 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

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

Page 7: 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

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

Page 8: 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

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

Page 9: 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

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

Page 10: 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

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