1.3 О программном сопровождении
Приведенный список факторов не включил обычно приводимое качество: возможность сопровождения (maintainability) . Сопровождение начинается с момента поставки ПО пользователям. Широко известно, что 70% стоимости ПО приходится на его сопровождение. Никакое изучение качества ПО не может быть удовлетворительным, если оно игнорирует этот аспект.
Ключевые концепции
• Целью программной инженерии является нахождение путей построения ПО высокого качества.
• Качество ПО лучше всего видится как компромисс между целым рядом различных целей, а не как единый фактор.
• Внешние факторы, понятные пользователям и клиентам, следует отличать от внутренних факторов, понятных проектировщикам и конструкторам.
• Действительное значение имеют внешние факторы, но управление системой возможно только через внутренние факторы, благодаря которым достигается нужный эффект.
• ОО-метод направлен на улучшение качества тех факторов, которые прежде всего нуждаются в лучших подходах. К ним относятся факторы корректности и устойчивости, связанные с безопасностью, вместе известные как надежность, и факторы, требующие децентрализованной архитектуры ПО, - повторное использование и расширяемость, вместе известные как модульность.
• Сопровождение ПО, потребляющее большую долю его стоимости, находится в невыгодном положении из-за трудности реализации изменений в ПО и из-за слишком большой зависимости программ от физической структуры данных, которыми они манипулируют.
2. Проектирование по контракту: построение надежного по
2.1 Базисные механизмы надежности
Первым и определяющим свойством объектной технологии является почти навязываемая структура программной системы - простая, модульная, расширяемая, - проще гарантирующая надежность.
Общее наблюдение: самый большой враг надежности (и качества ПО в целом) - это сложность. Необходим, но также недостаточен, постоянный акцент на создание элегантного и читабельного ПО. Программные тексты не только пишутся, они еще читаются и переписываются по много раз.
Ясность и простота нотации языковых конструкций - основа любого изощренного подхода к надежности.
Еще одно необходимое оружие - автоматическое управление памятью, в особенности сборка мусора.
2.2 О корректности по
Программная система или ее элемент сами по себе ни корректны, ни не корректны. Корректность подразумевается лишь по отношению к некоторой спецификации. Строго говоря, мы и не будем обсуждать проблему корректности программных элементов, а лишь их согласованность (consistent) с заданной спецификацией.
Свойство корректности ПО
Корректность - понятие относительное.
Разработка спецификации является первым, важнейшим шагом на пути, гарантирующем, что ПО действительно соответствует спецификации. Существенную выгоду можно получить, когда спецификации пишутся одновременно с написанием программы, а лучше, до ее написания. Среди следствий такого подхода можно отметить следующее.
• Разработка ПО корректного с самого начала, проектируемого так, чтобы быть корректным.
• Значительно лучшее понимание проблемы и достижение ее решения.
• Упрощение задачи создания программной документации.
• Обеспечение основ для систематического тестирования и отладки.
