BSc: Software Architectures
Software Architectures
- Course name: Software Architectures
- Course number: XYZ
- Subject area: Software Engineering
Course characteristics
Key concepts of the class
- Introduction to software architecture
- Steps to follow while working with software architecture
- Key architectural patterns
- How to describe software architecture?
- UML as a language for the software architecture
What is the purpose of this course?
Software developers often follow architectural and design patterns informally without a deep understanding of the subject. This prevents the delivered software to work optimally and often to meet functional and nonfunctional requirements. The course provides a detailed understanding of software architectures and how they should be used by software developers and in the software engineering process.
Course Objectives Based on Bloom’s Taxonomy
- What should a student remember at the end of the course?
- Learn how to design high quality software meeting requirements
- Learn how architectural issues can impact software design
- key architectural patterns and their properties
- What should a student be able to understand at the end of the course?
- Understand the principles and foundations of software architectures
- Understanding architecture patterns and their use
- Understand formal notations and specifications with related tools
- What should a student be able to apply at the end of the course?
- Understand the task and select the proper architecture of the system
- Use particular design tool to create and update architecture of the system
Course evaluation
Proposed points | ||
---|---|---|
Labs/seminar classes | 50 | 50 |
Interim performance assessment | 25 | 25 |
Exams | 25 | 25 |
If necessary, please indicate freely your course’s features in terms of students’ performance assessment:
Labs/seminar classes:
- In-class participation 1 point for each individual contribution in a class but not more than 1 point a week (i.e. 14 points in total for 14 study weeks),
- overall course contribution (to accumulate extra-class activities valuable to the course progress, e.g. a short presentation, book review, very active in-class participation, etc.) up to 6 points.
Interim performance assessment:
- in-class tests up to 10 points for each test (i.e. up to 40 points in total for 2 theory and 2 practice tests),
- computational practicum assignment up to 10 points for each task (i.e. up to 30 points for 3 tasks).
Exams:
- mid-term exam up to 25 points,
- final examination up to 25 points.
Overall score:
100 points (100%).
Grades range
Proposed range | ||
---|---|---|
A. Excellent | 85-100 | 85-100 |
B. Good | 75-84 | 75-84 |
C. Satisfactory | 60-75 | 60-75 |
D. Poor | 0-59 | 0-59 |
If necessary, please indicate freely your course’s grading features:
- A: more than 85 of the overall score;
- B: at least 85 of the overall score;
- C: at least 75 of the overall score;
- D: less than 60 of the overall score.
Resources and reference material
Textbook:
Reference material:
Course Sections
The main sections of the course and approximate hour distribution between them is as follows:
Section | Section Title | Lectures | Seminars | Self-study | Knowledge |
Number | (hours) | (labs) | evaluation | ||
1 | Introduction to software architecture | 12 | 6 | 12 | 2 |
2 | Steps to follow while working with software architecture | 8 | 4 | 8 | 1 |
3 | Key architectural patterns | 8 | 4 | 8 | 1 |
4 | How to describe software architecture? | 12 | 6 | 12 | 2 |
5 | UML as the language for the software architecture | 8 | 4 | 8 | 1 |
Final examination | 2 |
Section 1
Section title:
Introduction to software architecture
Topics covered in this section:
- Introducing Software Architecture
- How to Become a Software Architect
- Design Thinking Fundamentals
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 1
Testing (written or computer based) & 1
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What is architecture? What is software architecture?
- What kind of decisions are to be taken based on software architecture?
- What is the place of the software architecture in the SDLC?
Typical questions for seminar classes (labs) within this section
- What activities are be taken by architects?
- Identify artefacts to be created after analysis stage
- Identify artefacts to be created after design stage
- Identify artefacts to be created after evaluation stage
- Identify artefacts to be created after evolution stage
Test questions for final assessment in this section
- What is requirements specification?
- What is design specification?
- What is the classification of specifications?
Section 2
Section title:
Steps to follow while working with software architecture
Topics covered in this section:
- Devise a Design Strategy
- Stakeholders
- Requirements and architecture choice
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 1
Homework and group projects & 1
Midterm evaluation & 1
Testing (written or computer based) & 0
Reports & 1
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What are the responsibilities of software architects?
- What are the key principles of design thinking?
- What are the key elements of design mindset?
Typical questions for seminar classes (labs) within this section
- Transform customer requirements into requirements specification for the particular task
- Highlight how think-do-check cycle works in practice
Test questions for final assessment in this section
- Definition of quality attributes
- Definition of artifact and stimulus
- Definition of tactics
Section 3
Section title:
Key architectural patterns
Topics covered in this section:
- Layers
- Multi-Tier
- Ports and Adaptors
- Pipe and Filter
- Publish-subscriber
- Shared-data
- Broker
- Peer 2 peer
- MVC
- Client-Server
- Master-Slave
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 1
Testing (written or computer based) & 0
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- How architectural patterns are defined?
- Relations between problem-solution and pattern
- Why practice is important for patterns?
Typical questions for seminar classes (labs) within this section
- Identify the architectural pattern for the particular project
- Bud a task architecture following a particular pattern
Test questions for final assessment in this section
- What are the key elements of patterns studied?
- What are the relations between elements of patterns studied?
- What are the weaknesses of patterns studied?
- What are the strengths of patterns studied?
Section 4
Section title:
How to describe software architecture?
Topics covered in this section:
- Architectural structures
- Architectural perspectives
- Architectural properties
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 0
Testing (written or computer based) & 1
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What are the key architectural structures?
- What are the key architectural perspectives?
- What is the meaning of the architectural view?
Typical questions for seminar classes (labs) within this section
- Describe the static perspective of the particular system
- Describe the dynamic perspective of the particular system
- Describe the physical perspective of the particular system
Test questions for final assessment in this section
- What are the differences between static, dynamic and physical perspectives?
- What is coupling, decoupling and cohesion ?
- What is redundancy? What approaches to resources are?
- How trade-off can be found?
Section 5
Section title:
UML as the language for the software architecture
Topics covered in this section:
- Introduction to UML
- The Use Case Diagram
- The Class Diagram
- Collaboration Diagrams
- Sequence Diagram
- State Diagrams
- Package Diagrams
- Component Diagrams
- Deployment Diagrams
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 0
Testing (written or computer based) & 1
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What was the primary reason for UML creation?
- What other architectural languages exist?
Typical questions for seminar classes (labs) within this section
- Create The Use Case Diagram for the particular task
- Create The Class Diagram for the particular task
- Create Collaboration Diagram for the particular task
- Create Sequence Diagram for the particular task
- Create State Diagrams for the particular task
- Create Package Diagrams for the particular task
- Create Component Diagrams for the particular task
- Create Deployment Diagrams for the particular task
Test questions for final assessment in this section
- What are the key properties of the The Use Case Diagram diagram?
- What are the key properties of the The Class Diagram diagram?
- What are the key properties of the Collaboration Diagrams diagram?
- What are the key properties of the Sequence Diagram diagram?
- What are the key properties of the State Diagrams diagram?
- What are the key properties of the Package Diagrams diagram?
- What are the key properties of the Component Diagrams diagram?
- What are the key properties of the Deployment Diagrams diagram?