Олеслав Антамошкин

Программная инженерия. Теория и практика


Скачать книгу

инженерных дисциплин она качественно выделяется нематериальностью программного обеспечения и дискретной природой его функционирования. Основываясь на математике и компьютинге, программная инженерия занимается разработкой систематических моделей и надежных методов производства высококачественного программного обеспечения, и данный подход распространяется на все уровни – от теории и принципов до реальной практики создания программного обеспечения, которая лучше всего заметна сторонним наблюдателям.

      Термин «инженерия программного обеспечения» появился впервые в 1968 г. на конференции НАТО «Инженерия программного обеспечения» и должен был спровоцировать размышления относительно текущего в то время «кризиса программного обеспечения». С тех пор он стал использоваться для определения как профессии, так и области исследований, посвященных созданию программного обеспечения, которое имеет более высокое качество, более доступно, поддерживаемо и быстрее строится.

      Так как эта область относительно молода по сравнению со своими сестринскими областями инженерии, все еще продолжаются дебаты вокруг того, что представляет собой «инженерия программного обеспечения» и удовлетворяет ли она понятию инженерии. Этот спор развивается естественным образом, начавшись с попыток рассматривать создание программного обеспечения только как программирование. Разработка программного обеспечения – термин, иногда предпочитаемый практиками в промышленности, которые рассматривают разработку программного обеспечения как несравнимо более мощную и конструкционно-емкую методологию в сравнении с процессом написания кода программистом.

      Все же несмотря на юность профессии, будущее области радужно. Так, Money Magazine и Salary.com оценили профессию разработчика программного обеспечения как лучшую работу в Америке в 2006 г.

      В настоящее время существует как минимум три основополагающих документа в области программной инженерии. Это SWEBOK (Software Engineering Body of Knowledge) – документ, подготавливаемый комитетом Software Engineering Coordinating Committee, в который вовлечено сообщество IEEE Computer Society (IEEE-CS). Назначение SWEBOK – в объединении знаний по инженерии программного обеспечения (разработке программного обеспечения), Второй документ – Software Engineering Code of Ethics and Professional Practice, посвящен этическим и профессиональным стандартам для инженерии ПО, выпущен в 1998 г. Третий документ (SE2004), выпущенный в 2004 г., посвящен составлению учебного плана по программной инженерии.

      Эти документы созданы совместными усилиями IEEE-CS и Association for Computing Machinery (ACM) и призваны определить следующее:

      • необходимый набор знаний и рекомендуемые практики;

      • этические и профессиональные стандарты;

      • учебную программу для студентов, аспирантов и продолжающих обучение.

      В рамках изучения дисциплины «Программная инженерия» сложно охватить весь объем накопленных в этой области знаний. Этот учебник представляет собой попытку собрать основные компоненты необходимых наборов знаний, умений и рекомендуемых практик в рассматриваемой дисциплине. В первую очередь он предназначен для студентов, обучающихся по направлению подготовки «Прикладная информатика». Также он будет небезынтересен людям, непосредственно занимающимся разработкой и проектированием различных информационных систем, в аспекте систематизации и актуализации знаний по программной инженерии.

      Учебник состоит из теоретического курса и практикума. Для успешного освоения теории необходимо использовать так называемые карты памяти. Обратите внимание, что первые карты памяти нужно рисовать «вручную». Впоследствии, особенно при «массовом» процессе использования карт памяти, целесообразно пользоваться инструментами. Мы рекомендуем продукт Comapping (www.comapping.com).

      Часть заданий и вопросов на отдельную тему часто необходимо выполнять после освоения всего курса вообще, так как они содержат ссылки на другие темы – как назад, так и вперед.

      Относительно всего теоретического материала правомочно одно стандартное задание – нарисовать все содержание в виде одной карты памяти на листе формата А4 (можно А3, но не больше). Такие задания целесообразно выполнять сразу после изучения. Полезность такого подхода связана с тем, что такие карты памяти легко рисуются (при наличии навыка) и очень легко проверяются.

      Часто задания с помощью карт памяти оказываются не совсем картами памяти. Исчезает центральный объект, вместо него появляется произвольный «плоский» граф. Также полезно оказывается рисовать имена связям. Мы все равно называем такие графы картами памяти, чтобы терминологически не усложнять ситуацию.

      Теоретический курс

      1. Методы и средства программной инженерии

      Понятие программной инженерии. Основные определения: информатика, системотехника, бизнес-реинжиниринг. Программное обеспечение: определение, свойства.

      1.1. Введение в программную инженерию

      Чем программирование отличается от программной инженерии [2]? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих контекстах. Можно программировать для удовольствия, для того,