yi-kiat / ICT2106_P3-5

MIT License
0 stars 0 forks source link

[D2] 9. Individual Reflection #74

Closed yi-kiat closed 1 year ago

yi-kiat commented 1 year ago

Individual Reflection

To be completed on

yi-kiat commented 1 year ago
gohguanlin commented 1 year ago

As we wrap up our project and submit Deliverable 2, I would like to reflect on my contributions and learning outcome throughout this experience. In particular, I was responsible for the Quarterly Report feature, which involved designing class diagrams, ensuring adherence to SOLID principles, implementing design patterns, and coding. To begin with, I reviewed the existing class diagram for any SOLID violations and refactored the class diagram to follow the Single Responsibility Principle, which involved separating the code for different functionalities into distinct classes. Additionally, I incorporated the Strategy Pattern for exporting reports and analyzing data, which required updating the class diagram to reflect the changes. Finally, I modified the backend code to match the updated class diagram.

In summary, working on Deliverable 2 has allowed me to gain hands-on experience in applying Software Engineering practices. I now recognize the importance of adopting best practices when developing software, which is crucial in ensuring the quality and maintainability of the final product. Although we faced time constraints and were unable to fully implement all the desired features, I am proud of the work we have accomplished so far. Our product's design is well-structured and scalable, which enables us to easily add new features in the future without significant changes to the existing codebase.

jiaxinlarhh commented 1 year ago

For Deliverable 2, I was assigned to assist in providing an overview of the SOLID principles, design patterns, and construction design that my team has developed. During the process of identifying violations, discussing and implementing SOLID design, I have learned how to apply the SOLID principles to make the code more modular, flexible, and readable. During the initial discussions on SOLID principles, I proposed the idea of SRP to both the Request and PerformanceEvaluation classes as they were handling more than one responsibility. In subsequent discussions on SOLID principles and detailed design, I mostly listened and provided my input on how we could better implement the ideas provided by my team, such as the latest version of the factory pattern design and the filter design that previously violated the DIP.

After completing the activity diagram, I sought validation from my teammates to ensure that we were on the right track. In addition to that, I am also responsible for project planning and have consistently reminded my team to update our project board.

Overall, I have learned valuable skills in applying SOLID principles, design patterns to improve code quality and maintainability and construction diagrams while contributing to the success of our team's project.

yi-kiat commented 1 year ago

During D2, I had the opportunity to learn about several new concepts and technologies, including design patterns and SOLID principles. Specifically, I became familiar with the filter pattern, which is not from the Gang of Four design patterns, and applied the Single Responsibility Principle to this pattern. Additionally, I gained experience working with React. For my contributions to the project, I played a significant role in coding the backend for the filter and participated in creating the class diagram. I also collaborated with my team to elaborate on the class diagram afterward. I recall the process being a lengthy and in-depth discussion and analysis that resulted in our project's current design. In addition to coding and design work, I also contributed to our report-writing efforts. I helped explain the filter design pattern, applied the Single Responsibility Principle to ensure the modularity of our code and easy maintenance, and kept an eye on the project board's status. I occasionally reminded my team members to check on each other's work and review theirs. I believe my actions have assisted in keeping up our progress. However, there are also areas where I could have done more. For example, I could have participated more actively when my group worked on the activity diagram. I could also have tried to integrate the backend and frontend more successfully, at least for my feature. I could have been more attentive to deadlines and exercised utmost caution in checking for concurrency errors with our diagrams. There were a few instances where we failed to identify the errors hidden in our class and component diagrams. It led to some minor setbacks as there is a need for frequent replacements of images in our report.

Overall, I gained valuable experience and knowledge from this project, and I'm excited to continue building on what I learned in future projects. I hope to be more conscious of deadlines and double-check everything thoroughly before submitting. Perhaps I would take on more responsibilities, particularly in areas where I could have done more like this one. This experience has helped me become a more effective team member, and I look forward to applying these lessons in future work.

AiXin18 commented 1 year ago

During Deliverable 2, I had the opportunity to work on several aspects that contributed to the success of our team's efforts. Firstly, I took responsibility for designing and implementing the Request class diagram, which involved identifying the necessary attributes and methods that would enable us to create and read requests within our system. This was challenging as it requires careful consideration of the system's functionality and client’s needs. Additionally, I also had the opportunity to contribute to the coding of two key features for our website. Specifically, I was responsible for developing the front and back-end of features 1 and 4, which required me to work closely with my teammates to ensure that the features were both functional and visually appealing. This was a great opportunity to put my coding skills to the test, and I was thrilled to see how well our features performed once they were fully implemented. Finally, I also had the opportunity to work on adjusting the class diagram to suit the factory design pattern, as well as the open-close principle. This involved revisiting some of our earlier work and making some necessary adjustments to ensure that our system was both flexible and extensible. This was a valuable learning experience for me, as it helped me to understand how important it is to design systems that are easy to maintain and expand over time.

Overall, I am proud of what my team did. Through my work on the class diagram and coding of key features, I was able to create a system that meets the needs of our client and performs well in different scenarios. Additionally, my work on adjusting the class diagram taught me valuable lessons about how to design flexible and extensible systems that can be easily adapted to meet changing needs.

AiXin18 commented 1 year ago

Reviewed and Checked on: 311/3/2023

jingyi823 commented 1 year ago

For D2’s project, I contributed in the Factory design pattern whereby factory pattern can be used to create the different validation classes such as the TextValidator, CheckboxValidator and DropDownListValidator in our forms such as the resource request form. I also applied the factory design pattern in the class diagram and drew a draft of the class diagram using the Factory design pattern. I have also contributed by making some essential changes in the Request form. I had added the dropdownlist for regional manager to select the project name in the Request form and the confirmation box "Are you sure you want to submit?" for the submit button. Only when the 'OK' button is clicked, then the request form will be submitted. This is to prevent user from accidentally submitting the request form if submit button is clicked.

In summary, I have learnt the different S.O.L.I.D design principles such as the Single Responsibility principle, Open-Closed principle, Liskov Substitution principle and more. I have also learnt the different types of Design Patterns such as Factory design pattern, filter pattern etc. I have learnt to apply the Factory design pattern in a class diagram. I have also learnt that the factory design pattern is useful in class diagram because it promotes loose coupling between the client’s code and the object creation process which allows for easy maintenance and testing of code.