Theory: Systematic principles for construction of correct and robust programs, life cycle models, PSS standard, software requirements, user requirements, architectural design specification, Capability Maturity Model (CMM), extreme programming, organization of work in group, group dynamics, experience from industry, testing, design patterns. Documentation.
Presentation of project ideas, assignment of projects. Constructing documents concerning the assigned project: documents on project planning, user requirements, software requirements, program architecture.
Program development project: Realization of a program development project. Design, including prototyping and implementation of an application is done in groups of 3-6 students. The projects are “real life projects” from outside the course. A project description, an user manual, and a system description are written and the project is presented orally including a live demonstration.
After attending this course, the student is expected to be able to:
- describe a broad range of software engineering techniques, processes and methodologies that have been developed over the past 30 years,
- perform requirements analysis and formulation, system architecture and design, system implementation, and system testing,
- evaluate the applicability of a particular software engineering technique, process or methodology to a given project from both a technical and financial perspective,
- use a variety of tools (both commercial and academic) that can be used to design and implement software systems,
- evaluate whether a specific software engineering tool is technically and economically viable for a given project,
- find information in the main sources of information regarding software engineering technology,
- be effective in both oral and written technical communication,
- in order to be able to
- work in industrial software development projects,
- keep up with and absorb developments in software engineering.