Software development is based on addressing two problems already stated in the 1970s by the
first two of Lehman’s laws: “continuous change” and “increasing complexity.” These problems arise
from the need for software to be adapted to new user requirements, leading to changes that
increase complexity unless proper measures are taken. Following a traditional software process
can result in producing subpar software with “smelly” code—code that developers either cannot
understand or cannot change because of a fragile architecture.
Software maintainability is defined as the amount of effort required to keep a software product
useful. A major challenge in the software industry is that the majority of a software product’s
lifetime cost occurs after its initial deployment. The better the maintainability, the lower these
future costs, making it crucial to understand how to develop maintainable software.
This course provides an in-depth look at what it means for software to be maintainable. It presents
the principles and practices that have been proposed for developing maintainable software.
Students will learn to evaluate and critique these principles and practices by examining their
application in real-world scenarios and by understanding the research on their effectiveness. This
preparation will enable students to develop high-quality software products in the industry. In this
course, students will also learn the guidelines and techniques necessary to produce maintainable
software that features clean code, a robust architecture, and a comprehensive suite of automated
tests to accommodate changes whenever requirements evolve.
- المعلم: Bouhamed MohammedMounir
This course provides an in-depth look at what it means for software to be maintainable. It presents the principles and practices that have been proposed for developing maintainable software. Students will learn to evaluate and critique these principles and practices by examining their application in practice and through understanding the research on their effectiveness. This will prepare students for developing high-quality software products in the industry. In this course, students will learn the necessary guidelines and techniques to produce maintainable software that has clean code, a clean architecture, and a strong automated suite of tests to change it whenever requirement change.
- المعلم: Mouadh BALI