Iteration 5: Final Design - edogdu/software-engineering-course GitHub Wiki

A final update on the design:

The results of the system design process are recorded in the System Design Document (SDD). This document completely describes the system at the architecture level, including subsystems and their services, hardware mapping, data management, access control, global software control structure, and boundary conditions. The SDD should define a virtual machine that implements all requirements in the RAD, and it should provide a foundational guide for further implementation details all the way to an executable solution.

Note that the SDD is a "live" document that should be incrementally expanded and refined during review cycles.

Audience

The audience for the SDD includes the software architect and lead members (liaisons) from each subsystem development team.

To do:

  1. Complete Software Design Ddocument (SDD) (below) in regard to comments from the previous iteration, and submit a PDF copy to Blackboard,
  2. Continue implementation,
    1. Actively use GitHub for (a) source code development, (b) project management, (c) issue resolution. These will be graded according to individual team members' activity and participation.
    2. Update wiki pages for requirement and design changes during development.
    3. Make sure that your design and implementation are synced.

System Design Document (SDD)

  1. Introduction
    1. Purpose of the system
    2. Design goals
    3. Definitions, acronyms, and abbreviations
    4. References
    5. Overview
  2. Current software architecture
    Explain the existing system (if there is no existing system, you are designing a new system, then skip this part).
  3. Proposed software architecture
    1. Overview
    2. Subsystem decomposition
      A UML Package Diagram to depict the packages or subsystems in your system.
    3. Hardware/software mapping
      A UML Deployment Diagram to depict what software components are deployed on what kind of hardware components.
    4. Persistent data management
      A database model such as Entity-Relationship Diagram (video) or a NoSQL data model.
    5. Access control and security
      Access matrix, which users access which parts of the software.
    6. Global software control
      Describe how the global software control is implemented. In particular, this section should describe how requests are initiated and how subsystems synchronize. This section should list and address synchronization and concurrency issues.
    7. Boundary conditions
      List and describe the boundary conditions: startup, shutdown, and error behavior of the system.
  4. Subsystem services
  5. Implementation
    • List the code structure (GitHub subfolders) here with brief description of each subfolder, and main responsible developers for each.
  • Glossary

Appendix. Project Plan

  • Project tasks (product backlog) and time needed to implement with a deadline. Include a snapshot view of the roadmap from project timeline.

Reference.

⚠️ **GitHub.com Fallback** ⚠️