
- •Л9. Основы ооап Жизненный цикл программы для эвм
- •1. Задачи и цели анализа и проектирования. Основные понятия.
- •1) Аналитический («сверху-вниз») - от более общих абстракций (менее детальных) к менее общим (более детальным);
- •2) Синтетический («снизу-вверх») - от менее общих абстракций (более детальным) к более общим (менее детальным).
- •2. Базовые методы и принципы объектно-ориентированного анализа и проектирования
- •3. Основные элементы языка uml
- •Пакеты в языке uml
- •Диаграммы языка uml
- •Диаграмма вариантов использования
- •Отношения на диаграмме вариантов использования
- •Дополнительные обозначения языка uml для бизнес-моделирования
- •Спецификация требований
- •Рекомендации по разработке диаграмм вариантов использования
2. Базовые методы и принципы объектно-ориентированного анализа и проектирования
Как отмечалось выше, существуют следующие общепризнанные методы проектирования программного обеспечения:
процедурно-ориентированные от функций;
процедурно-ориентированные от данных;
объектные;
объектно-ориентированные.
Методы, принадлежащие к одной и той же группе, могут отличаться следующими составляющими:
языком для описания каждой модели (условными обозначениями);
правилами проектирования модели (процессами);
инструментальными средствами, ускоряющими процесс создания моделей (средствами автоматизации проектирования).
В процедурно-ориентированных методологиях анализа и проектирования «от функций» регламентируется первичность функциональных компонент (ОБРАБОТКА).
В методологиях анализа и проектирования "от данных" – первичность входных и выходных структур данных (ВЫХОД, ВХОД).
В этих методах основными абстракциями являются процедуры (алгоритмы) преобразования исходных данных в конечный результат. Поэтому процедурно-ориентированное проектирование предполагает эффективную реализацию проектов в первую очередь на традиционных "операторных" (алгоритмических) процедурно-ориентированных языках типа FORTRAN, ALGOL, BASIC, PASCAL, но может быть использовано и для реализации на языках функционального (LISP) и логического (PROLOG) программирования.
Процедурное проектирование не позволяет справиться со сложностью разработки программ, объем которых превышает сотню тысяч операторов.
Модели, в которых есть объекты, но отсутствуют классы и (или) наследование свойств, называют не объектно-ориентированными, а объектными. Примеры: Windows; язык VB
Объектно-ориентированные методы опираются не на примитив процедурной модели требований типа «ВХОД - ОБРАБОТКА - ВЫХОД», а на объектную модель предметной области.
Тем самым объектно-ориентированные методологии регламентируют первичность проектирования объектов предметной области, каждому из которых соответствуют определенные
функции (методы, действия, поведения) и
данные (свойства, атрибуты, признаки).
Основными принципами формирования классов являются: инкапсуляция, полиморфизм и наследование свойств.
Функции и данные раскрываются только через действующие объекты той или иной предметной области (инкапсулируются). Данные используются объектами, преобразуются и порождаются ими.
Каждому модулю комплекса может соответствовать некоторый класс объектов.
Объектно-ориентированное проектирование предполагает эффективную реализацию проектов в первую очередь на традиционных объектно-ориентированных языках программирования "с классами" типа C++,. Object Pascal, C#, VB .NET и др.
Сторонники объектно-ориентированного подхода рассматривают разработку программного комплекса автоматизации процесса решения тех или иных задач с точки зрения вовлекаемых в этот процесс объектов. Что это дает?
Это открывает, по крайней мере, следующие возможности:
Вместо того чтобы применять или искать новые подходящие аналитические или синтетические методы структурирования программной системы, достаточно использовать непосредственное соответствие частей (модулей) системы объектам предметной области той задачи, для решения которой предназначена программная система.
Учитывая, что объекты конкретных предметных областей достаточно стабильны и инградиентны относительно решаемых в этих областях задач, а также имеют тенденцию к повторению в других предметных областях, появляется реальная возможность многократного (повторного) использования готовых объектно-ориентированных модулей (классов) в качестве конструктивных (сборочных) элементов различных программных систем.
Объектно-ориентированный подход к разработке программных комплексов предусматривает наличие следующих составляющих:
объектно-ориентированный анализ;
объектно-ориентированное проектирование;
объектно-ориентированное программирование (реализация).
Объектно-ориентированный анализ - это методология, при которой требования к программе формулируются с точки зрения объектов предметной области, вовлекаемых в решение задачи, соответствующей предназначению программы.
Объектно-ориентированное проектирование - это методология, соединяющая в себе
объектную декомпозицию цели разработки и
методы представления объектно-ориентированных моделей проектируемой программы (комплекса, системы).
Объектно-ориентированное программирование - это методология программирования, основанная на таких методах реализации объектно-ориентированных моделей программы, которые обеспечивают представлении программы в виде совокупности классов объектов, а классы образуют иерархию наследования свойств.
Как было отмечено выше, появление новой методологии объектно-ориентированного анализа и проектирования вызвано сложностью моделирования предметной области и разработки объемных (например, корпоративных) информационных систем.
На практике, как правило, применяют оба подхода: для проектирования сложной системы в целом до уровня классов и их методов используют ООАП, а для реализации отдельных методов или решения несложной (разовой) задачи используют процедурно-ориентированное проектирование.
Таким образом, оба рассмотренных подхода к проектированию остаются актуальными.
Независимо от выбранного подхода к проектированию процесс разработки программного обеспечения начинают с этапа выработки и анализа требований.
Идея анализа предметной области - выделить те объекты, операции и связи, которые эксперты данной области считают наиболее важными.
Выделение исходных компонентов предметной области, требуемых для решения той или иной задачи, представляет, в общем случае, нетривиальную проблему.
Результатом анализа предметной области, и весьма желательным, может быть вывод о возможности использования или адаптации существующей разработки.
Основное требование к модели программной системы состоит в том, что она должна быть понятна заказчику и всем специалистам проектной группы, включая бизнес-аналитиков и программистов.
Именно это требование и привело к появлению языка UML.
В настоящее время все вопросы дальнейшей разработки языка UML сконцентрированы в рамках консорциума OMG.
Методология ООАП тесно связана с концепцией автоматизированной разработки программного обеспечения (Computer Aided Software Engineering, CASE).
В рамках этой концепции в настоящее время разработано множество CASE-средств, например, IBM Rational Rose с языком моделирования UML.
В IBM Rational Rose проектирование системы начинается с анализа требований к системе со стороны заказчика.
Анализ требований к программному средству в процессе разработки включает два вида деятельности :
анализ предметной области;
планирование вариантов использования (сценариев).
Поскольку язык UML является концептуально полным и универсальным языком, то такие графические нотации, как ERD (диаграммы «сущность-связь», средства ARIS, ERwin), SADT (диаграммы функционального моделирования) и DFD (диаграммы потоков данных), а так же языки, возникшие на базе SATD языки IDEF0 и IDEFIX (стандарт FIPS, средство BPwin) в нашем курсе рассматриваться не будут. Причина – отсутствие объектной ориентации.