Современные тенденции

Ранние подходы к разработке программного обеспечения требовали строго последовательного выполнения этапов анализа, проектирования, реализации и тестирования. Существовало мнение, что слишком рискованно создавать большие системы программного обеспечения с помощью метода проб и ошибок. Разработчики настаивали на том, что прежде чем начать проектирование, нужно полностью завершить анализ системы, а прежде чем приступить к реализации, необходимо завершить проектирование. Такой метод разработки сейчас называется водопадной моделью (waterfall model), поскольку процесс разработки может протекать только в одном направлении.

Нетрудно заметить сходство четырех этапов решения задачи Пойа (см. раздел 4.3) с этапами разработки программного обеспечения. Как-никак создание большой системы программного обеспечения — это и есть решение задачи. Однако традиционный последовательный подход к созданию программ представляет собой полную противоположность методу проб и ошибок, который необходим для творческого решения задач. В то время как водопадный метод создает высоко структурированные условия, в которых процесс разработки протекает последовательно, творческое решение задач создает неструктурированные условия, в которых можно отказаться от плана решения задачи и следовать своей интуиции, не объясняя, почему.

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

Возникновение инкрементной модели свидетельствует о наличии тенденции создавать программное обеспечение с помощью макетирования (prototyping), при котором производятся и оцениваются незаконченные версии системы, называемые макетами (prototypes). В случае инкрементной модели построение нескольких версий макетов в итоге завершается созданием конечной версии системы. Такой процесс называется эволюционным макетированием (evolutionary prototyping). В других случаях макеты могут использоваться только на ранних стадиях разработки. Такой подход называется временным макетированием (throwaway prototyping). В качестве примера можно привести разновидность временного макетирования — быстрое макетирование, при котором на ранней стадии разработки создается простая версия системы. Такой макет может состоять только из нескольких изображений на экране, которые показывают, как система будет взаимодействовать с пользователем и какими возможностями она будет обладать. Цель в данном случае состоит не в том, чтобы создать работающую версию продукта, а в том, чтобы получить демонстрационный инструмент, который можно использовать для наглядного представления взаимодействия частей системы. Например, быстрое проектирование эффективно при определении требований к системе в процессе анализа или во время демонстрации продукта потенциальному покупателю.

Сегодня методы проектирования охватывают широкий спектр подходов. С одной стороны, традиционную водопадную модель отчасти можно охарактеризовать с помощью образа руководителей проекта и программистов, работающих в отдельных кабинетах каждый над определенной частью общей системы. С другой стороны, существует модель (называемая экстремальным программированием), когда команда, по меньшей мере из двенадцати человек, работает в одном помещении. В процессе создания пакета программного обеспечения программисты свободно обмениваются идеями и помогают друг другу, ежедневно осуществляя проектирование, реализацию и тестирование системы.

Другое направление в разработке программного обеспечения — это применение компьютерных технологий к процессу создания систем программного обеспечения. В результате этого подхода была создана система CASE (Computer-Aided Software Engineering — система автоматизированной разработки программ). Эти компьютерные системы называются CASE-инструментами и включают в себя инструменты планирования проекта (помогающие оценить затраты, составить расписание и разместить персонал), инструменты управления проектом (помогающие контролировать работу над проектом), инструменты для создания документации (помогающие написать и систематизировать документацию), инструменты макетирования (позволяющие создавать макеты), инструменты создания интерфейса (применяемые при создании графического пользовательского интерфейса) и инструменты программирования (обеспечивающие написание и отладку программы). Некоторые из перечисленных инструментов представляют собой гораздо больше, чем текстовые редакторы, электронные таблицы и системы электронной почты, которые используются в других приложениях. Эти достаточно сложные пакеты программ создавались, главным образом, как средства поддержки программных разработок. Например, некоторые CASE-инструменты включают в себя генераторы кода, которые, располагая техническими характеристиками части системы, порождают программу на языке высокого уровня, являющуюся реализацией этой части системы.

Модульность

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: