logo资料库

software modeling and design 软件建模和设计英文版.pdf

第1页 / 共578页
第2页 / 共578页
第3页 / 共578页
第4页 / 共578页
第5页 / 共578页
第6页 / 共578页
第7页 / 共578页
第8页 / 共578页
资料共578页,剩余部分请下载后查看
Cover
Half-title
Title
Copyright
Dedication
Contents
Preface
Overview
What This Book Provides
Intended Audience
Ways to Read This Book
Annotated Table of Contents
Part I: Overview
Chapter 1: Introduction
Chapter 2: Overview of the UML Notation
Chapter 3: Software Life Cycle Models and Processes
Chapter 4: Software Design and Architecture Concepts
Chapter 5: Overview of Software Modeling and Design Method
Part II: Software Modeling
Chapter 6: Use Case Modeling
Chapter 7: Static Modeling
Chapter 8: Object and Class Structuring
Chapter 9: Dynamic Interaction Modeling
Chapter 10: Finite State Machines
Chapter 11: State-Dependent Dynamic Interaction Modeling
Part III: Architectural Design
Chapter 12: Overview of Software Architectures
Chapter 13: Software Subsystem Architectural Design
Chapter 14: Designing Object-Oriented Software Architectures
Chapter 15: Designing ClientServer Software Architectures
Chapter 16: Designing Service-Oriented Architectures
Chapter 17: Designing Component-Based Software Architectures
Chapter 18: Designing Concurrent and Real-Time Software Architectures
Chapter 19: Designing Software Product Line Architectures
Chapter 20: Software Quality Attributes
Part IV: Case Studies
Chapter 21: ClientServer Software Architecture Case Study: Banking System
Chapter 22: Service-Oriented Architecture Case Study: Online Shopping System
Chapter 23: Component-Based Software Architecture Case Study: Emergency Monitoring System
Chapter 24: Real-Time Software Architecture Case Study: Automated Guided Vehicle System
Appendix A: Catalog of Software Architectural Patterns
Appendix B: Teaching Considerations
Acknowledgments
PART I: Overview
1 Introduction
1.1 Software Modeling
1.2 Object-Oriented Methods and the Unified Modeling Language
1.3 Software Architectural Design
1.4 Method and Notation
1.5 COMET: A UML-Based Software Modeling and Design Method for Software Applications
1.6 UML as a Standard
1.6.1 Model-Driven Architecture with UML
1.7 Multiple Views of Software Architecture
1.8 Evolution of Software Modeling and Design Methods
1.9 Evolution of Object-Oriented Analysis and Design Methods
1.10 Survey of Concurrent, Distributed, and Real-Time Design Methods
1.11 Summary
EXERCISES
2 Overview of the UML Notation
2.1 UML Diagrams
2.2 Use Case Diagrams
2.3 Classes and Objects
2.4 Class Diagrams
2.4.1 Associations
2.4.2 Aggregation and Composition Hierarchies
2.4.3 Generalization/Specialization Hierarchy
2.4.4 Visibility
2.5 Interaction Diagrams
2.5.1 Communication Diagrams
2.5.2 Sequence Diagrams
2.6 State Machine Diagrams
2.7 Packages
2.8 Concurrent Communication Diagrams
2.8.1 Message Communication on Concurrent Communication Diagrams
2.9 Deployment Diagrams
2.10 UML Extension Mechanisms
2.10.1 Stereotypes
2.10.2 Tagged Values
2.10.3 Constraints
2.11 Conventions Used in This Book
2.11.1 Requirements Modeling
2.11.2 Analysis Modeling
Classes
Objects
Messages
Statecharts
2.11.3 Design Modeling
Active and Passive Classes
Active and Passive Objects
Messages
Operations
2.12 Summary
EXERCISES
3 Software Life Cycle Models and Processes
3.1 Software Life Cycle Models
3.1.1 Waterfall Life Cycle Model
3.1.2 Limitations of the Waterfall Model
3.1.3 Throwaway Prototyping
3.1.4 Evolutionary Prototyping by Incremental Development
3.1.5 Combining Throwaway Prototyping and Incremental Development
3.1.6 Spiral Model
3.1.7 Unified Software Development Process
3.2 Design Verification and Validation
3.2.1 Software Quality Assurance
3.2.2 Performance Analysis of Software Designs
3.3 Software Life Cycle Activities
3.3.1 Requirements Analysis and Specification
3.3.2 Architectural Design
3.3.3 Detailed Design
3.3.4 Coding
3.4 Software Testing
3.4.1 Unit Testing
3.4.2 Integration Testing
3.4.3 System Testing
3.4.4 Acceptance Testing
3.5 Summary
EXERCISES
4 Software Design and Architecture Concepts
4.1 Object-Oriented Concepts
4.1.1 Objects and Classes
4.2 Information Hiding
4.2.1 Information Hiding in Object-Oriented Design
4.2.2 Example of Information Hiding
4.2.3 Designing Information Hiding Objects
4.3 Inheritance and Generalization/Specialization
4.4 Concurrent Processing
4.4.1 Sequential and Concurrent Applications
4.4.2 Concurrent Objects
4.4.3 Cooperation between Concurrent Objects
4.4.4 Synchronization Problem
Example of Synchronization between Concurrent Objects
Pick-and-Place Robot
Drilling Robot
4.4.5 Producer/Consumer Problem
4.4.6 Asynchronous Message Communication
4.4.7 Synchronous Message Communication with Reply
4.5 Design Patterns
4.6 Software Architecture and Components
4.6.1 Components and Component Interfaces
4.6.2 Connectors
4.7 Software Quality Attributes
4.8 Summary
EXERCISES
5 Overview of Software Modeling and Design Method
5.1 COMET Use Case–Based Software Life Cycle
5.1.1 Requirements Modeling
5.1.2 Analysis Modeling
5.1.3 Design Modeling
5.1.4 Incremental Software Construction
5.1.5 Incremental Software Integration
5.1.6 System Testing
5.2 Comparison of the COMET Life Cycle with Other Software Processes
5.2.1 Comparison of the COMET Life Cycle with Unified Software Development Process
5.2.2 Comparison of the COMET Life Cycle with the Spiral Model
5.3 Requirements, Analysis, and Design Modeling
5.3.1 Activities in Requirements Modeling
5.3.2 Activities in Analysis Modeling
5.3.3 Activities in Design Modeling
5.4 Designing Software Architectures
5.5 Summary
EXERCISES
PART II: Software Modeling
6 Use Case Modeling
6.1 Requirements Modeling
6.1.1 Requirements Analysis
6.1.2 Requirements Specification
6.1.3 Quality Attributes of Software Requirements Specification
6.2 Use Cases
6.2.1 A Simple Use Case
6.3 Actors
6.3.1 Actors, Roles, and Users
6.3.2 Primary and Secondary Actors
6.3.3 Modeling Actors
6.3.4 Who Is the Actor?
6.4 Identifying Use Cases
6.5 Documenting Use Cases in the Use Case Model
6.6 Example of Use Case Description
6.7 Use Case Relationships
6.8 The Include Relationship
6.8.1 Example of Include Relationship and Inclusion Use Cases
6.8.2 Structuring a Lengthy Use Case
6.9 The Extend Relationship
6.9.1 Extension Points
6.9.2 Example of Extension Point and Extension Use Cases
6.10 Use Case Structuring Guidelines
6.11 Specifying Nonfunctional Requirements
6.12 Use Case Packages
6.13 Activity Diagrams
6.14 Summary
EXERCISES
7 Static Modeling
7.1 Associations between Classes
7.1.1 Depicting Associations on Class Diagrams
7.1.2 Multiplicity of Associations
7.1.3 Ternary Associations
7.1.4 Unary Associations
7.1.5 Association Classes
7.2 Composition and Aggregation Hierarchies
7.3 Generalization/Specialization Hierarchy
7.4 Constraints
7.5 Static Modeling and the UML
7.5.1 Static Modeling of the Problem Domain
7.6 Static Modeling of the System Context
7.7 Categorization of Classes Using UML Stereotypes
7.8 Modeling External Classes
7.8.1 Examples of Developing a Software System Context Class Diagram from External Classes
7.8.2 Actors and External Classes
7.8.3 Example of Developing a Software System Context Class Diagram from Actors
7.9 Static Modeling of Entity Classes
7.9.1 Modeling Class Attributes
7.10 Summary
EXERCISES
8 Object and Class Structuring
8.1 Object and Class Structuring Criteria
8.2 Modeling Application Classes and Objects
8.3 Object and Class Structuring Categories
8.4 External Classes and Software Boundary Classes
8.5 Boundary Classes and Objects
8.5.1 User Interaction Objects
8.5.2 Proxy Objects
8.5.3 Device I/O Boundary Objects
8.5.4 Depicting External Classes and Boundary Classes
8.6 Entity Classes and Objects
8.7 Control Classes and Objects
8.7.1 Coordinator Objects
8.7.2 State-Dependent Control Objects
8.7.3 Timer Objects
8.8 Application Logic Classes and Objects
8.8.1 Business Logic Objects
8.8.2 Algorithm Objects
8.8.3 Service Objects
8.9 Summary
EXERCISES
9 Dynamic Interaction Modeling
9.1 Object Interaction Modeling
9.1.1 Communication Diagrams
9.1.2 Sequence Diagrams
9.1.3 Analysis and Design Decisions in Object Interaction Modeling
9.1.4 Sequence Diagram versus Communication Diagram
9.1.5 Use Cases and Scenarios
9.1.6 Generic and Instance Forms of Interaction Diagrams
9.2 Message Sequence Numbering on Interaction Diagrams
9.2.1 Message Labels on Interaction Diagrams
9.2.2 Message Sequence Numbering on Interaction Diagrams
9.2.3 Concurrent and Alternative Message Sequences
9.2.4 Message Sequence Description
9.3 Dynamic Interaction Modeling
9.4 Stateless Dynamic Interaction Modeling
9.5 Examples of Stateless Dynamic Interaction Modeling
9.5.1 View Alarms Example
9.5.2 Make Order Request Example
9.6 Summary
EXERCISES
10 Finite State Machines
10.1 Finite State Machines and State Transitions
10.1.1 Events
10.1.2 States
10.2 Examples of Statecharts
10.2.1 Example of ATM Statechart
10.2.2 Example of Microwave Oven Statechart
10.3 Events and Guard Conditions
10.4 Actions
10.4.1 Actions on State Transitions
10.4.2 Entry Actions
10.4.3 Exit Actions
10.5 Hierarchical Statecharts
10.5.1 Hierarchical State Decomposition
10.5.2 Composite States
10.5.3 Aggregation of State Transitions
10.5.4 Orthogonal Statecharts
10.6 Guidelines for Developing Statecharts
10.7 Developing Statecharts from Use Cases
10.8 Example of Developing a Statechart from a Use Case
10.8.1 Develop Statechart for Each Use Case
10.8.2 Consider Alternative Sequences
10.8.3 Develop Integrated Statechart
10.8.4 Develop Hierarchical Statechart
10.9 Summary
EXERCISES
11 State-Dependent Dynamic Interaction Modeling
11.1 Steps in State-Dependent Dynamic Interaction Modeling
11.2 Modeling Interaction Scenarios Using Interaction Diagrams and Statecharts
11.3 Example of State-Dependent Dynamic Interaction Modeling: Banking System
11.3.1 Determine Main Sequence
11.3.2 Determine Alternative Sequences
11.3.3 Main Sequence: Valid PIN
11.3.4 Alternative Sequence: Invalid PIN
11.3.5 Alternative Sequence: Third Invalid PIN
11.3.6 Alternative Sequence: Stolen or Expired Card
11.3.7 Generic Interaction Diagram with all Scenarios
11.3.8 Sequencing on Control Object and Statechart
11.4 Summary
EXERCISES
PART III: Architectural Design
12 Overview of Software Architecture
12.1 Software Architecture and Component-Based Software Architecture
12.1.1 Component-Based Software Architecture
12.1.2 Architecture Stereotypes
12.2 Multiple Views of a Software Architecture
12.2.1 Structural View of a Software Architecture
12.2.2 Dynamic View of a Software Architecture
12.2.3 Deployment View of a Software Architecture
12.3 Software Architectural Patterns
12.3.1 Layers of Abstraction Architectural Pattern
12.3.2 Call/Return Pattern
12.3.3 Asynchronous Message Communication Pattern
12.3.4 Synchronous Message Communication with Reply Pattern
12.4 Documenting Software Architectural Patterns
12.5 Interface Design
12.6 Designing Software Architectures
12.7 Summary
EXERCISES
13 Software Subsystem Architectural Design
13.1 Issues in Software Architectural Design
13.2 Integrated Communication Diagrams
13.3 Separation of Concerns in Subsystem Design
13.3.1 Composite Object
13.3.2 Geographical Location
13.3.3 Clients and Services
13.3.4 User Interaction
13.3.5 Interface to External Objects
13.3.6 Scope of Control
13.4 Subsystem Structuring Criteria
13.4.1 Client Subsystem
13.4.2 User Interaction Subsystem
13.4.3 Service Subsystem
13.4.4 Control Subsystem
13.4.5 Coordinator Subsystem
13.4.6 Input/Output Subsystem
13.5 Decisions about Message Communication between Subsystems
13.6 Summary
EXERCISES
14 Designing Object-Oriented Software Architectures
14.1 Concepts, Architectures, and Patterns
14.2 Designing Information Hiding Classes
14.3 Designing Class Interface and Operations
14.3.1 Designing Class Operations from the Interaction Model
14.3.2 Example of Designing Class Operations from the Interaction Model
14.3.3 Designing Class Operations from the Static Model
14.4 Data Abstraction Classes
14.4.1 Example of Data Abstraction Class
14.5 State-Machine Classes
14.6 Graphical User Interaction Classes
14.7 Business Logic Classes
14.8 Inheritance in Design
14.8.1 Class Hierarchies
14.8.2 Abstract Classes
14.8.3 Example of Abstract Classes and Subclasses
14.8.4 Abstract Superclass and Subclass Design
Design of the Account Abstract Superclass
Design of the Checking Account Subclass
Design of the Savings Account Subclass
14.9 Class Interface Specifications
14.9.1 Example of Class Interface Specification
14.10 Detailed Design of Information Hiding Classes
14.10.1 Detailed Design of the Account Abstract Superclass
14.10.2 Detailed Design of the Checking Account Subclass
14.10.3 Detailed Design of the Savings Account Subclass
14.11 Polymorphism and Dynamic Binding
14.11.1 Example of Polymorphism and Dynamic Binding
14.12 Implementation of Classes in Java
14.13 Summary
EXERCISES
15 Designing Client/Server Software Architectures
15.1 Concepts, Architectures, and Patterns for Client/Server Architectures
15.2 Client/Service Software Architectural Structure Patterns
15.2.1 Multiple Client/Single Service Architectural Pattern
15.2.2 Multiple Client/Multiple Service Architectural Pattern
15.2.3 Multi-tier Client/Service Architectural Pattern
15.3 Architectural Communication Patterns for Client/Server Architectures
15.3.1 Synchronous Message Communication with Reply Pattern
15.3.2 Asynchronous Message Communication with Callback Pattern
15.4 Middleware in Client/Server Systems
15.4.1 Platforms for Client/Server Systems
15.4.2 Java Remote Method Invocation
15.5 Design of Service Subsystems
15.5.1 Sequential Service Design
15.5.2 Example of Sequential Service Design
15.5.3 Concurrent Service Design
15.6 Design of Wrapper Classes
15.6.1 Design of Database Wrapper Classes
15.6.2 Example of Database Wrapper Class
15.7 From Static Models to Relational Database Design
15.7.1 Relational Database Concepts
15.7.2 Identifying Primary Keys
15.7.3 Mapping Associations to Foreign Keys
15.7.3.1 Mapping One-to-One and Zero-or-One Associations to Foreign Keys
15.7.3.2 Mapping One-to-Many Associations to Foreign Keys
15.7.4 Mapping Association Classes to Association Tables
15.7.5 Mapping Whole/Part Relationship to Relational Database
15.7.6 Mapping Generalization/Specialization Relationship to Relational Database
15.7.6.1 Mapping Superclass and Subclasses to Relational Tables
15.7.6.2 Mapping Subclasses Only to Relational Tables
15.7.6.3 Mapping Superclass Only to Relational Tables
15.8 Summary
EXERCISES
16 Designing Service-Oriented Architectures
16.1 Concepts, Architectures, and Patterns for Service-Oriented Architecture
16.1.1 Design Principles for Services
16.2 Software Architectural Broker Patterns
16.2.1 Service Registration Pattern
16.2.2 Broker Forwarding Pattern
16.2.3 Broker Handle Pattern
16.2.4 Service Discovery Pattern
16.3 Technology Support for Service-Oriented Architecture
16.3.1 Web Service Protocols
16.3.2 Web Services
16.3.3 Registration Services
16.3.4 Brokering and Discovery Services
16.4 Software Architectural Transaction Patterns
16.4.1 Two-Phase Commit Protocol Pattern
16.4.2 Compound Transaction Pattern
16.4.3 Long-Living Transaction Pattern
16.5 Negotiation Pattern
16.5.1 Example of Negotiation Pattern
16.6 Service Interface Design in Service-Oriented Architecture
16.7 Service Coordination in Service-Oriented Architecture
16.8 Designing Service-Oriented Architectures
16.9 Service Reuse
16.10 Summary
EXERCISES
17 Designing Component-Based Software Architectures
17.1 Concepts, Architectures, and Patterns for Component-Based Software Architectures
17.2 Designing Distributed Component-Based Software Architectures
17.3 Composite Subsystems and Components
17.4 Modeling Components with UML
17.4.1 Design of Component Interfaces
17.4.2 Provided and Required Interfaces
17.4.3 Connectors and Interconnecting Components
17.4.4 Designing Composite Components
17.5 Component Structuring Criteria
17.5.1 Proximity to the Source of Physical Data
17.5.2 Localized Autonomy
17.5.3 Performance
17.5.4 Specialized Hardware
17.5.5 I/O Component
17.6 Group Message Communication Patterns
17.6.1 Broadcast Message Communication Pattern
17.6.2 Subscription/Notification Message Communication Pattern
17.6.3 Concurrent Service Design with Subscription and Notification
17.7 Application Deployment
17.7.1 Application Deployment Issues
17.7.2 Example of Application Deployment
17.8 Summary
EXERCISES
18 Designing Concurrent and Real-Time Software Architectures
18.1 Concepts, Architectures, and Patterns for Concurrent and Real-Time Software Architectures
18.2 Characteristics of Real-Time Systems
18.3 Control Patterns for Real-Time Software Architectures
18.3.1 Centralized Control Architectural Pattern
18.3.2 Distributed Control Architectural Pattern
18.3.3 Hierarchical Control Architectural Pattern
18.4 Concurrent Task Structuring
18.5 I/O Task Structuring Criteria
18.5.1 Event Driven I/O Tasks
18.5.2 Periodic I/O Tasks
18.5.3 Demand Driven I/O Tasks
18.6 Internal Task Structuring Criteria
18.6.1 Periodic Tasks
18.6.2 Demand Driven Tasks
18.6.3 Control Tasks
18.6.4 User Interaction Tasks
18.7 Developing the Concurrent Task Architecture
18.7.1 Initial Concurrent Communication Diagram
18.8 Task Communication and Synchronization
18.8.1 Asynchronous (Loosely Coupled) Message Communication
18.8.2 Synchronous (Tightly Coupled) Message Communication with Reply
18.8.3 Synchronous (Tightly Coupled) Message Communication without Reply
18.8.4 Event Synchronization
18.8.5 Task Interaction via Information Hiding Object
18.8.6 Revised Concurrent Communication Diagram
18.9 Task Interface and Task Behavior Specifications
18.9.1 Example of TIS for Banking Service Task
18.9.2 Example of TIS for Card Reader Interface Task
18.10 Implementation of Concurrent Tasks in Java
18.11 Summary
EXERCISES
19 Designing Software Product Line Architectures
19.1 Evolutionary Software Product Line Engineering
19.2 Requirements Modeling for Software Product Lines
19.2.1 Use Case Modeling for Software Product Lines
19.2.2 Feature Modeling
19.3 Analysis Modeling for Software Product Lines
19.3.1 Static Modeling for Software Product Lines
19.3.2 Dynamic Interaction Modeling for Software Product Lines
19.4 Dynamic State Machine Modeling for Software Product Lines
19.5 Design Modeling for Software Product Lines
19.5.1 Modeling Component-Based Software Architectures
19.5.2 Software Architectural Patterns
19.6 Summary
EXERCISES
20 Software Quality Attributes
20.1 Maintainability
20.2 Modifiability
20.3 Testability
20.4 Traceability
20.5 Scalability
20.6 Reusability
20.7 Performance
20.8 Security
20.9 Availability
20.10 Summary
EXERCISES
PART IV: Case Studies
21 Client/Server Software Architecture Case Study: Banking System
21.1 Problem Description
21.2 Use Case Model
21.2.1 Validate PIN Use Case
21.2.2 Withdraw Funds Concrete Use Case
21.2.3 Query Account Concrete Use Case
21.2.4 Transfer Funds Concrete Use Case
21.3 Static Modeling
21.3.1 Static Modeling of the Problem Domain
21.3.2 Static Modeling of the System Context
21.3.3 Static Modeling of the Entity Classes
21.4 Object Structuring
21.4.1 Client/Server Subsystem Structuring
21.4.2 ATM Client Object and Class Structuring: Boundary Objects
21.4.3 ATM Client Object and Class Structuring: Objects Participating in Use Cases
21.4.4 Object Structuring in Service Subsystem
21.5 Dynamic Modeling
21.5.1 Message Sequence Description for Client-Side Validate PIN Interaction Diagram
21.5.2 Message Sequence Description for Server-Side Validate PIN Interaction Diagram
21.5.3 Message Sequence Description for Client-Side Withdraw Funds Interaction Diagram
21.5.4 Message Sequence Description for Server-Side Withdraw Funds Interaction Diagram
21.6 ATM Statechart
21.6.1 Processing Customer Input Composite State
21.6.2 Processing Transaction Composite State
21.6.3 Terminating Transaction Composite State
21.7 Design of Banking System
21.8 Integrating the Communication Model
21.9 Structuring the System into Subsystems
21.10 Design of ATM Client Subsystem
21.10.1 Design the ATM Subsystem Concurrent Task Architecture
21.10.2 Define the ATM Subsystem Task Interfaces
21.10.3 Design the ATM Client Information Hiding Classes
21.11 Design of Banking Service Subsystem
21.11.1 Design the Banking Service Subsystem Concurrent Task Architecture
21.11.2 Design the Banking Service Information Hiding Classes
21.11.3 Design the Banking Service Interfaces
21.12 Relational Database Design
21.13 Deployment of Banking System
21.14 Alternative Design Considerations
21.15 Detailed Design
21.15.1 Example of Event Sequencing Logic for Card Reader Interface Task
21.15.2 Example of Event Sequencing Logic for ATM Control Task
21.15.3 Example of Event Sequencing Logic for Banking Service Task
22 Service-Oriented Architecture Case Study: Online Shopping System
22.1 Problem Description
22.2 Use Case Modeling
22.2.1 Use Case Description for Browse Catalog
22.2.2 Use Case Description for Make Order Request
22.2.3 Use Case Description for Process Delivery Order
22.2.4 Use Case Description for Confirm Shipment and Bill Customer
22.2.5 Activity Diagram for View Order Use Case
22.3 Static Modeling
22.3.1 Software System Context Modeling
22.3.2 Static Entity Class Modeling of the Problem Domain
22.4 Object and Class Structuring
22.5 Dynamic Modeling
22.5.1 Dynamic Modeling for Browse Catalog
22.5.2 Dynamic Modeling for Make Order Request
22.5.3 Dynamic Modeling for Process Delivery Order
22.5.4 Dynamic Modeling for Confirm Shipment and Bill Customer
22.5.5 Dynamic Modeling for View Order
22.6 Broker and Wrapper Technology Support for Service-Oriented Architecture
22.7 Design Modeling
22.7.1 Overview of Service-Oriented Architecture
22.7.2 Layered Software Architecture
22.7.3 Architectural Communication Patterns
22.7.4 Concurrent Software Design
22.7.5 Service Interface Design
22.7.6 Design of Service-Oriented Software Architecture
22.7.7 Design of Component Ports and Interfaces
22.8 Service Reuse
23 Component-Based Software Architecture Case Study: Emergency Monitoring System
23.1 Problem Description
23.2 Use Case Modeling
23.2.1 View Monitoring Data Use Case Description
23.2.2 View Alarms Use Case Description
23.2.3 Generate Monitoring Data Use Case Description
23.2.4 Generate Alarm Use Case Description
23.3 Static Modeling
23.3.1 Emergency Monitoring System Context Class Diagram
23.4 Dynamic Modeling
23.4.1 Class and Object Structuring
23.4.2 Communication Diagrams for Use Cases
23.4.3 Communication Diagram for View Alarms Use Case
23.4.4 Communication Diagram for View Monitoring Data Use Case
23.4.5 Communication Diagram for Generate Alarm Use Cases
23.4.6 Communication Diagram for Generate Monitoring Status Use Case
23.5 Design Modeling
23.5.1 Integrated Communication Diagram
23.5.2 Layered Component-Based Architecture
23.5.3 Architectural Communication Patterns
23.5.4 Distributed Component-Based Software Architecture
23.5.5 Component and Service Interface Design
23.6 Software Component Deployment
24 Real-Time Software Architecture Case Study: Automated Guided Vehicle System
24.1 Problem Description
24.2 Use Case Modeling
24.2.1 Move to Station Use Case
24.2.2 Send Status Use Case
24.3 Static Modeling
24.3.1 Conceptual Static Modeling
24.3.2 Software System Context Modeling
24.4 Object and Class Structuring
24.5 Dynamic State Machine Modeling
24.6 Dynamic Interaction Modeling
24.6.1 Dynamic Modeling for Move to Station
24.6.2 Dynamic Modeling for Send Vehicle Status
24.7 Design Modeling
24.7.1 Integrated Communication Diagram
24.7.2 Component-Based Software Architecture of Factory Automation System
24.7.3 Software Architecture of Automatic Guided Vehicle System
24.7.4 Concurrent Software Architecture
24.7.5 Architectural Communication Patterns
24.7.6 Component-Based Software Architecture
24.7.7 Design of Component Interfaces
APPENDIX A: Catalog of Software Architectural Patterns
A.1 Software Architectural Structure Patterns
A.1.1 Broker Pattern
A.1.2 Centralized Control Pattern
A.1.3 Distributed Control Pattern
A.1.4 Hierarchical Control Pattern
A.1.5 Layers of Abstraction Pattern
A.1.6 Multiple Client/Multiple Service Pattern
A.1.7 Multiple Client/Single Service Pattern
A.1.8 Multi-tier Client/Service Pattern
A.2 Software Architectural Communication Patterns
A.2.1 Asynchronous Message Communication Pattern
A.2.2 Asynchronous Message Communication with Callback Pattern
A.2.3 Bidirectional Asynchronous Message Communication Pattern
A.2.4 Broadcast Pattern
A.2.5 Broker Forwarding Pattern
A.2.6 Broker Handle Pattern
A.2.7 Call/Return Pattern
A.2.8 Negotiation Pattern
A.2.9 Service Discovery Pattern
A.2.10 Service Registration Pattern
A.2.11 Subscription/Notification Pattern
A.2.12 Synchronous Message Communication with Reply Pattern
A.2.13 Synchronous Message Communication without Reply Pattern
A.3 Software Architectural Transaction Patterns
A.3.1 Compound Transaction Pattern
A.3.2 Long-Living Transaction Pattern
A.3.3 Two-Phase Commit Protocol Pattern
APPENDIX B: Teaching Considerations
B.1 Overview
B.2 Suggested Academic Courses
B.3 Suggested Industrial Courses
B.4 Design Exercises
Glossary
Answers to Exercises
Bibliography
Index
This page intentionally left blank
Software Modeling and Design This book provides all you need to know for modeling and design of soft- ware applications, from use cases to software architectures in UML. It shows you how to apply the COMET UML-based modeling and design method to real-world problems. The author describes architectural pat- terns for various architectures, such as broker, discovery, and transaction patterns for service-oriented architectures, and layered patterns for soft- ware product line architectures, and addresses software quality attributes, including maintainability, modifiability, testability, traceability, scalabil- ity, reusability, performance, availability, and security. Complete case studies illustrate design issues for different software architectures: a banking system for client/server architectures, an online shopping system for service-oriented architectures, an emergency moni- toring system for component-based software architectures, and an auto- mated guided vehicle system for real-time software architectures. Organized as an introduction followed by several self-contained chap- ters, the book is perfect for senior undergraduate or graduate courses in software engineering and for experienced software engineers who want a quick reference at each stage of the analysis, design, and development of large-scale software systems. Hassan Gomaa is Professor of Computer Science and Software Engi- neering at George Mason University. Gomaa has more than thirty years’ experience in software engineering, in both industry and academia. He has published more than 170 technical papers and is the author of three books: Designing Software Product Lines with UML; Designing Concur- rent, Distributed, and Real-Time Applications with UML; and Software Design Methods for Concurrent and Real-Time Systems.
SOFTWARE MODELING AND DESIGN UML, Use Cases, Patterns, and Software Architectures Hassan Gomaa George Mason University, Fairfax, Virginia
cambridge university press Cambridge, New York, Melbourne, Madrid, Cape Town, Singapore, S˜ao Paulo, Delhi, Tokyo, Mexico City Cambridge University Press 32 Avenue of the Americas, New York, NY 10013-2473, USA www.cambridge.org Information on this title: www.cambridge.org/9780521764148 C Hassan Gomaa 2011 This publication is in copyright. Subject to statutory exception and to the provisions of relevant collective licensing agreements, no reproduction of any part may take place without the written permission of Cambridge University Press. First published 2011 Printed in the United States of America A catalog record for this publication is available from the British Library. Library of Congress Cataloging in Publication data Gomaa, Hassan. Software modeling and design : UML, use cases, patterns, and software architectures / Hassan Gomaa. p. cm. Includes bibliographical references and index. ISBN 978-0-521-76414-8 (hardback) 1. Computer software – Development. 2. Software architecture. QA76.76.D47G6522 2011 003 2010049584 .3–dc22 3. Computer simulation. I. Title. ISBN 978-0-521-76414-8 Hardback Cambridge University Press has no responsibility for the persistence or accuracy of URLs for external or third-party internet websites referred to in this publication and does not guarantee that any content on such websites is, or will remain, accurate or appropriate.
To Gill, William and Neela, Alex, Amanda and Neil, and Edward
分享到:
收藏