Unit SOFTWARE ENGINEERING

Course
Informatics
Study-unit Code
55024706
Curriculum
In all curricula
Teacher
Alfredo Milani
Teachers
  • Alfredo Milani
Hours
  • 42 ore - Alfredo Milani
CFU
6
Course Regulation
Coorte 2021
Offered
2022/23
Learning activities
Base
Area
Formazione informatica di base
Academic discipline
INF/01
Type of study-unit
Obbligatorio (Required)
Type of learning activities
Attività formativa monodisciplinare
Language of instruction
Italian
Contents
1 Software as Process and product. Software lifecycle.Requirements Analysi.Modeling and Design UML. SW maintenance.
2 SW Metrics: QoS and cost.
3 SW Testing and Security. Secure programming.
4 Reuse support technologies. Design Pattern and Software integration.
Reference texts
Material:

Lecturer Notes available on elearning platform: www.unistudium.unipg.it

Reference textbook (refer to latest editions):
Sommerville, SOFTWARE ENGINEERING. Editore : Pearson Education Italia

Other additional references:about software design SW:
A. Binato, A. Fuggetta, L. Sfardini. Ingegneria del Software. Pearson, 2006.

about: UML
G. Booch, J. Rumbaugh, I. Jacobson. The UML user guide. Addison Wesley, 1999.
J. Arlow, I. Neustadt. UML e Unified Process. McGraw-Hill, 2003.
S. Bennett, J. Skelton, K. Lunn. Introduzione a UML. McGraw-Hill, 2002.
E. Damiani, M. Madravio. UML pratico. Addison Wesley, 2003.
H.E. Eriksson, M. Penker. UML Toolkit. Pearson, 2004.about: Design Pattern
E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns. Addison-Wesley, 2002.
C. Larman. Applicare UML e i pattern. Pearson, 2004.
Educational objectives
Knowledge and application of
techniques and standards for designing, development, organization and evaluation metrics of information systems
main techniques for software testing. Secure Programming best practices
programming techniques based on design patterns
Prerequisites
Prerequisites needed in order to fruitfully and effectively attend this course include baci notions of programming and object oriented programming, logics and complexity of algorithms and data structures.
Teaching methods
In class lectures.
Lab sessions.
Seminars.
Ongoing assignments.
Written exam. Group project with final presentation.
Other information
Elearning platform for student-lecturer interaction and communication http://www.unistudium.unipg.it
Learning verification modality
Final written exam and individual/group project presentation. Continuous evaluation with home/in class assignments for students attending the course can exonerate partially or totally from the final exams.

Final exams duration is two hours, the questions consist in solving practical problem of analysis, modeling and test of real domains, and open ended questions on theoretical issue of software engineering, design pattern and software integration.

The project consists in a team project with project report and presentation where each participant play a role in a software design and development team and applies course methodologies and techniques to a real problem.

For info on support sevices fr students with dsabilities or Specific Learnng Disorders visit the page: http://www.unipg.it/disabilita-e-dsa
Extended program
Program:

1 The software: process and product
- Introduction
- Software life cycle models: waterfall, iterative / incremental models, spiral models
- Techniques, models and languages ¿¿for requirements analysis, design, implementation and software verification.
- Software maintenance
- UML (Universal Modeling Language), basic concepts, main diagrams and their correlation with the requirements analysis (requirement a.), Project (design) and implementation (implementation) phases. Actors, use cases, scenarios, stereotypes. Use case diagrams, class / object diagrams, sequence diagrams, collaboration diagrams, activity diagrams, state diagrams, component diagrams, deployment / release diagrams.
- Modeling exercises using UML on real application scenarios. Use of UML tools in Netbeans environment or other UML-based modeling tools
- IDE development tools and environments, versioning systems.
- Tools for generating documentation: their integration into IDE and UML environments. Autonomous tools (javadoc)

2 Product and process metrics
- Software quality
- Cost metrics: classic metrics, the function point method.

3 Techniques for reliability and safety
- The test phase: development tests, product tests and maintenance tests. The concept of coverage and coverage class of a test.
- Systematic and incremental tests.
- Functional tests (black box), exercises for creating test cases
- Structural tests (white box), exercises for creating test cases
- Secure Coding:
- Major software errors and vulnerabilities (guiding principles, areas and Common Weakness Enumeration)
- Standards and best practices for secure programming. The Java CERT: rules / recommendations, level structure and vulnerability risk assessment

4 Technologies to support reuse
- Design Pattern: basic concepts and objectives of design patterns and exercises of use and application of design patterns. The Model View Controller pattern and the Observer, Iterator, Factory and GUI Factory pattern. Pattern design classes.
Structural DP (Adapter, Façade, Composite, Decorator, Proxy, Flyweight), DP
Creational (Factory, Abstract Factory, Singleton, Prototype) Behavioral DPs (Observer, Mediator, Iterator, Chain of Responsibility, Interpreter.
- Techniques for software integration: the concept of middleware
-information-oriented integration (IOAI), (data integration, interface
processing e.g. API, user interface, embedded device)
- application process-oriented integration (BPAI) (composite and event driven, autonomous / distributed applications)
- service oriented integration (SOAI)
- Portal Oriented Integration (POAI): single system, multiple system, trading com
Condividi su