Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проектирование и разработка информационных систем. Учебное пособие для СПО

.pdf
Скачиваний:
4
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
31
тивного контроля рациональнее держать в базе данных требова­ний, где каждое требование связано явным образом с другими.
1.2. Проектирование (системный синтез)
Системный синтез (см. гл. 3) начинается с этапа проекти­рования ИС, который, в свою очередь, делится на:
– эскизное (архитектурное) проектирование;
– проектирование детальное.
Задача эскизного проектирования — разработка архитек- туры и интерфейса проекта ИС. Что же понимается под этими понятиями?
Архитектура — это, с одной стороны, принципы работы ИС на функциональном уровне (безотносительно к физической реализации), а с другой — точно определенный интерфейс меж­ду программами и аппаратурой. Такое двоякое определение со­ответствует разным этапам проектирования системы — сначала на уровне выделения функций и подсистем, а затем на уровне детализации и подробной разработки каждой из них.
Термин «интерфейс» (от англ, interface: inter внутрь, face лицо; в буквальном переводе «лицом к лицу») имеет три значе­ния:
1) связь между двумя обрабатывающими компонентами;
2) полная совокупность соглашений о входных и выход-
ных сигналах, которыми могут обмениваться:
– устройство — устройство;
– программа — среда — программы;
– человек — система обработки;
3) (физическая) реализация интерфейса.
При этом второе значение является наиболее строгим, по­скольку при системном подходе включает и аппаратуру, и про­грамму (со всем ее окружением: используемой операционной системой, инструментальными и вспомогательными программа­ми и т. д.), и организацию взаимодействия с пользователем.
Проектирование архитектуры подразумевает разработку всех аспектов проектируемого ПО и начинается обычно со структуры проекта. Процесс проектирования проводится после­довательно, и проект системы постепенно детализируется от
32
первичных концептуальных положений до проработки деталей структуры, функционирования, объектов, интерфейса и т.д. про­ектируемой ИС.
Рассмотрим также понятие бизнес-процесса
Бизнес-процесс — связанная совокупность функций, в ходе выполнения которой потребляются определенные ресурсы и со­здается продукт (предмет, услуга, научное открытие, идея), представляющая ценность для потребителя. В определенном смысле можно провести аналогию между бизнес-процессом и архитектурой, поскольку модель бизнес-процесса — это структу­рированное графическое описание сети процессов и операций, связанных с данными, документами, организационными едини­цами и прочими объектами, отражающими существующую или предполагаемую деятельность предприятия.
Архитектура системы влияет на производительность, надежность, удобство сопровождения и другие характеристики системы. Поэтому модели архитектуры, выбранные для ИС, мо­гут зависеть от системных требований:
1. Производительность. Если критическим требованием
является производительность системы, следует разработать та­кую архитектуру, чтобы за все критические операции отвечало как можно меньше подсистем с максимально малым взаимодей­ствием между ними. Чтобы уменьшить взаимодействие между компонентами, лучше использовать крупные модульные компо­ненты, а не мелкие структурные элементы.
2. Защищенность. В этом случае архитектура должна
иметь многоуровневую структуру, в которой наиболее критиче­ские системные элементы защищены на внутренних уровнях, а проверка безопасности этих уровней осуществляется на более высоком уровне.
3. Безопасность. В этом случае архитектуру следует спро-
ектировать так, чтобы за все операции, влияющие на безопас­ность системы, отвечало как можно меньше подсистем. Такой подход позволяет снизить стоимость разработки и решает про­блему проверки надежности.
4. Надежность. В этом случае следует разработать архи-
тектуру с включением избыточных компонентов, чтобы можно было заменять и обновлять их, не прерывая работу системы.
33
5. Удобство сопровождения. Здесь архитектуру системы
следует проектировать на уровне мелких структурных компо­нентов, которые можно легко изменять. Программы, создающие данные, должны быть отделены от программ, использующих эти данные. Следует также избегать структуры совместного исполь­зования данных.
Очевидно, что некоторые из перечисленных архитектур противоречат друг другу. Например, для того чтобы повысить производительность, необходимо использовать крупно модуль­ные компоненты, в то же время сопровождение системы намно­го упрощается, если она состоит из мелких структурных компо­нентов.
1.3. Кодирование (системный синтез)
Процесс кодирования (написания программного кода, про­граммирования) обычно следует непосредственно за процессом проектирования, или они могут перекрываться.
Программирование — индивидуальный процесс, здесь не существует общих правил, которым необходимо следовать при написании программного кода. Иногда кодирование начинают с компонентов, которые они хорошо понимают, оставляя напосле­док «темные» компоненты, но можно и наоборот. Но в любом случае сначала на этапе проектирования проводится декомпози­ция подсистем, из которых строится ИС до уровня процедур, выполняющих какую-нибудь одну функцию. Затем эти процеду­ры пишутся и отлаживаются отдельно. При отладке используют имитацию программной среды и программы-«заглушки».
Имитировать взаимодействие отлаживаемой процедуры с программной средой можно декларативным заданием данных, поступающих из этой среды. «Заглушки» нужны для имитации работы тех процедур, которые вызывает во время прогона дан­ная процедура. Они есть «пустые» программы, которые, напри­мер, просто выводят на экран сообщение, что отработала такая­то процедура.
Современное программирование использует объектно­ориентированную парадигму (ООП), которая пришла на смену
34
парадигме структурного программирования, впрочем, вобрав все постулаты последней. Она базируется на трех «китах»:
– наследовании;
– инкапсуляции;
– полиморфизме.
Следует обратить внимание на последнее достижение в этой области — технологию XP-экстремального программиро­вания.
Отладка — наиболее трудоемкий процесс в проектирова­нии. Скрытые ошибки иногда проявляются при первом же за­пуске самой простой программы, а иногда «прячутся» годами. В систему ошибки попадают, конечно, не по желанию разработчи­ка просто надо быть морально готовыми к тому, что в столь сложной системе, какой является программа объемом в сотни тысяч строк, избежать ошибок невозможно. Выявление скрытых ошибок в таком комплексе специалисты приравнивают к искус­ству.
Обычно программисты сами тестируют написанный ими программный код для обнаружения возможных ошибок и про­граммных дефектов. Собственно, именно этот процесс называ­ется отладкой программы.
В принципе тестирование и отладка являются разными процессами. При тестировании устанавливается наличие про­граммных ошибок. В ходе отладки устанавливается местополо­жение ошибок, затем они устраняются. Из-за большого числа потенциальных ошибок весь процесс отладки практически все­гда превращается в цепочку «ошибка — исправление, ошибка — исправление...». На рис. 1.3 показан возможный процесс отладки программы. Отладка может быть частью как процесса разработ­ки, так и процесса тестирования ПО.
Рис. 1.3. Процесс отладки
35
Проводящий отладку программист должен сгенерировать такие режимы работы системы, которые помогут обнаружить программные ошибки. Локализации ошибок может потребовать проведения ручной трассировки кода программы. В процессе тестирования и отладки используется отладчик.
Исследователи насчитывают 169 типов ошибок, которые
объединены в 19 больших классов:
1) логические;
2) ошибки манипулирования данными;
3) ошибки ввода / вывода;
4) ошибки в вычислениях;
5) ошибки в пользовательских интерфейсах;
6) ошибки в операционной системе и вспомогательных
программах;
7) ошибки компоновки;
8) ошибки в межпрограммных интерфейсах;
9) ошибки в интерфейсах «Программа системное ПО»;
10) ошибки при обращении с внешними устройствами;
11) ошибки сопряжения с БД;
12) ошибки инициализации БД;
13) ошибки изменений по запросу извне;
14) связанные с глобальными переменными;
15) повторяющиеся;
16) ошибки в документации;
17) нарушение технических требований;
18) неопознанные;
19) ошибки оператора.
Важно отметить, что далеко не все ошибки исходят от раз­работчика. По данным разных исследователей, от 6 до 19 % ошибок порождаются ошибками в документации! Вот уж воис­тину «не верь глазам своим!» — приходится проверять все, что вы еще только собираетесь использовать, и для этого разрабаты­вают специальные тесты.
36
1.4. Верификация и аттестация
Верификацией и аттестацией называют процессы провер­ки и анализа, в ходе которой проверяется соответствие про­граммного обеспечения ТЗ и требованиям заказчиков (рис. 1.4).
Рис. 1.4. Верификация на этапах разработки ПО
Верификация и аттестация охватывают полный цикл раз­работки ИС — они начинаются на этапе анализа требований и завершаются проверкой программного кода на этапе тестирова­ния готовой программной системы (рис. 1.4). Верификация и аттестация не одно и то же, хотя их легко перепутать. Кратко различие между ними можно определить следующим образом.
Верификация (проверка правильности) отвечает на вопрос, соответствует ли ИС техническому заданию, в частности функ­циональным и системным требованиям.
Аттестация проводится после верификации и выявляет, насколько система соответствует ожиданиям заказчика, а не только требованиям ТЗ. Итогом аттестации являются докумен­ты, подписываемые как заказчиком, так и разработчиком.
В верификации и аттестации используются две основные методики: инспектирование и тестирование.
Инспектирование сравнительно новое явление в програм­мировании. Оно осуществляет статическую проверку ПО, то
37
есть не требует прогона программы. Инспектирование программ не требует их исполнения, поэтому данный метод можно ис­пользовать до написания программ. Во время инспектирования проверяется исходное представление системы. Это может быть модель системы, спецификация или программа, написанная на языке высокого уровня. Для обнаружения ошибок используются опыт и знания экспертов. Каждую ошибку можно рассматривать отдельно, не обращая внимания на то, как она влияет на поведе­ние системы.
Инспектирование на практике сводится к анализу ошибок экспертами. Поскольку это статическая верификация — иссле­дуется сам текст (программы, описания модели, структуры или плана). Причем озвучиваются только недостатки исследуемого текста. Это, безусловно, экономит время, но зачастую болезнен­но воспринимается разработчиками.
Инспектирование — эффективный метод обнаружения ошибок, и что немаловажно, оно значительно дешевле тестиро­вания программ. Более 60 % ошибок в программах можно обна­ружить с его помощью.
Инспектирование может оценить и другие качественные характеристики систем: соответствие стандартам, переноси­мость и удобство сопровождения.
Заметим, что за один сеанс инспектирования можно вы­явить множество разнообразных программных дефектов. А за один сеанс тестирования можно обнаружить только одну ошиб­ку, поскольку ошибки могут привести к отказу системы или их эффекты могут накладываться друг на друга.
Инспектирование выполняется на всех этапах процесса разработки программной системы. Параллельно с инспектиро­ванием может выполняться автоматический анализ исходного кода программ и соответствующих документов. Инспектирова­ние и автоматический анализ — это статические методы про­верки, поскольку им не требуется прогон ПО. Основной прием инспектирования — совещания, в которых участвуют опытные разработчики и проектировщики знакомые с предметом инспек­ции, но не принимавшие участие в создании инспектируемого материала. Они анализируют какой-либо аспект проекта, напри­мер, спецификацию требований или код программного модуля.
38
Задача такого инспекционного совещания выявить ошибки и только их. Никаких положительных рецензий они не выносят, не отмечают сильные стороны проекта. Это нередко становится причиной неприятия такого способа верификации со стороны непосредственных исполнителей.
Тестирование ПО — запуск исполняемого кода с тестовы- ми данными и исследование выходных данных и рабочих харак­теристик программного продукта для проверки правильности работы системы. Тестирование — это динамический метод ве­рификации и аттестации, так как применяется к исполняемой системе.
1.4.1. Тестирование на этапе разработки требований
Программы верифицируются еще на этапе разработки тре­бований. К их анализу привлекаются специалисты по маркетин­гу, руководители проекта, главные конструкторы и специалисты по анализу человеческого фактора. А вот члены группы тестиро­вания участвуют в этой работе очень редко.
Группа аналитиков читает черновики проектных докумен­тов. Затем она собирает информацию, которая может оказать помощь в их оценке и дальнейшей разработке требований. Для этого существует несколько стандартных способов:
1) сравнительный анализ;
2) дискуссионные группы;
3) обследование объекта.
Результаты каждой из этих процедур могут привести к значительному пересмотру существующих планов.
При анализе и оценке требований к продукту и его функ­циональных характеристик специалисты, прежде всего, пытают­ся выяснить следующее.
– Адекватны ли эти требования? Действительно ли именно такой продукт компания хочет создать?
– Полны ли они? Не упущены ли какие-нибудь еще по­лезные или даже жизненно необходимые функции? Нельзя ли ослабить какие-либо из перечисленных требований?
– Совместимы ли требования между собой? Требования к продукту (и его функции) могут оказаться логически или пси-
39
хологически несовместимыми. Логическая несовместимость означает их противоречивость, а психологическая — концепту­альные разногласия (разобравшись с одной из функций, пользо­ватель может не понять другую).
– Выполнимы ли они? Не требуется ли для нормальной эксплуатации продукта более быстрое аппаратное обеспечение, больший объем памяти, более высокая пропускная способность, большее разрешение (и т. д.), чем указано в документации?
– Разумны ли они? К сожалению, качество продукта и его рентабельность стоят по разную сторону баррикад: с одной сто­роны — производительность продукта, его надежность и нетре­бовательность к ресурсам, а с другой — время и стоимость его разработки. Найдено ли самое оптимальное соответствие между всеми этими характеристиками? Не требуется ли от продукта абсолютная безупречность, молниеносная работа и готовность конкурировать с программным обеспечением, которого еще нет и в проекте? Отдельные из этих требований вполне достижимы, но не одновременно и не для одного и того же продукта. Поэто­му при планировании принципиально важно правильно расста­вить приоритеты.
– Поддаются ли они тестированию? Насколько легко можно будет определить, соответствует ли инженерно-проектная документация требованиям к программному продукту.
Ну а теперь, выяснив, что прежде всего интересует группу аналитиков, рассмотрим методы их работы.
Как правило, для оценки функциональности будущей си­стемы и ее пользовательского интерфейса создается прототип. Это исключительно полезная технология: когда люди получают возможность собственноручно поэкспериментировать с систе­мой или ее прототипом, их требования значительно изменяются. Идеи, которые в спецификации казались просто блестящими, в работающей модели могут утратить свою привлекательность.
Если прототип написан на том же языке, на котором будет реализован конечный продукт, то конечный продукт может раз­рабатываться прямо на его основе (разумеется, если прототип оказался удачным). Но есть и противоположная точка зрения.
– Многие языки или системы разработки не подходят для создания быстрого и дешевого прототипа.
40
– Хороший совет: отложить первый черновик программы и начать ее разработку с чистого листа. Особенно это касается прототипа. Ведь от него не требуется хорошая внутренняя орга­низация. Он может работать медленно и неэффективно, а то и вообще неправильно. Согласитесь, что такая программа не луч­шая основа для хорошей разработки. Да и разработчики прото­типа будут чувствовать себя гораздо свободнее, если будут ду­мать только о скорости и не беспокоиться, что допущенные ими ошибки и неверные решения впоследствии затруднят програм­мирование.
1.4.2. Тестирование на этапе проектирования
На этапе проектирования, как и на этапе планирования, кода еще нет, поэтому и здесь проверяются только идеи. Однако на этот раз идеи гораздо лучше формализованы и описаны намного подробнее, чем в первоначальных планах. Анализируя проектные документы, специалисты должны составить очень четкое представление о работе будущей системы. Специалисты по тестированию могут и не участвовать в работе группы анали­тиков, однако для планирования системы будущих тестов такое участие очень полезно. (На совещаниях группы аналитиков спе­циалистам по тестированию лучше всего быть пассивными участниками и высказываться только в случае необходимости.) На этапе проектирования в центре внимания аналитиков должны быть следующие вопросы:
– Действительно ли проект хорош? Будет ли на его ос­нове создан эффективный, компактный, хорошо тестируемый и легкий в сопровождении и модернизации продукт?
– Соответствует ли проект требованиям? Проект дол­жен быть формализованным выражением требований, представ­ленных в документации этапа планирования.
– Полон ли проект? Описывает ли проект все взаимосвя­зи между модулями и данными, передачу данных между моду­лями, условия работы каждого модуля и их реализацию.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]