Create Initial Software Architecture Assignment
Table of Contents
1 About This Sprint
This sprint reviews how to describe a non-trivial software system in the form of a software architecture.
2 User Stories covered in this Sprint
- As a software designer I want to be able to divide my design into manageable chunks so that I can get a better overview.
- As a software designer I want to address the quality requirements of the software system early on so that they are not missed.
- As a software designer I want to address the quality requirements of the software system in the most appropriate way to facilitate the rest of the development project.
3 Learning Material
3.1 Book Chapters
- C. Larman, Applying UML and Patterns, 3rd Edition, Chapters:
- Architecture Analysis
- Logical Architecture Refinement
- UML Deployment and Component Diagrams
- Documenting Architecture: UML & the N+1 View Model
3.2 Screencasts
3.3 Books and Articles
- L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice, Third Edition. Addison-Wesley Publishing Co., Reading MA, 2012.
- C. Hofmeister, R. Nord, and D. Soni. Applied Software Architecture. Addison-Wesley, Reading MA, 2000.
- R. Kazman, L. Bass, M. Webb, and G. Abowd. SAAM: A method for analyzing the properties of software architectures. In Proceedings of the 16th international conference on Software engineering, pages 81–90. IEEE Computer Society Press, 1994.
- P.B. Kruchten, “The 4+ 1 view model of architecture.” IEEE software 12.6 (1995): 42-50.
- M. Lindvall, R. T. Tvedt, and P. Costa. An empirically-based process for software architecture evaluation. Empirical Software Engineering, 8:83–108, 2003.
- M. Svahnberg and F. Mårtensson. Six years of evaluating software architectures in student projects. Journal of Systems & Software, 80(11):1893–1901, 2007.
4 Experiential Learning
4.1 Assignment: Create Initial Software Architecture
Create an initial software architecture for your system.
Tasks:
- Which quality attributes are relevant for your system?
- Based on what you currently know, structure your system into different modules that have high coherence and low coupling.
- Try to think about localising specific areas of functionality into separate modules.
- Do you need to model your system from different viewpoints (e.g. modules, threads and processes, data flow)?
- If so, create a model for each viewpoint.
- Make sure your viewpoints are consistent with each other.
- If you do not need several viewpoints, then why not?
- Motivate and reason about what traits in your system makes it require or not require specific viewpoints.
Document Structure:
The title for this Assignment Document is: Initial Software Architecture for System <system name>
.
The assignment document shall contain the following items:
- Title Page, according to the Title Page Instructions (Link)
System Description
A brief description (2-3 paragraphs) of your interpretation of what the goal of the system is.
- Quality Attributes Discuss quality attributes that are important for your system. Motivate why.
- Viewpoints Discuss your choices of viewpoints.
- Viewpoints
- Create one section for each of your viewpoints.
- Model your system from the perspective of the viewpoint in a suitable notation (tip: You may find the UML Package notation useful)
- Describe the entities in your model. Remember that associations between entities also carry meaning in an architecture model and needs to be explained.
- Describe which particular design concerns that you are addressing with the help of the viewpoint.
Commit and push this document to your project repository.
Conditions of Satisfaction: When marking this part of the assignment we are looking for the following:
- Does the title page contain a table with authors and author contribution?
- Size of assignment: Is the system described from at least one and preferrably two to three viewpoints?
- Size of assignment: Does each viewpoint contain 5-15 entities?
- Are important quality attributes described and motivated?
- Are the viewpoints motivated? Is there a reasoning about why or why not certain viewpoints are needed?
- Is there a legend for each viewpoint that describes the types of entities and connections?
- Are the entities and connections in each viewpoint described?
- Does each viewpoint/entity have high cohesion and low coupling?
- Is there a described strategy for how classes are allocated to different modules/entities?
- IS this strategy followed?
5 Sprint Acceptance Tests
You are done with this sprint when:
- You have considered which quality attributes are relevant for your system.
- You have created an initial software architecture for your system.
- You have committed/pushed the created documents to your project repository
You may also have
- Updated your Sprint Test Plan
- Updated your Course Backlog