Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЛ_ТехнолПрогр2010_090103.doc
Скачиваний:
22
Добавлен:
27.04.2019
Размер:
1.35 Mб
Скачать

1.3. Постановка задачи и спецификация программы

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

Техническое задание в соответствии со стандартом ГОСТ 19.201-78 «Техническое задание. Требования к содержанию и оформлению» имеет следующие основные разделы:

  • введение: наименование и краткая характеристика программного обеспечения;

  • основание для разработки;

  • назначение разработки: описание функционального и эксплуатационного назначения;

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

  • требования к программной документации;

  • технологические требования.

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

  • архитектура программного обеспечения;

  • пользовательский интерфейс:

  • метод программирования;

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

  • среда программирования.

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

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

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

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

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

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

  • примитивные интерфейсы;

  • интерфейсы-меню;

  • интерфейсы со свободной навигацией;

  • интерфейсы прямого манипулирования.

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

Интерфейс-меню реализует множество сценариев работы с иерархической структурой команд, выбираемых пользователем. Иерархическая организация меню с графом типа «дерева» задает строго ограниченную навигацию: вверх, вниз по ветвям графа.

Интерфейс со свободной навигацией реализует множество сценариев работы, не привязанных к уровням иерархии команд, а предполагает определение множества команд на конкретном шаге работы. Такие интерфейсы называют графическими пользовательскими интерфейсами (GUI – Graphic User Interface) или интерфейсами WYSIWYG (What You See Is What You Get – что видишь, то и получишь). Преимущества интерфейсов со свободной навигацией по сравнению с интерфейсами-меню заключаются в возможности доступа к любым командам и в выборе команд, имеющих смысл в данный момент. Диалоговые окна программы содержат меню различных видов (кнопочное, ниспадающее, контекстное) и элементы управления вводом/выводом, реализующие диалог с пользователем.

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

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

К следующим технологическим требованиям программного обеспечения является:

  • выбор метода программирования: процедурный или объектно-ориентированный;

  • выбор языка программирования: C++ (безусловный лидер), Pascal, Basic, Ada и др.;

  • выбор среды программирования: Visual C++, Visual Basic фирмы Microsoft, Delphi, Turbo C++, C++ Builder фирмы Borland, Visual Ada фирмы IBM и др.

Использование интерфейса со свободной навигацией или интерфейса прямого манипулирования требует выбора объектно - ориентированного подхода к программированию и выбора современной среды визуального программирования, например, Visual C++, Builder C++, Delphi.

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

Спецификации содержат:

  • декомпозицию и содержательную постановку задач;

  • эксплуатационные ограничения;

  • математические методы решения;

  • модели программного обеспечения.

Модели программного обеспечения зависят от технологии программирования (процедурная или объектно-ориентированная).

При процедурном программировании используются следующие модели разрабатываемого программного обеспечения:

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

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

  • диаграммы структур данных, описывающие базы данных разрабатываемого программного обеспечения;

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

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

В настоящее время стандартным средством описания разрабатываемого программного обеспечения с использованием объектно-ориентированного подхода является фактически графический язык UML (Unified Modeling Language – универсальный язык моделирования), разработанный авторами Буча, Рамбо и Якобсоном в 1995 г.

Язык UML имеет следующие часто используемые диаграммы:

  • диаграммы вариантов использования или прецедентов, описывающие основные функции системы;

  • диаграммы классов, показывающие отношения классов между собой;

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

  • диаграммы взаимодействия, показывающие взаимодействие объектов в процессе выполнения варианта использования;

  • диаграммы состояний объекта, демонстрирующие состояние объекта и переходы из одного состояния в другое;

  • диаграммы пакетов, показывающие связи наборов классов, объединенных в пакеты;

  • диаграммы компонентов, описывающие компоненты программного обеспечения и их связи между собой;

  • диаграммы размещения, позволяющие связывать программные и аппаратные компоненты системы.

Диаграммы используют единую графическую нотацию.

Язык UML поддерживается пакетом Rational Rose – CASE- средством фирмы «Rational Software Corporation», предназначенного для автоматизации проектирования программного обеспечения при объектно-ориентированном подходе. Варианты Rational Rose определяются языком программирования (C++, Smalltalk, Builder, Ada, SQL Windows, ObjectPro). Основной вариант -Rational Rose/C++-разрабатывает документацию на базе диаграмм UML и генерирует программы на C++.