- •ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- •Состав курса
- •Схема освоения курса
- •Содержание теоретического курса
- •…термины технологии программирования
- •Технология программирования
- •Программная инженерия:
- •Что такое программное обеспечение?
- •Роль программного обеспечения
- •Стоимость программного обеспечения
- •Структура стоимости ПО
- •Цель программной инженерии
- •Изучение программной инженерии
- •Изучение программной инженерии включает:
- •Изучение программной инженерии
- •Принципы
- •Изучение программной инженерии
- •Практика: методы решения задач
- •Конфигурационное управление Цель:
- •Конфигурационное управление Состав:
- •Конфигурационное управление Результаты
- •Конфигурационное управление Проблемы использования:
- •Практика
- •Управление проектом
- •Практика
- •Метрики
- •Практика
- •Эргономика и пользовательские интерфейсы
- •Практика
- •Документация
- •Практика
- •Взаимодействие с пользователями
- •Практика
- •Системный анализ
- •Практика
- •Отладка
- •Изучение программной инженерии
- •Приложения
- •Изучение программной инженерии
- •Инструментальные средства
- •Изучение программной инженерии
- •Математика
- •Программная инженерия и информатика
- •Программная инженерия и системная инженерия
- •Методы программной инженерии
- •Состав метода
- •Цель применения методов программной инженерии
- •Основные трудности программной инженерии
- •CASE (Computer-Aided Software Engineering)
- •Заключение
- •Использованные источники и материалы
Изучение программной инженерии
ПринципыПрактикаПриложения
Инструментальные средства
Математика
Формальные основы и методы, семантика и схемы программ
© 2005, В.В.Хашковский, Д.П.Калачев. |
41 |
Математика
Программирование и языки программирования — это математические объекты, подверженные формальному описанию
Инженерные дисциплины помимо всего прочего, имеют серьезный математический базис
© 2005, В.В.Хашковский, Д.П.Калачев. |
42 |
Программная инженерия и информатика
Информатика занимается теорией и методами компьютерных и программных систем.
Программная инженерия занимается практическими проблемами создания ПО.
В идеале, вся программная инженерия должна быть поддержана какими-то теориями информатики, но практике все значительно сложнее.
Инженеры зачастую применяют первые попавшиеся методы, а элегантные теории информатики не всегда могут быть
применены к реальным большим системам.
© 2005, В.В.Хашковский, Д.П.Калачев. |
43 |
Программная инженерия и системная инженерия
Системная инженерия занимается всеми аспектами создания и эволюции комплексных систем, в которых ПО играет заметную роль.
Программная инженерия является частью системной инженерии, наряду с созданием аппаратных платформ, созданием архитектуры, системной интеграцией и т.п.
В системной инженерии основной упор приходится именно на системные вопросы (спецификация системы, проектирование архитектуры, интеграция и внедрение), а не на составные части системы.
Системная инженерия значительно старше программирования как дисциплина
© 2005, В.В.Хашковский, Д.П.Калачев. |
44 |
Методы программной инженерии
Метод программной инженерии — это структурный подход к созданию ПО, нацеленный на создание эффективного ПП наиболее прибыльным путем.
Функционально-ориентированные методы (ориентированы на идентификацию основных функций системы):
Структурный анализ Тома ДеМарко (1978)
JSD Джексона (1983)..
Объектно-ориентированные методы
Рамбо (1991)
Буч (1994)
Со временем эти методы были объединены в UML.
Практически все методы построены на идее создания графических моделей системы с последующим использованием этих моделей
в качестве спецификации или архитектуры системы.
© 2005, В.В.Хашковский, Д.П.Калачев. |
45 |
Состав метода
Методы должны включать в себя следующие компоненты:
Описание моделей системы и их нотаций
(например, объектные модели, конечно-автоматные модели и т.д.)
Правила, накладывающие ограничения на использование моделей в системе
Рекомендации — эвристики, характеризующие хорошие приемы проектирования в данном методе
(например, рекомендация о том, что ни у одного объекта не должно быть больше семи подобъектов)
Руководство к действию — описание действий, которым можно следовать во время создания моделей и последующего их использования
(все атрибуты должны быть документированы до определения операций, связанных с этим объектом)
© 2005, В.В.Хашковский, Д.П.Калачев. |
46 |
Цель применения методов программной инженерии
обеспечение следующих свойств ПО:
Сопровождаемость (maintainability). Система должна быть написана с расчетом на дальнейшее развитие. Это критическое свойство системы, т.к. изменения ПО неизбежны вследствие изменения бизнеса.
Надежность (dependability). Надежность включает в себя отказоустойчивость, безопасность и защищенность. Надежное ПО не должно приводить к физическому или экономическому ущербу в случае сбоя системы.
Эффективность (efficiency). ПО не должно впустую тратить системные ресурсы, такие как память или процессорное время. Поэтому эффективность включает в себя отзывчивость, время процессора, утилизацию памяти и т.п.
Удобство использования (usability). ПО должно быть легким в использовании, причем именно тем типом пользователей, на которых рассчитано приложение. Это включает в себя интерфейс пользователя и адекватную документацию
© 2005, В.В.Хашковский, Д.П.Калачев. |
47 |
Основные трудности программной инженерии
Устаревшие системы (legacy challenge), которые необходимо сопровождать и развивать
Работа в гетерогенной среде (heterogeneity challenge) с распределенными системами, включающими в себя различное программное и аппаратное обеспечение
Недостаток времени, отводимого на разработку программных продуктов (delivery challenge)
Суперпозиция проблем
© 2005, В.В.Хашковский, Д.П.Калачев. |
48 |
CASE (Computer-Aided Software Engineering)
Понятие CASE включает в себя широкий комплекс программ, предназначенных для поддержки процессов создания программного продукта, включая анализ требований, моделирование, отладку и тестирование. Большинство современных методов поддержаны соответствующими CASE- средствами.
CASE-средства:
CASE-средства верхнего уровня - поддерживают анализ и проектирование, иногда называют (upper-CASE tools)
CASE-средства нижнего уровня, поддерживают реализацию и
тестирование, (такие как отладчики, средства анализа системы, генераторы тестов и редакторы программ), называют средствами нижнего уровня (lower-CASE tools).
© 2005, В.В.Хашковский, Д.П.Калачев. |
49 |
Заключение
Программная инженерия – это это инженерная дисциплина, которая связана со всеми аспектами производства ПО
Программные продукты состоят из разработанных программ и связанной с ними документации. Важными атрибутами продукта являются сопровождаемость, надежность, эффективность и удобство использования
Программный процесс состоит из действий, необходимых для разработки программного продукта. Основными действиями являются спецификация, разработка, тестирование и эволюция
Методы представляют собой организованные способы разработки ПО. Они включают в себя рекомендации по следованию процессу, нотации, используемые в методе, правила описания системы и руководства по применению
CASEсредства представляют собой программные системы, разработанные для поддержки типовых действий в программном процессе, таких как редактура проектировочных диаграмм, проверка целостности этих диаграмм и отслеживание запущенных программных тестов
© 2005, В.В.Хашковский, Д.П.Калачев. |
50 |