
- •Технология программированИя
- •Содержание
- •Введение
- •1. Порядок выполнения курсовой работы
- •1.1. Постановка задачи
- •1.2. Требования к технологии программирования
- •1.3. Требования к оформлению курсовой работы
- •2. Порядок разработки приложения
- •2.1. Процесс разработки
- •2.2. Этапы проектирования
- •Этап 1. Выявление классов
- •2.3. Реорганизация иерархии классов
- •2.4. Использование прототипов
- •2.5. Эксперимент
- •2.6. Тестирование
- •Литература
- •Приложение примерные темы курсовых работ (разработка программного продукта – пп)
2. Порядок разработки приложения
2.1. Процесс разработки
Разработка промышленного программного продукта организуется как итеративный процесс, то есть выполняется с многократными возвратами к предыдущим этапам с целью улучшения их результатов по итогам последующих этапов. Это принципиально бесконечный процесс. Современный разработчик приложения берет за основу существующее программное обеспечение – проекты, библиотеки стандартных классов и приложения. Закончив работу, он предоставляет свой результат другим разработчикам для дальнейшего улучшения, развития и переноса на другие платформы. Разработка делится на три этапа:
анализ проблемы – определение границ решаемой проблемы;
проектирование – создание общей структуры системы;
реализация – написание и тестирование программы.
Эти этапы могут произвольно чередоваться в силу итеративной природы процесса разработки. В небольших проектах этапы анализа и проектирования обычно совмещаются. В них иногда стирается также граница между проектированием и программированием. Некоторые элементы процесса разработки выполняются на каждом этапе, например, документирование или тестирование.
Кроме итеративной модели разработки, часто применяют линейную модель разработки с однократным прохождением всех фаз от анализа до тестирования. В этом случае проектная информация "течет" в одном направлении, и если "ниже по течению" обнаруживается проблема, то у разработчика возникает сильное желание (подкрепляемое давлением руководства) решить ее непосредственно "на месте появления", не затрагивая предыдущие шаги процесса. Однако, хотя при этом и экономится время, отсутствие обратной связи делает проект ущербным. Этого недостатка нет в итеративной модели разработки, однако в ней есть другой риск – опасность выполнения серии несвязанных изменений проекта. Разработчик может исключить этот риск, если поставит себе четко определенную и реалистичную цель, о которой будет всегда помнить.
Таким образом, все же рекомендуется разрабатывать приложение на базе итеративной модели и построить процесс разработки как цикл, на каждой итерации которого выполняются следующие шаги:
анализ проблемы;
синтез структуры проекта;
подбор и адаптация стандартных компонентов;
разработка новых компонентов;
сборка проекта.
Чтобы облегчить внесение изменений в проект на итерациях цикла нужно инкапсулировать неустойчивые компоненты приложения и тем самым добиться разбиения проекта на независимые части. В технологии ООП это достигается путем итерационного выделения ключевых понятий предметной области и отображения каждого из них в отдельный класс. Это позволяет потом вносить в приложение любое изменение путем исправления только одного класса.
2.2. Этапы проектирования
Каждое понятие предметной области всегда существует в контексте других понятий. Поэтому если некое понятие представляется как класс, то этот класс определяется в контексте других классов, связанных с ним логически. Поэтому целесообразно использовать набор связанных классов, называемый библиотекой классов или компонентом. Классы в компоненте могут быть связаны разными способами, например, отношением "является" (наследование), отношением "содержит" (композиция), некоторым логическим критерием, зависимостью от одних и тех же услуг и т.д. Компонент – это блок проекта и документации. Разработчик не обязан использовать все классы компонента и может работать с избранными классами. Цикл проектирования компонента включает в себя следующие этапы:
Выявление понятий (классов) и их фундаментальных связей.
Определение операций над объектами классов.
Определение связей между классами.
Определение интерфейсов классов.