- •1. Роль ПО и компьютеров в производстве, социальной жизни и науке.
- •2. Инженерия ПО
- •3. Проблемы разработки ПО и пути их решения
- •4. Характеристики качества ПО
- •5. Факторы, влияющие на качество ПО
- •6. Системный подход к разработке ПО. Временной и "пространственный " аспекты системного подхода
- •7. Этапы жизненного цикла ПО. Каскадная модель жизненного цикла ПО.
- •8. Конструирование ПО
- •9. Стандарты по разработке ПО. Виды и значение стандартов, требования стандартов
- •10. Три группы процессов создания ПО
- •11. Жизненный цикл ПО и процессы верификации.
- •12. Тестирование, верификация, валидация. Различие в понятиях. V образная модель жизненного цикла ПО
- •13. Спиральная модель ЖЦ ПО.
- •14. «Тяжелые и легкие» технологии разработки ПО. Экстремальное (ХР) программирование
- •16. Виды документов, выпускаемых на ПО по этапам разработки системы.
- •17. Итеративный характер проектирования ПО. Стадии проектирования.
- •19. CASE технологии разработки ПО.
- •20. Технология Ration Rose,UML
- •21. Структура системы, иерархия управления и структура ПО
- •22. Цикличность решения задач управления в системах с ЦВМ
- •23. Временная диаграмма работы системы. Представления работы ПО СТС в виде набора «сечений», выполняемых последовательно.
- •24. Представление работы ПО СТС в виде набора параллельных процессов.
- •25. Задачи и процессы. Контекст процесса
- •26. Обобщенная схема возможных вариантов совместного использования информации взаимодействующими процессами
- •Закон Амдела
- •28. Критический ресурс ЦВМ. Основное правило защиты ресурсов ЦВМ
- •29. Синхронизация процессов
- •Взаимное исключение процессов. Использование мьютексов
- •30. Задача синхронизации «Читатели-писатели»
- •Задачи синхронизации. «Обедающие философы»
- •31. Технология синхронизации ПО. Система Intel Thread Checker (ITC) и типы обнаруживаемых ею ошибок.
- •32. Конструирование ПО
- •33. Минимизация сложности ПО. Стандартные приемы в конструировании
- •35. Особенности конструирования программ для встроенных ЦВМ критических систем. Фиксированное распределение памяти
- •36. Проектирование снизу-вверх и проектирование сверху-вниз. Программные заглушки и их использование
- •37. Основные понятия структурного подхода к проектированию ПО.
- •Основные понятия объектно - ориентированного подхода (ООП) к конструированию ПО.
- •38. Мультиагентные технологии
- •39. Классы реального мира предметной области и искусственные объекты. Чрезмерно большие и неправильно названные классы
- •40. Эвристические приемы конструирования методов, предотвращение дублирования кода
- •41. Сокрытие информации. Две категории секретов программ.
- •Избыточное распространение информации в программе
- •Опасность использования глобальных переменных
- •45. Сопряжение между модулями. Критерии оценки сопряжения. Виды сопряжения
- •46. Эталоны для контроля работы ПО
- •47. Низкоуровневые средства обнаружения ошибочного функционирования ПО
- •Исключительные ситуации (Исключения)
- •48. Выбор способа обработки некорректных входных данных
- •49. Способы обработки возможных ошибок
- •50. Утверждения и общие принципы их использования
- •51. Стратегии безопасности. Три уровня реакции ПО на обнаруженную ошибку. Отказоустойчивые системы
- •54. Ошибки ПО, отладка и тестирование ПО.
- •55. Анализ обнаруживаемых в ПО ошибок и важность его проведения
- •Классификация ошибок ПО
- •56. Статическая отладка и динамическая отладка
- •Функциональная отладка
- •57. Принцип «белого» и «черного» ящика при динамической отладке ПО.
- •58. Структурная динамическая отладка
- •59. Автономная отладка (АО) и комплексная отладка (КО) ПО
- •60. Тестовое окружение ПО. Драйверы и заглушки.
- •61. Последовательность действий при отладке ПО.
- •Принципы выделения маршрутов для отладки.
- •62. Приближенный метод оценки числа вариантов для отладки ПО для «широкого графа» программы. Графы деревья, как модели структуры ПО
- •63. Регулярное дерево и устойчивость его структурного параметра
- •64. Контроль отлаженности ПО в процессе отладки.
- •67. Метод наименьших квадратов для аппроксимации экспериментальных данных
Те грубые ошибки, которые не позволяют вообще программе работать, обнаруживаются сразу и сразу же устраняются и речь идёт не о них. Опасны ошибки, имеющие скрытый характер, проявляющиеся при определенных наборах исходных данных. Для их устранения необходимо проводить специальную работу, по их выявлению, локализации и устранению. Эта работа называется отладка, для её выполнения разрабатываются специальные средства-инструменты и технологии.
Уменьшению количества первичных ошибок в программах способствует также приближение структуры ПО к структуре системы и сокращению семантического разрыва между задачами системы и их представлением в ПО. Использование объектно-ориентированного подхода к разработке ПО сокращает семантический разрыв между предметной областью и ПО, уменьшает сложность ПО при его проектировании.
Методы борьбы с ошибками ПО имеют еще два важнейших направления: конструирование ПО со свойствами устойчивости к ошибкам, связанные с автоматическим обнаружением ошибок и их обработкой, и проведение отладки ПО, которая требует создания эффективных и трудоемких инструментов.
Проблемы изменяемости ПО.
При разработке ПО существует проблема его изменяемости. В настоящее время факт постоянного изменения и уточнения требований к ПО в процессе его разработки осознан, как нормальное и неизбежное условие создания и развития, а не как следствие неумения разработчиков или отсутствия у них четкой организации труда.
Предусмотрение возможности безболезненных изменений это тот самый принцип, который отличает ПО от других видов промышленных продуктов, так как в большинстве случаев ПО разрабатывается в обстоятельствах, когда требования к нему недостаточно определены. Они уточняются по мере продвижения разработки системы и ПО для неё. Но способность ПО к развитию не возникает сама собой и не является следствием удачного стечения обстоятельств. Она требует определенных усилий, чтобы определить где и каким образом потребуется необходимость изменений, требует определенной стратегии структуризации ПО, так чтобы изменения были изолированы в особых частях ПО и не затрагивали остальные части при их проведении.
Структуризация ПО, выделяя и изолируя функциональные программные единицы, способствуют решению задачи внесения изменений в отдельно взятые фрагменты ПО, не затрагивая другие. Проведение изменений в ПО требует четкого планирования и четкой организации этого процесса. Тем не менее и в настоящее время изменения ПО, направленные на устранение ошибки не редко приводят к внесению в ПО дополнительных ошибок.
4. Характеристики качества ПО
Характеристик качества ПО придумано много, но не все они универсальны и применимы для любого ПО и не все они имеют численную меру. Иногда эти меры сложны в определении и измерении. В итоге процесс борьбы за качество ПО состоит из 5 шагов:
Определение критериев качества ПО и их мер.
6
Определение потребного уровня значений, выбранных критериев качества.
Определение методической базы измерения критериев качества.
Обеспечение качества ПО как множества процедур и стандартов и их адаптация для конкретного случая разработки ПО.
Периодическое измерение качества ПО - проведение процедур контроля качества. Текущий контроль качества ПО, который гарантирует выполнение всеми участниками разработки выбранных стандартов и правильной технологии разработки ПО.
Спомощью процессов верификации необходимо оценивать текущие характеристики качества ПО и отдельных артефактов процесса разработки и сопоставлять их с критериями и правилами, определенными в рамках системы обеспечения качества проекта.
Стехнической точки зрения верификация является неотъемлемыми элементами деятельности по обес-
печению качества.
Несмотря на огромное разнообразие программных продуктов, производимых в настоящее время и соответственно огромное количество критериев качества для них, удалось выделить некоторое количество базовых критериев качества ПО, которое легло в основу международного стандарта ИСО/МЭК 9126-92 «характеристики качества ПО».
Качество ПО в соответствии с этим стандартом оценивается шестью базовыми характеристиками:
функциональные возможности,
надежность,
эффективность,
практичность,
сопровождаемость,
мобильность или переносимость на другую аппаратную платформу или в другое программное окружение прежде всего ОС.
Здесь имеются в виду характеристики качества ПО, которые важны для пользователя ПО,и которыми должны руководствоваться разработчики ПО. Хотя у последних – свой рабор критериев качества. Данный набор базовых критериев качества не лишен недостатков. Например, в нем явно не хватает характеристик безопасности ПО. Безопасность ПО и безотказность его(надежность) это не одно и то же. Всех интересует вопрос, что следует за отказом ПО. Конечно, ПО бывает очень различным. Отказ ПО, управляющего полетом ракеты, самолета, химической установки, медицинского оборудования определенного вида - это всегда большой ущерб, большие экономические потери, необратимый ущерб экологии и жизни людей . Отказ ПО, обеспечивающего информационно справочные службы, неприятен, но не несет большого и необратимого ущерба.
[Введите текст]
5. Факторы, влияющие на качество ПО
Изучение опыта создания ПО различного назначения и масштаба во многих странах показало, во первых, наличие значительного числа провалов в этом вопросе и, во вторых , что разработка ПО должна прово-
дится не по интуиции или вдохновению т. е. быть не искусством, а достаточно формализованным процессом, который можно изучать ,воспроизводить и управление которым можно совершенствовать.
Одна из причин распространенности хаотического процесса создания ПО - стремление сэкономить на стадиях проектирования и отладки жизненного цикла.
Технология разработки ПО оказывает значительное влияние на его качество.
Вообще считается, что если ПО произведено по правильной технологии, прошло все предусмотренные ею этапы проектирования и отладки, то это ПО – качественное. На рис. 1 приведена укрупненная схема влияющих на качество ПО факторов.
С влиянием человеческого фактора все ясно – человеку свойственно ошибаться в том числе не выполнять установленные предписания и правила.
Качество ПО также пострадает, если для его разработки не будут выделены необходимые ресурсы в частности для закупки или создания необходимых инструментальных средств
Качество ПО пострадает, если график проведения работ будет выделять мало времени на жизненно важные этапы работ, комкая их, не будет предусматривать выпуск необходимых документов.
Качество ПО не будет обеспечено, если будет нарушена технология разработки, пропущены и не выполнены важные этапы, не выпущены необходимые документы
8
Таким образом, разработка ПО требует трех знаний: знаний в предметной области, знаний в области программирования, знаний в области технологии разработки ПО.
Инженерия ПО, как дисциплина, развивает подходы, методы и инструменты, следуя которым средний разработчик ПО, не будучи исключительно талантливым, может создать работоспособное и качественное ПО, работоспособную и качественную систему.
Безопасность для ПО «критических систем» - ограничение ущерба, наступающего после отказа ПО, должна быть обеспечена не только технологией разработки ПО, но и конструкцией самого ПО путем ор-
ганизации в нем фрагментов «аварийной защиты».
Изучению сквозной технологии разработки ПО: проектированию ПО, его разработке, отладке и эксплуатации посвящен настоящий курс. Собственно методы написания кодов, исполняемые на ЦВМ, изучаются в соответствующих курсах программирования.
6. Системный подход к разработке ПО. Временной и "пространственный " аспекты системного подхода
При рассмотрении технологии разработки ПО мы будем придерживаться системного подхода, который предполагает рассмотрение не каких-то отдельных аспектов проблемы разработки ПО, а проблемы в целом. Системный подход реализуется в «пространстве» и во времени.
Системный подход во времени рассматривается от момента формирования неудовлетворенной потребности в ПО до момента её разрешения.
Системный подход в "пространстве" предусматривает рассмотрение разрабатываемого ПО, программы, модуля или объекта, как части системы. При этом на базе изучения информационных потребностей системы, в которую будет входить разрабатываемое ПО, формулируются цели и набор функций ПО, анализируются прототипы программных средств. Формируются и документируются требования к ПО.
Современная технология разработки ПО рассматривает программирование - создание программного кода для ЭВМ, как один из этапов разработки в цепи последовательных этапов цикла разработки. Все эти этапы объединяются понятием жизненный цикл ПО и должны быть поддержаны соответствующими инструментальными программными и аппаратными средствами.
Изучению принципов построения этих средств, последовательности и содержания технологических этапов разработки ПО - цель курса.
Термин разработка включает в себя новую разработку, модификацию, повторное использование, перепрограммирование или любое другое действие, направленное на создание программного продукта.
[Введите текст]