Элементы программной инженерии
1. Вспоминая предыдущую лекцию
Наша предыдущая лекция целиком была посвящена знакомству с терминологией и введению в предмет. Сформулируем кратко некоторые выводы:
- Программирование (Computer science) - молодая, активно развивающаяся область, за полвека своего развития преодолевшая огромный путь. Будучи как искусством, так и наукой, в наше время термин программирование приобрел качественно новую окраску, став одной из отраслей бизнеса.
- Под IT-проектами можно понимать любые проекты в области информационных технологий. Мы далее будем рассматривать лишь те IT-проекты, целью которых является разработка программного обеспечения.
- Программное обеспечение (Software) - набор компьютерных программ, процедур и связанной с ними документации и данных. Таким образом, программное обеспечение - это не просто программа. Это еще и документация и руководство пользователя. Вместо термина программное обеспечение часто используют термин программный продукт.
- Для того чтобы бизнес, связанный с разработкой ПО, был успешным, необходимо выпускать качественное ПО, интересное потенциальным пользователям, делать это в срок, укладываться в имеющийся бюджет. К сожалению, доля проваленных проектов по-прежнему катастрофически высока.
- Анализ рынка ПО в мире показывает большие темпы роста. В отрасль вкладываются огромные деньги. В России в отрасли IT наблюдается бум. Отрадный факт - укрепление Российских IT-компаний.
- Основными причинами неудачи IT-проектов являются:
Причина 1. Нереалистичные временные рамки.
Причина 2. Недостаток количества исполнителей.
Причина 3. Размытые границы проекта.
Причина 4. Недостаток средств.
Причина 5. Нехватка квалифицированных кадров.
- Технологии программирования - путь к успеху в разработке ПО. Использование различных технологий позволяет преодолевать сложность решаемых задач и, соответственно, сложность создания качественного ПО. Среди основных технологий можно выделить следующие: структурное программирование, модульное программирование, объектно-ориентированное программирование, компонентное программирование.
2. Вместо введения
2.1. Источник материала
При написании данной лекции активно использовались материалы Иана Соммервилля (Ian Sommerville) - одного из наиболее уважаемых авторов в данной области.
Источник (на английском языке):
- http://www.comp.lancs.ac.uk/computing/resources/IanS/SE6
- Ian Sommerville. Software Engineering. 6th Edition
- http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7
- Ian Sommerville. Software Engineering. 7th Edition.
Источник (на русском языке):
- Иан Соммервиль. Инженерия программного обеспечения. 6 изд, и.д. "Вильямс", 2002.
2.2. Цели лекции
В предыдущей лекции мы познакомились с базовыми понятиями и обсудили ряд проблем, которые возникают при разработке программного обеспечения. В данной лекции мы кратко рассмотрим основные понятия программной инженерии - отрасли, имеющей непосредственное отношение к разработке ПО. Заметим, что по программной инженерии написано большое количество объемных книг (см., например, предыдущий раздел). Существует масса терминологии, подходов, схем, стандартов, технологий... В этой лекции мы не ставим цели объять необъятное. Подробный курс по программной инженерии будет прочитан позже (его место в учебном плане - 3-4 курс). В нашем курсе мы постараемся лишь познакомиться с этой важной и сложной дисциплиной. Так, мы коснемся некоторой терминологии, немного затронем теорию, кратко поговорим о проблемах. На других лекциях мы поговорим о практических подходах к решению данных проблем.
3. Программная инженерия, основные понятия
3.1. Инженеры и программные инженеры
Говоря о программной инженерии, необходимо выяснить, кто такие инженеры.
За ответом обратимся к Большой Советской Энциклопедии:
Инженер (франц. ingenieur, от лат. ingenium - способность, изобретательность), специалист с высшим техническим образованием. Первоначально - название лиц, управлявших военными машинами [2.5].
Понятие гражданский инженер появилось в 16 в. в Голландии применительно к строителям мостов и дорог, затем в Англии и др. странах. Первые учебные заведения для подготовки инженеров были созданы в 17 в. в Дании, в 18 в. - в Великобритании, Франции, Германии, Австрии и др. В России первая инженерная школа основана Петром I в 1712 в Москве. В Петербурге были открыты Горное училище, приравненное к академиям (1773), Институт инженеров путей сообщения (1809), Училище гражданских инженеров (1832, с 1882 - Институт гражданских инженеров), Инженерная академия (1855). С 19 в. за рубежом стали различать инженеров-практиков, или профессиональных инженеров (по существу специалистов, имевших квалификацию техника), и дипломированных инженеров, получивших высшее техническое образование (Civil Engineer) [2.5].
Итак, инженер - дипломированный специалист, имеющий высшее техническое образование. Нетрудно догадаться, что программный инженер - инженер в области разработки программного обеспечения.
3.2. Программная инженерия как инженерная дисциплина
Теперь попробуем ответить на вопрос, что такое программная инженерия.
Программная инженерия (инженерия программного обеспечения, software engineering) - инженерная дисциплина, связанная с теорией, методами и средствами профессиональной разработки ПО [2.1, 2.2, 2.3].
Как было выяснено ранее, программное обеспечение представляет собой собственно программы плюс вся сопутствующая документация. На протяжении последних десятилетий стоимость разработки ПО неуклонно растет, в результате чего эта стоимость становится весьма высокой. Программная инженерия способствует решению этой проблемы.