During this unit, I learned about software requirements engineering and software architecture. I learned that requirements engineering is the process of gathering and documenting the needs and constraints of stakeholders and transforming them into a set of specifications that software developers can use to design and implement software. On the other hand, software architecture refers to the high-level structure of a software system and the design decisions that define its components, interactions, and properties.
To understand software requirements better, I read Chapter 2 of the textbook, which provided a comprehensive overview of the requirements engineering process, including requirements elicitation, analysis, and documentation. I also
…show more content…
These resources emphasized the importance of considering non-functional requirements when designing a software system. According to Microsoft's guide, "non-functional requirements capture the attributes of a system that determine whether the system is fit for its intended use, including performance, scalability, security, usability, and availability" (Microsoft, 2018, p. 25). In addition, the guide provided practical advice on how to document software architecture and how to use architecture diagrams effectively.
Garlan and Shaw's article provided a more theoretical overview of software architecture, covering topics such as architectural styles, views, and modeling. The authors emphasized the importance of separating concerns in software design and using abstraction to manage complexity. They also introduced the concept of "quality attributes," which are non-functional requirements that can be used to evaluate the effectiveness of an architectural design (Garlan & Shaw,
…show more content…
For each requirement, I wrote acceptance tests or explained why it was not testable. This exercise helped me understand the importance of specifying requirements clearly and unambiguously and how to ensure that they are testable.
In terms of weekly activities, I spent around 4 hours reading the assigned materials and another 4 hours working on the programming assignment. I also spent some time reflecting on the topics covered and writing this learning journal entry.
One important thing that I am thinking about in relation to the activity is the importance of software requirements engineering and software architecture in the software development process. I learned that neglecting these aspects can lead to significant problems, including project delays, cost overruns, and software that does not meet the stakeholders' needs. Therefore, I believe that mastering these skills is essential for any software developer who wants to deliver high-quality software products.
References:
Bochmann, G. V. (1996). Software engineering with formal methods: The development of a storm-based tool. Proceedings of the IEEE, 84(9), 1286-1297.