Скачать презентацию ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Инженерия программных средств Лекции 1 Скачать презентацию ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Инженерия программных средств Лекции 1

Лекция 1 ТП- инженерная наука.pptx

  • Количество слайдов: 15

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Инженерия программных средств ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Инженерия программных средств

Лекции: 1 раз в неделю Лабораторные: 1 раз в 2 недели Форма контроля: зачет Лекции: 1 раз в неделю Лабораторные: 1 раз в 2 недели Форма контроля: зачет Консультации: чт. , сб. 14. 15 2

ЛИТЕРАТУРА 1. Л. Г. Гагарина, Е. В. Кокорева, Б. Д. Виснадул. Технология разработки программного ЛИТЕРАТУРА 1. Л. Г. Гагарина, Е. В. Кокорева, Б. Д. Виснадул. Технология разработки программного обеспечения 2. Стив Макконнелл. Профессиональная разработка программного обеспечения 3. Кент Бек. Экстремальное программирование 4. Скотт Амблер - Гибкие технологии: экстремальное программирование и унифицированный процесс разработки 5. Иванова Г. С. Технология программирования 6. Вигерс Карл. Разработка требований к программному обеспечению 7. Фредерик Брукс. Мифический человеко-месяц 8. Николас Дж. Карр - Блеск и нищета информационных технологий 3

ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ Основная тема данного курса — методы разработки «больших» и сложных ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ Основная тема данного курса — методы разработки «больших» и сложных программ - программных продуктов, программных комплексов. Технология программирования — совокупность методов и средств, применяемых в процессе разработки программного обеспечения (программных продуктов, программных комплексов). Программа (program, routine) — упорядоченная последовательность команд (инструкций) компьютера для решения задачи. Программное обеспечение (software) — совокупность программ обработки данных и необходимых для их эксплуатации документов. 4

Задача (problem, task) — проблема, подлежащая решению. Приложение (application) — программная реализация на компьютере Задача (problem, task) — проблема, подлежащая решению. Приложение (application) — программная реализация на компьютере решения задач Процесс создания программ можно представить как последовательность следующих действий: 1) постановка задачи; 2) алгоритмизация решения задачи; 3) программирование. Постановка задачи (problem definition) — это точная формулировка решения задачи на компьютере с описанием входной и выходной информации. Алгоритм — система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных (входной информации) в желаемый результат (выходную информацию) за конечное число шагов. Программирование (programming) — теоретическая и практическая деятельность, связанная с созданием программ. 5

Какой должна быть технология программирования? 6 Какой должна быть технология программирования? 6

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете Стив Макконнелл 7

ПРОГРАММИРОВАНИЕ – ИСКУССТВО, РЕМЕСЛО, НАУКА ИЛИ ИНДУСТРИЯ? Цель науки – расширение горизонтов познания. Узнать ПРОГРАММИРОВАНИЕ – ИСКУССТВО, РЕМЕСЛО, НАУКА ИЛИ ИНДУСТРИЯ? Цель науки – расширение горизонтов познания. Узнать нечто новое о мире, в котором мы живем, установление закономерностей, законов природы. Цель искусства – воздействие на эмоции человека, получение эстетического удовольствия Кнут Искусство программирования. , Джон Бентли - Жемчужины творчества программистов "Затем, что ветру и орлу, И сердцу девы нет закона, Гордись: таков и ты, поэт, И для тебя условий нет". А. С. Пушкин Цель инженерии или технологии – конструирование, созидание чеголибо для практического применения. 8

Далее Технология программирования = Инженерия программных средств Программная инженерия (Software Engineering) является отраслью Computer Далее Технология программирования = Инженерия программных средств Программная инженерия (Software Engineering) является отраслью Computer science, изучает вопросы построения компьютерных программ, отражает закономерности ее развития, обобщает опыт программирования в виде комплекса общих знаний и правил регламентации инженерной деятельности разработчиков ПО. Отличия от науки Как инженерная дисциплина, она охватывает все аспекты создания ПО, начиная от формирования требований до создания, сопровождения и снятия с эксплуатации ПО, а также включает инженерные методы оценки трудозатрат, стоимости, производительности и качества, управление проектом разработки и коллективом разработчиков. В программной инженерии, инженеры – это специалисты, выполняющие практические работы по реализации программ с применением теории, методов и средств компьютерной науки. Компьютерная наука (computer science) охватывает теорию и методы построения вычислительных и программных систем, тогда как программная инженерия рассматривает вопросы практического построения ПО. 9

