4. Технологии производства программного обеспечения
Технологии (с греческого: ремесло + наука) - совокупность знаний о способах и средствах проведении производственных процессов.
В одном случае один человек осуществляет поэтапную разработку программы со своего терминала в непринужденной обстановке. Естественно, он создает сравнительно небольшую программу, не требующую особой оценки.
В другом случае разрабатывается очень сложное программное обеспечение, предназначенное для функционирования в реальном масштабе времени и требующее трудозатрат объемам в тысячи человеко-часов.
Эти две взаимно-противоположные ситуации характеризуются различной степенью формализации и проведении процесса разработки программных средств.
Степень формализованности и проведения процесса разработки программного обеспечения напрямую зависит от целей его создания, его величины, численности группы разработчиков и других факторов. От того, насколько правильно и удачно с точки зрения технологии разработки программного обеспечения построено приложение, зависит качество и жизнеспособность конечного продукта.
Под технологией разработки программного обеспечения (ТРПО) понимается совокупность обобщенных и систематизированных знаний, или наука об оптимальных способах (приемах) проведения процесса разработки программного обеспечения, обеспечивающего в заданных условиях получение программной продукции с заданными свойствами.
Технология разработки программного обеспечения представляет собой инженерный подход к разработке программных средств ЭВМ, охватывающий методологию программирования, проблемы обеспечения надежности программ, оценки рабочих характеристик и качества проектов.
Технология разработки программного обеспечения рассматривает вопросы управления проектированием систем программного обеспечения, а также средства и стандарты разработки программ.
Технология разработки программного обеспечения определяет некоторую профессиональную культуру работы специалистов (не только программистов), обеспечивающую заданный уровень производительности труда и качества получаемой в результате программной продукции.
Технология разработки программного обеспечения охватывает процесс разработки программного обеспечения от появления потребности в нем до его изготовления, передачи пользователю, модификации в процессе эксплуатации и прекращения его использования вследствие морального старения.
В идеале технология разработки программного обеспечения должна удовлетворять основным ниже перечисленным требованиям:
- Необходима стандартизация языков проектирования программ, оформления и испытания программных модулей, а также гарантии их качества. Это позволит значительно сократить дублирующие разработки, внедрить сборочное программирование и вести накопление на предприятиях и в стране высококачественного программного продукта для его многократного использования в качестве типовых комплектующих изделий.
- Вести постоянный контроль и обеспечение качества программ.
- Программы не должны содержать непроверенных путей и ситуаций функционирования, которые приводят к неожиданным результатам.
- Пользователю или покупателю программ необходимо дать четкое представление о возможностях данной программы и технологических условиях эксплуатации, при которых гарантируются определенные функции и качества.
- Технология разработки программного обеспечения должна обеспечивать отторжимость программного изделия от его разработчика, т.е. человеческий фактор в программировании быть сведен к минимуму.
- Технология разработки программного обеспечения и средства ее поддержки (автоматизации) должны обеспечивать целенаправленную работу, прежде всего коллектива программистов, а не отдельных личностей. Она должна побуждать коллектив работать только правильно и слаженно; должна автоматически блокировать любые не санкционированные технологией действия.
- Необходимо вести аккуратное документирование всех этапов разработки. Документация должна также заноситься и храниться на магнитных носителях. Доступ к этой информации должен быть открытым, простым и автоматизированным.
- Работа пользователя должна обеспечиваться развитой информационно-справочной системой.
- Средства автоматизации технологии должны охватывать все этапы работы коллектива программистов.
- Технология разработки программного обеспечения должна быть простой в освоении, с автоматически включаемыми средствами подсказки.
- Технология разработки программного обеспечения должна иметь средства автоматической фиксации в хронологическом порядке всех действий, выполняемых в процессе коллективного изготовления программного изделия - должны вестись и храниться в системе журналы (протоколы, дневники) разработки. Эти средства должны позволять восстанавливать любое состояние процесса разработки на любом интервале изготовления программного эксплуатации.
- З курсу
- З курсу
- Содержание
- Часть I. Инженерные основы программного обеспечения 10
- Часть II. Требования к программному обеспечению 33
- Часть III. Моделирование программного обеспечения 52
- Часть IV. Технологии разработки программного обеспечения 124
- Часть V. Письменная коммуникация. Документирование проекта Программного обеспечения 145
- Часть VI. Управление проектом программного обеспечения 192
- Предисловие
- Часть I. Инженерные основы программного обеспечения
- 1. Введение в программную инженерию
- 1.1. Вопросы и ответы об инженерии программного обеспечения
- 1.2. Профессиональные и этические требования к специалистам по программному обеспечению
- 2. Системотехника вычислительных систем
- 2.1. Интеграционные свойства систем
- 2.2. Система и ее окружение
- 2.3. Моделирование систем
- 2.4. Процесс создания систем
- 2.5. Приобретение систем
- 3. Процесс создания программного обеспечения
- 3.1. Модели процесса создания программного обеспечения
- 3.2. Итерационные модели разработки программного обеспечения
- 3.3. Спецификация программного обеспечения
- 3.4. Проектирование и реализация программного обеспечения
- 3.5. Эволюция программных систем
- 3.6. Автоматизированные средства разработки программного обеспечения
- 4. Технологии производства программного обеспечения
- Часть II. Требования к программному обеспечению
- 5. Требования к программному обеспечению
- 5.1. Функциональные и нефункциональные требования
- 5.2. Пользовательские требования
- 5.3. Системные требования
- 5.4. Документирование системных требований
- 6. Разработка требований
- 6.1. Анализ осуществимости
- 6.2. Формирование и анализ требований
- 6.3. Аттестация требований
- 6.4. Управление требованиям
- 7. Матрица требований. Разработка матрицы требований
- Часть III. Моделирование программного обеспечения
- 8. Архитектурное проектирование
- 8.1. Структурирование системы
- 8.2. Модели управления
- 8.3. Модульная декомпозиция
- 8.4. Проблемно-зависимые архитектуры
- 9. Архитектура распределенных систем
- 9.1. Многопроцессорная архитектура
- 9.2. Архитектура клиент/сервер
- 9.3. Архитектура распределенных объектов
- 9.4. Corba
- 10. Объектно-ориентированное проектирование
- 10.1. Объекты и классы объектов
- 10.2. Процесс объектно-ориентированного проектирования
- 10.2.1. Окружение системы и модели ее использования
- 10.2.2. Проектирование архитектуры
- 10.2.3. Определение объектов
- 10.2.4. Модели архитектуры
- 10.2.5. Специфицирование интерфейсов объектов
- 10.3. Модификация системной архитектуры
- 11. Проектирование систем реального времени
- 11.1. Проектирование систем реального времени
- 11.2. Управляющие программы
- 11.3. Системы наблюдения и управления
- 11.4. Системы сбора данных
- 12. Проектирование с повторным использованием компонентов
- 12.1. Покомпонентная разработка
- 12.2. Семейства приложений
- 12.3. Проектные паттерны
- 13. Проектирование интерфейса пользователя
- 13.1. Принципы проектирования интерфейсов пользователя
- 13.2. Взаимодействие с пользователем
- 13.3. Представление информации
- 13.4. Средства поддержки пользователя
- 13.5. Оценивание интерфейса
- Часть IV. Технологии разработки программного обеспечения
- 14. Жизненный цикл программного обеспечения: модели и их особенности
- 14.1. Каскадная модель жизненного цикла
- 14.2. Эволюционная модель жизненного цикла
- 14.2.1. Формальная разработка систем
- 14.2.2. Разработка программного обеспечения на основе ранее созданных компонентов
- 14.3. Итерационные модели жизненного цикла
- 14.3.1 Модель пошаговой разработки
- 14.3.2 Спиральная модель разработки
- 15. Методологические основы технологий разработки программного обеспечения
- 16. Методы структурного анализа и проектирования программного обеспечения
- 17. Методы объектно-ориентированного анализа и проектирования программного обеспечения. Язык моделирования uml
- Часть V. Письменная коммуникация. Документирование проекта Программного обеспечения
- 18. Документирование этапов разработки программного обеспечения
- 19. Планирование проекта
- 19.1 Уточнение содержания и состава работ
- 19.2 Планирование управления содержанием
- 19.3 Планирование организационной структуры
- 19.4 Планирование управления конфигурациями
- 19.5 Планирование управления качеством
- 19.6 Базовое расписание проекта
- 20. Верификация и аттестация программного обеспечения
- 20.1. Планирование верификации и аттестации
- 20.2. Инспектирование программных систем
- 20.3. Автоматический статический анализ программ
- 20.4. Метод "чистая комната"
- 21. Тестирование программного обеспечения
- 21.1. Тестирование дефектов
- 21.1.1. Тестирование методом черного ящика
- 21.1.2. Области эквивалентности
- 21.1.3. Структурное тестирование
- 21.1.4. Тестирование ветвей
- 21.2. Тестирование сборки
- 21.2.1. Нисходящее и восходящее тестирование
- 21.2.2. Тестирование интерфейсов
- 21.2.3. Тестирование с нагрузкой
- 21.3. Тестирование объектно-ориентированных систем
- 21.3.1. Тестирование классов объектов
- 21.3.2. Интеграция объектов
- 21.4. Инструментальные средства тестирования
- Часть VI. Управление проектом программного обеспечения
- 22. Управление проектами
- 22.1. Процессы управления
- 22.2. Планирование проекта
- 22.3. График работ
- 22.4. Управление рисками
- 23. Управление персоналом
- 23.1. Пределы мышления
- 23.1.1. Организация человеческой памяти
- 23.1.2. Решение задач
- 23.1.3. Мотивация
- 23.2. Групповая работа
- 23.2.1. Создание команды
- 23.2.2. Сплоченность команды
- 23.2.3. Общение в группе
- 23.2.4. Организация группы
- 23.3. Подбор и сохранение персонала
- 23.3.1. Рабочая среда
- 23.4. Модель оценки уровня развития персонала
- 24. Оценка стоимости программного продукта
- 24.1. Производительность
- 24.2. Методы оценивания
- 24.3. Алгоритмическое моделирование стоимости
- 24.3.1. Модель сосомо
- 24.3.2. Алгоритмические модели стоимости в планировании проекта
- 24.4. Продолжительность проекта и наем персонала
- 25. Управление качеством
- 25.1. Обеспечение качества и стандарты
- 25.1.1. Стандарты на техническую документацию
- 25.1.2. Качество процесса создания программного обеспечения и качество программного продукта
- 25.2. Планирование качества
- 25.3. Контроль качества
- 25.3.1. Проверки качества
- 25.4. Измерение показателей программного обеспечения
- 25.4.1. Процесс измерения
- 25.4.2. Показатели программного продукта
- 26. Надежность программного обеспечения
- 26.1. Обеспечение надежности программного обеспечения
- 26.1.1 Критические системы
- 26.1.2. Работоспособность и безотказность
- 26.1.3. Безопасность
- 26.1.4. Защищенность
- 26.2. Аттестация безотказности
- 26.3. Гарантии безопасности
- 26.4. Оценивание защищенности программного обеспечения
- 27. Совершенствование производства программного обеспечения
- 27.1. Качество продукта и производства
- 27.2. Анализ и моделирование производства
- 27.2.1. Исключения в процессе создания по
- 27.3. Измерение производственного процесса
- 27.4. Модель оценки уровня развития
- 27.4.1. Оценивание уровня развития
- 27.5. Классификация процессов совершенствования