Опубликован: 04.04.2012 | Доступ: свободный | Студентов: 1988 / 60 | Оценка: 4.60 / 4.40 | Длительность: 13:49:00
Лекция 11:

Технологии инженерии программ

Дальнейшее чтение

Carlo Ghezzi, Mehdi Jazayeri and Dino Mandrioli: Fundamentals of Software Engineering, 2nd Edition, Prentice-Hall, 2002.

Хорошо известный учебник по инженерии программ, дающий полное представление о предмете. Другими хорошими учебниками являются: S.L. Pfleeger, J. Atlee (3rd edition, Prentice Hall, 2005) и Roger Pressman (6th edition, McGraw Hill, 2005).

 Карло Чеззи (2008) Дино Мандриоли (2008)

Рис. 10.2. Карло Чеззи (2008) Дино Мандриоли (2008)

IEEE Computer Society (Software Engineering Standards Committee): IEEE Recommended Practice for Software Requirements Specifications, IEEE Std 830-1998,

Доступна при условии регистрации на сайте: ieeexplore.ieee.org/xpl/tocresult.jsp?isNumber =15571

Краткий стандарт, описывающий лучшие практики написания документов требований, включая рекомендуемую структуру документа, которая широко применятся в индустрии.

Bertrand Meyer: On Formalism in Specifications, in IEEE Software, vol. 3, no. 1, January 1985, pages 6-25.

Доступна на сайте: se.ethz.ch/~meyer/publications/computer/formalism.html

Старая статья, объясняющая, почему полезно для задания спецификаций использовать математические методы.

John V. Guttag and James J. Horning: The Algebraic Specification of Abstract Data Types, in ActaInformatica, vol. 10, pages 27-52, 1978.

Конструктивная статья по теории абстрактных типов данных, лежащих в основе объектной технологии. Вводит понятие "достаточной полноты".

 Джим Хорнинг (2007)

Рис. 10.3. Джим Хорнинг (2007)

KarlE. Wiegers: SoftwareRequirements, MicrosoftPress, 2003.

Набор полезных правил для написания хороших документов требований.

Michael Jackson: Software Requirements and Specifications: A Lexicon of Practice, Principles and Prejudices, ACM Press, Addison-Wesley, 1995,

Прекрасное обсуждение требований и спецификаций.

Axel van Lamsweerde: Requirements Engineering, Wiley, 2009.

Еще одна прекрасная книга по требованиям, наиболее современная, от одного из авторитетов в этой области. Хорошая теория и примеры. Bertrand Meyer and Jim Woodcock (editors): VSTTE (Verified Software: Theories, Tools, Experiments), LNCS 4171, Springer-Verlag, 2008. Proceedings of a 2005 conference at ETH Zurich,

Труды содержат работу Тони Хоара "GrandChallenge". Хорошая оценка состояния искусства верификации программ.

Frederick P. Brooks: The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition, Addison-Wesley, 1995 (the original edition is from 1975, same publisher).

На русском языке: "Мифический человеко-месяц" см., например, на сайте: http://www.webkomora.com.ua/ru/articles/web/management/man-month.html

Фред Брукс из IBM управлял разработкой OS/360, одной из первых сложных операционных систем, доступной на серии компьютеров. Эта книга, где он суммирует свой опыт в коротких эссе, должна быть упомянута, так как считается классикой в инженерии программ, она в большой степени стала народным фольклором.

 Фредерик Брукс (2007)

Рис. 10.4. Фредерик Брукс (2007)

Software Engineering Institute: Capability Maturity Model Integration (CMMI)

Обзор, доступный на сайте: http://www.sei.cmu.edu/cmmi/adoption/pdf/cmmi-overview07.pdf

Software Engineering Institute: Capability Maturity Model® Integration (CMMISM), Version 1.1, CMMISM for Systems Engineering, Software Engineering, Integrated Product and Process Development and Supplier Sourcing (CMMI-SE/SW/IPPD/SS, V1.1) Staged Representation CMU/SEI-2002-TR-012 ESC-TR-2002-012.

