150 likes | 172 Views
CS 4850: Senior Project Object-Oriented Design. OO Analysis OO Design Implementation OO Testing Deployment. OO Analysis OO Design Implementation OO Testing Deployment. Object Relationship Modeling. Class Design. Sub-System Design. Class Modeling. Object Behavior Modeling.
E N D
CS 4850: Senior Project Object-Oriented Design
OO Analysis OO Design Implementation OO Testing Deployment OO Analysis OO Design Implementation OO Testing Deployment Object Relationship Modeling Class Design Sub-System Design Class Modeling Object Behavior Modeling Responsibilities Design Message Design OOA and OOD - The Big Picture
Attributes Operations Collaborators Responsibilities Design Object Relatio- nships Class Model Message Design Use Cases Class/Object Design Object Behavior Model Design Patterns (domain Objects) Subsystem Design Mapping OOA to OOD
OOD Model OOA Model Classes Attributes Methods Relationships Behavior Objects Data Structures Algorithms Messaging Control Terminology - Design is answering the “How” question!
Table of Contents 1. Introduction 1.1 Purpose 1.2 Scope 1.3 Definitions, acronyms, abbreviations 1.4 References 2. Design Overview 2.1 Introduction 2.2 System Architecture 2.3 System Interfaces 2.4 Constraints and Assumptions 3. System Object Model 3.1 Introduction 3.2 Subsystems 3.3 Subsystem Interfaces 4. Object Descriptions (Object Design) 4.1 Objects in Subsystem 1 4.2 Objects in Subsystem 2 5. Object Collaboration (Process View) 5.1 Objects in Subsystem 1 5.2 Objects in Subsystem 2 6. Dynamic Model State and sequence diagrams 7. Data Design 8. Non-Functional Requirements 9. Supplementary Documentation Major Sections of an OO SDD Other sections and subsection may be added as needed.
Step 1: System Design (1) Partitioning the Analysis Model - From your SRS description, identify potential subsystems. A subsystem is a self-contained and highly-independent groups of classes that define a main function of the system. - Don't force subsystems to your project is not applicable! - A subsystem has: - a well-define interface (check use-cases) - reasonable number of classes - classes that communicate with each others - possibly some internal subsystems. (check use-cases)
Step 1: System Design (2) Partitioning the Analysis Model - In section 3 of the SDD (see slide #5), provide a description for each subsystem and its interface. (separate table for each subsystem) - Provide a collaboration diagram to illustrate interactions among the subsystems. Consider using UML package notation to represent subsystems.
Step 2: Object Design (1) Here, focus on the detailed design of your objects (attributes and methods) and their messages. Apply the following design activities: 1 - Algorithm design 2 - Data structure design Make sure to adhere to “information Hiding” and “functional independence” concepts as you design your objects.
Step 2: Object Design (2) Object Description For each class in each subsystem, provide object description that includes interface description and implementation description. Interface description is a listing all message that an object of the class can respond to (i.e., all public methods it provides to its users). Implementation description is the internal (hidden) details of the operations that implement the interface methods. Follow the organization in section 4 of the SDD, using table format for each class.
Step 2: Object Design (3) Algorithm Design For each class operation, provide an algorithmic description (pseudocode) as a self-contained module. Consider dividing complex operations into separate smaller operations, such that each smaller operation performs a well-defined functions. Apply stepwise refinement, such that: - define operation interfaces (list of parameters if any) - fill-in operation body sections - refine body details as needed The level of details of your algorithmic description should be sufficient enough so that the implementer can translated it to source code without help from the designer.
Step 2: Object Design (4) Data Structure Design Define needed data structures of the class (if any) in conjunction with class operations. Document your data structures in section 7 of the SDD (see slide #5). Organize this section (sub-headings) similar to section 5 if your project is divided into subsystems.
Step 2: Object Design (5) - Create a specification class diagram: - add classes and relationships needed for modeling the solution (classes of interest to the developer) - add more details into individual classes (attributes and operations details) - Expand the class diagram in the SRS to include: - other classes and relationships needed for modeling the solution (those are classes of interest to you - the developer) - details of new classes (attributes and operations)
Step 3: Object Collaboration In section 5 of the SDD (see slide #5), provide description of collaborations between objects of each subsystems. Provide a UML object collaboration diagram to illustrate potential collaborations among objects of each subsystem. Notice that collaboration is required when a class cannot fulfill all of its responsibilities on its own (i.e., the class doesn’t have method(s) to manipulate its attributes).
Feel free to modify any template you choose to fit your project design description as long as you include the sections outlined onslide #5. You may reuse your SRS template with the sections outlined on slide #5. For sections 4 of the SDD (slide #5), you can take the tables from the SRS and expand them to include design details for each class method and attributes.