Software engineering is the most technical part of technical computer science, focused on developing and applying systematic principles common to other kinds of engineering (like mechanical or electrical engineering) to development of software systems. In particular, it covers:
- Software requirements, their elicitation, specification and verification
- Software architecture, modelling and design
- Software testing, quality and guarantees
- Software construction, methodologies and processes
- Software deployment, configuration and maintenance
- Software project management, planning and audit
- Software ethics, licensing and collaboration
Software evolution, in particular, is a branch of software engineering focused on studying existing software and not necessarily creating new one. It covers, among other topics:
- Mining repositories of versioned source code for interesting facts about software history
- Refactoring, restructuring and replatforming of software
- Developing and calculating metrics on software artefacts
- Automatically measuring quality of source code by detecting harmful constructs
- Bug fixing and other forms of corrective maintenance
- Automating and tool-supporting maintenance activities
A typical research project in software engineering involves an implementation of a software system at least up to a fully functioning prototype, performing a feasibility study and/or a user study. A typical software evolution project covers development of a software system that analyses or transforms another software system. Both often use methodologies from empirical software engineering.
Prerequisites
- Basic knowledge about programming and design of software
Related Modules
- M2 Software Systems
Available Project Proposals
If you are interested in the general topic of Software Engineering and Evolution, or if have your own project idea related to the topic, please contact us directly. Alternatively, you can also work on one of the following concrete project proposals: