SOFTWARE ENGINEERING
cod. 06015

Academic year 2014/15
3° year of course - First semester
Professor
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Field
Ingegneria informatica
Type of training activity
Characterising
63 hours
of face-to-face activities
9 credits
hub:
course unit
in - - -

Learning objectives

The goal of the course is to provide an in-depth knowledge on the methodologies and techniques for the development of the software, on the Java programming language, and on the tools that may simplify the development and management of software systems.
Moreover, the course has the goal of providing to the students the ability to use the acquired knowledge and the experience, gained during the lab activities, to identify the best solutions for the desigh of software systems and for developing some satisfying implementations for both the properties and the cost of the developed systems.

Prerequisites

Fundamental concepts of Informatics, Fundamental concepts of
Programming.

Course unit content

The course presents the main techniques and methodologies for the development of software systems with particular attention to object-oriented systems and introduces the Java programming language. In particular, the course copes with the following topics: software development process, methodologies for software development, requirements engineering, software systems design, implementation, testing and maintenance, development of object-oriented systems, UML, object-oriented systems analysis, design and implementation of object-oriented systems, design patterns, tools for the development of software systems, and Java.

Full programme

Foundations of software engineering
- Software development process
- Methodologies for software development
- Requirements engineering
- Software systems design
- Implementation, testing and maintenance

Development of object-oriented systems
- UML
- Object-oriented systems analysis
- Design and implementation of object-oriented systems
- Design patterns

Tools for the development of software systems

Java
- Objects and classes
- Inheritance and polymorphism
- Exceptions
- Input/output
- Collections
- Graphical user interfaces
- Reflection and concurrent programming

Bibliography

B. Bruegge and A.H. Dutoit. Object-Oriented Software Engineering: Using UML, Patterns and Java, 3rd Edition, Prentice Hall, 2009.

Teaching methods

The course is based on theoretical lectures and lab activities. In particular, the lab activities are dedicated to the development of some software systems taking advantage of the Java language and of the software tools discussed during the course. In these activities, students work individually, of course under the control and with the support of the professor and without any restriction on positive interaction among them.

Assessment methods and criteria

Evaluation is based on a written test, based on open-ended questions on the theoretical part of the course, and on some design exercises, and an assignment for the evaluation of the practical abilities of students on developing software systems. The evaluation of the assignment is based on the properties of both the developed system and the related documentation. Written test and assignment are normally both the 50 percent of the grade. There are two midterm tests based on open-ended questions on the theoretical part of the course and on some design exercises. A positive evaluation of both the midterms tests allows to avoid the final written test.

Other information

- - -