
- •1. Проблемы разработки по и пути их решения.
- •2. Характеристики качества по, важные для пользователя. Факторы, влияющие на качество по.
- •3. Временной и «пространственный» аспекты системного подхода к разработке по.
- •5. Конструирование по и внутренние критерии качества по, важные для разработчика.
- •6. Стандарты по разработке по. Два вида стандартов, их значения, требования стандартов.
- •7. Три группы процессов создания по.
- •8. Жизненный цикл по и процессы верификации.
- •9. Тестирование, верификация, валидация и V-образная модель жизненного цикла по.
- •11. «Тяжёлые и быстрые» технологии разработки по. Экстремальное (xp) программирование.
- •12. Три вида программных разработок с точки зрения конструирования, технологии создания и эксплуатации. Сравнение методов планирования, конструирования, отладки и т. П.
- •13. Виды документов, выпускаемых на по, по этапам разработки системы.
- •16. Case технологии разработки по. Проблемно ориентированные технологии разработки по. Пакеты scada.
- •18. Структура системы, иерархия управления и структура по.
- •19. Цикличность (периодичность) во времени решения задач управления и работы.
- •20. Временная диаграмма работы системы и по.
- •1. Кризис программного обеспечения (по). Проблемы и цели программной инженерии. Определение инженерии по.
- •2. Что такое по. Типы программных продуктов, их отличие друг от друга.
- •3. Характеристики качественного по.
- •5. Профессиональные и этические требования к специалистам по программному обеспечению.
- •2. Функциональная схема типового процессора.
- •4. Состав, устройство и принцип действия основной памяти.
- •5. Конструкция устройств ввода-вывода информации.
- •6. Принцип действия цифровых комбинационных устройств.
- •8. Многомашинные и многопроцессорные вс. Классификация Флинна.
- •10. Прямой, обратный и дополнительный коды двоичных чисел.
1. Кризис программного обеспечения (по). Проблемы и цели программной инженерии. Определение инженерии по.
С.Н. Карпенко — Введение в программную инженерию
Программная инженерия обычно ассоциируется с разработкой больших и сложных программ коллективами разработчиков. Становление этой области вызвано проблемами, связанными с высокой стоимостью ПО, сложностью его создания, необходимостью управления и прогнозирования процессов разработки.
В конце 60-х – начале 70-х годов 20 века произошёл первый кризис программного обеспечения. Он выражался в быстром росте стоимости разработки ПО, которая приближалась к стоимости аппаратуры («железа»). Динамика этого роста предполагала, что программистов будет требоваться всё больше. Тогда и возникло понятие программной инженерии (или технологии промышленного программирования, как это называлось в России). Развитие этой дисциплины было направлено на сокращение стоимости программ и их сроков разработки. Это была главная цель.
В преддверии первого кризиса и в его процессе состоялось несколько встреч руководителей программных проектов (конференция подкомитета НАТО по науке и техники в 1968 г., Лондонская встреча разработчиков) на которых были выдвинуты основополагающие тезисы Software Engineering’а. Были рассмотрены существующие проблемы проектирования, разработки, распространения и поддержки программ, впервые введена концепция SLC – Software Lifetime Cycle или жизненного цикла ПО. В 1970 г. Уинстон Уокер Ройс произвёл идентификацию нескольких стадий ЖЦ ПО, в результате чего было высказано предположение, что контроль выполнения этих стадий приведёт к повышению качества ПО и сокращению стоимости разработки.
Первые возникавшие проблемы:
Повторное написание одинаковых фрагментов кода для одинаковых или похожих задач. Решение: модульное программирование, библиотеки кода. Модули и библиотеки предоставляют интерфейс связи с основной программой по типам данных и по управлению.
Вытекающая из первой проблемы – проблематичное использование модулей со сложным интерфейсом. Решение: разработка специальных форм представления модулей и организации из интерфейсов, чтобы они всегда были лаконичными.
Переход от разработки простых программ к разработке сложных программных комплексов с трудом ложился на ранее выстроенные процессы разработки. Решение: Дисциплина проектирования и разработки: планирование и документирование проекта, поддержка соответствия кода проектной документации. А также структурное программирование с разбиением программы на основные функциональные подсистемы.
Учащающиеся изменения требований к программе ещё на стадии проектирования. Решение: объектно-ориентированное проектирование и программирование облегчило внесение изменений, так как это стало развитием модульного программирования и позволило постоянно держать в изоляции отдельные элементы программы.
Продолжение кризиса программирования произошло на рубеже 80-90-х годов, так как на это время пришлось начало информационно-технологической революции, вызванной ростом использовании информационных средств (доступные ПК, Интернет, глобальные и локальные сети и т. д.).
Например, США вливает ежегодно более $200 млрд. на более чем 170 тыс. проектов разработки ПО в сфере IT. При этом треть из них закрываются не завершившись, а половина превышают первоначальные оценки бюджета/срока и качества (см. рис.). Денежные потери от недополученного эффекта внедрения ПО измеряются триллионами.
Итак, финальное определение программной инженерии. Программная инженерия — это инженерная дисциплина, которая связана со всеми аспектами производства ПО от начальных стадий создания спецификации до поддержки системы после сдачи в эксплуатацию.