Методические указания к курсовому проектированию по дисциплине Москва 2001 для студентов специальности "Информационные системы в управлении" 071900
Вид материала | Методические указания |
- Методические указания к курсовому проектированию по дисциплине "антикризисное управление", 137.98kb.
- Методические указания по курсовому проектированию для студентов направления 071900, 440.96kb.
- Методические указания по выполнению лабораторной работы №12 для студентов специальности, 141.78kb.
- Методические указания по выполнению лабораторной работы №14 для студентов специальности, 187.8kb.
- Методические указания по выполнению лабораторной работы №3 для студентов специальности, 177.77kb.
- Методические указания к курсовому проектированию по учебной дисциплине «инновационный, 378.33kb.
- Методические указания по курсовому проектированию по дисциплине «страхование» для студентов, 1442.66kb.
- Методические указания к курсовому проектированию по учебной дисциплине «Управленческие, 1355.04kb.
- Методические указания по курсовому проектированию по дисциплине «страхование» для студентов, 1282.26kb.
- Методические указания к курсовому проектированию по учебной дисциплине, 1609.55kb.
В ходе курсового проектирования руководитель принимает защиту промежуточных материалов.
К подобным промежуточным материалам относятся:
- технико-экономическое обоснование целесообразности разработки систе-
мы;
техническое задание;
архитектура программной системы;
логическая схема базы данных;
словарь системы;
демонстрация работы ядра (прототипа) системы;
спецификации модулей системы;
демонстрация работы отдельных модулей;
документированные тексты программ;
расчет экономической эффективности;
отдельные проектные и эксплуатационные документы;
план приемо-сдаточных испытаний.
10
Промежуточные материалы представляются и защищаются студентами в сроки, установленные в техническом задании.
По результатам приема каждого промежуточного материала студенту разъясняются ошибки и недоработки, требующие исправления.
Подведение итогов курсового проектирования включает следующие этапы:
- сдача курсового проекта (пояснительной записки) на проверку руководителю;
- проведение приемо-сдаточных испытаний системы;
- доработка проекта с учетом замечаний руководителя;
- сдача готового курсового проекта;
- защита курсового проекта.
Курсовой проект должен быть сдан на проверку в срок, указанный в задании (не позднее предпоследней недели учебных занятий в семестре).
Приемо-сдаточные испытания разработанной системы могут проводиться по мере ее готовности, но не позднее последней недели учебных занятий в семестре.
Срок доработки проекта устанавливается руководителем с учетом сущности замечаний и объема необходимой доработки.
Курсовой проект, удовлетворяющий предъявляемым требованиям, допускается к защите в день и час, назначенные руководителем.
Оценка проекта производится с учетом:
- соответствия продемонстрированных на испытаниях возможностей систе
мы требованиям, зафиксированным в техническом задании;
- полноты и качества разработанных проектных и эксплуатационных доку
ментов;
- соблюдения международных и государственных стандартов при разработ
ке и оформлении программных и информационных средств;
- исполнения требований госстандартов и кафедры к оформлению поясни
тельной записки;
- практической полезности разработанной системы;
- качества ответов на вопросы при защите.
ЛИТЕРАТУРА
- Боэм Б.У. Инженерное проектирование программного обеспечения: Пер. с
англ. - М.: Радио и связь. 1985. - 512 с.
- Венчковский Л.Б. Разработка сложных программных изделий: Учеб. Посо
бие для вузов / Под ред. В.А. Машурцева; ГУУ.- М.: ЗАО "Финстатинформ", 1999.-
109с.
- Гейн К., Сарсон Т. Структурный системный анализ: средства и методы: Пер.
с англ. Ч. 1,2. - М.: "Эйтекс", 1993.
- Липаев В.В. Документирование и управление конфигурацией программных
средств. Методы и стандарты. Серия "Информатизация России на пороге XXI века".-
М.:СИНТЕГ, 1998.-220с.
- Липаев В.В. Системное проектирование сложных программных средств для
информационных систем. Серия "Информатизация России на пороге XXI века".- М.:
СИНТЕГ, 1999.-224с.
- Человеческий фактор: Пер. с англ.. (т. 6. Эргономика в автоматизированных
системах). - М.: Мир, 1992.
11
Приложение 1
1. Содержание работ по курсовому проектированию
1.1. Общие замечания
Работы по курсовому проектированию проводятся в соответствии с этапами жизненного цикла программного изделия (ЖЦПИ) и характеризуются последовательным уточнением принимаемых проектных и управленческих решений. Это означает, что процесс разработки принципиально является итерационным как в части планов, так и в определении функций системы, показателей качества, архитектуры программного объекта.
Последовательность этапов разработки и содержание работ определяются мировой практикой создания программных систем, которые нашли отражение в ряде международных стандартов:
13О 12207: 1995. Процессы жизненного цикла программных средств.
18О 9000-3: 1991. Общее руководство качеством и стандарты по обеспечению качества.
15О 9126: 1991. Информационная технология. Оценка программного продукта. Характеристики качества и руководство по их применению.
Укрупненно этапы ЖЦПИ (при использовании каскадной модели) включают:
- определение требований пользователя (заказчика);
- определение требований к программному изделию;
- архитектурное проектирование программного изделия;
- детальное проектирование программного изделия;
- изготовление программного изделия;
- эксплуатация и сопровождение программного изделия.
Первые три этапа соответствуют системному проектированию новой информационной системы. Методологической основой этого раздела работ служит системный анализ, основными целями которого являются:
- определение потребностей заказчика;
- оценка осуществимости концепции новой системы и исследование возмож
ных вариантов решений;
- технико-экономический анализ альтернативных вариантов и обоснование
выбора автоматизированной информационной системы;
- определение трудозатрат на проектирование и разработку программной
системы, сроков и стоимости разработки;
- распределение функций между элементами системы и между ее подсисте
мами;
- создание описания информационной системы и формулирование требова
ний к программному изделию.
Результаты этих исследований оформляются в виде отдельных документов и служат основой и обоснованием пунктов технического задания и входят в качестве приложений к техническому заданию.
На основе согласованного с заказчиком (преподавателем) технического задания на разработку начинается детальное проектирование программного изделия: алгоритмизация, кодирование, тестирование и отладка. Результаты этого комплекса работ должны быть представлены в пояснительной записке в виде схем алгоритмов модулей, соответствующих им прокомментированных программ, а также необходимой эксплуатационной документации. Курсовой проект должен быть представлен в виде функционирующей информационной системы и его аттестация проводится на ЭВМ в соответствии с планом приемо-сдаточных испытаний.
12
1.2. Определение требований пользователя
Первая фаза жизненного цикла связана с подробным определением решаемой проблемы. Цель этой фазы - определить задачу, которая должна быть выполнена с использованием компьютера, а также определить, что предполагается получить в результате автоматизации.
Основным видом деятельности в этой фазе является обследование объекта автоматизации, сбор и тщательное документирование требований пользователей. Сбор требований пользователя к будущей автоматизированной системе осуществляется путем обследования существующей технологии обработки данных (обычно путем изучения документопотоков), путем опроса специалистов, специально проводимыми интервью с пользователями. Поскольку по мере сбора требования могут изменяться, уточняться и добавляться, то вся эта деятельность в общем случае представляет собой итеративный процесс, предполагающий многократные повторения с целью достижения все большей детализации, четкости и однозначности в формулировке каждого требования, а также достижения полноты охвата всех требований пользователя.
Первым шагом в определении требований пользователя должно быть определение операционной обстановки, т.е. должна быть выработана ясная картина реальной обстановки, в которой будет функционировать разрабатываемый программный продукт. Повествовательное описание окружающей обстановки и условий работы целесообразно дополнить схемами потоков документов и указать связи с внешними по отношению к рассматриваемой системами.
Все требования пользователей удобно разделить на две группы.
- Требования, отражающие возможности системы, реализация которых обес
печивает решение поставленной проблемы.
- Требования, определяющие ограничения на способы и пути решения про
блемы или на пути достижения поставленной цели.
Требования первой группы описывают функции и операции, необходимые пользователю. Важную часть в этих требованиях составляют атрибуты точности. Во многих случаях появляются временные и пространственные требования, которые целесообразно представить в виде последовательности выполняемых операций, в виде регламента подготовки выходных документов с указанием периодичности и времени их выдачи с привязкой к соответствующим документам.
Требования-ограничения могут включать требования использования определенных форм документов для взаимодействия с другими системами, стандартных описаний данных, форматов, а также требования применения определенных компьютеров, операционных систем и т.п. Для диалоговых систем пользователь может пожелать, например, использовать определенные экранные формы или шаблоны, специальные средства помощи, создаваемые программными средствами. Ограничения могут включать и требования качественного типа. Защита данных от несанкционированного доступа, приспособленность изделия к адаптации, переносимость в другие операционные среды - все это может быть отнесено к требованиям-ограничениям. При этом пользователь должен подробно описать потери, порождаемые нарушением подобных требований, чтобы разработчик мог критически оценить каждое требование.
Каждое требование пользователя должно описываться следующими атрибутами:
- Идентификатор, позволяющий проследить выполнение каждого ус
тановленного требования через все фазы ЖЦПИ.
- Уровень важности, устанавливаемый в соответствии со шкалой
рейтингов, принятой пользователем для разрабатываемого изделия.
13
3. Стабильность требования, указывающая степень его постоянства на
протяжении ЖЦПИ. При этом должны быть отмечены те требования, которые могут
быть изменены в результате получения в процессе проектирования новой информа
ции или в результате накопления опыта эксплуатации.
4. Приоритет, указывающий определенную временную последователь
ность в реализации различных требований, особенно для развивающихся систем,
когда, например, отдельные функциональные подсистемы могут разрабатываться
достаточно независимо и последовательно.
- Источник возникновения требования должен указываться либо в виде
ссылки на конкретный внешний документ, либо на пользователя (группу пользовате
лей), который установил это требование.
- Проверяемость требования, предполагающая, что каждое требова
ние должно поддаваться проверке выполнения. Это необходимо для возможного
контроля того, что требование включено в проект и реализовано программными
средствами и для тестирования этого требования.
7. Ясность формулировки, означающая определенность и однозначность
требования и отсутствие какой-либо неопределенности,
1.3. Анализ осуществимости разработки программного изделия
Одновременно с исследованием существующей информационной системы и
объекта информатизации проводится анализ осуществимости и экономико-социальной целесообразности разработки программного изделия, проводится предварительная оценка технико-экономических показателей проектируемой системы, сроков и стоимости разработки, возможных рисков. Проводится сравнительный анализ альтернативных вариантов решения проблемы автоматизации.
1.4. Определение требований к программному изделию
1.4.1. Основные виды деятельности
Второй фазой ЖЦПИ является фаза определения требований к программному изделию, которая является фазой "анализа проблемы". Главной целью этой фазы является разработка полной, непротиворечивой и корректной совокупности требований к программному обеспечению на основе всестороннего изучения требований пользователя. За выработку этих требований всегда отвечает разработчик. В качестве участников этой фазы должны привлекаться пользователи, инженеры-программисты, специалисты по техническим средствам, а также обслуживающий персонал. Ответственным за выполнение этой работы, как правило, назначается системный аналитик. Руководитель проекта организует взаимные консультации и обсуждения, поскольку участники этих обсуждений могут иметь разное представление о конечном продукте и их взгляды должны синтезироваться в четкие и непротиворечивые формулировки требований.
Основным выходным результатом этой фазы жизненного цикла является формализация функций программного изделия, установление характеристик системы и среды, в которой система должна будет функционировать. Эта фаза должна дать ответ на вопрос, что должен делать программный продукт, а также как будет осуществляться проверка правильности и полноты выполняемых функций как на этапах проектирования, так и при проверке конечного продукта. Работы на этой фазе выполняются в соответствии с планом, разработанным на предыдущем этапе.
Основная деятельность - это транссрормация требований пользователя в требования к программному изделию и составление подробного описания того, что должно выполнять программное изделие. Подготавливаемый документ должен отражать взгляд разработчика на решаемую проблему. Этот взгляд базируется на логической модели системы обработки данных, построенной на основе использования
14
структурного системного анализа потоков данных. В соответствии с принятой методологией логическая модель изображается в виде совокупности схем потоков данных с последовательной пошаговой детализацией функций разрабатываемой системы. Основной задачей на этом этапе является согласование представлений и требований пользователя (заказчика) и разработчика программного изделия. Многоуровневая схема потоков данных, созданная в результате структурного системного анализа разрабатываемой информационной системы включается вместе со словарем данных и соответствующим описанием в качестве приложения к техническому заданию.
Выработка требований к программному изделию может потребовать сосадания прототипа для проверки, пояснения или уточнения требований и их согласования с заказчиком.
1.4.2. Разработка логической модели программного изделия
Как уже отмечалось, разработчик должен сконструировать логическую модель проектируемого программного изделия, независимую от последующей физической реализации, которая должна отражать требования пользователя. Эта модель используется для выработки совокупности требований к программному обеспечению. Существующие структурные методологии используют для построения модели принцип нисходящей декомпозиции основной функции программного изделия в иерархию функций с последовательной детализацией функции на следующих уровнях иерархии. Средством логического моделирования является структурный системный анализ, позволяющий подробно описывать схемы потоков данных, которые будут существовать при функционировании автоматизированной системы (программного продукта). Для описания схем потоков данных используются компоненты: источник/приемник данных, линия потока данных, хранилище данных, блок обработки данных.
Процесс структурного анализа осуществляется по функциональным уровням. Прежде, чем переходить к детальному рассмотрению следующего уровня необходимо провести сквозной просмотр всех спецификаций каждого функционального блока данного уровня, чтобы убедиться в согласованности всех требований. Обычно число уровней не превышает 3-4-х.
Логическая модель должна удовлетворять следующим правилам:
- Каждая функция в модели должна отражать единственную и четко опреде
ленную цель. Имена функций должны определять, что должно быть сделано, а не
как сделано.
- Функции должны соответствовать уровню иерархии, на котором они пред
ставлены в модели.
- Связи между функциями (функциональными блоками модели) должны быть
минимизированы.
- Каждая функция должна разделяться не более чем на 7 подфункций сле
дующего уровня.
- В модели не должна присутствовать информация, связанная с последую
щей реализацией изделия, например, такие понятия, как модуль, файл, запись и т.п.
- Для каждой функции должны быть указаны входные данные.
- Каждой функции должен соответствовать список выходных данных (выход
ных отчетов).
1.4.3. Классификация требований к программному изделию Требования к программному изделию должны быть систематизированы в соответствии со следующими категориями:
15
- Функциональные требования. Они определяют, что должно
делать программное изделие, и выводятся непосредственно из логической модели,
которая, в свою очередь, выводится из требований пользователя. Для количествен
ного выражения некоторые из функциональных требований могут включать атрибу
ты эксплуатационных характеристик, например, производительность, емкость и т.п.
- Эксплуатационные требования. Они определяют значения
измеряемых переменных, характеризующих работу программного изделия. Эксплуа
тационные требования могут быть представлены либо в виде отдельных требова
ний, либо в виде количественных атрибутов функциональных требований.
Количественные требования не должны фиксироваться в виде качественных характеристик типа "быстрый ответ", а должны быть записаны, например, в виде "время ответа должно быть не более X сек", или вместо "в большинстве случаев" должно быть указано "для У% случаев среднее время ответа должно быть менее 2 сек" и т. п.
Атрибуты эксплуатационных характеристик могут быть также представлены в виде диапазона значений.
3. Требования к интерфейсам. Эти требования описывают эле
менты технических средств, программного обеспечения, баз данных, с которыми
должен взаимодействовать программный продукт. Требования к интерфейсам с тех
ническими средствами могут определять необходимую их конфигурацию. Требова
ния к программному обеспечению могут включать требования к типу и версии опе
рационной системы, прикладным пакетам, типу СУБД. Требования к внешним ин
терфейсам могут потребовать, например, использования конкретного сетевого про
токола передачи информации, определенного языка описания документов и т.п.
Требования к интерфейсам могут быть проиллюстрированы с помощью специальных структурных схем, описывающих взаимодействие программного изделия с окружающей обстановкой.
4. Операционные требования. Они определяют, как система бу
дет работать и как она будет связываться с операторами или пользователями про
граммного изделия. Операционные требования должны включать все интерфейсы
пользователя и требования к человеко-машинному взаимодействию. Примерами
таких требований являются форматы экранов, содержание сообщений об ошибках,
справочная информация, выдаваемая в качестве подсказок пользователю и т.п.
- Требования к ресурсам. Они обычно устанавливают верхние
пределы для характеристики технических средств, таких как скорость процессора,
емкость внешней и оперативной памяти и т.д.
- Требования на верификацию программного изделия и на
приемное тестирование. Они определяют, как проверяется корректность
принимаемых решений на каждом этапе ЖЦПИ и могут включать требования к мо
делированию окружающей обстановки и интерфейсов программного изделия. Тре
бования к приемному тестированию определяют условия проведения аттестации
разработанного программного изделия.
- Требования к защите информации. Они включают требо
вания к обеспечению конфиденциальности и целостности информации. Примерами
таких требований могут служить команды блокировки, системы паролей и защиты
от вирусов, ограничение доступа к данным и запрещение отдельных операций с
данными для разных категорий пользователей.
- Требования к качеству. Они определяют специфические атрибу
ты программного изделия, которые гарантируют, что функционирование изделия
будет соответствовать поставленным целям. Везде, где это возможно, показатели
качества должны быть выражены в количественных величинах.
16
Такие показатели качества, как надежность программного изделия, пригодность его к сопровождению, безопасность описываются отдельно.
9. Требования к надежности. Они определяются либо значением
допустимого среднего времени между отказами, либо значением минимального
времени между отказами.
10. Требования на пригодность к сопровождению. Они могут
быть представлены требованиями простоты исправления ошибок (при отказах) лег
кости адаптации к конкретным операционным условиям и простоты модернизации
программного изделия при изменении требований пользователя и при совершенст
вовании программного изделия в процессе его эксплуатации.
Эти требования должны быть по возможности представлены количественными показателями, такими, как время исправления отказа или коэффициент готовности. Они могут также включать ряд ограничений, отражающих возможности организации, занятой сопровождением.
- Требования к безопасности. Они могут определять ряд до
полнительных требований к программному изделию, которые обусловлены опасно
стью отказов программного изделия. При этом могут быть указаны отдельные функ
ции, отказы, при выполнении которых могут привести к серьезным последствиям
(для людей, имущества и т.п.).
- Требования к документации. Они обычно дополняют требо
вания, содержащиеся в стандартах на документацию.
1.4.4. Атрибуты требований к программному изделию
Каждое требование к программному изделию после всестороннего изучения и согласования должно быть документировано. При этом описание каждого требования должно включать следующие атрибуты:
- идентификатор, обеспечивающий возможность контроля реализа
ции этого требования в течение всех фаз ЖЦПИ;
- уровень важности, указывающий, насколько существенным явля
ется это требование, может ли оно в дальнейшем обсуждаться и изменяться или же
оно является категорическим;
- приоритет, указывающий некоторый порядок очередности в выполне
нии этого требования при планировании работ и при проектировании изделия;
- стабильность, отражающая степень постоянства требования. Долж
ны быть отмечены все те требования, которые могут быть изменены на протяжении
ЖЦПИ в результате получения дополнительной информации об изделии;
- пригодность к верификации, означающая возможность про
верки присутствия данного требования на каждой фазе разработки, демонстрации
того, что требование реализовано в проекте с помощью либо тестовых прогонов,
либо в результате сквозных просмотров.
При описании требований особое внимание должно быть уделено ясным и четким формулировкам, обеспечивающим однозначную интерпретацию каждого требования.
В перечне требований к программному изделию должны быть учтены все требования пользователя и для каждого возможного набора входных данных должны быть точно описаны действия, выполняемые программным изделием.
Наконец, совокупность требований должна содержать непротиворечивые требования. Несогласованность требований может возникать при использовании разных терминов для описания одинаковых сущностей и, наоборот, один и тот же термин - для описания разных предметов. Другим источником несогласованности могут быть случаи, когда одновременно должны выполняться несовместимые действия или выполняться в недопустимой последовательности. Противоречивость требова-
17
ний может проявиться и в случае дублирования требований, особенно, когда одно требование перекрывает другое.
1.4.5. Документ «Требования к программному изделию»
Выходным материалом рассматриваемой фазы исследований должен быть документ «Требования к программному изделию». Главным показателем качества этого документа является полнота охвата требований пользователя. Для контроля и доказательства полноты в документ целесообразно поместить таблицу (матрицу), показывающую, как требования пользователя соотносятся с требованиями к программному обеспечению. Таблица позволяет организовать трассировку требований как вручную, так и с использованием автоматизированных средств.
Непротиворечивость описания требований должна проверяться и при проведении критического обзора документа.
Основными в документе являются функциональные требования, которые структурируются по нисходящему принципу с последовательной детализацией требований предыдущего, более высокого уровня.
Нефункциональные требования должны быть подключены к функциональным, поэтому они могут появиться на всех уровнях иерархии функциональной декомпозиции.
Документ не должен включать описания деталей реализации программного изделия, т.е. функциональные требования должны отражать лишь то, что должен выполнять программный продукт. Многие из функциональных требований вытекают из схем потоков данных, которые являются результатом структурного системного анализа проектируемого продукта. При этом схема потоков данных верхнего уровня дает общий обзор функций будущего изделия.
В документе каждое требование, снабженное идентификатором и атрибутами степени важности и приоритета, должны иметь ссылку на документ «Требования пользователя для облегчения обратной трассировки».
Документ «Требования к программному изделию» должен быть написан на естественном языке. В рассмотрении и критическом обзоре этого документа, кроме разработчиков, принимают участие пользователи, операционный персонал и менеджеры, поэтому стиль и форма изложения требований должна быть понятна всем участникам этой фазы.
Вместе с тем при описании ряда специфических требований может потребоваться использовать формальные языки описания спецификаций, которые позволяют описать требования более строго без нежелательных неточностей и многозначности естественного языка. В этом случае формальное описание (например, в виде таблиц или деревьев решений и т.п.) должно быть дополнено пояснениями на естественном языке.
Все установленные требования к программному изделию включаются в соответствующий раздел технического задания.
1.5. Архитектурное проектирование программного изделия
1.5.1. Общее содержание работ фазы
Фаза архитектурного проектирования может быть названа фазой "принятия решения". Цель этой фазы - определить совокупность компонент программного изделия и их интерфейсы, чтобы дать каркас для последующей разработки программного изделия. Архитектурный проект должен охватывать все требования, сформулированные на предыдущей фазе.
За определение архитектурного проекта несут ответственность инженеры -разработчики программного обеспечения. Во время выполнения работ они могут консультироваться с другими специалистами и представителями заказчика, а опера-
18
ционный персонал должен провести обзор архитектурного проекта. Выходным результатом этой фазы является документ «Архитектурный проект», который должен документировать каждую компоненту программного изделия и ее связи с другими компонентами. Документ считается завершенным, когда уровень описания компонент и их интерфейсов достаточен для того, чтобы над каждой из них могли независимо работать отдельные исполнители или их небольшие группы во время следующей фазы детального проектирования.
Рассматриваемая фаза ЖЦПИ заканчивается формальным утверждением документа «Архитектурный проект» после всестороннего его рассмотрения и критического обзора.
Деятельность на этой фазе выполняется в соответствии с планами, разработанными на предыдущей фазе. Основным видом деятельности во время этой фазы является разработка и документирование архитектурного проекта. Эта деятельность включает:
- конструирование физической модели программного изделия;
- описание требований к архитектурному проекту;
- выбор языка программирования;
- обзор проекта.
1.5.2. Конструирование физической модели
Разработчик должен сконструировать физическую модель, описывающую проект программного изделия, используя терминологию разработчика. Физическая модель должна быть выведена из логической модели, описанной в «Требованиях к программному изделию». При трансформации логической модели в физическую принимаются проектные решения, связанные с распределением функций по компонентам и определением входов и выходов каждой компоненты. Проектные решения также должны удовлетворять и нефункциональным требованиям, критериям качества проекта и соображениям технологической реализуемости. Все проектные решения должны фиксироваться документально.
Моделирование - это итеративный процесс. Необходимо после описания каждой части проекта повторно возвращаться к описанию предыдущих частей, пока не будет достигнуто ясного и точного описания каждой компоненты. Для построения модели в последние годы стали использоваться средства автоматизации, позволяющие получить непротиворечивую модель более простую для конструирования и модификации.
1.5.3. Декомпозиция программного изделия на компоненты
Программное изделие должно быть представлено в виде иерархии компонент в соответствии с методами функциональной декомпозиции. Все компоненты должны располагаться по уровням иерархии и каждая компонента при этом должна занимать точно определенное место. Функциональная декомпозиция осуществляется с помощью метода нисходящего проектирования. Как уже отмечалось, нисходящая декомпозиция является важным средством для управления сложностью. Кроме этого, она реализует принцип "сокрытия информации", требуя, чтобы компоненты нижнего уровня рассматривались как "черные ящики" для компонент более высокого уровня. Это означает, что для верхнего уровня известны только функции и интерфейсы компонент более низкого уровня, а особенности их внутреннего функционирования остаются неизвестными. Нисходящее проектирование также требует, чтобы каждый уровень проекта был описан с использованием терминов, отражающих степень абстракции, соответствующую данному уровню.
Компоненты нижнего уровня проекта должны быть достаточно независимы, чтобы дать возможность проводить независимое и параллельное их дальнейшее
19
детальное проектирование и кодирование с минимальными взаимосвязями между программистами.
Документ «Требования к программному изделию» содержит множество групп нефункциональных требований, поэтому проектирование каждой компоненты должно включать ее анализ с точки зрения требований каждой из этих групп. Однако при этом следует учитывать, что к разным компонентам могут иметь отношение лишь некоторые из этих групп.
1.5.4. Критерии качества архитектурного проекта
Архитектурный проект должен быть понятным, простым для модификации и обеспечивать высокую эффективность программного изделия. Эффективность определяется минимальным использованием имеющихся ресурсов, а простота модификации - снижением затрат на сопровождение. Для достижения этих целей обычно стремятся упрощать форму и функции каждой части архитектурного проекта. Для измерения сложности имеется ряд метрик, которые целесообразно использовать при проектировании. Функциональная простота характеризуется "связностью" отдельных компонент, т,е, внутренней структурой компоненты. При проектировании стремятся максимизировать связность каждой компоненты.
Простота формы достигается в результате:
- минимизация "сцепления" между компонентами;
- обеспечения соответствия функции, выполняемой компонентой, уровню ие
рархии;
- согласования программного обеспечения со структурами данных;
- максимизации числа компонент, использующих данную компоненту;
- ограничения числа подчиненных компонент;
- удаления дублирования между компонентами путем создания новых компо
нент.
Архитектурный проект должен быть модульным с минимальным сцеплением между компонентами и с максимальной связностью внутри каждой компоненты. Компоненты модульной схемы должны описываться как "черные ящики", скрывая информацию о их внутренней структуре от других компонент. Важно знать, что они делают, а не как они работают.
Для упрощения понимания при описании проектов всегда должны использоваться стандарты и соответствующая терминология, для решения одинаковых проблем всегда должны использоваться одинаковые решения. Для достижения единообразия и сопоставимости описаний разных частей проекта необходимо использовать стандарты на проектирование, СА8Е-средства и систематические обзоры проектных решений.
Выбор альтернативных решений может явиться хорошим и эффективным средством повышения качества проекта. Для выбора лучшего варианта необходимы соответствующие критерии, которые зависят от типа системы. Например, для системы реального времени важным является время ответа или время реакции системы, а для административной системы - стабильность базы данных. Для оценки альтернативных вариантов или для проверки сделанных допущений может использоваться прототип изделия. Например, для достижения высокой оперативности системы могут быть запрограммированы разные методы доступа к файлам базы данных, а разные методы могут привести к разным подходам в проектировании. Поэтому создание прототипов может оказаться частью процесса проектирования.
Документ «Архитектурный проект» программного изделия является ключевым документом, суммирующим все принятые решения. Он является основой для детального проектирования. Кроме описания всех компонент изделия, он должен содержать ссылки на все внешние интерфейсы. Одним из основных требований к до-
, 20
кументу является требование полноты охвата всех требований к программному изделию, представленных в предыдущем документе. Для демонстрации полноты в документ должна быть включена таблица перекрестных ссылок между требованиями к программному изделию и компонентами архитектурного проекта. Документ должен быть непротиворечивым, в достижении этого требования могут помочь методы и средства программотехники. Документ «Архитектурный проект» должен быть достаточно детальным, чтобы позволить управленцу составить план следующей фазы проектирования. Степень детализации на уровне архитектурного проекта должна также обеспечивать возможность более точной оценки стоимости работ последующих фаз разработки программного изделия.
1.6. Детальное проектирование и изготовление программного изделия
1.6.1. Основные виды деятельности
Фаза детального проектирования и изготовления может быть названа "фазой реализации" в ЖЦПИ. Цель этой фазы - детализация проекта, описанного в предыдущем документе, она включает кодирование, тестирование и документирование. Ответственными за выполнение работ в этой фазе являются программисты, специалисты другого профиля подключаются для консультаций. Верификация программного изделия может проводиться независимо специалистами, не принимавшими участия в разработке.
До начала кодирования (написания программ) важно рассмотреть адекватность и достаточность для разработки компьютерных ресурсов. Нельзя также говорить о начале кодирования, если отсутствует операционная система и системные программы для ЭВМ. Производительность труда программистов может существенно упасть, если ресурсов окажется недостаточно.
Деятельность во время этой фазы должна выполняться в соответствии с планом, принятым на предыдущей фазе. Выполнение пунктов плана должно тщательно отслеживаться и документироваться.
Детальное проектирование и изготовление программного изделия должно основываться на следующих трех принципах:
- нисходящая декомпозиция;
- структурное программирование;
-одновременное изготовление и документирование.
Эти принципы должны находить отражение как в проекте программного изделия, так и в организации работ. Их использование помогает своевременному выполнению работ и соблюдению бюджетных расходов. Они оказывают положительное влияние и на качество программного изделия, на его надежность и пригодность к сопровождению.
Нисходящая декомпозиция жизненно важна для управления сложностью и для реализации принципа "сокрытия информации".
Целью структурного программирования является стремление избежать ошибок при конструировании модулей и при написании программ. Использование структурного программирования с пошаговым совершенствованием проекта до уровня кодирования с использованием трех базовых структур приводит к заметному уменьшению числа ошибок кода, а также позволяет резко сократить время, затрачиваемое на тестирование и отладку программ. Структурное программирование делает код более понятным, уменьшая затраты на сопровождение программного изделия в дальнейшем.
Одновременное кодирование и документирование программ является побочным результатом пошагового совершенствования. При этом проектная информация сохраняется в самом исходном коде в виде комментариев, осрормленных по правилам структурного кодирования.
21
Детальное проектирование программного изделия связано с декомпозицией компонент нижнего уровня архитектурного проекта до модулей на выбранном языке программирования. При этом модуль рассматривается в виде программного блока, который может отдельно компилироваться и отдельно загружаться и объединяться с другими блоками.
Таким образом, процесс детального проектирования, начинаясь с компонент нижнего уровня архитектурного проекта, путем пошагового совершенствования доходит до спецификации отдельных модулей. При пошаговом совершенствовании используют следующие руководящие указания:
- начинаем с функциональной спецификации и спецификации интерфейсов;
- концентрируем внимание на потоках управления;
- откладываем объявление данных до фазы кодирования;
- шаги совершенствования делаем небольшими, чтобы была проще верифи
кация внесенных изменений;
- проводим обзор каждого шага после его выполнения.
Обзор каждого модуля может быть выполнен путем сквозного просмотра, после которого модуль утверждается для кодирования.
1.6.2. Кодирование модулей
Когда завершено проектирование каждого модуля и проведены его обзор и утверждение, можно начинать кодирование (написание программ). Должны быть установлены и документированы требования кодирования, которые определяют правила:
- представления комментариев в программах;
- наименования программ, подпрограмм, файлов, переменных;
- ограничения размеров модулей;
- использования библиотек;
- определения констант;
- использования специальных средств компилятора, которых нет в языке;
- обработки ошибок и т.п.
Каждый модуль должен иметь заголовок, оформленный стандартным образом, который включается в "шапку" модуля.
Код должен быть непротиворечивым, что уменьшает его сложность. Основой для обеспечения непротиворечивости является строгое соблюдение правил кодирования. Кроме того, непротиворечивость усиливается в результате использования одинаковых решений к одинаковым проблем. Для сохранения непротиворечивости кода все вносимые исправления и модификации должны использовать первоначальный стиль кодирования.
Код должен быть структурным, так как это уменьшает ошибки и улучшает со-провождаемость.
Процесс кодирования включает компиляцию, которая является первым шагом в верификации кода. В результате компиляции накапливается статистика, необходимая для последующего анализа модуля.
После кодирования отдельных модулей начинается их интеграция в единое работающее программное изделие. Интеграция компонент должна проводиться последовательно функция за функцией. Это позволяет раньше продемонстрировать операционные возможности программного обеспечения, повышая уверенность управленца в том, что проект удовлетворительно продвигается в изготовлении.
Для интеграции модулей применяется нисходящий подход, в котором вместо модулей нижнего уровня применяют программные "заглушки". После завершения разработки и тестирования модулей нижнего уровня "заглушки" заменяются ими. В ряде проектов необходимость правильного распределения усилий приводит к тому,
22
что на ранних этапах интеграция вначале осуществляется по восходящему принципу, который позже заменяется нисходящим. Независимо от используемого принципа главным критерием остается минимизация общего времени на тестирование программного изделия .
1.6.3. Тестирование программного изделия
Процесс тестирования включает несколько этапов: поблочное тестирование, комплексное тестирование и системное тестирование.
Тестирование блоков показывает правильность реализации всех компонент программного изделия, начиная с самого нижнего уровня, определенного в детальном проекте, вплоть до самого нижнего уровня архитектурного проекта (обычно на уровне задач). Модули, которые не вызывают другие модули - это модули нижнего уровня детального проекта.
При тестировании блоков обычно проверяется правильность не только того, что функционально выполняет модуль, но и того как он это делает. Таким образом при тестировании блоков используется не только функциональное тестирование (тестирование "черного ящика"), но и структурное тестирование (тестирование "белого ящика").
Стратегия структурного тестирования предполагает такой подбор тестовых данных, чтобы, во-первых, каждый оператор программы был выполнен, по крайней мере, один раз, и, во-вторых, все пути выполнения программы были охвачены соответствующими тестовыми наборами. Для проведения поблочного тестирования используются также и специальные автоматизированные средства.
Тестирование блоков обычно выполняется отдельными работниками или группой, ответственной за разработку этих компонент.
Комплексное тестирование также выполняется во время фазы детального проектирования, когда формируются основные компоненты программного изделия и объединяются с целью построения программного изделия. Комплексное тестирование должно быть направлено на верификацию того, что интерфейсы главных компонент правильны. Комплексное тестирование предшествует системному тестированию.
Комплексное тестирование должно контролировать, что все данные, передаваемые через интерфейсы, согласованы со спецификациями структур данных в архитектурном проекте. Комплексное тестирование должно также подтверждать, что потоки управления, определенные в архитектурном проекте программного изделия, :.полностью реализованы.
Системное тестирование - это процесс тестирования интегрированного программного изделия. Этот этап тестирования может быть выполнен в процессе разработки или в условиях моделирования эксплуатации. Системное тестирование должно подтверждать соответствие разработанного программного изделия целям, установленным в документе «Требования пользователя».
Системное тестирование включает такие виды деятельности:
- передача данных в систему, корректность обработки данных и вывод резуль
татов;
- прогон тестов с целью проверки выполнения требований пользователя;
- стрессовое тестирование для верификации предельных характеристик про
граммного изделия;
- предварительная оценка надежности и пригодности к сопровождению;
- проверка правильности «Руководства пользователя».
В системных тестах контролируются возможные тенденции в появлении ошибок в программном обеспечении. Изучение этих тенденций позволяет судить о возможностях последующей приемки программного изделия.
23
Для большинства программных изделий, которые предназначены для включения в более крупные программные системы, а также для систем, использующих специальную периферию, часто возникает необходимость построения имитаторов окружающей обстановки, т.е. той обстановки, в которой будет функционировать разрабатываемое изделие. Их разработку также необходимо планировать.
1.6.4. Документирование работ по проектированию программного изделия
По мере того, как проектирование продвигается к самому нижнему уровню декомпозиции происходит создание документа «Детальный проект программного изделия». Документирование должно проводиться одновременно с детальным проектированием, кодированием и тестированием. В больших проектах этот документ для удобства делают в нескольких томах.
Часть 1 документа содержит описание принятых стандартов на проектирование и кодирование используемых средств. Материал этого раздела подготавливается в качестве первого вида деятельности во время этой фазы до того, как начинается работа по детальному проектированию и кодированию.
Часть 2 документа постепенно расширяется по мере разработки проекта.
Часть 2 документа постепенно расширяется по мере разработки проекта. Структура этой части документа и идентификация разделов должна полностью соответствовать программным компонентам программного изделия.
Основным требованием, предъявляемым к содержанию документа является его завершенность, т.е. полный охват всех требований к программному изделию, изложенных в соответствующем документе. В связи с этим документ «Детальный проект» должен содержать таблицу перекрестных ссылок между отдельными требованиями к программному изделию и компонентами детального проекта.