Уточните пожалуйста, какие документы для этого необходимо предоставить с моей стороны. Курс "Объектно-ориентированное программирование и программная инженения". |
Технологии инженерии программ
Дальнейшее чтение
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).
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.
Конструктивная статья по теории абстрактных типов данных, лежащих в основе объектной технологии. Вводит понятие "достаточной полноты".
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, одной из первых сложных операционных систем, доступной на серии компьютеров. Эта книга, где он суммирует свой опыт в коротких эссе, должна быть упомянута, так как считается классикой в инженерии программ, она в большой степени стала народным фольклором.
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
Описывает персональный процесс разработки — 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, указанном в разделе "Дальнейшее чтение", приводится высказывание (и его критика) неназванного старшего менеджера: "Я бы предпочел вовремя выпустить проект с ошибками, чем опоздать с выпуском. Позже мы всегда сможем исправить ошибки". Обсудите это высказывание с позиций инженерии программ.