SE201 · Chapter 6 · Annotated SlidesSoftware Design
Original
Overview

Software Design

The purpose of design, quality guidelines and design principles, fundamental concepts (abstraction, architecture, modularity, information hiding, stepwise refinement, functional independence: cohesion and coupling), architectural patterns (MVC, layered, client–server, repository, pipe and filter) and user-interface design rules.

How to read this page

Every original slide is shown unchanged. Yellow marks on a slide point to a numbered note: hover or tap a mark to jump to its note, and hover a note to see its marks. Questions tagged Past exam appeared on a real paper; Prediction questions are likely angles, not confirmed. Pick an answer to each question: a wrong pick tells you why it is wrong, so you can try again.

All 50 slides
  1. 1 Slide 1
  2. 2 Design
  3. 3 Purpose of Design
  4. 4 Software Design
  5. 5 Software Engineering Design or From Analysis Model to Design Model
  6. 6 A possible step-by-step guide:
  7. 7 Design and Quality
  8. 8 Quality Guidelines
  9. 9 Quality Guidelines
  10. 10 Design Principles
  11. 11 Design Principles
  12. 12 Design Principles
  13. 13 Fundamental Concepts
  14. 14 Best practices
  15. 15 Architecture
  16. 16 Architecture
  17. 17 Modularity
  18. 18 Modularity
  19. 19 Sizing Modules: Two Views
  20. 20 Information Hiding
  21. 21 Stepwise Refinement
  22. 22 Stepwise Refinement
  23. 23 Functional Independence
  24. 24 Functional Independence
  25. 25 Architectural abstraction
  26. 26 Uses of Architectural Model
  27. 27 Non-functional system Requirements dictate Architectural Style
  28. 28 Slide 28
  29. 29 Architectural patterns
  30. 30 The Model-View-Controller (MVC) pattern
  31. 31 Model-View-Controller
  32. 32 Model-View-Controller
  33. 33 Layered architecture
  34. 34 A generic layered architecture
  35. 35 A generic layered architecture
  36. 36 Two Tier Client-Server Architecture
  37. 37 Data-Centered/Repository Architecture
  38. 38 Data-Centered/Repository Architecture
  39. 39 Data-Centered/Repository
  40. 40 Data Flow/Pipe &Filter Architecture
  41. 41 Data Flow/Pipe &Filter Architecture
  42. 42 Interface Design
  43. 43 Interface Design
  44. 44 Design Issues
  45. 45 Golden Rules
  46. 46 Interface Design
  47. 47 Interface Analysis
  48. 48 WebApp Interface Design
  49. 49 Effective WebApp Interfaces
  50. 50 References
Slide 1 / 50

Slide 1

Slide 1: Slide 1
Slide 2 / 50

Design

Slide 2: Design
Slide 3 / 50

Purpose of Design

Slide 3: Purpose of Design

Notes

  1. Design translates requirements into a blueprint for construction; it is where quality is built in.

Slide 4 / 50

Software Design

Slide 4: Software Design
Slide 5 / 50

Software Engineering Design or From Analysis Model to Design Model

Slide 5: Software Engineering Design or From Analysis Model to Design Model
Slide 6 / 50

A possible step-by-step guide:

Slide 6: A possible step-by-step guide:
Slide 7 / 50

Design and Quality

Slide 7: Design and Quality
Slide 8 / 50

Quality Guidelines

Slide 8: Quality Guidelines
Slide 9 / 50

Quality Guidelines

Slide 9: Quality Guidelines
Slide 10 / 50

Design Principles

Slide 10: Design Principles

Notes

  1. Principles: design should be traceable to requirements, not reinvent the wheel, minimize the gap with the problem, be uniform, accommodate change.

Slide 11 / 50

Design Principles

Slide 11: Design Principles
Slide 12 / 50

Design Principles

Slide 12: Design Principles
Slide 13 / 50

Fundamental Concepts

Slide 13: Fundamental Concepts

Notes

  1. Fundamental concepts: abstraction, architecture, patterns, separation of concerns, modularity, information hiding, functional independence, refinement, refactoring.

Slide 14 / 50

Best practices

Slide 14: Best practices
Slide 15 / 50

Architecture

Slide 15: Architecture
Slide 16 / 50

