Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2- Введение в программирование.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
752.64 Кб
Скачать

Этапы разработки программного обеспечения. Языки программирования.

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

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

Любая вычислительная машина общего назначения может выполнить все, что только может быть описано с помощью алгоритма.

Можно ввести этапы разработки программного обеспечения («цикл жизни»):

  • анализ требований, предъявляемых к системе и определение спецификаций 6%

  • проектирование 5%

  • кодирование 7%

  • тестирование (автономное 8%, комплексное 7%)

  • эксплуатация и сопровождение 67%

Естественно, что для разных программ соотношение временных затрат на реализацию отдельных этапов будут различными. Тем не менее, если говорить о программном обеспечении относительно больших систем, то усредненное временное соотношение будет следующим.

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

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

Кодирование обычно является наиболее простым этапом, а его реализация облегчается при использовании алгоритмических языков высокого уровня и методов структурного программирования. Было показано (B.Boehm, 1975), что в среднем приблизительно 64% всех ошибок вносится на этапе проектирования и лишь 36% - на этапе кодирования.

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

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

Подробнее вопросы тестирования и отладки будем рассматривать после изучения языка программирования.

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

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

Прежде, чем рассматривать вопросы, относящиеся к алгоритмизации, остановимся на выборе языка программирования.