Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems. This course will study a collection of methods that embody an "engineering" approach to the development of computer software. We will study methods for analysis, design, testing, and implementation of large, complex software systems. The major work of the course is a group project.
Software Engineering is a discipline that rules every aspect of the software development process. In other word is the application of Engineering to the Software. It is concerned with requirement specification, design, models, writing documentation and also writing unit tests, not just coding. Moreover it also provide metrics to quantify the quality of the product, i.e. the software developed. Software Development Templates, Requirement Analysis, UML Modeling Systems, Design Patterns, Verification and Validation, Time Template Specification Languages, Temporary Property Verification Algorithms, Modeling and Case Resolution using Model Checkers "
At the end of the course students should be able:
There are no specific requisites. I am assuming that students are familiar with programming languages and Data Structures. This course demands both independent and cooperative work. The implementation language used during the lessons is Java. Java programming experience is not a prerequisite, because it is assumed that as a software professional, students have the ability to learn new languages and tools quickly.
During the course, lectures are alternated with practical demonstrations of the teaching concepts. For each argument, a set of slides are available on the main site of the course (aulaweb). Moreover also a set of practical example are used during the lessons and available on github.
Finally teacher and students together during the course will collaborate to solve a practical example.
A (tentative) list of topics is:
Possible reading books to go into mode details:
Ricevimento: The professor receives by appointment both in Person and via Teams
MASSIMO NARIZZANO (President)
ENRICO GIUNCHIGLIA
ARMANDO TACCHELLA (President Substitute)
Student assesment will be given by evaluating a group project, that follows the rules detailed below:
The grade of the exam will be given by evaluating the project in the following compositions:
50%: of the vote will be assigned by evaluating how well the software satisfies the user's requirements. It is usually assessed by the company/university mentor
50% of the vote will be assigned evaluating the quality of the software produced, from the point of view of software engineering practices. Usually this will be assessed by the Course Instructor.