Результатом таких процессов является программное средство — совокупность логически связанных программ на носителях данных, снабженных программной документацией и предназначенных для людей, не участвовавших в процессе разработки.
Поскольку технологический процесс разработки программного обеспечения вообще аналогичен процессу разработки программного средства (в частности), далее будем рассматривать специфику технологии программирования именно по отношению к ПО.
Основа разработки программного обеспечения
В основе разработки и дальнейшего применения программного обеспечения пользователем лежит понятие жизненного цикла, который, в сущности, является моделью его создания и использования, отражающей различные состояния, начиная с момента осознания необходимости появления данного ПО и заканчивая моментом его полного выхода из употребления.
Существует несколько моделей жизненного цикла (ЖЦ), каждая из которых определяет различную методологию создания систем, тем не менее все без исключения модели ЖЦ включают в себя пять этапов и связей между ними с детальным описанием действий, моделей и результатов каждого этапа. Приведем названия и краткое содержание каждого этапа в соответствии с ГОСТ 19.102-77.
1. Техническое задание:
• постановка задачи;
• выбор критериев эффективности;
• проведение предварительных научно-исследовательских работ (НИР);
• разработка ТЗ.
2. Эскизный проект:
• структура входных и выходных данных;
• уточнение методов решения;
• общий алгоритм;
• разработка документации эскизного проекта.
3. Технический проект:
• уточнение структуры входных и выходных данных;
• разработка алгоритмов;
• формы данных;
• семантика и синтаксис языка;
• структура программы;
• конфигурация технических средств;
• план работ.
4. Рабочий проект:
• программирование и отладка;
• разработка документов;
• подготовка и проведение испытаний;
• корректировка программы и документов по итогам испытаний.
5. Внедрение:
• передача программы и документов для сопровождения;
• оформление акта;
• передача в Фонд алгоритмов и программ (ФАП).
Модели жизненного цикла
В процессе развития технологий разработки программного обеспечения сложились следующие модели жизненного цикла программного обеспечения:
· Каскадная (характерно последовательное выполнение входящих в ее состав этапов);
· Итерационная (модель с промежуточным контролем);
· Спиральная (развитие продукта по спирали - от версии к версии);
· Rational Objectory Process — модель жизненного цикла (методология объектно-ориентированного программирования).
2.4 Обзор средств проектирования программных продуктов
Различие в порядке построения моделей трактуется следующим образом. Традиционный процедурно-ориентированный подход регламентирует первичность проектирования функциональных компонентов по отношению к проектированию структур данных. При подходе, ориентированном на данные, вход и выход являются наиболее важными — структуры данных определяются первыми, а процедурные компоненты являются производными от данных. Информационно-ориентированный подход позволяет работать с неиерархическими структурами данных.
Ниже приводится деление CASE-средств по функциональным характеристикам.
Анализ и проектирование
Данные средства применяются для проектирования и создания спецификации программной системы, поддерживают SE (Software Engineering) и IЕ (Information Engineering):
· CASE-аналитик (Эйтекс);
· POSE (Computer Systems Advisers);
· Design/IDEF (Meta Software); . BPWin (Logic Works);
· SELECT (Select Software Tools); . CASE/4/0 (micro TOOl GmbH);
· и ряд других средств.
Проектирование баз данных и файлов
Технологии данной группы служат для логического моделирования данных, автоматического преобразования моделей в третью нормальную форму, автоматическую генерацию схем баз данных и описаний форматов файлов на уровне программного кода:
· ERWin (Logic Works);
· S-Designor (SPD);
· Designer/2000 (Oracle);
· Sillverrun (Computer Systems Advisers).
Программирование
Данные средства позволяют получать из спецификаций полностью документированную выполняемую программу, поддерживают кодогенерацию и тестирование:
· COBOL 2/Workbench (Mikro Focus);
· DECASE (DEC);
· NETRON/CAP (Netron);
· APS (Sage Software).
Сопровождение и реинжиниринг
К этим средствам относятся документаторы, анализаторы программ, средства реструктурирования:
· Adpac CASE Tools (Adpac);
· Scan/COBOL и SuperStructure (Computer Data Systems);
· Inshtctor/Recoder (language Tecnologe).
Контрольные вопросы
1. Расскажите об особенностях создания программного продукта.
2. Что такое "управление требованиями"?
3. В чем заключается анализ проблемы?
4. Какие виды ограничений на создаваемое ПО необходимо выявить в процессе работы над требованиями?
5. Каковы существующие методы выявления требований к ПО?
3 Проектирование программного обеспечения при объектном подходе
3.1 Основные понятия и определения. Классы, интерфейсы, наследование, объекты
Объектно-ориентированное программирование (ООП) – парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.
ООП возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны. Для дальнейшего развития объектно-ориентированного программирования часто большое значение имеют понятия события (так называемое событийно-ориентированное программирование) и компонента (компонентное программирование, КОП).
Взаимодействие объектов происходит посредством сообщений. Результатом дальнейшего развития ООП, по-видимому, будет агентно-ориентированое программирование, где агенты – независимые части кода на уровне выполнения. Взаимодействие агентов происходит посредством изменения среды, в которой они находятся.
Языковые конструкции, конструктивно не относящиеся непосредственно к объектам, но сопутствующие им для их безопасной (исключительные ситуации, проверки) и эффективной работы, инкапсулируются от них в аспекты (в аспектно-ориентированном программировании). Субъектно-ориентированное программирование расширяет понятие объекта посредством обеспечения более унифицированного и независимого взаимодействия объектов. Может являться переходной стадией между ООП и агентным программированием в части самостоятельного их взаимодействия.
Первым языком программирования, в котором были предложены принципы объектной ориентированности, была Simula. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Тем не менее, большинство концепций были развиты Аланом Кэем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.
В настоящее время количество прикладных языков программирования, реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является Cи. При взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, одной из наиболее распространённых библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++.
Основные понятия
Абстрагирование – это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе, и скрыть детали реализации от пользователя.
Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс – потомком, наследником, дочерним или производным классом.
Полиморфизм– это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. При использовании термина «полиморфизм» в сообществе ООП подразумевается полиморфизм подтипов; а использование параметрического полиморфизма называют обобщённым программированием.
Класс является описываемой на языке терминологии исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект – это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.
Объект
Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение).
Прототип – это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.
Определение ООП и его основные концепции
В центре ООП находится понятие объекта. Объект – это сущность, которой можно посылать сообщения и которая может на них реагировать, используя свои данные. Объект – это экземпляр класса. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |


