Жизненный цикл ПО. Процессы ЖЦ. Модели ЖЦ ПО. Их достоинства и недостатки.



Вопросы по курсу

Технология программирования

 

1) Технология программирования (определение, цели дисциплины). Отличие от программной инженерии.

2) Основные этапы разработки (российский и международный стандарты).

3) Жизненный цикл ПО. Процессы ЖЦ. Модели ЖЦ ПО. Их достоинства и недостатки

4) Парадигмы программирования.

5) Структуры данных. Простые (базовые структуры) представление в памяти. Статические структуры данных. Полустатические структуры данных (стеки, очереди, деки, строки). Динамические структуры данных (линейные списки, графы, деревья)

6) Методы разработки структуры программ (восходящая и нисходящая разработка, конструктивный и архитектурный подходы).

7) Модульное программирование. Характеристики модуля (связность, сцепление, сложность)

8) Структурные методы анализа и проектирования

9) Визуальное моделирование и проектирование с использованием UML.

10) Алгоритм: определение, свойства, методы представления

11) Характеристики качества ПО. Методики повышения качества ПО.

12) Хороший стиль программирования.Правильные имена. Форматирование кода. Комментирование кода. Общие правила разработки классов

13) Тестирование. Методы структурного тестирования. Методы функционального тестирования.


Технология программирования (определение, цели дисциплины). Отличие от программной инженерии.

Технология программирования – совокупность производственных процессов, приводящих к созданию требуемого ПО, а так же множество методов и средств, используемых в процессе разработки.

Цель дисциплины - формирование представления о программировании как о процессе формализации требований заказчика (пользователя) в виде внешнего проекта, создания необходимых структур данных, кодирования программ, их тестирования и отладке, а также формализованного документирования результатов проектирования.

Задачи дисциплины: усвоение и практическое использование методов производства программ, методов отладки и тестирования, схем программ согласно действующим ГОСТ.

Программная инженерия – инженерная дисциплина, связанная с теорией, методами и средствами профессиональной разработки ПО.

Проблемы, которыми занимается программная инженерия:

ü Поиск финансирования.

ü Работа с заказчиком.

ü Подбор персонала.

ü Этические вопросы. Микроклимат в коллективе. Команда.

ü Обеспечение качества программного продукта.

Отличия пока под вопросом. Как вариант, ПИ – это среда для разработки, т.е. она занимается вопросами, за счет которых потом ТП разрабатывает программы.


Основные этапы разработки (российский и международный стандарты).

По технологиям программирования:

по ГОСТ 19.102.77.1

· техническое задание – постановка задачи

· эскизный проект – анализ требований

· технический проект – проектирование

· рабочий проект – программирование

· внедрение – тестирование и откладка

По информатике:

Этапы решения задач на ЭВМ:

1. Постановка задачи

1.1. Сбор информации о задаче

1.2. Формулировка условий задачи

1.3. Определение конечных целей решений задачи

1.4. Определение формы выдачи результатов

1.5. Описание данных (их типов, диапазонов, величин, структуры и т.д.)

2. Анализ и исследование задачи, модели

2.1. Анализ существующих аналогов

2.2. Анализ технических и программных средств

2.3. Разработка математической модели

2.4. Разработка структур данных

3. Разработка алгоритмов

3.1. Выбор метода проектирования алгоритма

3.2. Выбор формы записи алгоритма

3.3. Выбор тестов и метода тестирования

3.4. Проектирование алгоритма

4. Программирование

4.1. Выбор языка программирования

4.2. Уточнение способов организации данных

4.3. Запись алгоритма на выбранном языке программирования

5. Тестирование и отладка

5.1. Синтаксическая отладка

5.2. Отладка семантики и логической структуры

5.3. Тестовые расчеты и анализ результатов тестирования

5.4. Совершенствование программы

6. Сопровождение программы

6.1. Доработка программы для решения конкретных задач

6.2. Сопоставление документации к решенной задаче, математической модели, алгоритму, программе и набору тестов, к использованию


Жизненный цикл ПО. Процессы ЖЦ. Модели ЖЦ ПО. Их достоинства и недостатки.

Жизненный цикл ПО – это непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплуатации.

Жизненный цикл ПП:

1. Разработка алгоритмов и программ

1.1. Маркетинг предназначен для изучения требований к создаваемому ПП, оцениваются необходимые для разработки материальные, трудовые и финансовые ресурсы, а так же устанавливаются примерные сроки разработки

1.2. Проектирование структуры - выполняется разработка архит. проекта, выбор методов и средств создания программы

1.3. Программирование, тестирование, отладка

1.4. Документирование

2. Эксплуатация и сопровождение

2.1. Выход на рынок связан с организацией продаж массовому пользователю

2.2. Эксплуатация

2.3. Сопровождение, в процессе выявляются ошибки, оказывается сервисная помощь, обеспечение новыми версиями

3. Завершение ЖЦ

3.1. Снятие с продажи

Модель жизненного цикла программного обеспечения — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта.

1. Каскадная модель ЖЦ ПО (водопад).

