Ответы к экзамену (Технология программирования)
.pdfОГЛАВЛЕНИЕ
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 |
1
31.*Диаграмма развертывания. Графическое изображение узлов, соединения и зависимости на
диаграмме развертывания................................................................................................................................. |
77 |
1.*КАК ПИШЕТСЯ ХОРОШИЙ КОД. СПОСОБЫ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ
Опытные программисты обладают т.н. "набором инструментов программиста", в который входят:
курсы проектирования, независимые от языка, где изучаются независимые от языка инструменты проектирования (Language
Independent Design Tools, LIDT);
разнообразные языки программирования, в том числе и Ассемблер;
различные аппаратные курсы;
личный опыт.
Как пишется хороший код:
Моделирование;
представление логики приложения в независимой от языка форме;
«правило одной страницы».
Пять элементов хорошей программной разработки:
получить информацию от некоторого входного источника;
решить, как эта информация должна организовываться и сохраняться;
применить некоторый набор инструкций для манипуляции входными данными; эти инструкции могут быть разбиты на четыре главные категории: одиночные операторы, условные операторы, циклы и подпрограммы;
сообщить о результатах манипуляций над данными;
собрать вместе все предыдущие элементы, выразив их в модульноспроектированном, самодокументированном коде с разумной схемой отступов.
Самодокументированность:
2
префикс к названию переменной (например, ivar=1, т.е. int ivar=1):
осмысленные имена переменных;
комментарии.
Грамотно написанный код позволяет быстро ответить на следующие вопросы:
Какие заголовочные файлы требуются для данного фрагмента кода?
Какие имена относятся к символическим константам?
Каковы подстановочные значения для этих констант?
Какие стандартные типы данных имеются в этом фрагменте?
Каковы, если они есть, пользовательские типы?
Каковы имена их элементов?
Какова размерность массивов, если они есть?
Говорит ли этот код о каких-либо логических взаимоотношениях?
Как используются переменные программы?
Основное профессиональное правило достаточно просто: следует применять стиль кодирования, который будет понятен для кого-то еще, а не только для его автора.
АЛГОРИТМ - набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий.
Виды алгоритмов:
ЛИНЕЙНЫЙ – набор команд (указаний), выполняемых последовательно во времени друг за другом;
РАЗВЕТВЛЯЮЩИЙСЯ - алгоритм, содержащий хотя бы одно условие, в результате проверки которого может осуществляться разделение на несколько параллельных ветвей алгоритма;
ЦИКЛИЧЕСКИЙ - алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными.
Способы представления алгоритмов:
СЛОВЕСНО-ФОРМУЛЬНОЕ ОПИСАНИЕ (форма записи предложений не формализуется, т.е. при записи предложений можно использовать как слова,
3
так и математические символы. Однако предложения при такой записи алгоритма нумеруются, чтобы иметь возможность обратиться к нужному предложению. Также смысл предложения должен пониматься однозначно.).
Нахождение площади прямоугольника со сторонами А и В
1. |
Начало |
1. |
Начало |
2. |
Найти длину стороны А |
2. |
X=A |
3. |
Найти длину стороны В |
3. |
Y=B |
4. |
Умножить А на В |
4. |
S=AB |
5. |
Конец |
5. |
Конец |
ГРАФИЧЕСКИЕ СПОСОБЫ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ (с помощью схем алгоритмов). Графические символы, их размеры и правила построения схем алгоритмов определены Единой системой программной документации (ЕСПД), являющейся государственным стандартом.
4
Операторы итерации
5
ПРЕДСТАВЛЕНИЕ АЛГОРИТМОВ В ВИДЕ ЛОГИЧЕСКИХ СХЕМ (ПО А.А.
ЛЯПУНОВУ) представляется в виде выражения, содержащего символы операторов действия, операторов выбора, стрелки для обозначения переходов и оператора останова.
ПРЕДСТАВЛЕНИЕ АЛГОРИТМА В ВИДЕ ПРОГРАММ. Если алгоритм записывается для исполнения на компьютере, то он должен быть строго формализован. Для формализации придумано множество языков программирования. Запись алгоритма на таком языке является программой, а процесс перевода алгоритма на язык программирования – программированием.
6
2.*ПРИНЦИПЫ РАБОТЫ СО СЛОЖНЫМИ СИСТЕМАМИ. АБСТРАКЦИЯ, МОДУЛЬНОСТЬ, ДОПОЛНИТЕЛЬНЫЕ ПРИНЦИПЫ
АБСТРАКЦИЯ – это отвлечение от всего, что несущественно для достижения частной цели.
УТОЧНЕНИЕ – это обратный способ от абстрактного к конкретному.
Абстракция и уточнение используются для работоспособных решений, гарантирующие свойства результ.системы.
МОДУЛЬНОСТЬ – это принцип организации больших систем в виде набора подсистем, модулей, компонентов.
Компоненты связаны посредством интерфейсов.
При делении на модули нужно использовать принципы:
Выделение интерфейсов и сокрытие информации;
Адекватность, полнота, минимальность и простота интерфейсов;
Переиспользование.
АДЕКВАТНОСТЬ - модуль решает те задачи, что нужны пользователю данного модуля.
ПОЛНОТА – решаются все значимые задачи в рамках функциональности модуля.
МИНИМАЛЬНОСТЬ – модулем решаются различные по смыслу задачи, и ни одну из них нельзя реализовать с помощью других модулей.
ПРОСТОТА – этот модуль с интерфейсом элементарен и не представим в виде композиции некоторых более простых операций.
ПЕРЕИСПОЛЬЗОВАНИЕ – принцип, который требует избегать повторений одних и тех же знаний в виде структуры данных в различных частях системы. Вместо этого выделяется один источник.
7
3.*ЖИЗНЕННЫЙ ЦИКЛ И ПРОЦЕССЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ЖИЗНЕННЫЙ ЦИКЛ ПО — ряд событий, происходящих с системой в процессе ее создания и дальнейшего использования. То есть это время от начального момента создания какого-либо программного продукта до конца его разработки и внедрения. Жизненный цикл программного обеспечения можно представить в виде моделей.
МОДЕЛЬ ЖИЗНЕННОГО ЦИКЛА ПО — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта.
Модель кодирования и устранения ошибок
Постановка задачи;
Выполнение;
Проверка результата;
Переход в начало.
Каскадная модель («водопад»)
Выработка системных требований
Выработка требований к ПО
Анализ
Проектирование
Кодирование
Тестирование
Эксплуатация
Преимущества: |
|
|
Недостатки: |
|
Последовательное выполнение |
|
|
|
Отсутствие обратных связей |
этапов проекта в строгом |
|
|
|
между этапами; |
фиксированном порядке; |
|
|
|
Не соответствует реальным |
|
8 |
|
|
Позволяет оценивать качество |
условиям |
разработки |
продукта на каждом этапе. |
программного продукта. |
Каскадная модель с промежуточным контролем («водоворот»)
Данная модель является почти эквивалентной по алгоритму предыдущей модели, однако при этом имеет обратные связи с каждым этапом жизненного цикла.
Недостаток: 10-ти кратное увеличение затрат на разработку.
V-модель (разработка через тестирование)
4. *ПОНЯТИЕ ЖИЗНЕННОГО ЦИКЛА. МОДЕЛИ ЖИЗНЕННОГО ЦИКЛА
ЖИЗНЕННЫЙ ЦИКЛ ПО — ряд событий, происходящих с системой в процессе ее создания и дальнейшего использования. То есть это время от начального момента создания какого-либо программного продукта до конца
9
его разработки и внедрения. Жизненный цикл программного обеспечения можно представить в виде моделей.
МОДЕЛЬ ЖИЗНЕННОГО ЦИКЛА ПО — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта.
Модель кодирования и устранения ошибок
Постановка задачи;
Выполнение;
Проверка результата;
Переход в начало.
Каскадная модель («водопад»)
Выработка системных требований
Выработка требований к ПО
Анализ
Проектирование
Кодирование
Тестирование
Эксплуатация
Преимущества: |
|
Недостатки: |
|
||
|
Последовательное выполнение |
|
Отсутствие обратных связей |
||
|
этапов проекта в |
строгом |
|
между этапами; |
|
|
фиксированном порядке; |
|
Не соответствует |
реальным |
|
|
Позволяет оценивать |
качество |
|
условиям |
разработки |
|
продукта на каждом этапе. |
|
программного продукта. |
Каскадная модель с промежуточным контролем («водоворот»)
10