Architecture

Slide 16: Architecture
Slide 17 / 50

Modularity

Slide 17: Modularity

Notes

  1. Modularity: divide into modules. Too few = hard to understand; too many = integration cost. Aim for the minimum-cost region.

Slide 18 / 50

Modularity

Slide 18: Modularity
Slide 19 / 50

Sizing Modules: Two Views

Slide 19: Sizing Modules: Two Views
Slide 20 / 50

Information Hiding

Slide 20: Information Hiding
Slide 21 / 50

Stepwise Refinement

Slide 21: Stepwise Refinement
Slide 22 / 50

Stepwise Refinement

Slide 22: Stepwise Refinement
Slide 23 / 50

Functional Independence

Slide 23: Functional Independence

Notes

  1. Functional independence: HIGH cohesion (a module does one thing) and LOW coupling (few dependencies between modules).

  2. Memory trick High cohesion, low coupling.

Exam angle

PredictionQ1

A good design aims for:

Slide 24 / 50

Functional Independence

Slide 24: Functional Independence
Slide 25 / 50

Architectural abstraction

Slide 25: Architectural abstraction
Slide 26 / 50

Uses of Architectural Model

Slide 26: Uses of Architectural Model
Slide 27 / 50

Non-functional system Requirements dictate Architectural Style

Slide 27: Non-functional system Requirements dictate Architectural Style
Slide 28 / 50

Slide 28

Slide 28: Slide 28
Slide 29 / 50

Architectural patterns

Slide 29: Architectural patterns

Notes

  1. Architectural pattern: a proven, reusable solution to a recurring architecture problem.

Slide 30 / 50

The Model-View-Controller (MVC) pattern

Slide 30: The Model-View-Controller (MVC) pattern

Notes

  1. MVC: Model (data and logic), View (presentation), Controller (handles input, updates model). Lets one model have many views.

Exam angle

PredictionQ1

In MVC, the component that handles user input is the:

Slide 31 / 50

Model-View-Controller

Slide 31: Model-View-Controller
Slide 32 / 50

Model-View-Controller

Slide 32: Model-View-Controller
Slide 33 / 50

Layered architecture

Slide 33: Layered architecture

Notes

  1. Layered: each layer uses only the layer below (UI → business logic → data). Easy to replace layers; performance overhead.

Slide 34 / 50

A generic layered architecture

Slide 34: A generic layered architecture
Slide 35 / 50

A generic layered architecture

Slide 35: A generic layered architecture
Slide 36 / 50

Two Tier Client-Server Architecture

Slide 36: Two Tier Client-Server Architecture

Notes

  1. Client–server: services on servers, clients request them over a network.

Slide 37 / 50

Data-Centered/Repository Architecture

Slide 37: Data-Centered/Repository Architecture
Slide 38 / 50

Data-Centered/Repository Architecture

Slide 38: Data-Centered/Repository Architecture
Slide 39 / 50

Data-Centered/Repository

Slide 39: Data-Centered/Repository
Slide 40 / 50

Data Flow/Pipe &Filter Architecture

Slide 40: Data Flow/Pipe &Filter Architecture

Notes

  1. Pipe and filter: data flows through a sequence of transformations (compilers, batch processing).

Exam angle

PredictionQ1

A compiler (lexer → parser → code generator) best fits which pattern?

Slide 41 / 50

Data Flow/Pipe &Filter Architecture

Slide 41: Data Flow/Pipe &Filter Architecture
Slide 42 / 50

Interface Design

Slide 42: Interface Design
Slide 43 / 50

Interface Design

Slide 43: Interface Design
Slide 44 / 50

Design Issues

Slide 44: Design Issues
Slide 45 / 50

Golden Rules

Slide 45: Golden Rules

Exam angle

PredictionQ1

Which is one of Mandel’s golden rules?

Slide 46 / 50

Interface Design

Slide 46: Interface Design
Slide 47 / 50

Interface Analysis

Slide 47: Interface Analysis
Slide 48 / 50

WebApp Interface Design

Slide 48: WebApp Interface Design
Slide 49 / 50

Effective WebApp Interfaces

Slide 49: Effective WebApp Interfaces
Slide 50 / 50

References

Slide 50: References