Преимущества:

ü Последовательное выполнение этапов проекта в строгом фиксированном порядке

ü Позволяет оценивать качество продукта на каждом этапе

Недостатки:

ü Отсутствие обратных связей между этапами

ü Не соответствует реальным условиям разработки программного продукта

2. Спиральная модель ЖЦ ПО.

Спиральная модель представляет собой процесс разработки программного обеспечения, сочетающий в себе как проектирование, так и постадийное прототипирование с целью сочетания преимуществ восходящей и нисходящей концепции.

Преимущества:

ü Быстрое получение результата

ü Повышение конкурентоспособности

ü Изменяющиеся требования — не проблема

Недостатки:

ü Отсутствие регламентации стадий

3. Итерационная модель ЖЦ ПО.

Итеративный подход в разработке программного обеспечения — это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы. Проект при этом подходе в каждой фазе развития проходит повторяющийся цикл: Планирование — Реализация — Проверка — Оценка.

Преимущества итеративного подхода:

ü снижение воздействия серьёзных рисков на ранних стадиях проекта, что ведет к минимизации затрат на их устранение;

ü организация эффективной обратной связи проектной команды с потребителем (а также заказчиками, стейкхолдерами) и создание продукта, реально отвечающего его потребностям;

ü акцент усилий на наиболее важные и критичные направления проекта;

ü непрерывное итеративное тестирование, позволяющее оценить успешность всего проекта в целом;

ü раннее обнаружение конфликтов между требованиями, моделями и реализацией проекта;

ü более равномерная загрузка участников проекта;

ü эффективное использование накопленного опыта;

ü реальная оценка текущего состояния проекта и, как следствие, большая уверенность заказчиков и непосредственных участников в его успешном завершении.

ü затраты распределяются по всему проекту, а не группируются в его конце.


Парадигмы программирования.

Парадигма (методология) программирования определяет способ мышления разработчика программ, т.е. изучает основу построения методов.

Парадигмы:

1. Императивная - описывает процесс вычислений посредством описания управляющей логики программы

2. Процедурная - парадигма, основанная на использовании процедур.

3. Модульная - принцип, согласно которому программное средство разделяется на отдельные именованные сущности, называемые модулями. Модульность часто является средством упрощения задачи проектирования ПС и распределения процесса разработки ПС между группами разработчиков.

4. Структурная (без go to) – 1) низкоуровневая трактовка предполагает, что программная логика состоит из нескольких структур, комбинируемых определенным образом; 2) более высокоуровневая трактовка предполагает разделение логики программы на несколько подпрограмм, каждая из которых будет иметь одну точку входа.

5. Объектно-ориентированная - основана на представлении всего в виде объектов, являющихся экземплярами того или иного класса и воплощает применение концепции абстрагирования. Объект при этом соединяет внутри себя как данные, так и методы их обрабатывающие. Как правило, поддерживаются характерные возможности: наследование, инкапсуляцию и полиморфизм.

6. Декларативная – определяет процесс вычисления посредством описания логики самого вычисления, а не управления логики программы

7. Логическая предусматривает использование математической логики для разработки программ.

8. Функциональная - позволяет записывать программу как композицию функций.

9. Матричная (в рамках матрицы) - парадигма, обобщающая некоторые операции так, что они могут применяться сразу к массивам значений, а не к отдельными значениям.

10. Метапрограммирование (JavaScript) – вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения.

11. Рефлексивная (программа меняет саму себя) - это разновидность метапрограммирования, предусматривающая написание программ, которые могут изменять свое собственное поведение.

12. Параллельное представляет программу в виде набора сообщающихся процессов, которые могут выполняться параллельно.

13. Проблемно-ориентированная


Структуры данных. Простые (базовые структуры) представление в памяти. Статические структуры данных. Полустатические структуры данных (стеки, очереди, деки, строки). Динамические структуры данных (линейные списки, графы, деревья).

Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс.

Простые структуры данных называют также примитивными или базовыми структурами. Эти структуры служат основой для построения более сложных структур. В языках программирования простые структуры описываются простыми (базовыми) типами. К таким типам относятся: числовые, битовые, логические, символьные, перечисляемые, интервальные, указатели.

С точки зрения физической структуры важным является то обстоятельство, что в данной машинной архитектуре, в данной системе программирования мы всегда можем заранее сказать, каков будет размер данного простого типа и какова структура его размещения в памяти.

Статические - к этой группе относят массивы, множества, записи, таблицы.

Полустатические - это стеки, очереди, деки.

Динамические - линейные и разветвленные связные списки, графы, дерева.

Статическая структура данных- совокупность фиксированного количества переменных постоянной размерности с неизменным характером связей между ними.

Вектор (одномерный массив) - структура данных с фиксированным числом элементов одного и того же тип. Каждый элемент вектора имеет уникальный в рамках заданного вектора номер. Обращение к элементу вектора выполняется по имени вектора и номеру требуемого элемента.

Массив- такая структура данных, которая характеризуется:

