Проектирование программ


Проектирование программного обеспечения / Хабрахабр

Сегодня процесс создания сложных программных приложений невозможно представить без разделения на этапы жизненного цикла. Под жизненным циклом программы будем понимать совокупность этапов:
  • Анализ предметной области и создание ТЗ (взаимодействия с заказчиком)
  • Проектирование структуры программы
  • Кодирование (набор программного кода согласно проектной документации)
  • Тестирование и отладка
  • Внедрение программы
  • Сопровождение программы
  • Утилизация
Остановимся детально на процессе проектирования. В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. В этом нелегком деле нам поможет язык UML. UML — является графическим языком для визуализации, описания параметров, конструирования и документирования различных систем (программ в частности). Диаграммы создаются с помощью специальных CASE средств, например Rational Rose (http://www-01.ibm.com/software/rational/) и Enterprise Architect (http://www.sparxsystems.com.au/). На основе технологии UML строится единая информационная модель. Приведенные выше CASE средства способны генерировать код на различных объектно-ориентированных языках, а так же обладают очень полезной функцией реверсивного инжиниринга. (Реверсивный инжиниринг позволяет создать графическую модель из имеющегося программного кода и комментариев к нему.)

Рассмотрим типы диаграмм для визуализации модели (это must have, хотя типов гораздо больше):

  • Диаграмма вариантов использования (use case diagram)
  • Диаграмма классов (class diagram)
  • Диаграмма состояний (statechart diagram)
  • Диаграмма последовательности (sequence diagram)
  • Диаграмма кооперации (collaboration diagram)
  • Диаграмма компонентов (component diagram)
  • Диаграмма развертывания (deployment diagram)
Диаграмма вариантов использования (use case diagram)
Проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью, так называемых прецедентов. При этом актером (actor) или действующим лицом называется любая сущность, взаимодействующая с системой извне. Другими словами, каждый вариант использования определяет некоторый набор действий, совершаемый системой при диалоге с актером. При этом ничего не говорится о том, каким образом будет реализовано взаимодействие актеров с системой.

Диаграмма классов (class diagram)
Диаграмма классов служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру (поля, методы…) и типы отношений (наследование, реализация интерфейсов … ). На данной диаграмме не указывается информация о временных аспектах функционирования системы. С этой точки зрения диаграмма классов является дальнейшим развитием концептуальной модели проектируемой системы. На этом этапе принципиально знание ООП подхода и паттернов проектирования.

Диаграмма состояний (statechart diagram)
Главное предназначение этой диаграммы — описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение элемента модели в течение его жизненного цикла. Диаграмма состояний представляет динамическое поведение сущностей, на основе спецификации их реакции на восприятие некоторых конкретных событий.

Диаграмма последовательности (sequence diagram)
Для моделирования взаимодействия объектов в языке UML используются соответствующие диаграммы взаимодействия. Взаимодействия объектов можно рассматривать во времени, и тогда для представления временных особенностей передачи и приема сообщений между объектами используется диаграмма последовательности. Взаимодействующие объекты обмениваются между собой некоторой информацией. При этом информация принимает форму законченных сообщений. Другими словами, хотя сообщение и имеет информационное содержание, оно приобретает дополнительное свойство оказывать направленное влияние на своего получателя.

Диаграмма кооперации (collaboration diagram)
На диаграмме кооперации в виде прямоугольников изображаются участвующие во взаимодействии объекты, содержащие имя объекта, его класс и, возможно, значения атрибутов. Как и на диаграмме классов, указываются ассоциации между объектами в виде различных соединительных линий. При этом можно явно указать имена ассоциации и ролей, которые играют объекты в данной ассоциации. В отличие от диаграммы последовательности, на диаграмме кооперации изображаются только отношения между объектами, играющими определенные роли во взаимодействии.

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

Диаграмма развертывания (deployment diagram)
Диаграмма развертывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения (runtime). При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками. Те компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не показываются. Диаграмма развертывания содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма развертывания является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Эта диаграмма, по сути, завершает процесс ООАП для конкретной программной системы и ее разработка, как правило, является последним этапом спецификации модели.

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

Я убежден, что программист в первую очередь это кодер – он НЕ должен общаться с заказчиком, НЕ должен задумываться об архитектуре системы, не должен изобретать интерфейс к программе, он только должен кодировать – реализовывать алгоритмы, функционал, внешний вид, юзабилити, но не более…. Проектировщик же должен начиная от абстрактных диаграмм (описывающих предметную область) до диаграмм представляющих структуру данных, классов и процессов их взаимодействия, детально шаг за шагом все расписать. То есть сложность работы и зарплата проектировщика должна быть на порядок выше чем у программиста == кодера. Простите за крамолу....

habrahabr.ru

Проектирование программ | Планета информатики

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

Основные требования, предъявляемые к качеству программного изделия, - функциональность, надежность, удобство эксплуатации – обеспечиваются за счет правильного проектирования программного комплекса и создания необходимой документации.

Для сложных программ и программных комплексов этап проектирования программы выполняется параллельно с этапом разработки алгоритма и структуры данных. Проектирование предполагает разбиение задачи на несколько подзадач, для решения каждой из которых создается программный модуль. При этом программа проектируется как многомодульная структура. Существует два основных способа проектирования многомодульных программ – восходящее и нисходящее проектирование.

Восходящее проектирование (или проектирование «снизу вверх») основано на выделении нескольких достаточно крупных модулей, реализующих некоторые функции в общей программе. При выделении модулей опираются на доступность реализуемых функций для понимания, простоту структурирования данных, существование готовых программ и модулей для реализации заданных функций, возможности переделки существующих программ для новых целей; имеет значение и размер будущего модуля. Каждый модуль при восходящем проектировании автономно программируется, тестируется и отлаживается. После этого отдельные модули объединяются в подсистемы с помощью управляющего модуля, в котором определяется последовательность вызовов модулей, ввод-вывод и контроль данных и результатов. В свою очередь, подсистемы затем объединяются в более сложные системы и в общий программный комплекс, который подвергается комплексной отладке с проверкой правильности межмодульных связей.

Рассмотренный подход можно рекомендовать при разработке не очень сложных программ. Если размеры подпрограмм невелики, то целесообразно выделить подпрограммы и начать программирование с их составления.

Основные недостатки восходящего проектирования программы проявляются в сложности объединения модулей в единую систему, в трудности выявления и исправления ошибок, допущенных на ранних стадиях разработки модулей. Кроме того, отдельные модули могут создаваться без общего представления о структуре всей системы, что затрудняет их объединение.

Для создания сложных программ можно рекомендовать нисходящее проектирование, основанное на выделении в решаемой задаче иерархии уровней обобщения. Схема иерархии уровней обобщения позволяет программисту сначала сконцентрировать внимание на том, что нужно сделать, и лишь затем – на том, как это сделать.

Ведущая программа записывается как программа верхнего уровня, управляющая вызовами модулей более низкого уровня. Каждый из модулей более низкого уровня, в свою очередь, управляет вызовами модулей еще более низкого уровня. Такой способ проектирования позволяет создавать сложные и громоздкие программы из небольших простых модулей: размер задачи отражается только в числе модулей и уровней обобщений.

При нисходящем проектировании появляется возможность использовать вертикальное управление в схеме иерархии с использованием таких правил: модуль возвращает управление вызвавшему; модуль вызывает только модули более низкого уровня; принятие основных решений возлагается на модули максимально высокого уровня.

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

Основные достоинства нисходящего проектирования:

  1. проявление логики программы возникает уже при чтении головного модуля, что делает программу боле простой;
  2. возможность контроля хода работы над программой в процессе последовательной детализации программы обеспечивает ее непрерывную корректировку; отсутствие комплексной отладки благодаря сквозному контролю позволяет сэкономить до 30 % общего времени разработки программ;
  3. одновременная параллельная работа нескольких программистов может оказаться эффективной.

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

www.inf1.info

Проектирование программ

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

Основные требования, предъявляемые к качеству программного изделия, - функциональность, надежность, удобство эксплуатации – обеспечиваются за счет правильного проектирования программного комплекса и создания необходимой документации.

Для сложных программ и программных комплексов этап проектирования программы выполняется параллельно с этапом разработки алгоритма и структуры данных. Проектирование предполагает разбиение задачи на несколько подзадач, для решения каждой из которых создается программный модуль. При этом программа проектируется как многомодульная структура. Существует два основных способа проектирования многомодульных программ – восходящее и нисходящее проектирование.

Восходящее проектирование (или проектирование «снизу вверх») основано на выделении нескольких достаточно крупных модулей, реализующих некоторые функции в общей программе. При выделении модулей опираются на доступность реализуемых функций для понимания, простоту структурирования данных, существование готовых программ и модулей для реализации заданных функций, возможности переделки существующих программ для новых целей; имеет значение и размер будущего модуля. Каждый модуль при восходящем проектировании автономно программируется, тестируется и отлаживается. После этого отдельные модули объединяются в подсистемы с помощью управляющего модуля, в котором определяется последовательность вызовов модулей, ввод-вывод и контроль данных и результатов. В свою очередь, подсистемы затем объединяются в более сложные системы и в общий программный комплекс, который подвергается комплексной отладке с проверкой правильности межмодульных связей.

Рассмотренный подход можно рекомендовать при разработке не очень сложных программ. Если размеры подпрограмм невелики, то целесообразно выделить подпрограммы и начать программирование с их составления.

Основные недостатки восходящего проектирования программы проявляются в сложности объединения модулей в единую систему, в трудности выявления и исправления ошибок, допущенных на ранних стадиях разработки модулей. Кроме того, отдельные модули могут создаваться без общего представления о структуре всей системы, что затрудняет их объединение.

Для создания сложных программ можно рекомендовать нисходящее проектирование, основанное на выделении в решаемой задаче иерархии уровней обобщения. Схема иерархии уровней обобщения позволяет программисту сначала сконцентрировать внимание на том, что нужно сделать, и лишь затем – на том, как это сделать.

Ведущая программа записывается как программа верхнего уровня, управляющая вызовами модулей более низкого уровня. Каждый из модулей более низкого уровня, в свою очередь, управляет вызовами модулей еще более низкого уровня. Такой способ проектирования позволяет создавать сложные и громоздкие программы из небольших простых модулей: размер задачи отражается только в числе модулей и уровней обобщений.

При нисходящем проектировании появляется возможность использовать вертикальное управление в схеме иерархии с использованием таких правил: модуль возвращает управление вызвавшему; модуль вызывает только модули более низкого уровня; принятие основных решений возлагается на модули максимально высокого уровня.

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

Основные достоинства нисходящего проектирования:

  1. проявление логики программы возникает уже при чтении головного модуля, что делает программу боле простой;
  2. возможность контроля хода работы над программой в процессе последовательной детализации программы обеспечивает ее непрерывную корректировку; отсутствие комплексной отладки благодаря сквозному контролю позволяет сэкономить до 30 % общего времени разработки программ;
  3. одновременная параллельная работа нескольких программистов может оказаться эффективной.

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

www.inf1.info

Проектирование программ

Новые рефераты:

  • Возврат и зачет излишне уплаченных или излишне взысканных сумм таможенных пошлин, налогов и иных денежных средств.
  • Легкомыслие как форма неосторожности.
  • Иностранные инвестиции в экономике России 2016-2017.
  • Философия Сократа.
  • Анализ использования оборотных средств предприятия.
  • Анализ финансового состояния предприятия 2017.
  • Экстремальные виды спорта.
  • Австралия и Океания.
  • Денежно-кредитная политика ЦБ РФ 2017.
  • Философия Платона.
  • Реклама любимой книги 4 класс.

    Главная » Информатика. Учебник. Часть 2. » 15.6. Проектирование программ

    15.6. Проектирование программ
      Программирование как вид деятельности Появление первых компьютеров породило программирование как науку. Разрабатывались первые математические теории обработки информации, средства доказательства правильности программ, оптимизации кода, создания эффективных компиляторов, формального тестирования и т. д. Затем, с появлением универсальных языков программирования третьего поколения, эти аспекты стали менее актуальными — исследования шли и идут в основном в области автоматической генерации исходных текстов и повышения эффективности компиляторов. Программирование превратилось в искусство — миллионы людей, не имевших специального образования, получили возможности применять компьютеры для решения собственных прикладных задач, что потребовало от них мастерства создавать правильно работающие программы. Искусством программирование остается и сегодня для профессиональных разработчиков и любителей, создающих программы в одиночку или в небольших компаниях, где все решает индивидуальное мастерство. Вместе с тем, при росте спроса со стороны государственных и частных организаций на все более и более сложные системы автоматизации предприятий, надежные операционные среды, комплексы глобального телекоммуникационного управления, возникла необходимость в постановке процесса разработки программного обеспечения (ПО) на поток, превращения программирования в ремесло. Было разработано несколько методологий и стандартов, позволивших эффективно организовывать труд сотен программистов средней квалификации, точно укладываться в отпущенные сроки и средства и не зависеть от настроения нескольких талантливых ведущих специалистов. Отрицательная сторона подобных методологий — отсутствие творческого элемента в работе и своеобразная конвейерная «потогонная» система промышленного производства программ, которая, будучи внедренной в организации, в условиях жесточайшего дефицита программистов во всем мире может только отпугнуть сотрудников.     Экономические аспекты программирования Когда на свет появились первые компьютеры, одна минута их работы стоила очень дорого, а задачи решались достаточно простые, поэтому в расходах на подготовку программ труд разработчиков составлял небольшую часть. С появлением ПК и ростом спроса на большие программные системы практически всю расходную часть проекта стала составлять зарплата программистов. Как видно из таблицы, большой процент таких проектов заканчивается неудачно, а расходы на них очень велики, поэтому проблемы создания качественного программного обеспечения точно в срок и в рамках бюджета сегодня самые важные, и над созданием эффективных методологий производства ПО трудятся специалисты во всех развитых странах.   Этапы разработки программ Программы небольшого и среднего размера (несколько тысяч строк) создаются, как правило, в два этапа. Сначала необходимо точно установить, что надо сделать, продумать соответствующий алгоритм, определить структуры данных, объекты и взаимодействие между ними (это этап системного анализа), а затем выразить этот алгоритм в виде, понятном машине (этап кодирования). Если же разрабатывается крупный проект объемом от десятков тысяч до миллионов строк кода, тогда приходится применять специальные методологии проектирования, охватывающие период разработки ПО. Период разработки ПО Рассмотрим классический период разработки ПО. 1. Формируются и анализируются требования к проекту. Этот этап самый важный, так как неправильное формулирование требований приводит к выполнению ненужной работы, а недооценка сложности вызывает перерасход средств и времени. Сегодня около 60 % крупных проектов завершаются неудачей именно из-за ошибок на стадии подготовки требований. На основе требований по различным методикам определяется примерный объем проекта и его трудоемкость, рассчитываются будущие трудозатраты и определяется его стЪимостъ. Так как требования к проекту во время работы над ним могут уточняться и меняться, а выполнение требований надо отслеживать, применяются специальные программы для управления требованиями. Часто заказчик не в состоянии точно выразить, чего он хочет, и задача специалистов по системному анализу — помочь ему выразить свои требования в виде, пригодном для формализации. После согласования требований подписывается контракт на разработку ПО. В дальнейшем любые отклонения от сформулированных требований к продукту (как со стороны заказчика, так и со стороны исполнителя) рассматриваются как нарушение контракта. Каждый этап требует от заказчика вложения собственных трудозатрат и привлечения высокопрофессиональных специалистов, поэтому он обязательно должен оплачиваться—бесплатно выполнять сложную работу никто не будет. Однако, хотя первый этап самый важный, заказчик редко понимает эту важность и не готов платить достаточно большие суммы. Примерный объем работ на этом этапе — 5 % от объема всего проекта. 2.Начинается предпроектное обследование объекта автоматизации. С помощью CASЕ-средств составляется формальная модель его работы, модель базы данных, объектов и потоков информации. На этом этапе привлекаются специалисты заказчика и эксперты, хорошо знакомые с предметной областью, для которой составляется задача. Примерный объем работ второго этапа — 10 % от общего. 3.На основе формальной модели составляется подробное техническое задание для программистов, спецификации отдельных модулей, таблицы баз данных, другая сопроводительная документация. Готовится подробный календарный план работ, где указываются все сроки, конкретные исполнители и выполняемые объемы работ (понедельно, помесячно). Для составления планов работ имеется немало хороших программ, ориентированных как на небольшие группы программистов, так и на коллективы из сотен сотрудников, выполняющих тысячи различных работ в рамках общего плана. Примерный объем работ третьего этапа — 10 % от общего. 4.Выбирается методология разработки ПО и начинается разработка (кодирование). Крупные компании имеют собственные методологии, ориентированные на конкретные задачи (как правило, это задачи автоматизации предприятий), однако все методологии имеют общие черты и более-менее серьезно различающихся известно около двух десятков. Мы коснулись, в частности, методологий структурного (нисходящего) и объектного проектирования. Хотя объектный подход, безусловно, один из самых передовых, он подразумевает высокую квалификацию всех исполнителей без исключения и поэтому распространен не очень широко. Достаточно популярна методология итерационного проектирования, ориентированная на использование RAD-средств и систем автоматической генерации исходных текстов на основе созданной формальной модели. Такой подход хорош тем, что позволяет быстро создать первый работающий прототип программы, когда еще требования к ней окончательно не определены, а в дальнейшем, на следующих итерациях (их обычно требуется от двух до пяти), постепенно детализировать и реализовывать конкретные возможности, пропущенные по каким-то причинам на предыдущей итерации. Эта методология немного отличается от нисходящего проектирования тем, что применяется, когда окончательные требования неизвестны и могут меняться, а основные работающие функции нужны заказчику как можно быстрее (заказчик чаще хочет получить приложение, законченное на 80 %, сегодня, чем законченное на 100 % завтра). При нисходящем проектировании основная структура задачи должна быть определена заранее. Принятие решения о выборе подходящей методологии — очень ответственный процесс. Человек, принимающий такое решение, должен обладать богатым опытом и знаниями в области создания ПО. Многое зависит от инфраструктуры заказчика — какие у него компьютеры, операционные системы, каковы их ресурсы. В соответствии с этим выбираются и средства разработки. Иногда бывает, что лучше всего подходит, например, итерационная методология, но для операционной системы заказчика нет хорошей RAD-среяы, и приходится остановиться на менее эффективной методологии. В процессе разработки необходимо: непрерывно поддерживать обратную связь с заказчиком, чтобы следить за правильностью реализации требований; непрерывно контролировать ход работ в соответствии с планом и при отклонениях от него принимать экстренные меры. Примерный объем этих работ — 10 % от общего объема проекта. 5.Когда программа закончена (готова работоспособная альфа-версия), она поступает к тестерам компании-исполнителя, которые начинают проверять ее на наличие ошибок и сообщать о найденных ошибках программистам. Анализируется, в частности, устойчивость работы программы при вводе недопустимых или критических значений, при отсутствии информации, при неверных действиях, при сбоях аппаратуры, в стрессовых режимах и т. п. Когда число ошибок, выявляемых за определенный срок (неделя, месяц), снижается ниже экспериментально подобранного уровня (на основе аналогичных проектов), начинается бета-тестирование программы у заказчика. К такому тестированию привлекается максимально возможное число сотрудников, и программа уже начинает частично функционировать в рабочем режиме. Примерный объем этих работ — 10 % от общего объема проекта. После того как заказчик удовлетворен качеством продукта, начинается его внедрение — подготовка к окончательному запуску в эксплуатацию. Если приложение многопользовательское, нередко требуется сформировать и настроить локальную сеть, установить серверы, инсталлировать вспомогательные программы. Очень много проблем возникает при переходе со старых программ (например, бухгалтерского учета, расчета зарплаты, работы с персоналом), которые создавались разными сотрудниками и покупались в разных фирмах (так называемая лоскутная автоматизация), к новой интегрированной системе. Необходимо выверить, ввести или перенести множество жизненно важной информации: всю бухгалтерскую и финансовую отчетность, данные о хранимом оборудовании и множество других сведений. Этот этап самый трудоемкий и «нудный» и занимает порой до 90 % времени всего проекта. Для систем автоматизации больших предприятий он растягивается на годы. После того как новая система готова к работе, сотрудников организации заказчика нужно обучить работе с этой системой, потому что книг о ней не написано, да и содержится в такой системе, внедренной на конкретном предприятии, множество нюансов, связанных со спецификой работы. Примерный объем трудозатрат на обучение — 5 % от общего объема проекта. 8. После того как заказчик подписывает акт приемки, проект считается завершенным, но связь с исполнителем не теряется. Особенно в первое время у пользователей системы постоянно будет возникать множество вопросов по работе с ней. Неизбежно и возникновение ошибок, которые требуется устранять. Кроме того, исполнитель может выпускать новые версии системы, и старая система потребует обновления. Сотрудничество с заказчиком по обслуживанию системы называется сопровождением. Оно бесплатно на определенный гарантийный срок (например, год). Реально объем непосредственного программирования и отладки (тестирования) в цикле разработки невелик. Он составляет 10-20 % от общего объема работ.   Контроль качества Чем крупнее проект, тем больше в нем ошибок. При этом слишком затягивать этап тестирования нельзя — нарушаются сроки, растет недовольство потребителей, и на рынок выпускается «сырая» система с множеством ошибок, которые устраняются уже в процессе эксплуатации выпуском многочисленных «заплаток». Современные технологии создания надежного ПО предусматривают непрерывный сквозной контроль качества разрабатываемого продукта на всех этапах жизненного цикла — от анализа требований до внедрения и сопровождения, а не только на этапе тестирования. Качество каждой работы в плане формализуется числовой величиной с помощью специальных методик, но его можно контролировать, только оптимальным образом организовав работу большой группы аналитиков и программистов. Для этого надо иметь возможность отслеживать вносимые в проект изменения — изменения требований, формальных моделей, сопроводительной документации, версий исходных текстов, хода выполнения календарного плана по разработке, тестированию, внедрению, сопровождению, а также контролировать и управлять всеми этапами периода создания программы — процессом разработки ПО. Для этого предназначены системы конфигураииотого управления — сложные и дорогие (десятки и сотни тысяч долларов) продукты, однако без них крупный проект скорее всего обречен на неудачу. Системы не очень сложного конфигурационного управления, охватывающие контроль версий исходных текстов и ряд других аспектов работы группы программистов, встроены, в частности, в такие системы, как Delphi 5 и Visual C++ 6.0.   Стандарты качества ПО Компания может организовать у себя очень эффективный процесс разработки ПО, однако заказчик вполне обоснованно может ей не поверить. Существует международная система сертификации компаний по стандарту качества /50 9000, которая гарантирует, что данная компания выполняет программные проекты в срок и с высоким качеством. Процесс сертификации сложен и требует подготовительной работы в течение нескольких лет. Сертификация по стандарту /50 9000 может выполняться организациями, имеющими подобное право, либо на весь мир, либо на ограниченные территории (например, Восточную Европу). К 1999 году организацией, имеющей право на международную сертификацию, в России был выдан один стандарт качества /50 9000. В США несколько лет назад была разработана специальная методология СММ (Capability Maturity Model for Software), позволяющая сертифицировать компании по одному из 5 уровней «зрелости» процесса разработки ПО. Согласно результатам 20-летних исследований Министерства обороны США оказалось, что главная причина слишком частых неудач при разработке крупных информационных проектов заключается прежде всего в неумении менеджеров управлять процессом создания качественного ПО. В отличие от стандарта ISO 9000, который просто подтверждает качественную работу компании на основании достаточно общих критериев, методология СММ ориентирована именно на качество управления процессом разработки и имеет множество конкретных рекомендаций и указаний по способам организации всех этапов создания ПО. Сегодня в США невозможно получить крупный государственный или военный заказ на создание программного продукта стоимостью более 2 млн долларов, если компания не сертифицирована как минимум по третьему уровню СММ. А по пятому уровню в мире сертифицировано менее 10 организаций.   Повышение индивидуального мастерства На основе методологии СММ была создана методология PSP (Personal Software Process), ориентированная на индивидуальных разработчиков. Она позволяет в несколько раз повысить качество создания программ, значительно поднять собственную производительность и научиться предсказывать сроки выполнения работ. Методология PSP состоит из 7 этапов самосовершенствования, и, чтобы хорошо ее освоить, надо закончить специальные курсы. Однако даже простое знакомство с ее идеологией позволит любому программисту значительно улучшить свою работу. Перед началом проекта составляется подробный календарный план работ и производится попытка оценить его объем в строках кода и рабочих днях. Весь процесс работы детально хронометрируется, а найденные ошибки подробно описываются — накапливается статистика. По окончании проекта весь процесс тщательно анализируется и делаются выводы о том, что можно улучшить в своей работе, каких ошибок надо стараться избегать, какова реальная производительность труда и т. п. Сегодня лучшая характеристика программиста — это не просто знание Си++ или Delphi, a способность планировать свой труд, разрабатывать программу точно в срок и без ошибок.   Методы маркетинга программного обеспечения Коммерческое ПО. При создании программного продукта издатель, выполнив анализ рынка, заказывает у исполнителя разработку такого ПО, которое должно пользоваться на рынке спросом, и выделяет на его создание деньги. По окончании работ издатель получает все имущественные права на созданный продукт (право на тиражирование, продажу под собственной торговой маркой, право на получение дохода от программы любым способом). При этом может быть оговорено получение исполнителем некоторого процента (роялти) с каждой проданной копии (как правило, для программ, издающихся сотнями тысяч или миллионами копий, роялти составляет 1-3 %) — тогда он получает меньшую сумму на разработку или вообще создает программу за свой счет. Если же отчисления не предусмотрены, то все расходы по подготовке программы издатель берет на себя. Он также вкладывает средства в упаковку, рекламную кампанию, организации сетей сбыта и т. д. Издатель обеспечивает расходы, связанные с сопровождением продукта и технической поддержкой пользователей. За исполнителем навечно остаются авторские права на программу — право указывать свое имя или логотип своей фирмы на начальной заставке, в документации, на упаковочной коробке. Крупные компании имеют и подразделения разработки ПО, и отделы, занимающиеся его распространением, что помогает эффективно организовать весь процесс от производства программ до доставки их потребителю. Условно-бесплатное ПО (shareware). В связи с активным развитием Интернета огромное число индивидуальных разработчиков получили возможность распространения своих программ по всему миру. Не имея средств на рекламные кампании, они предоставляют возможность получения ознакомительных версий их программ (демонстрационных или имеющих искусственные ограничения) через Интернет, Если человеку эта программа нравится, он оплачивает небольшую сумму и получает полную работоспособную версию. В Интернете есть немало узлов, которые предлагают бесплатные услуги по размещению таких программ. Бесплатное ПО (freeware, public domain). Такие программы не имеют никаких ограничений, однако автор может попросить заплатить ему некоторую сумму, не настаивая, впрочем, на этом (это метод freeware). Некоторые программы авторы называют «общественным достоянием» (public domain), ничего взамен не требуют и нередко распространяют такое ПО в исходных текстах. Как правило, стимулом к созданию freeware/public domain-программ служит стремление повысить собственную квалификацию, установить контакты с коллегами, а в случае удачно созданной программы получить известность и, как правило, приглашение на хорошую работу.     Лекция, реферат. 15.6. Проектирование программ - понятие и виды. Классификация, сущность и особенности.

    Оглавление книги открыть закрыть

     

    Похожие работы:
    Автоматизированное проектирование

    26.12.2009/лабораторная работа

    Особенности моделирования логических элементов в системе автоматизированного проектирования OrCAD 10.3, анализ его функционирования и оценка погрешности. Моделирование элементов иерархического уровня в системе автоматизированного проектирования GL–CAD.

    Автоматизированное проектирование железобетонных конструкций стержневых систем

    28.10.2009/контрольная работа

    Общие сведения о программном комплексе ЛИРА. Неразрезная балка, арочная ферма и плоская рама как стержневые системы. Постановка задачи для расчета их напряженно-деформированного состояния, алгоритм вычисления, визуализация результатов, эпюры загружений.

    Автоматизированный анализ проектирования на микроуровне

    18.08.2009/дипломная работа

    Проектирование напряженно-деформированного состояния объекта при граничных условиях. Разработка концептуальной модели и расчетной схемы объекта анализа. Выбор и краткое описание программных и технических средств. Интерпретация результатов моделирования.

    Интеллектуальные системы автоматизированного проектирования в машиностроении

    15.01.2009/курсовая работа

    Построение трехмерной модели узла редуктора и ее частичная параметризация. Составление параметрической модели вала, служащего для сохранения положения подшипников на своих местах. Алгоритм создания узла и его сборки. Оценка программных сред разработки.

    Использование графических редакторов в дизайне проектировании женских костюмов

    6.05.2010/курсовая работа

    Общая характеристика графических редакторов "Adobe Photoshop – PSD" и "Coroll Draw – CDR". Анализ технологии и требований, предъявляемых к изделиям, с учетом их функционального назначения. Особенности создания календаря с помощью пакета Corel DRAW 12.

    Исследование методов автоматизированного проектирования динамических систем

    14.05.2010/дипломная работа

    Структурно-информационный анализ методов моделирования динамических систем. Математическое моделирование. Численные методы решения систем дифференциальных уравнений. Разработка структуры програмного комплекса для анализа динамики механических систем.

    Методология проектирования баз данных

    2.06.2009/курсовая работа

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

    Методология проектирования баз данных

    13.09.2009/курсовая работа

    Логическое проектирование реляционной модели данных для службы качества предприятия. Перечень документов, их реквизиты, номер по классификатору, форма их составления. Определение атрибутов электронных документов для их идентификации. Выбор режима доступа.

    Основные принципы проектирования баз данных

    23.10.2009/реферат

    Характеристика современных информационных систем. Структура Microsoft Access 97, его справочная система, типы данных, особенности использования, ввод, редактирование и просмотр данных. Создание новой базы данных с помощью Конструктора в MS Access 97.

    Основы САПР (системы автоматизированного проектирования)

    1.08.2009/реферат

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

     

referatwork.ru

С чего начать проектирование программы? Часть 1

С чего начать проектирование программы? Классический объектно-ориентированный подход даёт нам однозначный ответ на этот вопрос: с выявления ключевых абстракций и построения объектной модели предметной области.

Джеймс Рамбо, один из создателей языка UML и Rational Unified Process'а, в своей книге "UML 2.0. Объектно-ориентированное моделирование и разработка" предлагает нам такой алгоритм проектирования:

  1. Изучить предметную область и выделить классы предметной области.
  2. Удалить лишние классы (несущественные или избыточные).
  3. Связать классы ассоциациями.
  4. Выделить в классах атрибуты.
  5. Реструктуризовать классы при помощи наследования.
  6. Добавить классы приложения.
  7. Добавить операции.
Дж. Рамбо, М. Блаха. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд. – СПб.: Питер, 2007, стр. 218 – 285.

После выполнения этой процедуры предполагается, что проектировщик получает архитектуру программы, которую только и надо что реализовать в коде.

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

Ключевая ошибка теоретиков объектно-ориентированного подхода заключается в непонимании различий между описательными и процедурными моделями. Описательные модели с той или иной степенью точности описывают внешние проявления явления без понимания его внутренних механизмов, причинно-следственной связи, без предоставления технологии его воспроизведения.

Попытки подсмотреть архитектуру (а если выражаться точнее – конструкцию) программы в реальной жизни или в предметной области настолько же бесплодны, насколько бесплодно копирование крыльев птицы, навешивание их на руки человека и отправка последнего в полёт. Разработка новой техники идёт по противоположному пути: сначала разрабатывается теория функционирования устройства и лишь затем устройство реализуется "в металле".

Вернёмся к вопросу, вынесенному в заголовок. С чего начать проектирование программы?

Чтобы ответить на этот вопрос, сделаем небольшое отступление. Это отступление важно, потому что многие начинающие программисты о нём забывают. Его суть – любая техника разрабатывается для выполнения какой-либо полезной функции. Например, функция автомобиля – перемещение его владельца из пункта А в пункт Б. И программы здесь – не исключение. У каждой программы тоже должно быть определённое назначение, например, редактирование текста, редактирование таблиц или развлечение пользователя. Приступая к проектированию программы, разработчик должен чётко понимать её назначение.

Проектирование любой программы должно начинаться:

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

2)      с проектирования технологии реализации каждой полезной функции.