В отличие от науки, целью которой есть получение знаний, для инженерии знание – это В отличие от науки, целью которой есть получение знаний, для инженерии знание – это способ получения некоторой пользы. Ф. Брукс: «Ученый строит, чтобы научиться, инженер учится, чтобы строить» . Таким образом, разработку программных систем можно считать инженерной деятельностью. Отличия от традиционной инженерии, где: • ветви инженерии имеют высокую степень специализации, а у программной инженерии специализация заметна только в довольно узких применениях (например, операционные системы, • трансляторы); объекты хорошо определены и манипуляции с ними происходят в узком контексте типичных проектных решений и деталей, которые отвечают типовым требованиям заказчиков и касаются отдельных деталей, а не общих вопросов, тогда как у программной инженерии подобная типизация отсутствует; • отдельные готовые решения классифицированы и каталогизированы, а в программной инженерии каждая новая разработка - это новая проблема, в которой довольно тяжело рассмотреть аналогию с ранее разработанными системами. • Результат заранее известен, а в программировании - нет 10

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ УЖЕ НЕ РЕМЕСЛО В настоящее время мировая компьютерная общественность объединились в профессиональные ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ УЖЕ НЕ РЕМЕСЛО В настоящее время мировая компьютерная общественность объединились в профессиональные комитеты, которые ведут разработку • ядра знаний (SWEBOK) • этического кодекса программиста • учебных курсов подготовки соответствующих специалистов • обучение специальности • сертификацию специалистов в области программной инженерии В разработке больших программных проектов, кроме программистов, принимают участие: – менеджеры, которые планируют и руководят проектом, отслеживают сроки и затраты; – инженеры службы хранения готовых компонентов в библиотеках и репозитариях; – технологи, которые определяют инженерные методы и стандарты, регламентирующие и регулирующие процесс реализации проекта; – тестировщики, которые проверяют правильность выполнения процесса проектирования и продуктов процессов, на основе собранных данных проводят измерения разных характеристик качества, включая оценку надежности ПО. 11

НА СЕГОДНЯШНИЙ ДЕНЬ ü накоплен значительный объем интеллектуальных знаний в области создания ПО; ü НА СЕГОДНЯШНИЙ ДЕНЬ ü накоплен значительный объем интеллектуальных знаний в области создания ПО; ü появились новые разнообразные методы анализа, моделирования и проектирования ПО; ü есть необходимость совершенствования методов обнаружения ошибок в ПО; ü есть потребность эффективной организации коллективов разработчиков ПО и оценки их деятельности; ü широко используются готовые программные компоненты, высоко технологические средства и инструменты разработки ПО; ü характерна реинженерия компонентов и систем для их адаптации к новым изменяющимся условиям сред и сетей. 12

Программная инженерия, как инженерная дисциплина, делает главный акцент на повышение качества и производительности ПО Программная инженерия, как инженерная дисциплина, делает главный акцент на повышение качества и производительности ПО за счет применения новых и усовершенствованных: • методов проектирования ПО; • готовых компонентов и методов их генерации; • методов эволюции ПО; • методов верификации и тестирования ПО; • инструментальных средств поддержки; • методов управления проектами, • методов оценки качества, производительности, стоимости и т. п. ; • стандартизации процессов разработки ПО (ISO/IEC 12207, ISO/IEC 15504, ISO 9126 и др. ), регламентирующих этапы ЖЦ; подходов к оценке продуктов и процессов. А надо ли это? Может лучше так: напишем – исправим? . . . 13

СТАТИСТИКА УСПЕШНОСТИ IT-ПРОЕКТОВ Результат 2004 2006 2008 20010 2012 Успех 29% 35% 32% 37% СТАТИСТИКА УСПЕШНОСТИ IT-ПРОЕКТОВ Результат 2004 2006 2008 20010 2012 Успех 29% 35% 32% 37% 39% Провал 18% 19% 24% 21% 18% Остальные 53% 46% 44% 42% 43% Источник: The Standish Group International, Chaos reports • Нарушение сроков • Gartner: Превышение стоимости в Затраты на IT • Ненадлежащее качество $3, 8 трлн мире в 2014 году 14

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ Проектировани е ПО Анализ и планировани е Управление требованиями Технология программирования Сопровождение СОДЕРЖАНИЕ ДИСЦИПЛИНЫ Проектировани е ПО Анализ и планировани е Управление требованиями Технология программирования Сопровождение • Выпуск и внедрение • Лицензирование • Техподдержка Документирование • Стандарты • Технологии документирования Разработка ПО • Языки программирования • Кодирование • Отладка Управление проектом • Управление рисками • Версии • Управление изменениями и дефектами • Непрерывная интеграция • Сборка и выпуск Качество ПО • Стандарты качества • Оценка качества • Обеспечение качества 15