- •Абстаркция и абсттрагирование
- •Архитектура программной системы.
- •Объектно-ориентированный анализ
- •Объектно-ориентированное проектирование
- •Объектно-ориентированное программирование
- •Аналитическая модель
- •Алгоритмическая и объектно-ориентированная декомпозиция
- •Сложность программных систем. Основные причины, признаки сложной системы.
- •Понятие итеративного цикла разработки. Участники процесса разработки программного обеспечения.
- •Класс, объект. Состояние объекта. Поведение объекта.
- •Расширения uml: ограничения (constraint), стереотипы (stereotypes) и именованные
- •Агрегация и композиция. Их назначение и отличия
- •Понятие итеративного цикла разработки. Участники процесса разработки программного
- •Основные этапы разработки программного обеспечения (Анализ, проектирование,
- •Понятие стереотипов концептуальной модели (boundary, control, entity)
- •16. Язык um, назначение и структура языка uml. Визуальное моделирование
- •17. Интегрированная модель сложной системы
- •18. Модель системы в Rational Rose (Use Case View, Logical View, Component View, Deployment View)
- •Назначение диаграммы компонентов.
- •Диаграммы размещения (Deployment Diagram). Назначение, основные элементы (Processor, Device, Connection).
- •19. Анализ предметной области. Идентификация и систематизация функций системы. Атрибуты системы. Скрытые и типовые функции. Функции бизнес-логики
- •20. Модульность программной системы. Понятие и назначение Package. Отношения между Package. Организационные диаграммы.
- •21. Вариант использования (Use Case). Абстрактный вариант использования.
- •22. Диаграммы вариантов использования. Назначение. Основные элементы (Text Box, Use Case, Note, Anchor Note, Actor, Package)
- •23. Связи на диаграмме Вариантов Использования (Association, Unidirectional Association, Generalization, Extend use case, Include use case).
- •24. Сценарии use case. Описание (потоки событий) и назначение сценариев
- •25 Диаграммы деятельности. Назначение. Основные элементы (Activity, State, Start State, Stop State, State Transition, State to self, Synchronization, Decision, Swimlane)
- •26. Диаграммы последовательности (Sequence Diagram). Назначение, основные элементы (Object, Object Message, Message to Self) Соотнесение объектов с классами, сообщение с операциями.
- •27. Кооперативные диаграммы (Collaboration). Назначение, основные элементы (Object, Class Instance, Object Link, Link to Self, (Reverse) Link Message, (Reverse) Data Flow
- •28. Диаграммы классов (Class Diagram). Назначение, основные элементы (Class, Association, Dependency, Aggregation, Generalization). Атрибуты и операции, множественность (multiplicity) и роли
- •Назначение диаграммы вариантов использования (Use Case Diagram)
- •30. Диаграммы вариантов использования для моделирования предметной области. Назначение, основные элементы (Business Actor, Business Use Case, Association).
- •31. Назначение диаграммы компонентов
- •32. Диаграммы размещения (Deployment Diagram). Назначение, основные элементы (Processor, Device, Connection).
- •33. Последовательность разработки программной системы
- •34. Диаграммы анализа и проектирования
- •35. Основные задачи анализа. Функциональные и нефункциональные требования.
Алгоритмическая и объектно-ориентированная декомпозиция
Проектирование сложных программных систем связано с необходимостью разделять их на все меньшие и меньшие подсистемы, каждую из которых можно совершенствовать независимо.
Процесс разделения систем на более мелкие подсистемы называется декомпозицией. Основными способами декомпозиции являются:
Алгоритмическая декомпозиция – это процесс разбиения системы по алгоритмам. Каждый модуль системы выполняет один из этапов (функций) общего процесса. Результат разбиения отражается в формуле:
Программа = Данные + Алгоритмы
Объектно-ориентированная декомпозиция – процесс разбиения системы на части, соответствующие классам и объектам предметной области.
Объекты взаимодействуют друг с другом, обмениваясь сообщениями и выступая друг к другу в отношении «клиент/сервер». Сообщения, которые может принимать объект определены в его интерфейсе. В этом смысле посылка сообщения «объекту-серверу» эквивалентна вызову соответствующего метода объекта.
Объектно-ориентированная декомпозиция имеет несколько важных преимуществ перед алгоритмической: она уменьшает размер систем за счет повторного использования общих механизмов, ООС более гибки и проще эволюционируют, существенно снижается риск при создании сложной программной системы, т.к. она развивается из меньших систем, в которых мы уверены.
Сложность программных систем. Основные причины, признаки сложной системы.
Промышленным программным системам присуща сложность – один разработчик не в силах охватить все аспекты системы и ее сложность превышает возможности человеческого интеллекта. Сложные программные системы требуют сопровождения, сохранения и имеют тенденцию к эволюции в процессе их использования.
Сопровождение (maintenance) -- исправление выявленных ошибок; сохранение (preservation) – попытка продления функционирования устаревших и распадающихся частей ПО всеми возможными способами; эволюция (evolution) -- реакция на изменение технических требований.
Пять признаков сложной системы (из работ Саймона и Куртуа):
Сложные системы часто являются иерархическими и состоят из взаимозависимых подсистем, которые в свою очередь сами могут быть разделены на подсистемы и т.д. вплоть до самого низкого уровня.
Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя
Внутрикомпонентная связь обычно сильнее, чем связь между компонентами.
Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных.
Любая работающая сложная система является результатом развития работавшей более простой системы
Основные причины, приводящие к сложным программным системам
сложность реальной предметной области (реального мира) из которой приходит заказ на разработку;
трудность управления процессом разработки;
необходимость обеспечить достаточную гибкость системы;
неудовлетворительными способами описания поведения больших дискретных систем.
