Publication in the Diário da República: Aviso n.º 12718/2016 - 19/10/2016
5 ECTS; 2º Ano, 1º Semestre, 45,0 PL + 15,0 TP , Cód. 620018.
Lecturer
(1) Docente Responsável
(2) Docente que lecciona
Prerequisites
Good knowledge of an object oriented language.
Objectives
This course aims to provide the student with insight of Software Engineering's concepts and specifically how to make Object Oriented Analysis and Design of a system. In the end the student must be able to:
1. Explain what Software Engineering is and what it is for;
2. Explain the similarities and differences between agile and traditional methodologies;
3. Understand and explain the basic features of the SCRUM framework;
4. Understand and explain the basic characteristics of Extreme Programming development methodology;
5. Understand and explain the main concepts and principles involved in software development;
6. Use the UML visual modeling language to model a system;
7. Use the Unified Process software development methodology in systems development;
8. Elaborate the Object-Oriented Analysis and Design of an application;
9. Understand and use basic software patterns, in systems' object oriented analisys and design;
10. Understand and explain what DevOps practices are and what they are for;
11. Understand and explain what it is and how to implement a Pipeline CI/CD.
Program
1. Software Development Methodologies Categories
1.1. Software Development Methodologies categories and characteristics
1.2. Popular software development methodologies overview: Waterfall, SCRUM, Extreme Programming, Unified Process
2. A UML - Unified Modelling Language
2.1. Modelling principles
2.2. Perspectives of Object-Oriented Architectures
2.3. How to use the UML
2.4. A conceptual model of the UML
2.4.1. Building Blocks
2.4.1.1. Entities: Structural; Behavioural; Grouping; Annotational
2.4.1.2. Relationships: Dependency; Association; Generalization; Realization
2.4.1.3. Diagrams
2.4.2. Rules
2.4.3. Common Mechanisms
2.4.3.1. Specifications
2.4.3.2. Adornments
2.4.3.3. Common divisions
2.4.3.4. Extensibility mechanisms
2.5. UML diagrams
3. Object-Oriented Analysis and Design
3.1. System Architecture
3.2. Object Oriented Architecture perspectives and characteristics
3.3. What is Analysis and Design
3.4. Object Oriented Analysis and Design
4. Iterative, Evolutionary and Agile Processes
4.1. Iterative and Evolutionary development advantages
4.2. Change in iterative processes
4.3. Timeboxing
4.4. The Unified Process (UP)
4.4.1. Phases, Iterations and Milestones
4.4.2. Disciplines
5. Inception Phase
5.1. Characteristics
5.2. Duration
5.3. Artifacts
6. Evolutionary Requirements
6.1. Definition of Requirements
6.2. Requirements categories
6.3. Evolutionary Requirements vs Waterfall like requirements
6.4. How to find requirements
7. Use Cases (UCs)
7.1. Actors, Scenarios and Use Cases
7.2. The three use case formats (Resumed, Casual, Detailed)
7.3. How use cases evolve along iterations
8. Elaboration phase
8.1. Iterations of the elaboration phase
8.2. Use cases along elaboration iterations
8.3. Starting artifacts in elaboration phase
9. Domain Models
9.1. What are Domain Models
9.2. Conceptual classes
9.3. How to find conceptual classes
9.4. Attributes
9.5. Attributes vs Classes
9.6. Model with 'Description' classes
9.7. Associations
9.8. How to find associations in the Domain Model
10. System Sequence Diagrams (SSDs)
10.1. What are SSDs and what they are used for
10.2. Relations between DSSs and Use Cases
10.3. System Events and Operations naming
10.4. Operation Contracts and their characteristics
10.5. How to create and write operation contracts
10.6. Operation contracts in the UP context
11. Requirements to Design
11.1. Motivation to evolve to Design tasks
12. Interaction Diagrams
12.1. Sequence and Communication diagrams notation
12.2. Interaction diagrams notation
13. Class diagrams (CD)
13.1. What are class diagrams and what they are used for?
13.2. Class diagrams notation
13.3. Design Classes diagram
13.4. Classifiers
13.5. How represent attributes in CDs
13.6. Annotations
13.7. Operations and Methods
13.8. Stereotypes, profiles and Tags
13.9. Properties
13.10. Generalizations, abstract classes and abstract operations
13.11. Dependency
13.12. Interfaces
13.13. Composition and Aggregation
13.14. Constraints
13.15. Qualified association
13.16. Association class
13.17. Singleton class
13.18. User-defined compartments
13.19. Relationship between interaction diagrams and class diagrams
14. General Responsibility Assignment Software Patterns (GRASP)
14.1. Objects design with responsabilities
14.2. UML vs Design principles
14.3. Object Design: Inputs, Activities and Outputs
14.4. Responsabilities and Responsability-driven Design
14.5. GRASP: A methodical approach to basic OO Design
14.6. Relation between GRASP, Responsabilities and UML
14.7. Patterns
14.7.1. What are Patterns and what they are used for
14.7.2. Applying GRASP to Object Design
14.7.3. Creator
14.7.4. Information Expert (or Expert)
14.7.5. Low Coupling
14.7.6. Controller
14.7.7. High Cohesion
15. Modern tendencies in Software Engeneering
15.1 Devops culture
15.2 CI/CD Pipeline
15.2.1 Continuous Integration
15.2.2 Continuous Delivery (vs. Continuous Deployment)
Evaluation Methodology
Semester Term:
- Written Test (30%)
- Practical Project (70%).
Exam Norml Term:
- Test grade from Semester Term or Written Exam grade (30%)
- Practical Project (70%).
Recourse Term:
- Written Test (30%)
- Practical Project (70%).
Observation 1: Tests and Written exams minimum grade: 7 out of 20; Practical Project minimum grade: 10 out of 20
Observation 2: Students can be called to defend the Practical Work, if demanded by the lecturer. Missing the defense will result in zero (0) points out of 20 in this evaluation component and therefore failing the assessment period in question.
Bibliography
- Booch, G. e Rumbaugh, J. e Jacobson, I. (2005). The Unified Modeling Language User Guide. -: Addison Wesley
- Larman, C. (2004). Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development . -: Prentice Hall
- Nunes, M. e O'Neill, H. e Ramos, P. (2010). Exercícios de UML. Lisboa: Lidel
Teaching Method
Lectures and tutorials.
Software used in class
Visual Pardigm