Assignment title: Information
For the assignments in this course, you will not be implementing the actual project, but rather, you will be
developing a comprehensive Software Design Document. Your first task in this process will be to select an
organization or identify a hypothetical organization to use as the basis of your projects. You will also create the shell
document for the final project deliverable that you will be working on during each unit. Appropriate research should
be conducted to support the development of your document and assumptions may be made when necessary.
SECTION 1: Project Selection
The first step will be to select an organization as the target for your Software Design document. This
organization will be used as the basis for each of the assignments throughout the course and should conform to the
following guidelines:
• Nontrivial: The selected organization should be large enough to allow reasonable exercise of the
software design process.
• Domain knowledge: You should be familiar with the organization to allow the focus to be on the
project tasks without significant time required for domain education.
• Accessibility: You should have good access to the people and other information related to the
organization because this will be an important part of the process.
• Note: The selected organization might already have the software implemented and may still be used as
the basis for the projects in this course.
• Note: The selected organization must have a need for some kind of software as part of its operation.
Therefore, feel free to identify a hypothetical organization that meets the requirements. Any necessary
assumptions may be made to fulfill the requirements of organization selection.
SECTION 2: 3-4 pages on Requirements Analysis and Software Architecture
Prior to designing software, it is important to analyze the organization’s functional and nonfunctional
requirements for the software application and to understand how the software application will be used within the
organization. One approach to understanding the organization’s requirements to move forward with the design phase
is to take a functional set of requirements and break them down into pieces that are suitable for engineering design.
For this assignment, you will continue the design process by adding the Requirements Analysis and Software
Architecture section to the Software Design Document. You will perform an analysis of the functional and
nonfunctional requirements based on the organization’s needs and the 3–4 features that you identified in the
previous section, and describe the results of your analysis in the form of a use-case diagram. You will also define the
high-level design of the software by researching and selecting an appropriate software architecture style to use as the
basis for the structure of your software.
Requirements Analysis and Software Architecture:
Identify and describe the organization’s functional and nonfunctional requirements that are allocated to the
3–4 features you identified in the previous section.
Identify 3–4 use cases in the form of a use-case diagram.
Briefly describe each of the use cases.
Identify and describe the intended actors or users of the software.
Identify and describe a software architecture style to use as the basis for your software design project.
Include an explanation of why you selected the architectural style.
Describe some strengths and weaknesses of the architectural style and how those will impact your software
design.
Describe the architecture of the software that you are designing in the form of a conceptual model that
depicts the high-level structure of the software.
SECTION 3: 2 UML Diagrams, 2 Data Sequence Diagrams, 2 State Transition Diagrams
For this assignment, you will continue the design process by adding the Sequence and State Transition
Diagrams section of the Software Design Document. Based on the use-cases that were identified in the previous
section, you will develop at least 2 unified modeling language (UML) sequence diagrams. Then, based on the
components you identified in the software architecture that was developed in the previous section, you will develop
at least 2 UML state transition diagrams. You are to describe each diagram with sufficient detail to remove any
potential ambiguities and to allow a reader with minimal knowledge of the project to understand the diagrams.
Sequence Diagrams:
Develop at least 2 data sequence diagrams for your application using the UML.
In some cases, sequence diagrams show classes that have been designed.
For this assignment, you do not need to define the classes. Instead, you only need to identify the objects
that will potentially be used.
Objects are the nouns used in the program (e.g., customer, database, and invoice)
Paste the diagrams into the Software Design Document.
Describe each diagram with sufficient detail to remove any potential ambiguities and to allow a reader with
minimal knowledge of the project to understand the diagram.
State Transition Diagrams:
Develop at least 2 state transition diagrams for your application using the UML.
In some cases, state transition diagrams show classes that have been designed.
For this assignment, you do not need to define the classes. Instead, you only need to identify the objects
that will potentially be used.
Paste the diagrams into the software design document.
Describe each diagram with sufficient detail to remove any potential ambiguities and to allow a reader with
minimal knowledge of the project to understand the diagram.
SECTION 4: 1 Class Diagram, Verification/Validation, and Traceability Matrix
For this assignment, you will continue the design process by adding the Class and Activity Diagrams and
the Verification and Validation sections of the Software Design Document. Based on the software architecture and
design that you identified in the previous assignments, you will develop 4–5 classes and identify at least 1 design
pattern that you could adopt to assist in your software design. You will also develop at least 2 activity diagrams to
describe the functionality that you identified in previous sections.
You are to describe each diagram with sufficient detail to remove any potential ambiguities and to allow a
reader with minimal knowledge of the project to understand the diagrams. You will also identify some appropriate
techniques that can be used by the organization to verify and validate specific aspects of the software design. As part
of the verification and validation process, you will also create a traceability matrix of the requirements you
identified in week 1 to the design.
Class and Activity Diagrams
Develop at least 1 class diagram consisting of 4–5 major classes.
Identify the class name, and show some properties and methods.
Show the relationships between the classes (e.g., inheritance).
Paste the diagrams into the Software Design Document.
Describe each diagram with sufficient detail to remove any potential ambiguities and to allow a reader with
minimal knowledge of the project to understand the diagram.
Select and describe at least 1 design pattern that you could adopt to assist in your software design, and
justify you selection.
Develop at least 2 activity diagrams.
Paste the diagrams into the Software Design Document.
Describe each diagram with sufficient detail to remove any potential ambiguities and to allow a reader with
minimal knowledge of the project to understand the diagram.
Verification and Validation
Describe some appropriate techniques that can be used by the organization to verify and validate specific
aspects of the software design.
Include a traceability matrix of the requirements that you identified in Week 1 of the design.
SECTION 5: 3-4 pages on Multithreading and Constraints
The final step in the design phase is to review the design to ensure that it adequately addresses the
requirements and that it is sufficiently detailed to allow the organization’s engineering team to move forward with
the implementation phase based on your design. This is also a good time to identify any potential constraints that
might affect the organization’s ability to implement the design. In addition, particularly with today’s advances in
multicore technology, it might be a good opportunity to identify potential performance improvements by utilizing
multithreading into the design.
Multithreading Opportunities
Analyze your current design, and identify potential opportunities to incorporate multithreading into the
design.
Describe at least 3 areas of the software project where multithreading might improve the performance of
the application.
As a continuation of the verification and validation techniques that were described in the previous section,
identify specific metrics that could be used by the organization in the performance-testing process.
Constraints
Identify and describe any constraints or other factors that might affect the organization’s ability to
implement the software.
Software Design Document
Review the entire document for any changes and improvements that you would like to make.
Ensure that this final version of the plan is sufficiently detailed to allow the organization’s engineering
team to move forward with the implementation phase based on your design.
.