· фиксированным набором элементов одного и того же типа;

· каждый элемент имеет уникальный набор значений индексов;

· количество индексов определяют мерность массива, например, два индекса - двумерный массив, три индекса - трехмерный массив, один индекс - одномерный массив или вектор;

· обращение к элементу массива выполняется по имени массива и значениям индексов для данного элемента.

Другое определение: массив - это вектор, каждый элемент которого - вектор.

Полустатические структуры данных характеризуются такими признаками: имеют переменную длину и простые процедуры ее изменения; изменение длины структуры происходит в определенных пределах, не превышая какого-то максимального (предельного) значения. Если полустатическую структуру рассматривать на логическом уровне, то это последовательность данных, связанная отношениями линейного списка. Доступ к элементу может осуществляться по его порядковому номеру. (мне кажется,можно и не брать Физическое представление полустатических структур данных в памяти - это обычно последовательность слотов в памяти, где каждый следующий элемент расположен в памяти в следующем слоте (т.е. вектор). Физическое представление может иметь, также, вид однонаправленного связного списка (цепочки), где каждый следующий элемент адресуется указателем находящимся в текущем элементе. В последнем случае ограничения на длину структуры гораздо менее строгие.)

Стек - такой последовательный список с переменной длиной, для которого включение и исключение элементов выполняются только с одной стороны списка, называемого вершиной стека (Last In - First Out - "последним пришел - первым исключается"). Основные операции над стеком: включение нового элемента (английское название push - заталкивать), исключение элемента из стека (англ. pop - выскакивать). Полезными могут быть также вспомогательные операции: определение текущего числа элементов в стеке; очистка стека; неразрушающее чтение элемента из вершины стека

Очередью FIFO (First In - First Out - "первым пришел - первым исключается") называется такой последовательный список переменной длины, в котором включение элементов выполняется только с одной стороны списка (эту сторону часто называют концом или хвостом очереди), а исключение - с другой стороны (начало или голова очереди). Основные операции над очередью - те же, что и над стеком - включение, исключение, определение размера, очистка, неразрушающее чтение.

Дек(deq - double ended queue,т.е очередь с двумя концами) - особый вид очереди в виде последовательного списка, в котором как включение, так и исключение элементов может осуществляться с любого из двух концов списка. Частный случай дека - дек с ограниченным входом и дек с ограниченным выходом. Логическая и физическая структуры дека аналогичны логической и физической структуре кольцевой FIFO-очереди. Однако, применительно к деку целесообразно говорить не о начале и конце, а о левом и правом конце. Над деком определены следующие операции: включение элемента справа; включение элемента слева; исключение элемента справа; исключение элемента слева; определение размера; очистка.

Строка- это линейно упорядоченная последовательность символов, принадлежащих конечному множеству символов, называемому алфавитом. Строки обладают следующими важными свойствами: их длина, как правило, переменна, хотя алфавит фиксирован; обычно обращение к символам строки идет с какого-нибудь одного конца последовательности, т.е. важна упорядоченность этой последовательности, а не ее индексация; в связи с этим свойством строки часто называют также цепочками; чаще всего целью доступа к строке является на отдельный ее элемент (хотя это тоже не исключается), а некоторая цепочка символов в строке.

Динамические структуры по определению характеризуются отсутствием физической смежности элементов структуры в памяти, непостоянством и непредсказуемостью размера (числа элементов) структуры в процессе ее обработки. Для установления связи между элементами динамической структуры используются указатели, через которые устанавливаются явные связи между элементами. Такое представление данных в памяти называется связным. Элемент динамической структуры состоит из двух полей:

- информационного поля или поля данных, в котором содержатся те данные, ради которых и создается структура; в общем случае информационное поле само является интегрированной структурой - вектором, массивом, записью и т.п.;
- поля связок, в котором содержатся один или несколько указателей, связывающий данный элемент с другими элементами структуры.
Списком называется упорядоченное множество, состоящее из переменного числа элементов, к которым применимы операции включения, исключения. Список, отражающий отношения соседства между элементами, называется линейным.

В математической теории графов и информатике граф — это совокупность непустого множества вершин и множества пар вершин (связей между вершинами).

Объекты представляются как вершины, или узлы графа, а связи — как дуги, или рёбра. Для разных областей применения виды графов могут различаться направленностью, ограничениями на количество связей и дополнительными данными о вершинах или рёбрах.

Многие структуры, представляющие практический интерес в математике и информатике, могут быть представлены графами.

Деревья

Дерево - это частный случай графа, наиболее широко применяемый в программировании.

Основные определения

Существует довольно много равносильных определений деревьев, вот лишь некоторые из них.

Дерево - это связный граф без циклов.

Дерево - это связный граф, в котором при N вершинах всегда ровно N-1 ребро.

Дерево - это граф, между любыми двумя вершинами которого существует ровно один путь.

Аналогичным образом определяется и ориентированное дерево - как орграф, в котором между любыми двумя вершинами существует не более одного пути.


Дата добавления: 2018-06-01; просмотров: 875; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!