Software Engineering 1

prof. Carlo Tasso

Goals

The aim of the course is the introduction of the basic elements of Software Engineering, i.e. the field of Computer Science devoted to study the methodologies, techniques, and tools utilized in the industrial production of software.

More specifically, the course describes several process models of software development and the various phases of the life cycle, with reference to both traditional and artificial intelligence software systems.


Topics

Introduction. Origins and motivations for Software Engineering. Basic definitions. The concept of quality. Life cycle. Economical issues. Risk and complexity factors in the production process. traditional software systems and artificial intelligence systems.

Process models. Waterfall and spiral models. The role of prototyping.

Requirement analysis and specification. Techniques for analysis and modeling. Specification techniques.

Software design and development. Goals of design. Approaches to design. Coding.

Verification and validation of software. Testing. Quality certification and ISO standards.

Management of a software project. Planning. Evaluation of the costs and benefits. Project team. Directing and controlling a software project. Tools for software development. Environments and CASE systems.

Books and study material

I. Sommerville, Software Engineering. Addison Wesley, 1996.

G. Guida, C. Tasso. Design and Development of Knowledge-Based Systems. J. Wiley, 1994.

C. Ghezzi, A. Fuggetta, S. Morasca, A. Morzenti, M. Pezzè. Ingegneria del Software. Mondadori Informatica, 1991.

T. Demarco. Structured Analysis and System Specification, Prentice-Hall, 1979.