русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Проектирование программ сложной структуры


Дата добавления: 2013-12-24; просмотров: 2765; Нарушение авторских прав


Организация проектирования программного обеспечения; этапы процесса проектирования

 

Существуют 3 стратегии конструирования ПО:

· однократный проход (водопадная стратегия) — линейная последовательность этапов конструирования;

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

· эволюционная стратегия. Система также строится в виде последовательности версий, но в начале процесса определены не все требования. Требования уточ­няются в результате разработки версий.

 

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

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

У каждого семейства есть свои достоинства, недостатки и область применения:

· адаптивный процесс используют при частых изменениях требований, малочис­ленной группе высококвалифицированных разработчиков и грамотном заказ­чике, который согласен участвовать в разработке;

· прогнозирующий процесс применяют при фиксированных требованиях и мно­гочисленной группе разработчиков разной квалификации.



 

Основной задачей при планировании проектных задач является определение WBS — Work Breakdown Structure (структуры распределения работ). Она составляется с помощью утилиты планирования проекта. Типовая WBS приведена на рисунке.

Первыми выполняемыми задачами являются системный анализ и анализ требова­ний. Системный анализ проводится с целью:

1) выяснения потребностей заказчика;

2) оценки выполнимости системы;

3) выполнения экономического и технического анализа;

4) распределения функций по элементам компьютерной системы (аппаратуре, программам, людям, базам данных и т. д.);

5) определения стоимости и ограничений планирования;

6) создания системной спецификации.

 

 

В системной спецификации описываются функции, характеристики системы, ог­раничения разработки, входная и выходная информация.

Анализ требований дает возможность:

1) определить функции и характеристики программного продукта;

2) обозначить интерфейс продукта с другими системными элементами;

3) определить проектные ограничения программного продукта;

4) построить модели: процесса, данных, режимов функционирования продукта;

5) создать такие формы представления информации и функций системы, кото­рые можно использовать в ходе проектирования.

Результаты анализа сводятся в спецификацию требований к программному про­дукту.

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

Ромбиками на рисунке обозначены вехи — процедуры контроля промежуточных результатов. Очень важно, чтобы вехи были расставлены через регулярные интервалы (вдоль всего процесса разработки ПО). Это даст руководителю возможность регулярно получать информацию о текущем положении дел. Вехи распространя­ются и на документацию как на один из результатов успешного решения задачи. Параллельность действий повышает требования к планированию. Так как парал­лельные задачи выполняются асинхронно, планировщик должен определить межзадачные зависимости. Это гарантирует «непрерывность движения к объединению». Кроме того, руководитель проекта должен знать задачи, лежащие на критическом пути. Для того чтобы весь проект был выполнен в срок, необходимо выполнять в срок все критические задачи.

 

 

Проектирование— итерационный процесс, при помощи которого требования к ПС транслируются в инженерные представления ПС. Вначале эти представления дают только концептуальную информацию (на высоком уровне абстракции), последующие уточнения приводят к формам, которые близки к текстам на языках программирования. Обычно в проектировании выделяют две ступени: предварительное проектирова­ние и детальное проектирование. Предварительное проектирование формирует абстракции архитектурного уровня, детальное проектирование уточняет эти абстракции, добавляет подробности алгоритмического уровня. Кроме того, во многих случаях выделяют интерфейсное проектирование, цель которого — сформировать графический интерфейс пользователя (GUI).

Предварительное проектирование обеспечивает:

· идентификацию подсистем;

· определение основных принципов управления подсистемами, взаимодействия подсистем.

Предварительное проектирование включает три типа деятельности:

1. Структурирование системы. Система структурируется на несколько подсистем, где под подсистемой понимается независимый программный компонент. Определяются взаимодействия подсистем.

2. Моделирование управления. Определяется модель связей управления между частями системы.

3. Декомпозиция подсистем на модули. Каждая подсистема разбивается на моду­ли. Определяются типы модулей и межмодульные соединения.

 

Модульность — свойство системы, которая может подвергаться декомпозиции на ряд внутренне связанных и слабо зависящих друг от друга модулей.

По определению Г. Майерса, модульность — свойство ПО, обеспечивающее интеллектуальную возможность создания сколь угодно сложной программы.

Однако здесь отражена лишь часть реальности, ведь здесь не учитываются затраты на межмодульный интерфейс. Как показано на рисунке с увеличением количества модулей (и уменьшением их размера) эти затраты также растут.

 

Связность модуля — это мера зависимости его частей. Связность — внутренняя характеристика модуля. Чем выше связность модуля, тем лучше результат проектирования, то есть тем «черней» его ящик (капсула, защит­ная оболочка модуля), тем меньше «ручек управления» на нем находится и тем проще эти «ручки».

Для измерения связности используют понятие силы связности (СС). Существует 7 типов связности:

1. Связность по совпадению (СС=0). В модуле отсутствуют явно выраженные внутренние связи.

2. Логическая связность (СС=1). Части модуля объединены по принципу функ­ционального подобия. Например, модуль состоит из разных подпрограмм об­работки ошибок. При использовании такого модуля клиент выбирает только одну из подпрограмм. Недостатки: сложное сопряжение и большая вероятность внесения ошибок при изменении сопряжения ради од­ной из функций.

3. Временная связность (СС=3). Части модуля не связаны, но необходимы в один и тот же период работы системы. Недостаток: сильная взаимная связь с другими модулями, отсюда — сильная чувствительность к внесению изменений.

4. Процедурная связность (СС=5). Части модуля связаны порядком выполняемых ими действий, реализующих некоторый сценарий поведения.

5. Коммуникативная связность (СС=7). Части модуля связаны по данным (работают с одной и той же структурой данных)

6. Информационная (последовательная) связность (СС=9). Выходные данные одной части используются как входные данные в другой части модуля.

7. Функциональная связность (СС=10). Части модуля вместе реализуют одну функцию.

Типы связности 1,2,3 — результат неправильного планирования архитектуры, а тип связности 4 — результат небрежного планирования архитектуры приложения.

 

Сцепление — мера взаимозависимости модулей по данным. Сцепление — внешняя характеристика модуля, которую желательно уменьшать. Количественно сцепление измеряется степенью сцепления (СЦ). Выделяют 6 ти­пов сцепления.

1. Сцепление по данным (СЦ=1). Все входные и выходные параметры вызываемого модуля - простые элементы данных.

2. Сцепление по образцу (СЦ=3). В качестве параметров используются структу­ры данных (например, в Паскале – записи).

3. Сцепление по управлению (СЦ=4). Модуль А явно управляет функциониро­ванием модуля В (с помощью флагов или переключателей), посылая ему уп­равляющие данные.

4. Сцепление по внешним ссылкам (СЦ=5). Модули А и В ссылаются на один и тот же глобальный элемент данных.

5. Сцепление по общей области (СЦ=7). Модули разделяют одну и ту же глобальную структуру данных (например, в Паскале общий список).

6. Сцепление по содержанию (СЦ=9). Один модуль прямо ссылается на содер­жание другого модуля (не через его точку входа). Например, коды их команд перемежаются друг с другом.

 

 



<== предыдущая лекция | следующая лекция ==>
Адаптируемость пакетов программ | Типы моделей


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.167 сек.