- •Алгоритмические основы программной инженерии
- •1 Семестр вопросы и ответы
- •1 Вопрос. Кризисная история развития программного обеспечения: необходимость повторного использования кода, рост сложности по, модификация по.
- •Необходимость повторного использования кода
- •Функциональное программирование. Достоинства и недостатки
- •2 Вопрос. Этапы разработки программного обеспечения. Состав технического задания.
- •Модели процесса разработки программного обеспечения
- •Каскадная модель
- •Итеративная модель rup
- •Гибкий цикл agile
- •Итеративная модель xp
- •Спиральная модель
- •3 Вопрос. Проектирование и алгоритмизация программы. Свойства алгоритма.
- •4 Вопрос. Понятие и определение сложности алгоритма.
- •5 Вопрос. Кодирование, тестирование и отладка программы.
- •Концепция xp: программирование в паре.
- •Тестирование и отладка.
- •6 Вопрос. Доработка и сопровождение программного продукта.
- •7 Вопрос. Модели жизненного цикла по. Экстремальное программирование (xp).
- •Концепция xp
- •11. Взаимодействие с заказчиком.
- •Если требования проекта могут быть сформулированы достаточно исчерпывающим образом, то имеет смысл прибегать к более надежной стратегии разработки.
- •8 Вопрос. Унифицированная концепция (rup) разработки по: фазы, операции. Определение требований в uml-формате.
- •9 Вопрос. Унифицированная концепция (rup) разработки по: анализ и проектирование. Понятие класса, типы и примеры классов, uml-диаграммы.
- •Стратегия rup Rational Unified Process
- •1. Определение требований.
- •3. Реализация.
- •Ниже представлена самостоятельная работа — пример реализации диаграммы компонентов
- •4. Внедрение.
- •Ниже представлена самостоятельная работа — пример реализации диаграммы развертывания
- •10 Вопрос. Состав и функционал системного программного обеспечения.
- •Операционная система (ос)
- •Система управления файлами (суф)
- •Интерфейсная оболочка для взаимодействия пользователя с ос и операционными средами
- •Системы программирования
- •Трансляторы
- •Утилиты
- •11 Вопрос. Классификация языков программирования.
- •Не существует общепринятой систематичной таксономии языков программирования. Поколения языков
- •Функциональная классификация языков программирования
- •12 Вопрос. Определение ядра операционной системы.
- •13 Вопрос. Классификация операционных систем по функциональности.
- •Системы пакетной обработки
- •Системы разделения времени
- •Системы реального времени
- •14 Вопрос. Определение задачи. Преимущества и недостатки процессов и потоков.
- •15 Вопрос. Свойства задач.
- •16 Вопрос. Механизмы диспетчеризации (планирования) задач.
7 Вопрос. Модели жизненного цикла по. Экстремальное программирование (xp).
——————————————————————————
Концепция xp
— сориентирована на малочисленную группу программистов высокой квалификации, которые приступают к разработке программного продукта с изначально неопределенными или часто меняющимися требованиями.
Ключевые концепции XP:
1. Постановка задачи только по определенным в настоящее время требованиям.
Задача ставится согласно тем требованиям, которые в данный момент выдвинуты или сформулированы настолько однозначно и четко, что или уже детализированы (формализированны), или в кратчайшее время могут быть детализированы на уровне, позволяющем быстро выполнить программную реализацию соответствующему функционалу.
2. Проектирование максимально простой архитектуры продукта.
Программа проектируется настолько просто, насколько это возможно без опережающего учета возможного в будущем функционала.
В архитектуру закладываются только те функции, которые необходимы и точно определены в данный момент.
3. Максимально быстрое получение первой работающей версии программы.
[Такую версию называют «Рыба»]
4. Разработка на основе тестов.
[Заказчик даёт тесты]
5. Коррекция ТЗ и архитектуры программы.
6. Систематические сборки с тестированием и отладкой.
Разработка программного продукта выполняется короткими временными отрезками, и после завершения очередного отрезка выполняется сборка программы с тестированием и отладкой. Такой пошаговый контроль облегчает локализацию и устранение ошибок.
7. Частая подготовка промежуточных версий продукта.
8. Рефакторинг (регулярная переработка кода).
Оптимизация кода программистами с целью внедрения более эффективных алгоритмов. После каждой такой оптимизации программа проходит проверку на тестах, которая гарантирует сохранение работоспособности продукта.
9. Программирование в паре.
Программная реализация каждого выделенного фрагмента выполняется кодерами. Один занимается кодированием, другой анализирует работу первого, оценивая выборные алгоритмы и их реализацию, предлагая более эффективные решения, отслеживая качество кода и т. д.
10. Соблюдение единого стандарта кодирования.
Стандарт кодирования — набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования.
Наличие общего стиля программирования:
— облегчает понимание и поддержание исходного кода, написанного более чем одним программистом;
— упрощает взаимодействие нескольких человек при разработке программного обеспечения.
Примеры:
— стандарт кодирования на языке Си, получивший сокращённое наименование K&R, Кернигана и Ритчи.
— стандарт кодирования на C# от Microsoft.
— стандарт кодирования на Java от Sun Microsystems.
11. Взаимодействие с заказчиком.
Получение ответов на вопросы.
Экстремальное программирование.
Достоинства:
— большая гибкость, динамичность.
— высокое качество многократной отладки кода.
— минимальный объем сопроводительной документации.
Недостатки:
— трудоемкость подхода (частое тестирование, отладка, рефакторинг).
— плохо поддается планированию (с точки зрения определенного конечного срока сдачи проекта).
Пример.
C3. Chrysler Comprehensive Compensation System.
(Система, построенная с использованием языка программирования SmallTalk и объектно-ориентированной системой управления базами данных GemStone; проект стартовал в 1993 г., закрыт в 1999/2000 году; создатель — Том Хэдвилд (Tom Hadfield).)