Ответы к экзамену (Технология программирования). Как пишется хороший код. Способы представления алгоритмов
Скачать 2.02 Mb.
|
1 ОГЛАВЛЕНИЕ 1. *Как пишется хороший код. Способы представления алгоритмов ............................................................. 2 2. *Принципы работы со сложными системами. Абстракция, модульность, дополнительные принципы ... 7 3. *Жизненный цикл и процессы разработки программного обеспечения ................................................... 8 4. *Понятие жизненного цикла. Модели жизненного цикла .......................................................................... 9 5. *Унифицированный процесс разработки программного обеспечения RUP. Основные фазы разработки 11 6. *Унифицированный процесс разработки программного обеспечения UML. Основные виды моделей . 13 7. *Экстремальное программирование. Основные принципы ..................................................................... 17 8. *Экстремальное программирование. Достоинства и недостатки ............................................................. 20 9. *Основные этапы развития языка UML. История развития языка UML..................................................... 21 10. *Визуальное проектирование. Методология объектно-ориентированного анализа и проектирования (ООАП) 22 11. *Основные элементы языка UML. Модель сложной системы .............................................................. 25 12. *Пакеты в языке UML. Графическое изображение системы и подсистемы в языке UML .................... 29 13. *Канонические диаграммы языка UML ................................................................................................. 32 14. *Диаграмма вариантов использования как концептуальное представление системы в процессе ее разработки .......................................................................................................................................................... 33 15. *Отношения на диаграммах использования ......................................................................................... 35 16. *Формализация функциональных требований к системе и особенности спецификации на диаграмме использования .................................................................................................................................................... 37 17. *Объекты и классы ................................................................................................................................. 40 18. *Стереотипы и классы ............................................................................................................................ 42 19. *Элементы графической нотации диаграммы классов ......................................................................... 44 20. *Отношения и их графическое изображение на диаграмме классов ................................................... 46 21. *Диаграмма классов. Отношение ассоциации ...................................................................................... 50 22. *Диаграмма классов. Отношение обобщения ...................................................................................... 54 23. *диаграмма клАссов. отношение агрегации и отношение композиции ............................................... 56 24. *Язык моделирования UML. Диаграмма состояний. Триггерные и нетриггерные переходы .............. 58 25. *Язык моделирования UML. Диаграмма действий. Разделение и слияние потоков управления ....... 60 26. *Язык моделирования UML. Диаграмма последовательности. Графическое изображение линий жизни, фокусов управления объектов и сообщений на диаграмме ................................................................. 62 27. *Диаграмма последовательности. Ветвление потока управления ....................................................... 63 28. *Язык моделирования UML. Диаграмма взаимодействия или кооперация. Реализация диаграммы взаимодействия: объекты, связи между ними, сообщения .............................................................................. 64 29. *Физическое представление модели. Диаграммы реализации: компонентов и развертывания. Базовые элементы физического представления системы ................................................................................. 69 30. *Варианты графического изображения компонентов, интерфейсов и изображение зависимости между компонентами и классами на диаграмме компонентов ........................................................................ 74 2 31. *Диаграмма развертывания. Графическое изображение узлов, соединения и зависимости на диаграмме развертывания ................................................................................................................................. 77 1. *КАК ПИШЕТСЯ ХОРОШИЙ КОД. СПОСОБЫ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ Опытные программисты обладают т.н. "набором инструментов программиста", в который входят: курсы проектирования, независимые от языка, где изучаются независимые от языка инструменты проектирования (Language Independent Design Tools, LIDT); разнообразные языки программирования, в том числе и Ассемблер; различные аппаратные курсы; личный опыт. Как пишется хороший код: Моделирование; представление логики приложения в независимой от языка форме; «правило одной страницы». Пять элементов хорошей программной разработки: получить информацию от некоторого входного источника; решить, как эта информация должна организовываться и сохраняться; применить некоторый набор инструкций для манипуляции входными данными; эти инструкции могут быть разбиты на четыре главные категории: одиночные операторы, условные операторы, циклы и подпрограммы; сообщить о результатах манипуляций над данными; собрать вместе все предыдущие элементы, выразив их в модульно- спроектированном, самодокументированном коде с разумной схемой отступов. Самодокументированность: 3 префикс к названию переменной (например, ivar=1,т.е. int ivar=1): осмысленные имена переменных; комментарии. Грамотно написанный код позволяет быстро ответить на следующие вопросы: Какие заголовочные файлы требуются для данного фрагмента кода? Какие имена относятся к символическим константам? Каковы подстановочные значения для этих констант? Какие стандартные типы данных имеются в этом фрагменте? Каковы, если они есть, пользовательские типы? Каковы имена их элементов? Какова размерность массивов, если они есть? Говорит ли этот код о каких-либо логических взаимоотношениях? Как используются переменные программы? Основное профессиональное правило достаточно просто: следует применять стиль кодирования, который будет понятен для кого-то еще, а не только для его автора. АЛГОРИТМ - набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий. Виды алгоритмов: ЛИНЕЙНЫЙ – набор команд (указаний), выполняемых последовательно во времени друг за другом; РАЗВЕТВЛЯЮЩИЙСЯ - алгоритм, содержащий хотя бы одно условие, в результате проверки которого может осуществляться разделение на несколько параллельных ветвей алгоритма; ЦИКЛИЧЕСКИЙ - алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. Способы представления алгоритмов: СЛОВЕСНО-ФОРМУЛЬНОЕ ОПИСАНИЕ (форма записи предложений не формализуется, т.е. при записи предложений можно использовать как слова, 4 так и математические символы. Однако предложения при такой записи алгоритма нумеруются, чтобы иметь возможность обратиться к нужному предложению. Также смысл предложения должен пониматься однозначно.). Нахождение площади прямоугольника со сторонами А и В 1. Начало 2. Найти длину стороны А 3. Найти длину стороны В 4. Умножить А на В 5. Конец 1. Начало 2. X=A 3. Y=B 4. S=AB 5. Конец ГРАФИЧЕСКИЕ СПОСОБЫ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ (с помощью схем алгоритмов). Графические символы, их размеры и правила построения схем алгоритмов определены Единой системой программной документации (ЕСПД), являющейся государственным стандартом. 5 Операторы итерации 6 ПРЕДСТАВЛЕНИЕ АЛГОРИТМОВ В ВИДЕ ЛОГИЧЕСКИХ СХЕМ (ПО А.А. ЛЯПУНОВУ) представляется в виде выражения, содержащего символы операторов действия, операторов выбора, стрелки для обозначения переходов и оператора останова. ПРЕДСТАВЛЕНИЕ АЛГОРИТМА В ВИДЕ ПРОГРАММ. Если алгоритм записывается для исполнения на компьютере, то он должен быть строго формализован. Для формализации придумано множество языков программирования. Запись алгоритма на таком языке является программой, а процесс перевода алгоритма на язык программирования – программированием. 7 2. *ПРИНЦИПЫ РАБОТЫ СО СЛОЖНЫМИ СИСТЕМАМИ. АБСТРАКЦИЯ, МОДУЛЬНОСТЬ, ДОПОЛНИТЕЛЬНЫЕ ПРИНЦИПЫ АБСТРАКЦИЯ – это отвлечение от всего, что несущественно для достижения частной цели. УТОЧНЕНИЕ – это обратный способ от абстрактного к конкретному. Абстракция и уточнение используются для работоспособных решений, гарантирующие свойства результ.системы. МОДУЛЬНОСТЬ – это принцип организации больших систем в виде набора подсистем, модулей, компонентов. Компоненты связаны посредством интерфейсов. При делении на модули нужно использовать принципы: Выделение интерфейсов и сокрытие информации; Адекватность, полнота, минимальность и простота интерфейсов; Переиспользование. АДЕКВАТНОСТЬ - модуль решает те задачи, что нужны пользователю данного модуля. ПОЛНОТА – решаются все значимые задачи в рамках функциональности модуля. МИНИМАЛЬНОСТЬ – модулем решаются различные по смыслу задачи, и ни одну из них нельзя реализовать с помощью других модулей. ПРОСТОТА – этот модуль с интерфейсом элементарен и не представим в виде композиции некоторых более простых операций. ПЕРЕИСПОЛЬЗОВАНИЕ – принцип, который требует избегать повторений одних и тех же знаний в виде структуры данных в различных частях системы. Вместо этого выделяется один источник. 8 3. *ЖИЗНЕННЫЙ ЦИКЛ И ПРОЦЕССЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЖИЗНЕННЫЙ ЦИКЛ ПО — ряд событий, происходящих с системой в процессе ее создания и дальнейшего использования. То есть это время от начального момента создания какого-либо программного продукта до конца его разработки и внедрения. Жизненный цикл программного обеспечения можно представить в виде моделей. МОДЕЛЬ ЖИЗНЕННОГО ЦИКЛА ПО — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта. Модель кодирования и устранения ошибок Постановка задачи; Выполнение; Проверка результата; Переход в начало. Каскадная модель («водопад») Преимущества: Недостатки: Последовательное выполнение этапов проекта в строгом фиксированном порядке; Отсутствие обратных связей между этапами; Не соответствует реальным Выработка системных требований Выработка требований к ПО Анализ Проектирование Кодирование Тестирование Эксплуатация 9 Позволяет оценивать качество продукта на каждом этапе. условиям разработки программного продукта. Каскадная модель с промежуточным контролем («водоворот») Данная модель является почти эквивалентной по алгоритму предыдущей модели, однако при этом имеет обратные связи с каждым этапом жизненного цикла. Недостаток: 10-ти кратное увеличение затрат на разработку. V-модель (разработка через тестирование) 4. *ПОНЯТИЕ ЖИЗНЕННОГО ЦИКЛА. МОДЕЛИ ЖИЗНЕННОГО ЦИКЛА ЖИЗНЕННЫЙ ЦИКЛ ПО — ряд событий, происходящих с системой в процессе ее создания и дальнейшего использования. То есть это время от начального момента создания какого-либо программного продукта до конца 10 его разработки и внедрения. Жизненный цикл программного обеспечения можно представить в виде моделей. МОДЕЛЬ ЖИЗНЕННОГО ЦИКЛА ПО — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта. Модель кодирования и устранения ошибок Постановка задачи; Выполнение; Проверка результата; Переход в начало. Каскадная модель («водопад») Преимущества: Недостатки: Последовательное выполнение этапов проекта в строгом фиксированном порядке; Позволяет оценивать качество продукта на каждом этапе. Отсутствие обратных связей между этапами; Не соответствует реальным условиям разработки программного продукта. Каскадная модель с промежуточным контролем («водоворот») Выработка системных требований Выработка требований к ПО Анализ Проектирование Кодирование Тестирование Эксплуатация 11 Данная модель является почти эквивалентной по алгоритму предыдущей модели, однако при этом имеет обратные связи с каждым этапом жизненного цикла. Недостаток: 10-ти кратное увеличение затрат на разработку. V-модель (разработка через тестирование) 5. *УНИФИЦИРОВАННЫЙ ПРОЦЕСС РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ RUP. ОСНОВНЫЕ ФАЗЫ РАЗРАБОТКИ RATIONAL UNIFIED PROCESS (RUP) — методология разработки программного обеспечения, созданная компанией Rational Software. RUP использует итеративную модель разработки. В конце каждой итерации (в идеале продолжающейся от 2 до 6 недель) достигается цель и разрабатывается промежуточная версия конечного продукта. Быстрое реагирование на меняющиеся требования, Обнаружение и устранение рисков на ранних стадиях проекта, Эффективный контроль качества создаваемого продукта. 12 Первые идеи итеративной модели разработки были заложены в "спиральной модели". Начальная фаза (Inception) В начале фазы: o Формируются видение и границы проекта. o Создается экономическое обоснование (business case). o Определяются основные требования, ограничения и ключевая функциональность продукта. o Создается базовая версия модели прецедентов. o Оцениваются риски. При завершении начальной фазы оценивается достижение этапа жизненного цикла цели, которое предполагает соглашение заинтересованных сторон о продолжении проекта. Уточнение (Elaboration) Анализ предметной области и построение исполняемой архитектуры, в т.ч.: o Документирование требований (включая детальное описание для большинства прецедентов); o Спроектированную, реализованную и оттестированную исполняемую архитектуру; o Обновленное экономическое обоснование и более точные оценки сроков и стоимости; o Сниженные основные риски; спешное выполнение фазы уточнения означает достижение этапа жизненного цикла архитектуры. Построение (Construction) реализация большей части функциональности продукта; Построение завершается первым внешним релизом системы и вехой начальной функциональной готовности. Внедрение (Transition) создается финальная версия продукта и передается от разработчика к заказчику: 13 o программу бета-тестирования, o обучение пользователей, o определение качества продукта. В случае, если качество не соответствует ожиданиям пользователей или критериям, установленным в фазе Начало, фаза Внедрение повторяется снова. Выполнение всех целей означает достижение вехи готового продукта (Product Release) и завершение полного цикла разработки. 6. *УНИФИЦИРОВАННЫЙ ПРОЦЕСС РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ UML. ОСНОВНЫЕ ВИДЫ МОДЕЛЕЙ УНИФИЦИРОВАННЫЙ ПРОЦЕСС РАЗРАБОТКИ ПО - Rational Unified Process, RUP - является примером так называемого "тяжелого" процесса, детально описанного и предполагающего поддержку собственно разработки исходного кода ПО большим количеством вспомогательных действий (разработка планов, ТЗ, проектных моделей, проектной документации и пр. Унифицированный процесс разработки ПО основан на следующих идеях: Весь ход работ направляется итоговыми целями проекта, выраженными в виде вариантов использования (use cases). Разработка начинается с выделения вариантов использования и на каждом шаге контролируется степенью приближения к их реализации; Основным решением, принимаемым в ходе проекта, является архитектура результирующей программной системы; Основой процесса разработки являются планируемые и управляемые итерации, объем которых (реализуемая в рамках итерации функциональность и набор компонентов) определяется на основе архитектуры. RUP выделяет в жизненном цикле 4 основные фазы , в рамках каждой из которых возможно проведение нескольких итераций: ФАЗА НАЧАЛА ПРОЕКТА (Inception) - определяются основные цели проекта, руководитель и бюджет, основные средства выполнения — технологии, инструменты, ключевые исполнители; 14 ФАЗА ПРОЕКТИРОВАНИЯ (Elaboration) - цель этой фазы — на базе основных, наиболее существенных требований разработать стабильную базовую архитектуру продукта; ФАЗА ПОСТРОЕНИЯ (CONSTRUCTION) - цель этой фазы — детальное прояснение требований и разработка системы, удовлетворяющей им, на основе спроектированной ранее архитектуры; ФАЗА ВНЕДРЕНИЯ (Transition) - происходит развертывание системы в ее рабочей среде, бета-тестирование, подгонка мелких деталей под нужды пользователей. UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов, системного проектирования и отображения организационных структур. Это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода. |