tehnologia (1018792), страница 19
Текст из файла (страница 19)
Поэтому выбор подхода осуществляют сиспользованием дополнительной информации.Практика показывает, что объектный подход эффективен для разработки очень большихпрограммных систем (более 100.000 операторов универсального языка программирования) ив тех случаях, когда объектная структура предметной области ярко выражена.Следует также учитывать, что необходимо осторожно использовать объектный подходпри жестких ограничениях на эффективность разрабатываемого программного обеспечения,например, при разработке систем резального времени.Во всех прочих случаях выбор подхода остается за разработчиком.Выбор языка программирования. В большинстве случаев, никакой проблемы выбораязыка программирования реально не существует.
Язык может быть определен:• организацией, ведущей разработку; например, если фирма владеет лицензионнымвариантом C++ Builder, то она будет вести разработки преимущественно в данной среде;• программистом, который по возможности всегда будет использовать хорошо знакомыйязык;• устоявшимся мнением («все разработки подобного рода должны выполняться на C++или на Java или на ...») и т.п.Если же все-таки выбор языка реально возможен, то нужно иметь в виду, что всесуществующие языки программирования можно разделить на следующие группы:• универсальные языки высокого уровня;• специализированные языки разработчика программного обеспечения;• специализированные языки пользователя;• языки низкого уровня.98В группе у н и в е р с а л ь н ы х я з ы к о в в ы с о к о г о у ро в н я безусловным лидером насегодня является язык С (вместе с C++).
Действительно различные версии С и C++ имеютцелый ряд очень существенных достоинств:• многоплатформенность – для всех используемых в настоящее время платформсуществуют компиляторы с языка С и C++;• наличие операторов, реализующих основные структурные алгоритмическиеконструкции (условную обработку, все виды циклов);• возможность программирования на низком (системном) уровне с использованиемадресов оперативной памяти;• огромные библиотеки подпрограмм и классов.Все это сделало С и C++ основными языками, используемыми для созданияоперационных систем, и, в свою очередь, служит для них дополнительной рекламой. ОднакоС и C++ имеют и серьезные недостатки:• отсутствие полноценных встроенных структурных типов данных (имеющиесяпсевдоструктурные типы, использующие адресную арифметику, недостаточно жесткоопределены, чтобы контролировать многие операции над этими данными, что приводит кбольшому количеству ошибок, выявляемых только в процессе отладки программы);• наличие синтаксических неоднозначностей, которые также не позволяют компиляторуконтролировать правильность программы;• ограниченный контроль параметров, передаваемых в подпрограмму, что такжеобнаруживается только в процессе отладки программы, и т.п.Альтернативой С и C++ среди универсальных языков программирования, используемыхдля создания прикладного программного обеспечения, на сегодня является Pascal,компиляторы которого в силу четкого синтаксиса обнаруживают помимо синтаксических ибольшое количество семантических ошибок.
Версия Object Pascal, использованная в средеDelphi, сопровождается профессиональными библиотеками классов, упрощающими ведениебольших разработок, в том числе и требующих использования баз данных, что делает Delphiдостаточно эффективной средой для создания приложений Windows.Кроме этих языков к группе универсальных принадлежат также Basic, Modula, Ada инекоторые другие. Каждый из указанных языков, так же, как C++ и Pascal, имеет своиособенности и, соответственно, свою область применения.Специализированныеязыкиразработчикаиспользуют для созданияконкретных типов программного обеспечения.
К ним относят:• языки баз данных;• языки создания сетевых приложений;• языки создания систем искусственного интеллекта и т.д.99Эти языки изучаются в специальных курсах, и в настоящем учебнике рассматриваться небудут.Специализированные языки пользователя обычно являются частью профессиональныхсред пользователя, характеризуются узкой направленностью и разработчикамипрограммного обеспечения не используются.Я з ы к и н и з к о г о у р о в н я позволяют осуществлять программирование практически науровне машинных команд. При этом получают самые оптимальные, как с точки зрениявремени выполнения, так и с точки зрения объема необходимой памяти программы.
Но этиязыки совершенно не годятся для создания больших программ и, тем более, программныхсистем. Основная причина – низкий уровень абстракций, которыми должен оперироватьразработчик, откуда недопустимо большое время разработки. Существенно и то, что самиязыки низкого уровня не поддерживают принципов структурного программирования, чтозначительно ухудшает технологичность разрабатываемых программ.В настоящее время языки типа Ассемблера обычно используют:• при написании сравнительно простых программ, взаимодействующих непосредственнос техническими средствами, например драйверов, поскольку в этом случае приходитсякропотливо настраивать соответствующее оборудование, преимущества языковпрограммирования высокого уровня становятся несущественными;• в виде вставок в программы на языках высокого уровня, например, для ускоренияпреобразования данных в циклах с большим количеством повторений.Выбор среды программирования.
Средой программирования называют программныйкомплекс, который включает специализированный текстовый редактор, встроенныекомпилятор, компоновщик, отладчик, справочную систему и другие программы,использование которых упрощает процесс написания и отладки программ.Последнее время широкое распространение получили упоминавшиеся выше средывизуального программирования, в которых программист получает возможность визуальногоподключения к программе некоторых кодов из специальных библиотек компонентов, чтостало возможным с развитием объектно-ориентированного программирования.Наиболее часто используемыми являются визуальные среды Delphi, C++ Builder фирмыBorland (Inprise Corporation), Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмыIBM и др.Между основными визуальными средами этих фирм Delphi, C++ Builder и Visual C++имеется существенное различие: визуальные среды фирмы Microsoft обеспечивают болеенизкий уровень программирования «под Windows».
Это является их достоинством инедостатком. Достоинством – так как уменьшается вероятность возникновения«нестандартной» ситуации,100т.е. ситуации, не предусмотренной разработчиками библиотеки компонентов, а недостатком– так как это существенно загружает программиста «рутинной» работой, от которойизбавлен программист, работающий с Delphi или C++ Builder.
Много нареканий вызываеттакже интерфейс Visual C++, также ориентированный на «низкоуровневое»программирование.В общем случае, если речь идет о выборе между этими средами, то он в значительнойстепени должен определяться характером проекта.Выбор или формирование стандартов разработки. Реальное применение любойтехнологии проектирования требует формирования или выбора ряда стандартов, которыедолжны соблюдаться всеми участниками проекта:• стандарт проектирования;• стандарт оформления проектной документации;• стандарт интерфейса пользователя.Стандарт проектирования должен определять:• набор необходимых моделей (схем, диаграмм) на каждой стадии проектирования истепень их детализации;• правила фиксации проектных решений на диаграммах, в том числе правила именованияобъектов и соглашения по терминологии, набор атрибутов для всех объектов и правила ихзаполнения на каждой стадии, правила оформления диаграмм, включая требования к форме иразмерам объектов;• требования к конфигурации рабочих мест разработчиков, включая настройкиоперационной системы и используемых CASE-средств;• механизм обеспечения совместной работы над проектом, в том числе и правилаинтеграции подсистем проекта и анализа проектных решений на непротиворечивость.Стандарт оформления проектной документации должен регламентировать:• комплектность, состав и структуру документации на каждой стадии;• требования к ее содержанию и оформлению;• правила подготовки, рассмотрения, согласования и утверждения документов.Стандарт интерфейса пользователя должен определять:• правила оформления экранов (шрифты и цветовую палитру), состав и расположениеокон и элементов управления;• правила пользования клавиатурой и мышью;• правила оформления текстов помощи;• перечень стандартных сообщений;• правила обработки реакции пользователя.Все описанные выше проектные решения существенно влияют на трудоемкость исложность разработки.
Только после их принятия следует переходить к анализу требованийи разработке спецификаций проектируемого программного обеспечения.101Контрольные вопросы и задания1. Что понимают под технологичностью программного обеспечения? Почему?2. Какие типы программных продуктов можно выделить? Чем они различаются?3. Назовите основные эксплуатационные требования к программным продуктам. Какимисредствами и приемами обеспечивается каждый из них? Для каких типов программных системцелесообразно указывать каждый из них?4. В каких ситуациях необходимы предпроектные исследования? Какие вопросы при этомрешают? Что получают в результате таких исследований?5. Назовите, какой раздел технического задания можно считать основным и почему? Какуюинформацию должны содержать остальные разделы? В чем основная сложность разработкитехнического задания?6.
Составьте техническое задание на разработку «калькулятора» по типу, предлагаемогоWindows. Проанализируйте, какие программы или программные системы могли бы отвечатьуказанным вами требованиям. Попробуйте ограничить их количество, уточнив техническое задание.7. Какие решения ранних этапов проектирования считают основными и почему?1024. АНАЛИЗ ТРЕБОВАНИЙ И ОПРЕДЕЛЕНИЕСПЕЦИФИКАЦИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯПРИ СТРУКТУРНОМ ПОДХОДЕСобственно разработка любого программного обеспечения начинается с анализа требований к будущемупрограммному продукту.
В результате анализа получают спецификации разрабатываемого программногообеспечения: выполняют декомпозицию и содержательную постановку решаемых задач, уточняют ихвзаимодействие и эксплуатационные ограничения. В целом в процессе определения спецификаций строятобщую модель предметной области, как некоторой части реального мира, с которой будет тем или инымспособом взаимодействовать разрабатываемое программное обеспечение, и конкретизируют его основныефункции.4.1. Спецификации программного обеспеченияпри структурном подходеКак уже упоминалось в § 1.4, спецификации представляют собой полное и точноеописание функций и ограничений разрабатываемого программного обеспечения.