SOFTWARE ENGINEERING
Academic Year 2017/2018 - 2° YearCredit Value: 9
Taught classes: 36 hours
Exercise: 36 hours
Term / Semester: 2°
Learning Objectives
General goals described according to the expected learning results.
1. Knowledge and understanding: the student will have knowledge on object-oriented mechanisms, the modularity issues, the development process.
2. Applying knowledge and understanding: the student will be able to design, document, and implement object-oriented software systems, and will be able to recognise the developer roles.
3. Making judgements: the student will be able to analyse the modularity of software systems.
4. Communication skills: the student will be able to describe software components using a proper technical language.
5. Learning skills: the student will be able to solve the typical problems faced during the design and implemntation, by studying, analysing and using novel object-oriented technologies, according to the general principles given.
Detailed Course Content
Software development processes, such as waterfall, evolutive and agile (spiral, XP). Projects management: planning. Requirement engineering: gathering and organising requirements. UML notation: use cases, activities, states, classes, sequences and collaboration diagrams.
Object oriented design, inheritance and polymorphism. Quality issues. Design Patterns are described by means of objectives, contexts, problems solved, examples, solution with diagrams and code: Singleton, Factory Method, Abstract Factory, Adapter, Bridge, Composite, Decorator, Facade, Chain of Responsibility, Mediator, Observer, State. Concurrency in Java.
Stream Java and parallelism.
Refactoring techniques.
Software metrics and software evolution.
Software validation by means of testing.
Textbook Information
- Ian Sommerville. Software Engineering. Pearson Addison-Wesley. 2010.
- Gamma, et al. Design Patterns – Elements of Reusable Object-Oriented Software. Pearson Addison-Wesley. 1994.
- Martin Fowler. UML Distilled. Pearson. 2003