Иными словами, прежде чем проектировать конструкцию программы, нужно сначала спроектировать технологический процесс.

Технологический процесс – это пошаговый алгоритм, описывающий то, как будет выполняться полезная функция. Он разбивает функцию на операции и устанавливает порядок их выполнения.

Его можно описать в текстовом виде при помощи вариантов использования (см.:  Коберн, Алистер. Современные методы описания функциональных требований к системам/Пер. с англ. – М.: Издательство «Лори», 2002 г. – 263 с.: ил.) и в виде диаграммы (например, блок-схемы, flowchart'а).

Рассмотрим предложенноый подход на примере. В качестве примера возьмём задачу про датчики и метеостанцию из книги Гради Буча и продемонстрируем, как можно подойти к решению данной задачи иным образом, чем это изложено у Г. Буча.

Требования к метеорологической станции Система должна обеспечивать автоматический мониторинг следующих первичных погодных параметров:
  • скорость и направление ветра;
  • температура;
  • барометрическое давление;
  • влажность воздуха.
Система также должна вычислять некоторые производные параметры, в число которых входят:
  • коэффициент резкости погоды;
  • точка росы;
  • относительное изменение температуры;
  • относительное изменение барометрического давления.
В системе должна быть предусмотрена возможность определения текущего времени и даты, которые будут использоваться при генерации сообщении о максимальных и минимальных значениях первичных параметров за последние 24 часа. Система должна обеспечивать постоянный вывод на дисплей текущих значений всех восьми первичных и производных параметров, а также текущее время и дату. Пользователь должен иметь возможность увидеть максимальные и минимальные значения любого из первичных параметров за 24 часа, сопровождаемые информацией о времени произведения соответствующего замера.Система должна позволять пользователю проводить калибровку датчиков по известным опорным значениям, а также устанавливать текущие время и дату. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-е изд./Пер с англ. – М.: "Издательство Бином", СПб: "Невский диалект", 1998 г., стр. 284, или: http://www.helloworld.ru/texts/comp/other/oop/ch08.htm

Начнём проектирование системы с описания процесса измерения и отображения температуры.

Первая диаграмма будет довольно простой:

На диаграмме показано, что температура считывается с датчика температуры напрямую и отображается на экране. Понятно, что это неверно. Скорее всего, датчик подключён к какому-нибудь порту, и его показания считываются программой через порт.

Внесём в диаграмму изменения:

В новой диаграмме тоже есть погрешность: данные на порт посылаются по определённому протоколу. Чтобы прочитать их, нужен модуль, который "понимает" этот протокол.

Внесём соответствующие изменения:

Сообщение от датчика температуры, скорее всего, закодировано в определённом формате (например, в формате json или в специализированном XML). Соответственно, потребуется парсер, который понимает этот формат:

При выводе температуры на экран может оказаться так, что надо преобразовать температуру из одних единиц в другие (например, датчик возвращает значение температуры в градусах шкалы Цельсия, а пользователь хочет узнать значение температуры в градусах шкалы Фаренгейта).

Отобразим этап преобразования градусов на диаграмме:

Наконец, температуру нужно показать в определённом месте экрана (или в определённом окне).

Внесём изменения в схему:

Получилось достаточно подробное описание процесса измерения и отображения температуры.

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

В этом случае, диаграмма процесса будет выглядеть так:

Наряду с такими компонентами, как:

  • парсер атмосферного давления,
  • конвертер атмосферного давления (например, из кило-паскалей в мм. ртутного столба) и
  • окном для вывода давления,

- которые являются дубликатами аналогичных компонентов для температуры, появляется компонент "диспетчер", который определяет, от какого датчика пришло сообщение (от датчика температуры или датчика атмосферного давления) и направляет его соответствующему обработчику.

Приведённая схема достаточно подробно описывает процесс (т.е. технологию измерения и отображения температуры и атмосферного давления), а также подсказывает нам кандидаты в классы. Класс – это компонент на диаграмме, который отвечает за выполнение отдельной технологической операции.

Приведём список классов и операций:

Читает данные, пришедшие на порт.

Читает данные с порта по определённому протоколу.

Определяет, от какого датчика поступило сообщение, и пересылает его соответствующему обработчику.

Разбирает сообщение от датчика температуры.

Barometric Pressure Parser

Разбирает сообщение от датчика атмосферного давления.

Преобразует температуру из одних единиц в другие.

Barometric Pressure Converter

Преобразует атмосферное давление из одних единиц в другие.

Отображает температуру в специальном окне.

Barometric Pressure Window

Отображает атмосферное давление в специальном окне.

Отображает окна на экране.

ЛИТЕРАТУРА:

1.      Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-е изд./Пер с англ. – М.: "Издательство Бином", СПб: "Невский диалект", 1998 г. Или: http://www.helloworld.ru/texts/comp/other/oop/index.htm 4.      Рамбо Дж., Блаха М. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд./Пер. с англ. – СПб.: Питер, 2007. – 544 с.: ил.

askofen.blogspot.ru

Тема 13. Методы проектирования программ

ТЕМА 13. МЕТОДЫ ПРОЕКТИРОВАНИЯ ПРОГРАММ.

13.1 Метод пошаговой детализации.

Термин проекта применительно к научно-тех­ни­че­с­ким приложениям обозначает план, прообраз какого-либо объекта.

Определение. Под проектированием понимается процесс создания проекта, то есть прототипа, прообраза предполагаемого или возможного объекта и его состояния.

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

В настоящее время большое внимание уделяется созданию стройных теоретических и практических принципов научно обоснованной технологии проектирования и разработки программного обеспечения. Это один из основных инструментов повышения эффективности использования ЭВМ. Составным элементом этой технологии является метод пошаговой детализации.

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

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

Рис.9. Схема стадий пошаговой детализации методом ие­ра­р­хи­че­с­кой декомпозиции на функциональные элементы с 5-ю уровнями при проектировании программы.

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

Вместе с тем следует помнить, что элементы структурной схемы программы - это функции. Поэтому она отвечает на вопрос, "что делать" при алгоритмизации и программировании, а не о том, "как делать". В процессе проектирования программы на основании детальных функций, представленных на рис.9, может быть получена структурированная логика алгоритма его реализации.

После этого либо по схеме детальных функций, либо по проекту алгоритма составляется программа.

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

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

Другим важным составным элементом современной те­х­но­ло­гии проектирования программ является нисходящее про­е­к­ти­ро­ва­ние на основе структурного программирования.

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

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

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

При проектировании сверху вниз в первую очередь устанавливается цель программы, которая представляется как нулевой уровень абстракции, используемой при разбиении программы на самостоятельные модули или этапы решения задачи. Входом этого уровня является исходные данные, а выходом - требуемые результаты. Следующим уровнем абстракции выступает первый уровень (рис.9), где выделяются наиболее крупные типовые логически замкнутые функции программы (модули М1, М2, М3 на рис.9).

Процесс иерархической декомпозиции ведется до тех пор, пока элементы последнего уровня не будут обеспечивать их относительно простой перевод на язык программирования.

Нисходящее проектирование базируется на идее уро­в­ней абстракции, которые должны превращаться в уровни мо­ду­лей разрабатываемого программного проекта. Разложение всей системы на функциональные элементы основывается на постоянной схеме иерархии. При этом важно добиться та­ко­го уровня декомпозиции, чтобы один модуль (подпрограмма) соответствовал одной функции. Это позволит использовать его в нескольких местах.

Когда подпрограмма выполняет много отличных друг от друга функций, она является узкоспециализированной и может быть использована только при реализации одного или нескольких участков алгоритма. Функции (подпрограммы), выделенные близко к вершине иерархии проектируемой программы, являются узкоспециализированными. А функции, общие для многих частей программы, встречаются только на нижних уровнях иерархии.

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

Важным свойством программы, построенной на основе иерархии модулей, является также независимость подпрограмм друг от друга. Она устраняет нежелательные последствия для одних участков программы при внесении изменений в другие ее части.^

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

Эффективность и массовость использования различными пользователями тех или иных программных средств во многом определяются качеством, корректностью и детальностью документации, которая их сопровождает. Поэтому в технологической цепочке проектирования и разработки программного обеспечения важное место отводится его документированию. Хорошая документация делает программное обеспечение гибким.

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

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

Наиболее важными являются следующие программные документы: пояснительная записка, описание программы, текст программы, руководство программиста, системного программиста, оператора, методика испытаний.

^ содержит схему алгоритма, общее описание алгоритма функционирования программы, пояснение принятых технических и экономических решений.

^ включает: наименование программы; язык программирования; программное обеспечение, необходимое для функционирования программы; логическое строение, состоящее из алгоритмов модулей, используемых методов, структуры программы с описанием функций составных частей (модулей) и связи между ними, связей данной программы с другими программами. Здесь содержаться также разделы: "используемые технические средства", где указаны типы ЭВМ и устройств, необходимых для эксплуатации программы; "входные и выходные данные", т.е. характер, организация предварительная подготовка (для входных данных), а также формат и способ кодирования данных.

^ состоит из символических записей на исходном языке программирования с подробными комментариями, которые должны составлять около 30% текста модуля. В комментариях рекомендуется описывать назначение программы, связь (интерфейс) с другими программами, основные особенности алгоритма отдельных участков, особенности ввода и вывода и т.д.

^ содержит все сведения, не­­о­б­­хо­ди­мые для эксплуатации программы. Руководство си­с­те­м­но­го программиста дополняется сведениями для проверки, обеспечения функционирования и настройки программы на ус­ло­вия конкретного применения с учетом используемых те­х­ни­че­с­ких и вспомогательных системных программных средств.

В руководстве оператора дается вся необходимая информация для обеспечения процедуры общения (взаимодействия) оператора с ЭВМ в процессе выполнения программы.

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

После окончательной отладки программа с соответствующей документацией включается в фонд программного обеспечения ЭВМ для эксплуатации. С ее помощью решаются задачи для всех вариантов исходных данных в интересах пользователя. Анализ полученных результатов и их оценку проводит специалист (пользователь), поставивший задачу.

lib2.podelise.ru

Рекомендуемые программы для проектирования и моделирования САПР для Windows CAD, CAM, CAE

Solid Edge Solid Edge с синхронной технологией - поэлементная 2D/3D САПР без истории построения. CadStd Lite Специализированный графический редактор для создания проектов в области машиностроения, строительства, а также чертежей, схем и диаграмм. nanoCAD Первая отечественная свободно распространяемая базовая САПР-платформа для различных отраслей Volo View Express Продукт для отображения и вывода на печать файлов основных чертежных форматов. TurboCAD Deluxe Программное приложение для 2D и 3D проектирования и черчения. IntelliCAD 2000 IntelliCAD - САПР, предназначенная для архитекторов, инженеров, проектировщиков и других разработчиков. IntelliCAD обеспечивает полную совместимость с Autodesk AutoCAD, совместим с сотнями решений для AutoCAD от третьих лиц. NormCAD Выполняет расчеты строительных конструкций по СНиП и готовит проектную документацию для представления заказчику и в органы экспертизы. Kompas-3D LT Свободно распространяемой, для некоммерческого использования, версией CAD-системы российской компании ASCON. Lite вариант позволяет свободное использование в школах, техникумах и институтах. Так же вы можете свободно делать копии этого дистрибутива для своих студентов. CoCreate Приложение 3D CAD, в основу которого лег принцип динамического моделирования. Программа позволяет создавать объекты, собранные из множества (вплоть до шестидесяти) частей. CoCreate OneSpace Modeling PE 1.0 не похожа на прочие CAD приложения, разработчики обещают простоту и продуктивность, сравнимую разве что с приложениями Office. DipTrace Free Edition Отечественная программа для проектирования печатных плат. В состав программы входят 4 редактора, которые позволят спроектировать схему, создать схемные элементы в символьном виде и привязать их к корпусам, которые тоже можно создать самостоятельно. JustCAD Простое приложение, позволяющее выполнять простейшие основные операции с примитивами. Благодаря своему малому размеру и низкими системным требованиям данным приложением может воспользоваться любой желающий. На сайте разработчика можно скачать дополнительные библиотеки и элементы программы. Имеет почти все нужные иснтрументы для черчения: геометрические объекты, слои, привязки, текст и многое другое. В бесплатной версии отсутствует поддержка формата DXF и штриховки. OCTREE САПР для 3D архитектурного моделирования, черчения и визуализации Project StudioCS Электрика Программа Project StudioCS Электрика предназначена для автоматизации проектирования системы электроснабжения (СЭС) объектов гражданского и промышленного строительства в строгом соответствии с действующими стандартами. ExpressSCH Программа для рисования схем электрических принципиальных плат. Project Studio CS Водоснабжение Project StudioCS Водоснабжение – программа для проектирования внутренних систем водопровода и канализации в среде AutoCAD.Системы холодного и горячего водоснабжения, канализации, водяного пожаротушения. AllyCAD Профессиональный CAD пакет с продвинутыми функциональными возможностями и интегрированными наборами инструментов. AllyCAD является быстрой, мощной и очень простой в использовании программой для создания 2D-чертежей. Она предназначена для использования в таких областях как строительная механика, гражданское строительство, архитектура и геодезия и пр. Solid Edge Мощная комбинированная система проектирования в 2D и 3D, технология моделирования без дерева построения, ориентация на потребности определенной отрасли промышленности и полностью интегрированное управление разработками позволяет выполнять проекты в срок . DWG TrueView Одна из немногих бесплатных утилит для просмотра и, что более важно, печати чертежей созданных в Автокаде. Из основных недостатков стоит назвать разве что пугающий размер дистрибутива - две сотни мегобайт для программы просмотра и печати. Free DWG viewer Утилита для просмотра файлов Автокада, гораздо более компактная чем просмотрщик от Автодеска, однако, увы, не поддерживающая печать файлов DWG. Программный комплекс «ЛИРА» Программный комплекс ЛИРА является современным инструментом для численного исследования прочности и устойчивости конструкций и их автоматизированного проектирования. nanoCAD СКС Программный продукт nanoCAD СКС предназначен для автоматизированного проектирования структурированных кабельных систем (СКС) зданий и сооружений различного назначения, кабеленесущих систем и телефонии. nanoTDMS Корадо Автоматизированное средство информационной поддержки создания, коллективной разработки, хранения и повторного использования документов. Корадо – это первое приложение, реализованное на платформе nanoTDMS. BtoCAD Стабильная и доступная система автоматизированного проектирования. Это надёжная и удачная альтернатива AutoCAD Полноценная поддержка формата DWG и DXF. Revit Architecture 2009 Специализированная САПР для архитектурно-строительного проектирования с применением технологии информационного моделирования зданий и сооружений в промышленном и гражданском строительстве. Гемма - 3D Система ГеММа-3D, современное технологическое инструментальное средство программирования обработки для станков с ЧПУ. nanoCAD Планировка Решение, предназначенное для различных организаций и подразделений, работающих с поэтажными планами и решающих вопросы управления собственностью. При разработке программного обеспечения учтены российские стандарты и особенности учета и инвентаризации недвижимости. nanoCAD Планировка может использоваться как графический компонент систем управления и эксплуатации школ, больниц, гостиниц, офисных и административных зданий, производственных помещений. MSC.Patran Интерактивный программный продукт с открытой архитектурой, обеспечивающий интеграцию автоматизированных систем проектирования, моделирования, анализа и оценки результатов вычислений. Использование MSC.Patran в сочетании с другими программными продуктами компании MSC.Software позволяет достичь наибольшей эффективности и оптимальности конструкций изделий ещё на этапе разработки, до того, как начнётся изготовление и испытание опытного образца. MSC.Nastran Программа конечно-элементного анализа. MSC.Nastran обеспечивает полный набор расчетов, включая расчет напряженно - деформированного состояния, собственных частот и форм колебаний, анализ устойчивости, решение задач теплопередачи, исследование установившихся и неустановившихся процессов, акустических явлений, нелинейных статических процессов, нелинейных динамических переходных процессов, расчет критических частот и вибраций роторных машин, анализ частотных характеристик при воздействии случайных нагрузок, спектральный анализ и исследование аэроупругости. LVMFlow Компьютерная система моделирования тепловых и гидродинамических процессов литья, созданная в лаборатории математического моделирования УдГУ (Ижевск). LVMFlow позволяет автоматизировать рабочее место технолога-литейщика и снизить затраты времени и средств на подготовку новых изделий. MSC.ADAMS Программная система, предназначенная для виртуального моделирования сложных машин и механизмов. АРМ WinMachine Инструментально-экспертная система APM WinMachine представляет собой комплексное программное обеспечение для автоматизированного расчета и проектирования в машиностроении и строительстве. APM WinMachine - своего рода энциклопедия по машиностроению, включающая инструменты и программы для автоматизированного расчета и проектирования деталей машин, механизмов, элементов конструкций и узлов. APM Civil Engineering CAD/CAE система автоматизированного проектирования строительных объектов гражданского и промышленного назначения. Эта система в полном объеме учитывает требования государственных стандартов и строительных норм и правил, относящиеся как к оформлению конструкторской документации, так и к расчетным алгоритмам. ADEM Российская интегрированная CAD/CAM/CAPP система предназначена автоматизации конструкторско-технологической подготовки производства (КТПП). A9CAD Программа автоматизированного проектирования и создания чертежей. Поддерживает промышленный стандарт DWG/DXF. Позволяет создавать такие элементы чертежей, как: линия, прямоугольник, круг, ломаная линия, текст; выполнять такие операции над рисунком, как: перемещение, масштабирование, вращение, подрезание, зеркальное отражение; позволяет редактировать цвет, выравнивать ширину рисунка и т.д. nanoCAD СПДС Представляет собой универсальную двумерную графическую систему автоматизированного проектирования, предназначенную для выполнения чертежей и оформления рабочей документации в архитектурно-строительном проектировании и смежных отраслях. МВТУ Предназначена для детального исследования и анализа нестационарных процессов в системах автоматического управления, в ядерных и тепловых энергоустановках, в следящих приводах и роботах, в любых технических системах, описание динамики которых может быть реализовано методами структурного моделировани. Является альтернативой продуктам SIMULINK, VisSim, MATRIXx и др. nanoCAD Механика Универсальная двумерная графическая система nanoCAD Механика проектирования систем гидропневмоэлементов, зубчатых зацеплений, валов, расчета размерных цепей, создания пользовательских библиотек, оформления чертежей в соответствии с ЕСКД. Bricscad Система автоматического проектирования, созданной на основе IntelliCAD Универсальный механизм Программный комплекс "Универсальный механизм" (UM) предназначен для моделирования динамики и кинематики плоских и пространственных механических систем. Universal Mechanism Lite Набор инструментов для создания динамического объекта - системы тел - и последующего анализа его динамических, кинематических и статических свойств. Allplan САПР для архитектурно-строительного проектирования которая предлагает комплексный подход к строительному проектированию в целом. EULER Программный комплекс для инженерного анализа динамики механических систем. SCAD Office Программый комплекс нового поколения, позволяющий провести расчет и проектирование стальных и железобетонных конструкций. NI Developer Suite Комплект программного обеспечения, для создания виртуальных измерительных комплексов. LabView Представляет собой высокоэффективную среду графического программирования, в которой можно создавать гибкие и масштабируемые приложения измерений, управления и тестирования с минимальными временными и денежными затратами. QCad Приложение для двумерного черчения. С помощью QCad можно создавать технические чертежи, такие как планы зданий и интерьеров, чертежи механических деталей и схемы. SprutCAD Открытая среда конструкторского проектирования. T-FLEX CAD Полнофункциональная система автоматизированного проектирования, обладающая средствами автоматизации проектирования при разработке проектов любой сложности. Программа объединяет параметрические возможности трехмерного моделирования со средствами создания и оформления конструкторской документации. GEOTEC Office Package Пакет для геотехники и инженерного проектирования. eMachineShop Бесплатная программа 3D CAD TinyCAD Программа для проектирования электронных схем с большим набором готовых элементов. DraftSight Открытое двухмерное решение САПР профессионального уровня для тех, кто хочет оптимизировать чтение, запись и обмен файлами DWG. DraftSight отличается особой простотой в использовании. Профессиональные пользователи САПР, студенты и преподаватели могут загрузить программу бесплатно VizUp Удобный инструмент для уменьшения и оптимизации 3D-моделей. RING Программа для расчета и моделирования арочных мостов FRAME3DD Бесплатное свободное программное обеспечение для статического и динамического структурного анализа 2-ых и трехмерных каркасов

pro-spo.ru


Смотрите также