Study-unit SOFTWARE ENGINEERING

Course name Informatics
Study-unit Code 55024706
Curriculum Comune a tutti i curricula
Lecturer Alfredo Milani
Lecturers
  • Alfredo Milani
Hours
  • 42 ore - Alfredo Milani
CFU 6
Course Regulation Coorte 2021
Supplied 2022/23
Supplied other course regulation
Learning activities Base
Area Formazione informatica di base
Sector 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

Digital Information Service by Lidia Pozzoblu - Thanks to Aldo Bizzilupo for Web site and other technical assistance.