Software Requirements and Architecture
Objective: study the various types of requirements as drivers of the software architecture. Non-functional requirements (NFRs) and conflict analysis form the basis for the systematic derivation of the software architecture.
- Fundamentals of Requirements Engineering
- Requirements specification and analysis methods
- Fundamentals of software architecture
- Architectural standards and styles
- Dealing with the challenges imposed by the size, conflicting goals and poor requirements.
- Understanding the advantages of systematic development and planned reuse.
- Selecting the structure based on a range of possibly disjoint alternatives.
Know how to:
- Apply goal-oriented approaches to identify, specify and validate requirements.
- Use the NFR Framework to refine NFRs and resolve conflicts.
- Analyze the architectural choices and choose to meet the restrictions imposed by the NFRs, promoting the systematic derivation of the software architecture.
- Specify software architectures using views, patterns, styles.
- Use architectural description languages and automated tools.
Ana Maria Diniz Moreira
Weekly - 4
Total - Available soon
Software Development Methods
Domain-Specific Modeling Languages
- An Introduction to requirements Engineering, I. K. Bray, Addison-Wesley, 2002
- K. Wiegers, J. Beatty, Software Requirements, Microsoft Press, 2013
- J.Dick, E. Hull, K. Jackson, Requirements Engineering, Springer-Verlag, 2010
- A. Lamsweerde, Requirements Engineering, Wiley, 2009
- I. Alexander, N. Maiden, Scenarios, Stories, Use Cases: Through the Systems Development Life-Cycle, Wiley, 2004
- G. Kotonya, I. Sommerville, “Requirements Engineering: Processes and Techniques”, Wiley, 1998
- I. Alexander, R. Stevens, “Writing Better Requirements”, Addison Wesley, 2002
- R. N. Taylor, et al, "Software Architecture: Foundations, Theory, and Practice" John Wiley and Sons, 2009
- L. Bass, et al, "Software Architecture in Practice", 2nd edition, Addison-Wesley, 2003
- P. Clements, et al "Documenting Software Architectures: Views and Beyond", Addison-Wesley, 2003.
**Can be subjtect to small changes **
Assessment consists of two mandatory components: a practical project (50%); 2 tests (50%). The project (and respective report) is done in groups of 2 students, and the tests are individual.
The final grade is the weighted average of the grades obtained in theproject (50%), and the tests (50%, 25% each).
The project is mandatory and students with an average grade lower than 9.5 fail the subject.
Students who do not submit a component of the evaluation process are classified as “Reprovado” (fail), while others, that did not take part in any evaluation process are classified with "Ausente" (absent).
Access to the re-sit exam period are for students who have frequency, but not achieved a satisfactory performance in continuous assessment (with an average between 9.5 and 20), or who wish to improve their grade.
Grade improvement for students registered in the semester when they passed the course is done at the time of the re-sit exam of the semester, and the rules are those of the "Época de Recurso" (thus the final grade is given by the grade obtained in the exam grade).
Students that succssfully finished the course in previous years can improve their grade by taking the final exam, and the final grade will be the final mark obtained in the exam. Similarly, for tudents taking the special exam ("época especial").
1.1 The nature and importance of Requirements Engineering
1.2 Requirements as drivers of Software Architecture
1.3 Software Architecture and its importance in software evolution
2. Requirements Engineering Process
2.1 Requirements engineering processes and models
2.2 Requirements Elicitation and Exploration (Design Thinking, Brainstorming)
2.3 Requirements Analysis and Negotiation (Conflict management and prioritisation)
2.4 Requirements Validation (Inspections, prototypes, model validation and requirements testing)
2.5 Requirements Management
2.6 Requirements documentation standards ( (e.g., IEEE 830-1998)
3. Requirements Engineering Techniques
3.1 Methods for requirements specification
3.2 Non-Functional Requirements Framework (Refinement and operationalization)
3.3. Goal-based Modelling with iStar (Intentional organizational modeling)
3.4 Derivation of object-oriented models (Mappings between paradigms, models and concepts)
4. Software Architecture Design Fundamentals
4.1 Software Architecture principles
4.2 Mapping requirements to architectural concepts
4.3 Documenting Software Architecture
5. Software Architecture Techniques
5.1 System structuring and modular decomposition
5.2 Architectural views
5.3 Architectural styles and patterns (catalogs of software architectures)
5.4 Architectural description languages
5.5 Architecture evaluation
6. Advances in requirements and architecture
6.1 Crosscutting concerns
6.2 Domain Analysis and Software Product Lines
Programs where the course is taught: