
- •Составные части технологии программирования (тп). Отличие тп от методологии программирования и программной инженерии.
- •Технология быстрой разработки приложений (rad). Основные принципы и особенности.
- •Иерархия понятий в технологии программирования.
- •Определение понятия «предметная область». В чем заключается принцип концептуализации предметной области.
- •Особенности современных программных систем как объектов разработки. Проблемы разработки сложных программных систем.
- •Общие принципы разработки сложных программных систем. Признаки сложных программных систем.
- •Показатели качества программных систем.
- •Основные подходы к созданию сложных программных систем (структурный и объектный).
- •Структурный подход к разработке программных систем.
- •2) Объектный подход к разработке программных систем.
- •Основные этапы жц: Требования к по.
- •Основные этапы жц: Проектирование по.
- •Основные этапы жц: Конструирование по.
- •Основные этапы жц: Тестирование по.
- •Основные этапы жц: Сопровождение по.
- •1. Технические вопросы:
- •Жизненный цикл (жц) программных систем: определение, стандарты и проблемы.
- •Основные процессы жизненного цикла по.
- •Модель жизненного цикла по: Каскадная модель разработки по.
- •Модель жизненного цикла по: Спиральная модель разработки по.
- •Другие типы моделей жизненного цикла (V-образная, инкрементная, быстрого прототипирования).
- •Модели организации команд: Административная модель. Модель хаоса. Модель открытой архитектуры.
- •Модель проектной группы msf for Agile Software Development: Основные принципы построения команды.
- •Модель проектной группы msf. Ролевые группы и роли.
Основные понятия и определения курса «Технологии программирования» (алгоритм, программа, программирование в узком и широком смысле, информация, данные, технология, технологическая операция, технология программирования).
Алгоритм – заранее заданная последовательность четко определенных правил или команд для получения решения задачи за конечное число шагов (это набор предписаний, однозначно определяющий содержание и последовательность выполнения операций для достижения заданной цели или решения поставленной задачи).
Программа – это набор операторов, который может быть представлен как единое целое в некоторой вычислительной системе и который используется для управления поведением этой системы.
Программирование (в широком смысле) – все технические операции, необходимые для создания программы, включая анализ требований и все стадии разработки и реализации.
Программирование (в узком смысле) – процесс кодирования и отладки программы в рамках реального проекта.
Данные – представление информации (фактов, идей) в формализованном виде, пригодном для ее передачи и переработки в некотором информационном процессе.
Информация – 1) сведения об окружающем мире и протекающих в нем процессах;
2) сообщения, осведомляющие о положении дел, о состоянии чего-либо (Ожегов).
Информация – это информация, а не энергия и не материя (Винер).
Технология – совокупность производственных процессов в определенной отрасли производства, а также научное описание способов производства, это совокупность технологических элементов (средств, устройств, методов, приемов, документов), используемых для обработки исходных материалов с целью получения конечной продукции.
Технология программирования – это совокупность методов и средств, используемых в процессе разработки программных продуктов, представляет собой набор технологических инструкций, включающих в себя:
- указание последовательности технологических операций;
- перечисление условий, при которых выполняется та или иная операция;
- описание самих операций, где для каждой операции выделены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т.п.
Технологическая операция:
Составные части технологии программирования (тп). Отличие тп от методологии программирования и программной инженерии.
Любая технология имеет две стороны:
- принципиальную (внутреннюю);
- организационно-производственную (внешнюю).
К внутренней части ТП относятся технологии проектирования, тестирования и разработки, к внешней – сопровождения.
Методология программирования – совокупность механизмов, применяемых в процессе разработки программного обеспечения и объединенных одним общим философским подходом.
Программная инженерия – систематический подход к разработке, эксплуатации, сопровождению и изъятию из обращения программных средств. Она изучает различные инструментальные средства с точки зрения достижения определенных целей.
Не следует путать технологию программирования с методологией. В технологии программирования методы рассматриваются «сверху» - с точки зрения организации технологических процессов, а в методологии программирования методы рассматриваются «снизу» - с точки зрения основ их построения.
Главное различие между технологией программирования и программной инженерией как дисциплинами для изучения заключается в способе рассмотрения и систематизации материала. В технологии программирования акцент делается на изучении процессов разработки ПП (технологических процессов) и порядке их прохождения - методы и инструментальные средства разработки ПП используются в этих процессах (их применение и образует технологические процессы).
Тогда как в программной инженерии изучаются различные методы и инструментальные средства разработки ПС с точки зрения достижения определенных целей – эти методы и средства могут использоваться в разных технологических процессах (и в разных технологиях программирования).
Технологии программирования: этапы развития и базовые методологии программирования. Отличие методологии структурного проектирования программных систем от методологии объектно-ориентированного проектирования.
В 50-е годы мощность компьютеров (первого поколения) была невелика, а программирование для них велось в основном в машинном коде. Задачу программирования упростило появление первых ассемблеров и языков высокого уровня (ЯВУ). Применялась интуитивная ТП: сначала производилось кодирование, затем оформлялась документация на уже готовый проект. Тем не менее, именно в этот период родилась фундаментальная для технологии программирования концепция модульного программирования, ориентированная на преодоления трудностей программирования в машинном коде.
В 60-е
годы стали
развиваться процедурные ЯВУ, в которых
применялся механизм
подпрограмм.
С появлением прерываний появилась
концепция процедурного программирования.
С ростом объема программ стала применяться процедурная (алгоритмическая) декомпозиция, при которой отдельные части программы или модули представляли собой совокупность процедур для решения некоторой совокупности задач.
Также в 60-е гг. впервые появилась концепция структурного программирования, однако разработка по-прежнему велось согласно идеологии «снизу-вверх».
В 70-е годы с появлением ЭВМ 3-го поколения возникла необходимость поддержки коллективной разработки. Из-за концепции «снизу-вверх» случился кризис программирования: компания срывали сроки выполнения заказов, а то и вовсе не выполняли их.
В новых языках программирования (Clu, Pascal, Modula-2) появились средства абстрагирования типов для структурирования данных.
В этот период базовой методологией было структурное программирование (но уже «сверху-вниз»). Также развивалось модульное программирование, которое предполагает объединение нескольких подпрограмм, использующих одни и те же данные, в отдельно компилируемые модули, связи между которыми устанавливались через специальный интерфейс, а доступ к реализации регулировался механизмами импорта-экспорта путем соответствующих деклараций (рисунок 6).
Именно в модульном программировании впервые применены механизмы инкапсуляции и импорта-экспорта, ставшие основой для ООП.
В 80-е годы ввиду широкого распространения ПК возникла методология объектно-ориентированного программирования, центральным понятием которой стал класс объектов.
Основными принципами (парадигмами) ООП являются:
- инкапсуляция – объединение в классе данных (свойств) и методов (процедур обработки), сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей;
- наследование – возможность вывода нового класса из старого с частичным изменением свойств и методов;
- полиморфизм – определение свойств и методов объекта по контексту (полиморфизм подразумевает отделение идеи «что делать» от ее воплощения внутри иерархии класса объектов «как делать»).
Отличительной особенностью ООП является организация взаимодействия объектов путем посылки сообщений.
- процедурно-ориентированная декомпозиция программ уступила место объектно-ориентированной декомпозиции, при которой отдельными структурными единицами программы стали являться не процедуры и функции, а классы и объекты с соответствующими свойствами и методами;
- программа перестала быть последовательностью предопределенных на этапе кодирования действий, а стала событийно-управляемой;
- создаются различные инструментальные среды разработки и сопровождения ПС.
В середине 80-х появилась концепция автоматизированной разработки ПО (CASE).
В 90-е годы стали широко использоваться CASE-технологии, бурно развивались среды визуального программирования и СУБД.
Основной концепцией стала методология объектно-ориентированного анализа и проектирования (ООАП) (основа – понятие предметной области).
В этот период стало широко использоваться понятие ЖЦ.
В середине 90-х на смену ООАП пришла методология системного анализа и системного моделирования.
Для разработки графических моделей был разработан унифицированный язык моделирования (UML), послуживший основой для одноименной методологии.
С появлением сети Интернет появилась необходимость в распределенной обработке и хранении данных. Также появилась необходимость и возможность создания ПС, работающих на разных платформах.
Решить эти проблемы во многом удалось за счет применения компонентного подхода к разработке ПС, который предполагает построение программного обеспечения (ПО) из отдельных компонентов – физически отдельно существующих частей ПО, взаимодействующих между собой через стандартизованные двоичные интерфейсы.
Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model – компонентная модель объектов) и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture – общая архитектура с посредником обработки запросов объектов).