Взгляд на ПО с точки зрения описания программы, разработки, ее менеджмента и оценки, как системы, фокусируется сегодня в самостоятельную дисциплину, —«программную инженерию» (software engineering).
Хотя предмет этот относительно молод, почти каждый современный университет, обучающий студентов и аспирантов компьютерным наукам, имеет среди прочих курсы и по данной дисциплине.
Шестое издание книги «Software engineering» Айена Соммервилла выпущено в серии International Computer Science и представляет собой весьма обстоятельный труд. Книга рекомендуется преподавателям в качестве пособия при чтении трех типов курсов: вводного, промежуточного — с рассмотрением отдельных тем, а также углубленного. На Web-странице Соммервилла (www.software-engin.com) организована поддержка читателей, творчески работающих с данной книгой. Кроме того, важной характеристикой издания является полнота изложения, соответствующая требованиям ACM/IEEE Computing Curricula 2001 и Software Engineering Body of Knowledge, предъявляемым к корпусу необходимых знаний по предмету.
Соммервилл разбил материал книги на семь частей, дающих возможность читателю составить исчерпывающее представление о программном обеспечении как о предмете, неразрывно связанном с бизнесом. Так, отвечая на вопрос: «Что такое ПО?», автор включает в это понятие не только программы, а и документацию и данные. При этом выделяются два типа продуктов: программное обеспечение общего назначения и выполняемое на заказ. Поэтому, характеризуя понятие программной инженерии, автор уделяет внимание всему кругу вопросов, связанных с инженерными и производственными аспектами ПО. Если в первом случае речь идет о превращении идей в реализуемые мысли, то во втором решаются не только технические проблемы разработки программ, но и их доведение до уровня продуктов.
Открывает книгу обзорная часть, где автор пишет о системных представлениях, связанных с ПО. В том числе о степени независимости от свойств исходной системы, о системных средах, необходимости моделирования возможностей программ, их поддержке и об основных процессах работы с ПО: составление моделей, описание, проектирование и реализация, проверка качества работы программ, оценка выполнения требований заказчика и др.
Рассмотрению требований, предъявляемых к ПО, посвящена вторая часть книги, которая касается всех основных аспектов разработки программ — взаимодействие с пользователями, поддержка необходимых функций, документирование и т. п. Разумеется, эти аспекты проявляются и в отношении используемых процессов, системных моделей, а также необходимости обращения к прототипам и формальным спецификациям.
Отдельная часть книги отдана вопросам проектирования программного обеспечения. В ней изложены материалы о выборе архитектуры: системном структурировании, моделях управления, модульном представлении и пр. Рассмотрены современные технологии проектирования, включая CORBA, объектно-ориентированные методы, разработка в реальном времени или проектирование, допускающие повторное использование имеющихся решений.
Учитывая внимание к так называемым критическим системам, автор рассматривает круг проблем, связанных с особенностями соответствующего ПО. И, прежде всего обеспечения надежности ПО в широком смысле, т.е. обнаружение и устранение ошибок в процессе его разработки, эксплуатации, а также ограничение области потенциальных отказов. Соответственно критические системы нуждаются в собственных спецификациях и методах разработки.
Проверка правильности работы программ и получение ее подтверждения по мере усложнения ПО стали сегодня очень важными этапами, чему и было обязано появление соответствующей части в книге Соммервилла. Читателям будут интересны главы об организации работ по проверке правильности программ, соответствующей методологии, а также по тестированию. Особое внимание уделено вопросам получения подтверждения правильности работы программ для критически важных систем.
Две последние части книги посвящены менеджменту и возможностям развития программного обеспечения. Разбирается круг проблем, связанных с организацией работы персонала на различных этапах создания ПО, с оценкой связанных с этим затрат, обеспечением качества и его совершенствованием. Рассматриваются вопросы преемственности ПО, которая зависит от необходимости обновления уже существующих программ и их изменения вследствие развития исходной системы, процессов реинжиниринга или в результате изменений в менеджменте.
Ian Sommerville, Software Engineering. Addison-Wesley, 2001. 693 pp