Deliveranble 4 - Q.C. Detailed Technical Design

by ADMIN 48 views

=====================================================

Overview

In this deliverable, we will address the comments from the prior deliverable on the domain model and provide a more detailed technical design. This will involve creating a design class/function diagram (DCD) that includes types and attributes and methods of all classes, and all functions. We will also apply at least one design pattern in our class design/diagram. The goal of this design document is to map out our implementation, check the interfaces between components will actually work, agree on the types, attributes, and arguments for data and functions, agree on the hierarchy of components, and agree on all the files and where functions, classes, interfaces, type declarations will be.

Addressing Prior Comments

As per the instructions, we will address all the comments from the prior deliverable on the domain model. For any comment that was not addressed, we will deduct at least 2 points, or up to the amount of points originally deducted. This will ensure that we provide a comprehensive and detailed technical design that meets the requirements.

Design Class/Function Diagram (DCD)

The DCD will be a detailed diagram that includes types and attributes and methods of all classes, and all functions. It will also include the React views on the diagram. We will use a template provided by the team to create the DCD. The template includes a similar representation of a UML class diagram, which we will use to model our web application.

Applying Design Patterns

We will apply at least one design pattern in our class design/diagram. This will help us to improve the maintainability, scalability, and flexibility of our application. We will choose a design pattern that is relevant to our application and will help us to achieve our goals.

Assigning Parts of the Design Diagram

We will assign parts of the design diagram to the people who are in charge of implementing that feature. This will ensure that everyone is aware of their responsibilities and will be able to work on their assigned tasks effectively.

Example of Design Class/Function Diagram

Here is an example of a design class/function diagram (DCD) that includes types and attributes and methods of all classes, and all functions. This example is based on the template provided by the team and includes React functional components represented as "ViewControllers".

+---------------+
|  Student     |
+---------------+
|  - id        |
|  - name      |
|  - email     |
|  - address   |
|  - phone     |
|  - courses  |
+---------------+
|  + enroll()  |
|  + drop()    |
|  + view()    |
+---------------+

Reasonable Examples for Domain Objects/Classes

Here are some reasonable examples for how to represent your domain objects/classes (e.g. Student, Card, StudySession, Friend, User) from past years. These examples have views and controllers on them, but are not good examples for representing React components.

+---------------+
|  Student     |
+---------------+
|  - id        |
|  - name      |
|  - email     |
|  - address   |
|  - phone     |
|  - courses  |
+---------------+
|  + enroll()  |
|  + drop()    |
|  view()    |
+---------------+

Team F 2022 Example

Team F 2022 is a good example that uses the template above and their implementation basically matches it. The goal of making this design document is to map out your implementation, check the interfaces between components will actually work, agree on the types, attributes, and arguments for data and functions, agree on the hierarchy of components, agree on all the files and where functions, classes, interfaces, type declarations will be.

Implementation

We will implement the design class/function diagram (DCD) and apply at least one design pattern in our class design/diagram. We will also assign parts of the design diagram to the people who are in charge of implementing that feature. This will ensure that everyone is aware of their responsibilities and will be able to work on their assigned tasks effectively.

Conclusion

In this deliverable, we have addressed the comments from the prior deliverable on the domain model and provided a more detailed technical design. We have created a design class/function diagram (DCD) that includes types and attributes and methods of all classes, and all functions. We have also applied at least one design pattern in our class design/diagram and assigned parts of the design diagram to the people who are in charge of implementing that feature. This will ensure that our application is maintainable, scalable, and flexible.

References

=====================================================

Q: What is the purpose of the design class/function diagram (DCD)?

A: The purpose of the design class/function diagram (DCD) is to provide a detailed representation of the classes, functions, and interfaces in our application. It will help us to map out our implementation, check the interfaces between components will actually work, agree on the types, attributes, and arguments for data and functions, agree on the hierarchy of components, and agree on all the files and where functions, classes, interfaces, type declarations will be.

Q: What is the difference between a UML class diagram and a design class/function diagram (DCD)?

A: A UML class diagram is a standard representation of classes and their relationships, whereas a design class/function diagram (DCD) is a custom representation that we will use to model our web application. While a UML class diagram is a more formal and standardized way of representing classes and their relationships, a DCD is a more flexible and adaptable way of representing our application's components and their interactions.

Q: Why do we need to apply design patterns in our class design/diagram?

A: We need to apply design patterns in our class design/diagram to improve the maintainability, scalability, and flexibility of our application. Design patterns provide a proven solution to common problems in software design, and they can help us to write more maintainable, scalable, and flexible code.

Q: How will we assign parts of the design diagram to the people who are in charge of implementing that feature?

A: We will assign parts of the design diagram to the people who are in charge of implementing that feature through a scoping meeting. Each person will be responsible for implementing the features assigned to them, and they will be expected to follow the design class/function diagram (DCD) and the design patterns applied in the class design/diagram.

Q: What is the significance of Team F 2022 example?

A: The Team F 2022 example is a good example of how to use the template provided by the team to create a design class/function diagram (DCD). Their implementation basically matches the design class/function diagram (DCD), which demonstrates the effectiveness of using this approach to map out our implementation and check the interfaces between components.

Q: How will we ensure that everyone is aware of their responsibilities and will be able to work on their assigned tasks effectively?

A: We will ensure that everyone is aware of their responsibilities and will be able to work on their assigned tasks effectively by holding regular meetings and providing clear instructions and guidelines. We will also use collaboration tools and communication channels to facilitate communication and ensure that everyone is on the same page.

Q: What are the benefits of using a design class/function diagram (DCD)?

A: The benefits of using a design class/function diagram (DCD) include:

  • Improved maintainability: A DCD helps us to identify and address potential issues before they become major problems.
  • Improved scalability: A DCD helps us to design our application in a way that is scalable and flexible.
  • Improved flexibility: A DCD helps us to design our application in a way that is adaptable to changing requirements.
  • Improved collaboration: A DCD helps us to and collaborate more effectively with each other.

Q: What are the next steps after creating the design class/function diagram (DCD)?

A: After creating the design class/function diagram (DCD), we will implement the design and apply the design patterns. We will also assign parts of the design diagram to the people who are in charge of implementing that feature. We will then hold regular meetings and provide clear instructions and guidelines to ensure that everyone is aware of their responsibilities and will be able to work on their assigned tasks effectively.

Q: How will we measure the success of the design class/function diagram (DCD)?

A: We will measure the success of the design class/function diagram (DCD) by tracking the following metrics:

  • Time to market: How quickly we are able to deliver the application.
  • Quality: How well the application meets the requirements and is free of defects.
  • Customer satisfaction: How satisfied our customers are with the application.
  • Return on investment (ROI): How much value we are able to generate from the investment in the design class/function diagram (DCD).

Q: What are the potential risks and challenges associated with using a design class/function diagram (DCD)?

A: The potential risks and challenges associated with using a design class/function diagram (DCD) include:

  • Complexity: The design class/function diagram (DCD) may be complex and difficult to understand.
  • Cost: The design class/function diagram (DCD) may require significant resources and investment.
  • Time: The design class/function diagram (DCD) may take a significant amount of time to create and implement.
  • Resistance to change: Some team members may resist the change to using a design class/function diagram (DCD).

Q: How will we mitigate the risks and challenges associated with using a design class/function diagram (DCD)?

A: We will mitigate the risks and challenges associated with using a design class/function diagram (DCD) by:

  • Providing clear instructions and guidelines.
  • Holding regular meetings and providing feedback.
  • Using collaboration tools and communication channels.
  • Providing training and support.
  • Monitoring progress and addressing issues promptly.