Marks are posted
Welcome to SENG 371 Software Evolution
A core course in the BSEng program
Course description
Large software systems form the backbone of much of the computing world; modern clients and servers rely on operating systems, database management systems, office productivity suites, web servers, and a variety of other large-scale, non-trivial software packages. Such packages can easily contain many millions of lines of source code, developed by thousands of individuals over the course of many years, often with different versions and revisions across the life of the product.
This course introduces the problems and solutions inherent in developing such large scale software systems. Students will work together in groups to evolve an existing project for the duration of the term.
Learning objectives
- Define and introduce the topics of software evolution and maintenance
- Motivate why maintenance and evolution are important topics to consider
- Discuss how these concepts fit within the wider context of software engineering
- Give a flavour of the theoretical background and key skills required to implement effective change
- Discuss these concepts in terms of old and new technologies
Topics
- Software maintenance and evolution
- Build Environment Management
- Software Installation and Configuration
- Fundamentals of software change
- Self-adaptive systems
- Autonomic computing
- Maintenance processes
- Program Understanding
- Management and measurement
- Human side of software maintenance
- Reverse Engineering
- Software Visualization
- Testing
- Patterns and anti-patterns
- Software Safety
- Reuse, reusability and reengineering
- Maintenance tools
- Documentation, code and API guidelines
- Open source development
- Legal aspects in maintenance
Calendar and Marking scheme
|