| |
| |
Introduction to Software Engineering Design | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
Engineering Design | |
| |
| |
Engineering Problem Solving | |
| |
| |
Initial State | |
| |
| |
Operational State | |
| |
| |
Thinking about the Problem | |
| |
| |
Problem Solution | |
| |
| |
Goal State | |
| |
| |
Software Engineering Design | |
| |
| |
Why Study Software Engineering Design? | |
| |
| |
Reasons for Studying Software Design in Product Development | |
| |
| |
Reasons for Studying Software Design in Project Management | |
| |
| |
Software Design Challenges | |
| |
| |
Design Challenge | |
| |
| |
| |
Requirements Volatility | |
| |
| |
Design Challenge | |
| |
| |
| |
Process | |
| |
| |
Design Challenge | |
| |
| |
| |
Technology | |
| |
| |
Design Challenge | |
| |
| |
| |
Ethical and Professional Practices | |
| |
| |
Design Challenge | |
| |
| |
| |
Managing Design Influences | |
| |
| |
Stakeholders | |
| |
| |
Development Organization's Structure | |
| |
| |
Context of Software Design | |
| |
| |
Software Design Process | |
| |
| |
Software Architecture | |
| |
| |
Detailed Design | |
| |
| |
Interface Design | |
| |
| |
Component Design | |
| |
| |
Construction Design | |
| |
| |
Human-Computer Interface Design | |
| |
| |
Software Design Documentation | |
| |
| |
Software Design Management | |
| |
| |
Roles of the Software Designer | |
| |
| |
Systems Engineer | |
| |
| |
Software Architect | |
| |
| |
Component Designer | |
| |
| |
Software Design Fundamentals | |
| |
| |
General Software Design Principles | |
| |
| |
Modularization | |
| |
| |
Abstraction | |
| |
| |
Encapsulation | |
| |
| |
Coupling | |
| |
| |
Cohesion | |
| |
| |
Separation of Interface and Implementation | |
| |
| |
Completeness and Sufficiency | |
| |
| |
Practical Software Design Considerations | |
| |
| |
Design for Minimizing Complexity | |
| |
| |
Design for Change | |
| |
| |
Software Design Strategies | |
| |
| |
Structured Design | |
| |
| |
Object-Oriented Design | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
References | |
| |
| |
Software Design with Unified Modeling Language | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
What Is UML? | |
| |
| |
Why Study UML? | |
| |
| |
The UML's Fundamentals | |
| |
| |
Structural Modeling | |
| |
| |
Component Diagrams | |
| |
| |
Logical versus Physical Components | |
| |
| |
Class Diagrams | |
| |
| |
Classes | |
| |
| |
Name Compartment | |
| |
| |
Attribute Compartment | |
| |
| |
Operation Compartment | |
| |
| |
Relationships | |
| |
| |
Dependency | |
| |
| |
Association | |
| |
| |
Aggregation | |
| |
| |
Composition | |
| |
| |
Generalization | |
| |
| |
Realization | |
| |
| |
Deployment Diagrams | |
| |
| |
Behavioral Modeling | |
| |
| |
Use Case Diagrams | |
| |
| |
Interaction Diagrams | |
| |
| |
Communication Diagrams | |
| |
| |
Sequence Diagrams | |
| |
| |
Concurrency in Interaction Diagrams | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Principles of Software Architecture | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
What Is Software Architecture? | |
| |
| |
Why Study Software Architecture? | |
| |
| |
Key Tasks in Architectural Design | |
| |
| |
Identifying Stakeholders' Concerns | |
| |
| |
Identifying Appropriate Architectural Views | |
| |
| |
Identifying Architectural Styles and Patterns | |
| |
| |
Identifying System Interfaces | |
| |
| |
Identifying Impact of Architectural Decisions in Organization | |
| |
| |
Impact on Customer Base | |
| |
| |
Impact on Budget and Schedule | |
| |
| |
Impact from Resource Availability | |
| |
| |
Identifying the System's Major Components and Interfaces | |
| |
| |
Evaluating and Validating the Architecture | |
| |
| |
Introducing Policies for Design Synchronicity | |
| |
| |
Problem Solving in Software Architecture | |
| |
| |
Inputs | |
| |
| |
Constraints | |
| |
| |
Outputs | |
| |
| |
Software Architecture Process | |
| |
| |
Understand and Evaluate Requirements | |
| |
| |
Elicitation | |
| |
| |
Requirement Sources | |
| |
| |
Elicitation Techniques | |
| |
| |
Analysis | |
| |
| |
Specification and Validation | |
| |
| |
Specific | |
| |
| |
Correct | |
| |
| |
Complete | |
| |
| |
Consistent | |
| |
| |
Attainable | |
| |
| |
Verifiable | |
| |
| |
Designing the Architecture | |
| |
| |
The 4 + 1 View Model | |
| |
| |
User View | |
| |
| |
Process View | |
| |
| |
Physical View | |
| |
| |
Development View | |
| |
| |
Logical View | |
| |
| |
Components and Connectors | |
| |
| |
Designing Logical Architectural Elements Using Data Flows | |
| |
| |
Designing Logical Architectural Elements Using Styles and Patterns | |
| |
| |
Designing the Process Architecture | |
| |
| |
Processes | |
| |
| |
Threads | |
| |
| |
Evaluating the Architecture | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Patterns and Styles in Software Architecture | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
Architectural Styles and Patterns | |
| |
| |
History of Architectural Styles and Patterns | |
| |
| |
Architectural Pattern Classification | |
| |
| |
Data-Centered Systems | |
| |
| |
Blackboard Pattern | |
| |
| |
Data Flow Systems | |
| |
| |
Pipe and Filter Pattern | |
| |
| |
Distributed Systems | |
| |
| |
Client-Server Pattern | |
| |
| |
Broker Pattern | |
| |
| |
Interactive Systems | |
| |
| |
Model-View-Controller Pattern | |
| |
| |
Hierarchical Systems | |
| |
| |
Main Program and Subroutine | |
| |
| |
Layered Pattern | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Principles of Detailed Design | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
What Is Detailed Design? | |
| |
| |
Key Tasks in Detailed Design | |
| |
| |
Detailed Design Process | |
| |
| |
Understanding the Architecture and Requirements | |
| |
| |
Creating Detailed Designs | |
| |
| |
Interface Design | |
| |
| |
External Interface Design | |
| |
| |
Internal Interface Design | |
| |
| |
Graphical User Interface Design | |
| |
| |
Designing Internal Structure of Components | |
| |
| |
Classes | |
| |
| |
Interfaces, Types, Subtypes, Dynamic Binding, and Polymorphism | |
| |
| |
Objects | |
| |
| |
Design Principles for Internal Component Design | |
| |
| |
Open-Closed Principle | |
| |
| |
Liskov Substitution Principle | |
| |
| |
Interface Segregation Principle | |
| |
| |
Programming Styles in Detailed Design | |
| |
| |
Function Names | |
| |
| |
Variable Names | |
| |
| |
Modeling Internal Behavior of Components | |
| |
| |
Design Components Using Design Patterns | |
| |
| |
Architectural versus Design Patterns | |
| |
| |
Classification of Design Patterns | |
| |
| |
Documenting Design Patterns | |
| |
| |
Document the Software Design | |
| |
| |
Interface Control Document | |
| |
| |
Software Version Document | |
| |
| |
Monitor and Control Implementation | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Creational Design Patterns in Detailed Design | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
Creational Design Patterns | |
| |
| |
Abstract Factory | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Factory Method | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Builder | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Prototype | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Singleton | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
Reference | |
| |
| |
Structural and Behavioral Patterns in Detailed Design | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
Structural Design Patterns | |
| |
| |
Adapter | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Composite | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Facade | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Behavioral Design Patterns | |
| |
| |
Iterator | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Observer | |
| |
| |
Problem | |
| |
| |
Structure | |
| |
| |
Implementation | |
| |
| |
Benefits | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
Reference | |
| |
| |
Principles of Construction Design | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
What Is Construction Design? | |
| |
| |
Why Study Construction Design? | |
| |
| |
Behavioral Construction Design | |
| |
| |
Flow-Based Designs | |
| |
| |
State-Based Designs | |
| |
| |
Table-Based Designs | |
| |
| |
Limited-Entry Decision Table | |
| |
| |
Extended-Entry Decision Table | |
| |
| |
Mixed-Entry Decision Table | |
| |
| |
Table-Based Construction | |
| |
| |
Programming Design Language | |
| |
| |
Software Construction Using Styles | |
| |
| |
Formatting Conventions | |
| |
| |
Indentation | |
| |
| |
Brace Placement | |
| |
| |
Naming Conventions | |
| |
| |
Documentation Conventions | |
| |
| |
Documenting Files | |
| |
| |
Documenting Functions | |
| |
| |
Minimizing Complexity in Construction Design | |
| |
| |
Quality Evaluation of Construction Design | |
| |
| |
Peer Reviews | |
| |
| |
Unit Testing | |
| |
| |
Cyclomatic Complexity | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Human-Computer Interface Design; Jacob Somervell | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
What Is Human-Computer Interface Design? | |
| |
| |
Why Study Human-Computer Interface Design? | |
| |
| |
General HCI Design Principles | |
| |
| |
Human-Computer Interface Design Methods | |
| |
| |
Getting Started | |
| |
| |
Fidelity in Prototypes | |
| |
| |
Metaphors | |
| |
| |
Gestalt Principles | |
| |
| |
Reusing Earlier Designs | |
| |
| |
Evaluation of HCI Quality | |
| |
| |
Usability Testing | |
| |
| |
Analytic Testing | |
| |
| |
Empirical Testing | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Software Design Management, Leadership, and Ethics; Luis Daniel Otero | |
| |
| |
Chapter Objectives | |
| |
| |
Conceptual Overview | |
| |
| |
What Is Software Design Management? | |
| |
| |
Why Study Design Management? | |
| |
| |
The Concept of Quality | |
| |
| |
Design Management Framework | |
| |
| |
Planning Design Efforts | |
| |
| |
Scoping | |
| |
| |
Work Breakdown Structure | |
| |
| |
Budgeting | |
| |
| |
Organizing | |
| |
| |
Linear Responsibility Chart | |
| |
| |
Scheduling with Gantt Charts and Network Diagrams | |
| |
| |
Probability of Time to Completion | |
| |
| |
Establish Change Control Policy | |
| |
| |
Implementation Phase | |
| |
| |
Earned Value Management | |
| |
| |
Termination Stage | |
| |
| |
Leading the Design Effort | |
| |
| |
Personality Traits and Leadership | |
| |
| |
Personality Dimensions | |
| |
| |
Traits of Effective Leaders | |
| |
| |
Ethical Leadership | |
| |
| |
Power | |
| |
| |
Key Leadership Skills | |
| |
| |
Communication Skills | |
| |
| |
Networking Skills | |
| |
| |
Motivation Skills | |
| |
| |
Negotiation Skills | |
| |
| |
Ethics in Software Design | |
| |
| |
Public and Product Principles | |
| |
| |
Judgment Principle | |
| |
| |
Management Principle | |
| |
| |
Chapter Summary | |
| |
| |
Review Questions | |
| |
| |
Chapter Exercises | |
| |
| |
References | |
| |
| |
Index | |