Файл: каскадная, поэтапная модель с промежуточным контролем, спиральная, инкрементная».pdf
Добавлен: 28.03.2023
Просмотров: 316
Скачиваний: 4
СОДЕРЖАНИЕ
1. ПОНЯТИЕ ПРОГРАММНОЙ СИСТЕМЫ. АРХИТЕКТУРА И МЕТОДОЛОГИЯ ПРЕКТИРОВАНИЯ ПРОГРАММНОЙ СИСТЕМЫ
1.1. Понятие программной системы
1.2. Архитектура программной системы
1.3. Структурное программирование
1.4. Методы структурного проектирования
1.5. Технология модульного программирования
2. ЖИЗНЕННЫЕ ЦИКЛЫ ПРОГРАММНЫХ СИСТЕМ
ВВЕДЕНИЕ
Актуальность темы курсовой работы заключается в том, что процесс разработки и эксплуатации программных систем (ПС) неизменно сталкивается с рядом проблем, решение которых во многом зависит от правильности выбора модели жизненного цикла ПС, который должен не только соответствовать техническому заданию, но и максимально точно удовлетворять ожиданиям заказчика и потребностям пользователей.
Программные системы являются областью исследований для специалистов, связанных с разработкой программного обеспечения.
Сделав правильный выбор модели жизненного цикла программной системы (ЖЦ ПС) относительно разработки проекта, привлеченные к работе специалисты, вместе с тем решают вопросы из области оптимизации сроков проведения работ, трудоемкости и материальных затрат.
Целью курсовой работы является расширение и закрепление теоретических знаний по дисциплине «Оптимизация программных систем».
Для достижения поставленной задачи в первой главе курсовой работы
описаны понятие и архитектура ПС, методы структурного программирования, на примере микроядерной операционной системы рассмотрен «клиент-серверный» подход модульной организации ПС, как основной принцип взаимодействия между модулями.
Во второй главе речь пойдет о каскадной, инкрементной, спиральной и поэтапной с промежуточным контролем моделях жизненного цикла программных средств.
При написании работы использовались научные труды следующих авторов: С. В. Назарова, С. А. Орлова, П. С. Макарова и других авторов.
1. ПОНЯТИЕ ПРОГРАММНОЙ СИСТЕМЫ. АРХИТЕКТУРА И МЕТОДОЛОГИЯ ПРЕКТИРОВАНИЯ ПРОГРАММНОЙ СИСТЕМЫ
1.1. Понятие программной системы
Программная система (Software system) – это организованная совокупность, состоящая из взаимодействующих программного обеспечения и аппаратного обеспечения и данных, которая призвана решать задачу или ряд взаимосвязанных задач.
Программное обеспечение (Software) – совокупность программ (комбинация компьютерных инструкций и данных), выполняемых вычислительной системой.
Аппаратное обеспечение (hardware) – это совокупность технических средств (электронных и механических устройств), обеспечивающих, как нормальное функционирование каких-либо электронных систем – компьютеров, сетей передачи данных, так и расширяющих их основные функции.
Данные – поддающееся многократной интерпретации представление информации в формализованном виде, пригодном для передачи, связи, или обработки [10].
Программная система (или программный комплекс, программный продукт) более сложна, чем просто программа, она включает в себя большое количество компонентов, таких как файл конфигурации, спецификация, результаты испытаний, записи обслуживания, документация для конечного пользователя и т.д., которые работают вместе.
В своей монографии «Архитектуры и проектирование программных систем» С. В. Назаров приводит ряд критериев, отличающих программные системы от небольших программ [4]. Вот некоторые из них:
- выполнения задач программы связано с взаимодействием с другими программами и программно-аппаратными системами;
- вся сопроводительная документация к программе (в том числе обучающая работе с программой) должна быть исчерпывающей и понятной;
- даже немногочисленные сбои в работе программы способны нанести ощутимый ущерб пользователям и другим организациям и лицам;
- развитие и модификация большой программы приносит дополнительную выгоду пользователям;
- в создании большой программы принимает участие множество специалистов, ее практически невозможно написать с первой попытки, с небольшими усилиями и в одиночку;
- число пользователей больших программ намного больше по сравнению с небольшими программами.
Стоит обратить внимание, что одного какого-либо критерия недостаточно, чтобы программу считать программной системой. Сам термин «программная система» «намекает» на наличие некоторого числа (не менее двух) критериев.
Самый наглядный пример большой программы, с которым сталкивается каждый пользователь ПК – операционная система или, например, Единая автоматизированная система отделений почтовой связи (ЕАС ОПС), включающая в себя более 15 программных продуктов, использовавшихся «Почтой России» прежде.
Программные системы имеют развитый интерфейс, который на стадии постановки задачи требует тщательного продумывания дальнейшего проектирования и разработки, которые также требуют внимательного подхода и кропотливого труда каждого участника создания будущей системы.
В работе С. В. Назарова и др. «Введение в программные системы и их разработку»[5] приводится процесс создания программ, как последовательность: постановка задачи (problem definition) – алгоритм (algorithm) – программирование (programming).
Постановка задачи – это точная формулировка требований, предъявляемых к работе программы, с описанием входной и выходной информации. Может включать в себя описание подходов к решению задачи.
Алгоритм – точный набор инструкций, описывающих порядок действий исполнителя (компьютера) для решения некоторой задачи.
Программирование – теоретическая и практическая деятельность, связанная с созданием программ.
Программные системы могут входить в состав программных комплексов. Обычно это более масштабные системы в рамках больших технических и организационных систем, например аппаратно-программный комплекс «TouchInform».
1.2. Архитектура программной системы
В методологии проектирования ПС понятие архитектура занимает ключевое место.
Архитектура программной системы – это организационная структура, включающая модули, их внешние характеристики, а также отношения между модулями. Архитектура программной системы описывает ее основные компоненты, их отношения (структуры) и то, как они взаимодействуют друг с другом, правила ее использования и интеграции с другими системами, экономические и технологические ограничения, а также вопрос пользовательского интерфейса и др.
Разработка архитектуры системы – процесс разбиения большой системы на более мелкие части, этап, обязательный при проектировании систем или комплексов. За разработкой архитектуры системы следует проектирование структуры каждой программы [1]. Структура программы – это ее взаимодействующие части, существующие в рамках программного или аппаратного обеспечения.
Компонентом называют модульную часть системы, которая инкапсулирует ее содержимое.
1.3. Структурное программирование
Идеи структурного программирования появились в начале 70-годов в компании IBM, в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор.
Структурное проектирование подразумевает использование структур для разделения различных частей системы. Каждая часть при этом может проектироваться отдельно (рис. 1).
Рисунок 1 – Этап структурного программирования
Сутью структурного программирования является возможность разбиения программы на составляющие элементы. Это позволяет улучшить читабельность программы, повысить ее надежность и эффективность, и, наоборот, уменьшить время и стоимость программной разработки. Надежность достигается за счет хорошего структурирования программы при проектировании, что в итоге упрощает процесс тестирования и отладки. Структурирование также позволяет легко находить и корректировать ошибки, а отдельные подпрограммы можно модифицировать независимо от других, благодаря чему реализуется эффективность программы.
Один из наиболее традиционных методов проектирования операционных систем в 70-е гг. XX в. состоял в том, что проект каждого основного модуля системы выполнялся отдельно. Этот подход называется модульно-интерфейсным.
1.4. Методы структурного проектирования
Методология программирования (проектирования программных систем) – это комплекс методов, применяемых на различных стадиях жизненного цикла программного обеспечения и имеющих общий философский подход [6].
Методы проектирования – это обычно зависящие от области приложения (предметной области) тактические средства, определяющие те или иные этапы процесса проектирования. Сам процесс проектирования подразумевает принятие решения о форме и содержании предмета проектирования.
Во второй половине XX в. внимание уделялось двум подходам к построению систем: метод уровней абстракции и метод портов. В начале 60-х годов возник и получил развитие структурный, или модульно-интерфейсный, подход, позже появились подходы, основанные на потоках данных, независимых компонентах, объектно-ориентированном проектировании и др.
Модульно-интерфейсный подход – метод структурного проектирования, применяемый при разработке больших программных систем (например, операционных систем), где сложность системы заранее исключает всякую возможность охватить сразу все детали. В этом случае разработчики прибегают к использованию принципа модульности. Модульность является базовым требованием к большому программному продукту, необходимым для грамотного управления проектом и для простоты модификации программы. Модульность – это принцип построения системы, согласно которому функционально связанные части программы формируются в узлы-модули. Спецификации модулей и их интерфейсов лежат в основе проектирования каждого модуля и системы в целом.
Существуют различные методы разработки модульной структуры программной системы, в зависимости от которых определяется порядок разработки структуры системы, программирования и отладки модулей, указанных в этой структуре. Наиболее распространены две методики (стратегии) разработки программ при разработке программных систем: аналитический метод, или метод «сверху вниз», и синтетический метод, или метод «снизу вверх».
В первом случае при разработке проекта идут от абстрактного к конкретному, от общего к частному, от целого к деталям. Во втором методе порядок обратный.
1.5. Технология модульного программирования
Модульную программную систему можно представить как древовидную структуру, в узлах которой размещаются программные модули. Функции верхнего уровня обеспечиваются главным модулем. Он управляет выполнением нижестоящих функций, которым соответствуют подчиненные модули. Модуль – это фрагмент программного текста, являющийся строительным блоком для физической структуры системы, замкнутая программа, которую можно вызвать из любого другого модуля системы. Модули можно разрабатывать на различных языках программирования и отдельно компилировать.
Модульное программирование позволяет разрабатывать программную систему по частям и избежать высокой сложности системы. При создании ПС с использованием модульно-интерфейсного подхода упрощаются разработка и реализация программных систем, появляется возможность параллельной работы исполнителей, что позволяет сократить сроки создания ПС, упрощается настройка и модификация, обеспечивается более полное тестирование и др. Но, как и в любом программном продукте, там, где есть преимущества, найдется место и недостаткам. Среди них можно выделить увеличение времени компиляции и загрузки, возможное возникновение проблем в организации межмодульного взаимодействия, увеличение стоимости работ.
1.5.1. Нисходящее программирование
В основу метода «сверху вниз» (bottom-up) заложена идея пошаговой детализации. Программа конструируется иерархически – сверху вниз: от главной программы к подпрограммам самого нижнего уровня (рис. 2). Модуль верхнего уровня соответствует общей функции программы, а модули следующего уровня представляют ее подфункции.