Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая другая технология, технология программирования представляет собой набор технологических инструкций, включающих: • указание последовательности выполнения технологических операций; • перечисление условий, при которых выполняется та или иная операция; • описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.
Первый этап — «стихийное» программирование. Этот этап охватывает период от момента появления первых вычислительных машин до середины 60-х годов XX в. В этот период практически отсутствовали сформулированные технологии, и программирование фактически было искусством. Первые программы имели простейшую структуру.
Они состояли из собственно программы на машинном языке и обрабатываемых ею данных. Сложность программ в машинных кодах ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение данных при программировании.
Лекция «Технология разработки программного обеспечения Arduino в программе Proteus».
Создание языков программирования высокого уровня, таких, как FORTRAN и ALGOL, существенно упростило программирование вычислений, снизив уровень детализации операций. Это, в свою очередь, позволило увеличить сложность программ. Революционным было появление в языках средств, позволяющих оперировать подпрограммами.
Типичная программа того времени состояла из основной программы, области глобальных данных и набора подпрограмм (в основном библиотечных), выполняющих обработку всех данных или их части В конечном итоге процесс тестирования и отладки программ занимал более 80 % времени разработки, если вообще когда-нибудь заканчивался. На повестке дня самым серьезным образом стоял вопрос разработки технологии создания сложных программных продуктов, снижающей вероятность ошибок проектирования.
Анализ причин возникновения большинства ошибок позволил сформулировать новый подход к программированию, который был назван «структурным». Второй этап — структурный подход к программированию (60-70-е годы XX в.).
Структурный подход к программированию представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40 — 50 операторов) подпрограмм.
В отличие от используемого ранее процедурного подхода к декомпозиции, структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование, таким образом, осуществлялось «сверху вниз» и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Как правило, они включали в себя основные «структурные» операторы передачи управления, поддерживали вложение подпрограмм, локализацию и ограничение области «видимости» данных. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С. Для разработки программного обеспечения большого объема было предложено использовать объектный подход.
C3D Toolkit — специализированный инструмент разработки программного обеспечения
Третий этап — объектный подход к программированию (с середины 80-х до конца 90-х годов XX в.). Объектно-ориентированное программирование определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств.
Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений. Плюс объектно-ориентированного программирования по сравнению с модульным программированием является «более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку. Четвертый этап — компонентный подход и CASE-технологии (с середины 90-х годов XX в. до нашего времени). Компонентный подход предполагает построение программного обеспечения из отдельных компонентов физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию. Компонентный подход лежит в основе технологий, разработанных на базе COM (Component
Object Model — компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture — общая архитектура с посредником обработки запросов объектов).
Источник: studopedia.su
Технология разработки ПО
Первое отличие этих подходов друг от друга заключается в принципах декомпозиции и структурной организации элементов (компонентов, модулей) системы. Согласно этим принципам система представляет собой структуру, состоящую из четко выраженных модулей, связанных между собой определенными отношениями.
Второй вид декомпозиции – объектно-ориентированный. В рамках этого подхода система разбивается на набор объектов, соответствующих объектам реального мира, взаимодействующих между собой путем посылки сообщений.
Вторым отличием является объединение в объекте как атрибутивных данных (характеристики, свойства), так и поведения (функции, методы). В функционально-ориентированных системах функции и данные хранятся (существуют) отдельно.
Третье отличие двух подходов заключается в структурной организации внутри модулей системы. В структурном подходе модуль состоит из функций, иерархически связанных между собой отношением композиции (англ. part-of – часть-целое), т. е. функция состоит из подфункций, подфункция из подподфункций и т.д. В объектно-ориентированном подходе иерархия выстраивается с использованием двух отношений: композиции и наследования (англ. is-a – это есть). При этом в объектно-ориентированном подходе «объект-часть» может включаться сразу в несколько «объектов-целое». Таким образом, модуль в структурном подходе представляется в виде дерева, а в объектно-ориентированном подходе – в виде ориентированного графа, т. е. с помощью более общей структуры.
Наиболее популярными методологиями, поддерживающими данный подход, в настоящий момент являются:
- унифицированный процесс (Unified Process, UP);
- экстремальное программирование (eXtreme Programming, XP);
- гибкое моделирование (Agile Modeling, AM).
Базовым средством фиксации (документирования) результатов проектирования систем посредством этих методологий является Унифицированный язык моделирования (Unified Modeling Language, UML).
Основные понятия, используемые в объектно-ориентированном подходе
Термин «объект» или эквивалентные ему понятия появились практически независимо в различных областях, связанных с компьютерами, в процессе разработки:
- архитектуры компьютеров (Burroughs 5000, Plessey 250, IBM System/38, Intel 432);
- объектно-ориентированных операционных систем (Plessey/System 250, Secure UNIX, StarOS, iMax);
- объектно-ориентированных языков программирования (Simula, Smalltalk, Modula);
- теории баз данных (модели «сущность-связь»);
- систем искусственного интеллекта (фреймы).
При разработке программного обеспечения термин «объект» впервые был введен в языке Simula 67 для моделирования сущностей предметной области.
Объект – это абстракция реальной или воображаемой сущности с четко выраженными концептуальными границами, индивидуальностью (идентичностью), состоянием и поведением.
Абстракция (лат. abstractio – отвлечение) – форма познания, основанная на мысленном выделении существенных свойств и связей предмета и отвлечении от других, частных его свойств и связей. При этом «существенное» и «частное» должны рассматриваться с точки зрения решаемой задачи (предметной области). В объектно-ориентированном подходе абстракция – это модель сущности, описывающая ее свойства и поведение.
Примерами реальных (физических, осязаемых) сущностей могут служить поезд, стрелочный перевод или инженер службы пути, а воображаемых – технология проведения капитального ремонта пути или оптимальная траектория движения поезда (режимы и скорость в зависимости от текущего положения поезда на участке).
Индивидуальность – это свойство сущности, с помощью которого ее можно отличить от других. Т. е., говоря об объекте «поезд», имеется в виду не обобщенное понятие поезд, как нечто состоящее из локомотивов и вагонов, а конкретный грузовой поезд с номером 1025, весом 4600 т, ведомый электровозом переменного тока ВЛ80Т с серийным номером 027, состоящий из четырехосных полувагонов с конкретными номерами и т. д. В то же время степень абстракции с точки зрения решаемой задачи может быть и более высокой. Например, при выполнении тяговых расчетов к графику движения поездов не требуется информация о серийных номерах локомотивов и вагонов, т. е. нет потребности в отличии друг от друга электровозов ВЛ80Т с серийными номерами 027 и 028.
Для концептуальной группировки однотипных объектов в объектно-ориентированном подходе используется понятие «класс». Класс – это множество объектов, имеющих общую структуру и поведение. Таким образом, класс – это шаблон, на основе которого генерируются (создаются) однотипные объекты. В качестве синонима понятия «объект» часто употребляют понятие «экземпляр класса».
Каждый класс и соответственно объект характеризуются строго определенным набором атрибутов и методов. Текущие значения атрибутов четко определяют текущее состояние объекта. Набор методов и их алгоритмическая реализация определяют поведение объекта (класса объектов).
Говоря об объектно-ориентированном подходе, в первую очередь отмечают наследование, инкапсуляцию и полиморфизм. Эти механизмы и принципы проектирования более естественно и полно реализованы в объектно-ориентированном подходе по сравнению со структурным.
Наследование – принцип, в соответствии с которым знание об общей категории разрешается применять для более узкой. Применительно к классам это означает, что дочерний класс (узкая категория) полностью включает в себя (наследует) все атрибуты и методы, определенные в родительском классе (общей категории). При этом в дочернем классе могут быть определены дополнительные атрибуты и методы. Например, дочерний класс «круг» будет наследовать от родительского класса «геометрическая фигура» все атрибуты (x, у – координаты центра фигуры, color – цвет фона и т. д.) и все методы (draw() – нарисовать фигуру, move(dx, dy) – переместить фигуру и т. д.), а также иметь дополнительный атрибут (r – радиус).
Полиморфизм – принцип построения элементов модели так, чтобы они могли принимать различные внешние формы или функциональность (поведение) в зависимости от обстоятельств. Например, методы draw() (нарисовать) или calculateS() (рассчитать площадь) для классов «круг» и «ромб», определенных путем наследования атрибутов и методов родительского класса «фигура», алгоритмически должны быть реализованы по-разному.
С учетом приведенных выше определений сущность объектно-ориентированного подхода к анализу и проектированию информационных систем заключается в декомпозиции системы на классы, которые соответствуют однотипным объектам предметной области, и построении из них иерархии в виде ориентированного графа с использованием отношений композиции и наследования.
Базовые составляющие объектно-ориентированного подхода
Базовыми составляющими объектно-ориентированного подхода являются:
- Унифицированный процесс;
- Унифицированный язык моделирования;
- Шаблоны проектирования.
Унифицированный процесс – это процесс разработки программного обеспечения (ПО), который обеспечивает упорядоченный подход к распределению задач и обязанностей в организации-разработчике. Унифицированный процесс охватывает весь жизненный цикл ПО, начиная с определения требований и заканчивая сопровождением, и представляет собой обобщенный каркас (шаблон, скелет), который может быть применен (специализирован) для разработки и сопровождения широкого круга систем.
Неотъемлемой частью Унифицированного процесса является UML – язык (система обозначений) для определения, визуализации и конструирования моделей системы в виде диаграмм и документов на основе объектно-ориентированного подхода. Следует отметить, что Унифицированный процесс и UML разрабатывались совместно.
На стадиях анализа и проектирования часто используются так называемые шаблоны (паттерны) проектирования. Шаблон – это именованная пара «проблема/решение», содержащая готовое обобщенное решение типичной проблемы. Как правило, шаблон помимо текстового описания содержит также одну или несколько диаграмм UML (например, диаграммы классов, кооперации и/или последовательности), графически иллюстрирующих состав и структуру классов, а также особенности их взаимодействия при решении поставленной проблемы. Шаблоны разрабатываются опытными профессионалами и являются проверенными, эффективными (порой оптимальными) решениями. Применение шаблонов может резко сократить затраты и повысить качество разработки ПО.
Преимущества объектно-ориентированного подхода
В отличие от структурного подхода объектно-ориентированный имеет ряд преимуществ:
- описание системы в виде объектов больше соответствует содержательному смыслу предметной области. Например, при использовании структурного подхода БД должна удовлетворять требованиям нормализации, в соответствии с которыми данные по одному и тому же объекту (сущности из реального мира) могут храниться в нескольких таблицах;
- сущности реального мира, как правило, обладают поведением, что в объектно-ориентированном проектировании отражается с помощью определения методов класса. В структурном подходе данные (атрибуты) и алгоритмы (методы) существуют отдельно друг от друга;
- объединение атрибутов и методов в объекте (классе), а также инкапсуляция позволяют добиться большей внутренней и меньшей внешней связности между компонентами системы. Это облегчает решение проблем:
— адаптации системы к изменению существующих или появлению новых требований;
— сопровождения системы на разных стадиях жизненного цикла;
— повторного использования компонентов;
- объектно-ориентированный подход позволяет легче организовать параллельные вычисления, так как каждый объект обладает собственными значениями характеристик (атрибутов) и поведением, за счет чего можно добиться его автономной работы;
- Case-средства, поддерживающие объектно-ориентированный подход, на основе информации об объектах позволяют достичь большей степени автоматизации кодогенерации. Case-средства, поддерживающие структурный подход, хорошо справляются с генерацией структур БД. Однако следует отметить, что эта структура должна удовлетворять требованиям нормализации. В связи с чем автоматическая кодогенерация (например, экранов или функций обработки данных) возможна лишь в редких случаях.
Объектно-ориентированное программирование определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений.
Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является «более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку. Это приводит к более полной локализации данных и интегрированию их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей (объектов) программы. Кроме этого, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов для различных применений.
7 принципов объектно-ориентированного программирования
- Принцип абстрагирования
- Принцип ограничения доступа
- Принцип модульности
- Принцип иерархичности
- Принцип типизации
- Принцип параллелизма
- Принцип устойчивости
1) Абстрагирование – процесс выделения абстракций в предметной области. Абстракция – совокупность существенных характеристик некоторого объекта, отличает его от других объектов.
2) Принцип ограничения доступа – сокрытие отдельных элементов реализации абстракции, незатрагивающих существенных характеристик ее как целого. Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракций. а) Интерфейс совокупность доступных из вне элементов реализации абстракций; б) Реализация – совокупность недоступных из вне элементов реализации абстракций. Ограничение доступа в ООП позволяет выполнять конструирование системы, поэтапно не отвлекаясь на особенности построения используемых абстракций, во-вторых, точно модифицировать реализацию объектов. Сочетание объединения всех свойств объекта определяющих его состояние и поведение в единую абстракцию и ограничения доступа к реализации этих свойств – называется инкапсуляция.
3) Модульность – принцип разработки программной системы, предполагающий реализацию ее в виде отдельных частей.
4) Иерархия – ранжированная или упорядоченная система абстракции в ООП используют 2 вида иерархии:
а) иерархия целая/часть – показывает что некоторые абстракции включены в рассматриваемую абстракцию, как ее части. Пример: лампа состоит из колбы, нити.
б) иерархия общая/частная – показывает, что некоторая абстракция является частным случаем другой абстракции. Пример: обеденный стол конкретный вид стола, а стол конкретный вид мебели.
5) Типизация – ограничение, накладываемое на свойства объектов, и препятствующие взаимозаменяемости абстракции различных типов. Использование принципа обеспечивает а) раннее обнаружение ошибок связанных с недопустимыми операциями над программными объектами. б) упрощение документирования, возможность генерации более эффективного кода.
6) Параллелизм – свойство нескольких абстракций одновременно находится в активном состоянии, т.е. выполнять некоторые операции.
7) Устойчивость – свойство абстракции существовать во времени независимо от процесса породивший данный программный объект или в пространстве, перемещаясь из адресного пространства в котором он был создан. Различают:
а) Временные объекты, хранящие промежуточные результаты. б) Локальные объекты, существующие внутри программы. в) Глобальные объекты, существующие пока программа загружена в память. г) Сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.
Этапы разработки программных систем с использованием объектно-ориентированного программирования
1) Анализ и уточнение спецификаций
Формулируется цель, максимально точное описание задачи. На этом этапе выполняют анализ предметной области задачи. Определяют важнейшие особенности объектов. По результатам анализа разрабатывают диаграмму объектов ПП на которой показывают основные абстракции.
2) Проектирование
- Логическое, при котором принимаемые решения не зависят от условий эксплуатации программы (ОС, оборудование).
- Физическое, при котором приходится принимать внимание на указанные факторы.
3) Реализация
При этом начинают с создания основной программы, затем реализуют и подключают классы, так чтобы создавать грубый и работающий прототип системы.
Источник: technologiarpo.blogspot.com
Этапы разработки программных систем с использованием ООП
Сложность современного программного обеспечения требует от разработчиков владения наиболее перспективными технологиями его создания. Одной из таких технологий на настоящий момент является объектно-ориентированное программирование (ООП), применение которого позволяет разрабатывать программное обеспечение повышенной сложности за счет улучшения его технологичности (лучших механизмов разделения данных, увеличения повторяемости кодов, использования стандартизованных интерфейсов пользователя и т.д.). Чтобы технологически грамотно использовать ООП, необходимо хорошо понимать его основные концепции и научиться мыслить при разработке программы в понятиях ООП.
Объектно-ориентированное проектирование программных средств.
В теории программирования ООП определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств.
Особенности технологии объектно-ориентированного проектирования. Объектно-ориентированный подход к созданию программных продуктов базируется:
• на выделении объектов в отдельные классы, что позволяет использовать для различных объектов выделенного класса один и тот же программный код;
• выявлении характерных свойств каждого объекта и определении методов его обработки;
• создании иерархии классов, наследовании свойств объектов и методов их обработки.
Основное достоинство ООП – сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями, по сравнению с модульным программированием. Это достигается за счет более полной локализации данных и интегрирования их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей (объектов) программы.
Рассмотрим несколько понятий, которые раскрывают сущность объектно-ориентированного программирования.
Объект – это программное представление реальной или абстрактной сущности, которое используется для моделирования поведения физических или логических объектов реального мира. Объектами могут быть студент, преподаватель, шрифт текста или элемент управления TextBox.
Класс. Каждый объект является представителем (экземпляром) некоторого класса однотипных объектов. Для всех своих объектов класс определяет:
• присущие объектам свойства (характеристики, атрибуты), например название, размер шрифта и др.;
• методы взаимодействия объектов класса с внешней средой (в виде программных процедур). Поэтому объектам присуща функциональность и они могут откликаться на определенные ситуации.
Инкапсуляция. При объектно-ориентированном программировании доступ к объекту возможен только через его методы и свойства. Внутренняя структура объекта скрыта от пользователя, поэтому объекты защищены от внешнего вмешательства. Скрытие информации называют инкапсуляцией.
Наследование. Одной из важнейших характеристик класса является наследование, которое позволяет выделить свойства, методы и события одного объекта и приписать их (иногда с некоторыми изменениями) другому объекту. Наследование позволяет создавать новые классы, повторно используя уже готовый исходный код и не тратя времени на его переписывание.
Полиморфизм – это способность объектов выбирать операцию (метод) на основе данных, принимаемых в сообщении. Каждый объект может реагировать по-своему на одно и то же сообщение.
Принципы ООП
В основу ООП положены следующие принципы:
1. Абстрагирование – процесс выделения абстракций в предметной области задачи. Абстракция – совокупность существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа.
Применяемая абстракция реального предмета существенно зависит от решаемой задачи: в одном случае нас будет интересовать форма предмета, в другом вес, в третьем – материалы, из которых он сделан, в четвертом – закон движения предмета и т.д.
Современный уровень абстракции предполагает объединение всех свойств абстракции (как касающихся состояния анализируемого объекта, так и определяющих его поведение) в единую программную единицу некий абстрактный тип (класс).
2. Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик ее как целого.
Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:
· интерфейс – совокупность доступных извне элементов реализации абстракции (основные характеристики состояния и поведения);
· реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).
Ограничение доступа в ООП позволяет разработчику:
· выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций;
· легко модифицировать реализацию отдельных объектов, что в правильно организованной системе не потребует изменения других объектов.
Сочетание объединения всех свойств предмета (составляющих его состояния и поведения) в единую абстракцию и ограничения доступа к реализации этих свойств получило название инкапсуляции.
3. Модульность – принцип разработки программной системы, предполагающий реализацию ее в виде отдельных частей (модулей). При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями.
4. Иерархия – ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем.
В ООП используются два вида иерархии:
· иерархия «целое/часть» – показывает, что некоторые абстракции включены в рассматриваемую абстракцию как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования;
· иерархия «общее/частное» – показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.
Один из важнейших механизмов ООП – наследование свойств в иерархии общее/частное. Наследование – такое соотношение между абстракциями, когда одна из них использует структурную или функциональную часть другой или нескольких других абстракций (соответственно простое и множественное наследование).
5. Типизация – ограничение, накладываемое на свойства объектов и препятствующее взаимозаменяемости абстракций различных типов (или сильно сужающее возможность такой замены).
Использование принципа типизации обеспечивает:
· раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);
· возможность генерации более эффективного кода.
Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции – раннее связывание) и динамически (тип объекта определяется только во время выполнения программы – позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные-указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.
6. Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции.
Существует целый ряд задач, решение которых требует одновременного выполнения некоторых последовательностей действий. К таким задачам, например, относятся задачи автоматического управления несколькими процессами.
Реальный параллелизм достигается только при реализации задач такого типа на многопроцессорных системах, когда имеется возможность выполнения каждого процесса отдельным процессором. Системы с одним процессором имитируют параллелизм за счет разделения времени процессора между задачами управления различными процессами.
7. Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего данный программный объект, и/или в пространстве, перемещаясь из адресного пространства, в котором он был создан.
· временные объекты, хранящие промежуточные результаты некоторых действий, например, вычислений;
· локальные объекты, существующие внутри подпрограмм, время жизни которых исчисляется от вызова подпрограммы до ее завершения;
· глобальные объекты, существующие пока программа загружена в память;
· сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.
Все указанные выше принципы в той или иной степени реализованы в различных версиях объектно-ориентированных языков.
Язык считается объектно-ориентированным, если в нем реализованы первые четыре из рассмотренных семи принципов.
Этапы разработки программных систем с использованием ООП
Процесс разработки программного обеспечения с использованием ООП включает четыре этапа: анализ, проектирование, эволюция, модификация.
1. Анализ. Цель анализа – максимально полное описание задачи. На этом этапе выполняется анализ предметной области задачи, объектная декомпозиция разрабатываемой системы и определяются важнейшие особенности поведения объектов (описание абстракций).
2. Проектирование. Различают:
· логическое проектирование, при котором принимаемые решения практически не зависят от условий эксплуатации (операционной системы и используемого оборудования);
· физическое проектирование, при котором приходится принимать во внимание указанные факторы.
Логическое проектирование заключается в разработке структуры классов: определяются поля для хранения составляющих состояния объектов и алгоритмы методов, реализующих аспекты поведения объектов. При этом используются рассмотренные выше приемы разработки классов (наследование, композиция, наполнение, полиморфизм и т.д.). Результатом является иерархия или диаграмма классов, отражающие взаимосвязь классов, и описание классов.
Физическое проектирование включает объединение описаний классов в модули, выбор схемы их подключения (статическая или динамическая компоновка), определение способов взаимодействия с оборудованием, с операционной системой и/или другим программным обеспечением (например, базами данных, сетевыми программами), обеспечение синхронизации процессов для систем параллельной обработки и т.д.
3. Эволюция системы. Это процесс поэтапной реализации и подключения классов к проекту. Процесс начинается с создания основной программы или проекта будущего программного продукта. Затем реализуются и подключаются классы, так чтобы создать грубый, но, по возможности, работающий прототип будущей системы.
Использование поэтапной реализации существенно упрощает тестирование и отладку программного продукта.
4. Модификация. Это процесс добавления новых функциональных возможностей или изменение существующих свойств системы. Как правило, изменения затрагивают реализацию класса, оставляя без изменения его интерфейс, что при использовании ООП обычно обходится без особых неприятностей, так как процесс изменений затрагивает локальную область.
Источник: poisk-ru.ru