
- •Содержание (Технология программирования)
- •2. Определение алгоритма. Пример алгоритма. Пять основных свойств алгоритма. Сущность алгоритмизации.
- •3. Понятие алгоритмического языка. Основные достоинства и недостатки программирования на алгоритмическом языке
- •4. Языки программирования высокого уровня. Поколения и топология языков программирования высокого уровня с примерами (по г. Бучу).
- •5. Интерпретаторы и компиляторы. «За» и «против». Структура. Понятие Байт-кода (p-Code) в языке Java. Языки 4gl.
- •6. Транслятор. Редактор связей. Загрузчик. Назначение и принципы функционирования.
- •7. Понятие исходного, объектного, загрузочного модулей. Назначение.
- •8. Понятие программы, подпрограммы, функции. Способы передачи и возврата параметров в подпрограммы и функции.
- •9. Основные принципы структурного программирования.
- •10. Модели управления в программных системах: централизованное управление, управление, основанное на событиях.
- •11. Структура событийно-управляемой программы для платформы Win32
- •25. Понятие интерфейса. Язык описания интерфейсов idl (midl).
- •26. Стандартная библиотека шаблонов stl. Основные концепции: контейнер, алгоритм, итератор, поток.
- •27. Представление в машине символьной информации. Кодировки ascii, mbcs, ansi, Unicode. Строки ascii-z, Pascal, bstr.
- •28. Признаки сложных систем согласно общей теории систем. Примеры систем (выделить в них признаки).
- •29. Сложность, присущая программному обеспечению. Составляющие сложности программного обеспечения по ф. Бруксу.
- •3 0. Эволюция системного программного продукта. Понятие и составляющие программы, программного комплекса, программного продукта, системного программного продукта (по ф. Бруксу)
- •31. Борьба со сложностью в программном обеспечении. Эволюция методов анализа и разработки (sa/sd, ooa/ood).
- •32. Жизненный цикл программного обеспечения. Фазы жц, их характеристики артефакты.
- •33. Модели жизненного цикла разработки программного обеспечения. Сравнение моделей.
- •35. Производительность труда программиста. Различия в прогах опытного программиста и новичка по ф. Бруксу.
- •36. Распределение стоимости разработки программного обеспечения по технологическим стадиям создания.
- •37. Язык uml. История создания. Область применения. Виды диаграмм uml для описания системы.
- •38. Программирование на основе шаблонов (паттернов). Роль шаблонов проектирования в борьбе со сложностью программного обеспечения. Будущее шаблонов.
- •39. Понятия связанности (Coupling) и зацепления (Cohesion) в сложных программных системах. Связанность и зацепление классов, модулей, компонентов.
- •40. Ошибки программирования: переполнение буфера. Понятие безопасного программного кода.
- •41. Оптимизация программного кода. Основные возможности оптимизации кода программистом и компилятором.
- •42. Оформление программ: основные пункты.
- •43. Процесс отладки программного обеспечения. Сложность отладки по. Методы поиска и устранения ошибок. Связь отладки с тестированием.
- •44. Понятие качества программного обеспечения. Составляющие и критерии качества. Обеспечение качества как процесс, а не этап. Международный стандарт iso 9000/9001.
- •46. Основы тестирования программного обеспечения методом «чёрный ящик» (функциональное тестирование). Роль прецедентов в функциональном тестировании.
- •47. Основы тестирования программного обеспечения методом «белый ящик» (структурное тестирование).
- •48. Понятие надежного по. Различие между надежностью аппаратуры и по.
- •49. Модели надёжности по. Сравнение моделей оценки надежности по. Перспективы построения «хороших» моделей оценки надежности по.
- •50. Динамические модели надежности программного обеспечения (Шумана).
- •51. Статические модели надежности программного обеспечения (Миллса).
- •52. Case - технологии (инструменты, системы, средства). Эволюция case - средств, их классификация, характеристики современных case - инструментов. Перспективы развития. (По Вендрову, Калянову).
- •53. Классификация средств разработки (case - инструментов).
- •54. Технологический скачок (тс) в программировании. Признаки технологического скачка. Исторические факты технологических скачков.
28. Признаки сложных систем согласно общей теории систем. Примеры систем (выделить в них признаки).
Можно вывести пять (5 основных и более) общих признаков любой сложной системы:
1. "Сложные системы часто являются иерархическими и состоят из взаимозависимых подсистем, которые в свою очередь также могут быть разделены на подсистемы, и т.д., вплоть до самого низкого уровням. Архитектура складывается из компонентов, и из иерархических отношений этих компонентов. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя.
2. Одной из важнейших характеристик сложной системы является непредсказуемость. Образ поведения системы складывается как результат взаимодействия и взаимоотношений между ее компонентами.
3. "Внутрикомпонентная связь обычно сильнее, чем связь между компонентами. Это обстоятельство позволяет отделять "высокочастотные" взаимодействия внутри компонентов от "низкочастотной" динамики взаимодействия между компонентами". Это различие внутрикомпонентных и межкомпонентных взаимодействий обуславливает разделение функций между частями системы и дает возможность относительно изолированно изучать каждую часть.
4. Отношения не являются линейными; следовательно, небольшое возмущающее воздействие может вызвать заметный эффект, и наоборот, большой воздействующий импульс может оказаться нерезультативным.
5. Отношения между компонентами могут включать обратные связи, причем как положительные (раскачивающие систему), так и отрицательные (демпфирующие) ее.
6. "Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных". Т.е., разные сложные системы содержат одинаковые структурные части. Эти части могут использовать общие более мелкие компоненты.
7. "Любая работающая сложная система является результатом развития работавшей более простой системы. Сложная система, спроектированная "с нуля", никогда не заработает. Следует начинать с работающей простой системы". В процессе развития системы объекты, первоначально рассматривавшиеся как сложные, становятся элементарными, и из них строятся более сложные системы.
8. Сложная система является открытой; ее границы в зависимости от природы системы должны быть проницаемы или для информации, или для энергии. По этой причине она подвергается изменениям, однако средствами управления ее можно удерживать в стабильном состоянии. Ни один из элементов не обладает полнотой информации о системе в целом.
Примеры: 1. Структура персонального компьютера. Большинство ПК состоит из одних и тех же основных элементов: системной платы, монитора, клавиатуры и устройства внешней памяти. Можно взять любую из этих частей и разложить ее в свою очередь на составляющие. Это пример сложной иерархической системы. Персональный компьютер нормально работает благодаря четкому совместному функционированию всех его составных частей. Вместе эти части образуют логическое целое. Можно понять, как работает компьютер, только потому, что можно рассматривать отдельно каждую его составляющую. Т.о., можно изучать устройства монитора и жесткого диска независимо друг от друга.
2. Структура растений и животных. Растения - это сложные многоклеточные организмы. В результате совместной деятельности различных органов растений происходят такие сложные типы поведения, как фотосинтез и всасывание влаги. Растение состоит из трех основных частей: корни, стебли и листья. Каждая из них имеет свою особую структуру. Так же, как у компьютера, части растения образуют иерархию, каждый уровень которой обладает собственной независимой сложностью.
При изучении морфологии растения мы не выделяем в нем отдельные части, отвечающие за отдельные фазы единого процесса, например, фотосинтеза. Фактически не существует централизованных частей, которые непосредственно координируют деятельность более низких уровней. Вместо этого мы находим отдельные части, которые действуют как независимые посредники, каждый из которых ведет себя достаточно сложно и при этом согласованно с более высокими уровнями. Только благодаря совместным действиям большого числа посредников образуется более высокий уровень функционирования растения. Поведение целого сложнее, чем поведение суммы его составляющих.
Многоклеточные животные, как и растения, имеют иерархическую структуру: клетки формируют ткани, ткани работают вместе как органы, группы органов определяют систему (например, пищеварительную) и так далее. Основной строительный блок всех растений и животных - клетка. Это пример общности в разных сферах.
3. Структура социальных институтов. Люди объединяются в группы для решения задач, которые не могут быть решены индивидуально. Чем больше организация, тем отчетливее проявляется в ней иерархическая структура. Транснациональные корпорации состоят из компаний, которые в свою очередь состоят из отделений, содержащих различные филиалы и т.д. Характерно, что степень взаимодействия между сотрудниками одного учреждения несомненно выше, чем между сотрудниками двух разных учреждений. Это пример различных связей – внутрикомпонентных и между отдельными компонентами.