Доступна на сайте: tinyurl.com/kf9uy (shorthand for http://www.sei.cmu.edu/pub/documents/02.reports/pdf/02tr012.pdf#search=%22cmmi%20staged%20representation%22).

Это официальное, детальное описание CMMI, поэтапного представления.

Непрерывный вариант: tinyurl.com/gjla9

Watts S. Humphrey: PSP: A Self-Improvement Process for Software Engineering, Addison-Wesley, 2005

 Уотс Хэмпфри (2007)

Рис. 10.5. Уотс Хэмпфри (2007)

Описывает персональный процесс разработки — PSP (Personal Software Process) для программистов, применяющих стиль правил практики инженерии, производных частично от идей CMMI об ответственности и воспроизводимости.

Ключевые концепции, изложенные в этой лекции

  • Инженерия программ включает в себя программирование наряду с другими видами деятельности — техническими и не техническими, необходимыми при создании программных систем. Ее целью является создание индустриальных программных продуктов с заданными стандартами качества.
  • Инженерия программ включает пять главных категорий задач, охватываемых акронимом DIAMO: описание, реализацию, оценку, управление, функционирование.
  • Инженерия программ воздействует как на процесс разработки, так и на конечный продукт.
  • Качество продукта и процесса включает много факторов, начиная от корректности и эффективности до стоимости и воспроизводимости.
  • Программный проект должен иметь четкое представление о сопричастниках — лицах, заинтересованных в проекте, и о том, какие цели важны для каждой их категории.
  • Разработка ПО включает несколько определенных задач, которые модели жизненного цикла пытаются выстроить последовательно. Agile-методы (гибкая методология) уделяют меньше внимания процессам, отдавая предпочтение работающему коду и человеческому взаимодействию.
  • Анализ требований к системе является основной задачей каждого проекта. Он включает точное описание свойств системы, не содержащее предположений об их возможной реализации, точное описание потребностей сопричастников, что позволяет следить за реализацией системы.
  • Требования к системе включают функциональные аспекты, специфицирующие функции системы, и не функциональные аспекты, такие как ограничения производительности. Существует IEEE-стандарт для структурирования документов требований.
  • Проблемные свойства отражают внешние ограничения, машинные — выражают решения о свойствах программной системы.
  • Верификация и проверка правильности могут использовать динамические методы, в частности тестирование, и статические, такие как обзоры кода и проекта, статический анализ, доказательства корректности и проверки на моделях.
  • Целью тестирования является обнаружение дефектов системы, выявляемых при отказах во время выполнения тестов.
  • Модель CMMI определяет пять уровней зрелости процесса разработки, применяемого в организации. На пятом, самом высоком уровне процесс определен, документирован, подвержен измерениям, воспроизводим и самоулучшаем.

Новый словарь

Adequacy Адекватность Built-in assessment Встроенное оценивание
Correctness Корректность Correctibility Способность к изменениям
Cost control Управление стоимостью Efficiency Эффективность
Extendibility Расширяемость Factor (of software quality) Фактор (качества ПО)
Goal (CMMI) Цель (CMMI) Lifecycle Жизненный цикл
Maintenance Сопровождение Measurability Измеримость
Portability Переносимость Practice (CMMI) Практика (CMMI)
Predictability Предсказуемость Process (vs product) Процесс (в сравнении с продуктом)
Process area (CMMI) Область процесса (CMMI) Product (vs process) Продукт (в сравнении с процессом)
Production software Производство ПО Reproducibility Воспроизводимость
Reusability Повторное использование Robustness Устойчивость
Security Безопасность Self-improvement Самоулучшение
Software engineering Инженерия программ Stakeholder Сопричастник

Упражнения

Словарь

Дайте точное определение терминам словаря.

Сопричастники

Могут ли сопричастники программного проекта быть соперниками? Обсудите, в какой части они или концепции о них могут играть роль в построении ПО и управлении проектом.

Лучше позже или лучше с ошибками, но раньше?

В обзоре CMMI, указанном в разделе "Дальнейшее чтение", приводится высказывание (и его критика) неназванного старшего менеджера: "Я бы предпочел вовремя выпустить проект с ошибками, чем опоздать с выпуском. Позже мы всегда сможем исправить ошибки". Обсудите это высказывание с позиций инженерии программ.

Надежда Александрова
Надежда Александрова

Уточните пожалуйста, какие документы для этого необходимо предоставить с моей стороны. Курс "Объектно-ориентированное программирование и программная инженения".