Слайд 1Основы программной инженерии
Барышникова Марина Юрьевна
МГТУ им. Н.Э. Баумана
Каф. ИУ-7
baryshnikovam@mail.ru
Слайд 2Лекция 1
Цели и задачи курса. Понятие программной инженерии.
Стандарты программной инженерии. Список литературы
Слайд 3
Основы программной инженерии
Лектор – Барышникова Марина Юрьевна
Преподаватель, ведущий семинары
и лабораторные работы – Ломовской Игорь Владимирович
ИУ-7 ауд. 513-л
Структура курса:
Лекции
– вторник, 8-30, ауд. 216-л, письменный зачет на 15-16 неделе, максимальная оценка – 30 баллов, минимум для зачета – 20 баллов
Семинары и лабораторные работы - суббота, ауд. 508-л
Контрольные мероприятия:
8 нед. – рубежный контроль – 35 б.
16 нед. – рубежный контроль – 35 б. (минимум - 25 б.)
4 – 12 нед. – домашнее задание из 2-х частей – 15 б.
3 контрольные работы – по 5 б. каждая
Минимальное количество баллов, необходимое для зачета – 65
Слайд 4Информационный ресурс для поддержки курса
http://dev.iu7.bmstu.ru/
Логин и пароль для входа
в систему будут высланы на электронный адрес каждому студенту
ПО, необходимое
для выполнения лабораторных работ:
http://ftp.iu7.bmstu.ru/se/
Рабочие материалы по курсу: http://dev.iu7.bmstu.ru/trac/workbook_se
Слайд 5Вместо введения
Мы живем в эпоху информационного общества или общества,
основанного на знаниях
Производство программного обеспечения (ПО) сегодня –
это крупнейшая отрасль мировой экономики, в которой занято около 10 миллионов специалистов
Слайд 6Программирование - стадии эволюции
50-е годы 20 века. Программирование в машинном
коде. Решение главным образом, научно-технических задач (счет по формулам). Наличие
достаточно четко сформулированного технического задания. Отсутствие этапа проектирования. Составление документации после завершения разработки. Зарождение концепции модульного программирования
60-е годы. Широкое использование языков программирования высокого уровня (Алгол 60, Фортран, Кобол и др.). Возрастание сложности задач, решаемых с помощью компьютеров. Использование методов коллективной работы при создании больших программных систем
70-е годы. Широкое распространение информационных систем и баз данных. Развитие абстрактных типов данных. Исследование проблем обеспечения надежности и мобильности программных средств (ПС). Создание методики управления коллективной разработкой программ. Появление инструментальных средств поддержки программирования
80-е годы. Широкое внедрение персональных компьютеров во все сферы человеческой деятельности и создание обширного и разнообразного контингента пользователей программных средств. Бурное развитие пользовательских интерфейсов и создание четкой концепции качества ПО. Внедрение объектного подхода к разработке ПС. Развитие концепции компьютерных сетей
90-е годы. Охват всего человеческого общества международной компьютерной сетью. Актуальность проблемы защиты компьютерной информации и передаваемых по сети сообщений. Развитие CASE-средств разработки ПО
Слайд 7Процент успешных проектов по созданию программного обеспечения чрезвычайно низок. Почему?
Разработка ПО по-прежнему остается непредсказуемой. Очень незначительное число проектов (порядка
20-25%) по созданию программного обеспечения оказываются успешными и укладываются в первоначальные бюджетные и временные рамки
Управление определяет успех или неудачу программных проектов в большей степени, чем технологические преимущества
Количество переделанного или «выброшенного на свалку» ПО показывает незрелость процесса его разработки
и т.д.
Слайд 9 «Программист подобно поэту, работает почти непосредственно с чистой
мыслью. Он строит свои замки в воздухе и из воздуха,
творя силой воображения. Однако эта податливость «материала» таит свои проблемы. Во-первых, необходима безошибочная точность действий: одна ошибка и чудо не состоялось!»
Ф. Брукс
Слайд 10При разработке программного обеспечения следует учитывать, что:
разработка ПО существенным
образом отличается от материального производства. Попытка механического переноса в сферу
программирования методов и средств, хорошо зарекомендовавших себя, например, в строительстве или автомобилестроении, заведомо обречена на неудачу
ПО является «гибким» продуктом. Оно подвержено изменениям и воздействию со стороны внешней среды, которую представляют собой потребители и пользователи, ожидающие, что в программные продукты будут внесены интересующие их изменения и соответствующие доработки
технологии и средства проектирования и разработки ПО развиваются очень быстрыми темпами. Это оказывает существенное влияние на производительность, стоимость, качество и риски при производстве конечного продукта
стоимость разработки ПО в значительной степени зависит от технических средств. Поскольку само по себе массовое производство программного продукта имеет очень низкую стоимость, его экономическая модель существенно отличается от модели обычных товаров
Слайд 12Программная инженерия (Software Engineering)
является отраслью информатики[1] (computer science)
и изучает вопросы построения компьютерных программ, обобщает опыт программирования в
виде комплекса общих знаний и правил регламентации инженерной деятельности разработчиков программного обеспечения
[1] Информатика охватывает теорию и методы построения вычислительных и программных систем. Знание информатики необходимо специалистам в области программного обеспечения так же, как знание физики – инженерам-электронщикам
Слайд 13 Современный инженер-программист – это специалист, выполняющий практические работы
по созданию программного обеспечения, способный обеспечить высокое качество разработки за
счет применения современных методов проектирования, использования готовых компонентов и методов их генерации. Он знаком со стандартами, регламентирующими процесс разработки, уверенно оперирует понятием «жизненный цикл ПО», хорошо владеет навыками использования инструментальных систем программирования. Он знает методы управления проектами, может произвести оценку качества, производительности, стоимости и т.п., умеет эффективно работать в команде
Что такое инженер-программист сегодня?
Слайд 14Содержание курса
Лекции:
жизненный цикл программного обеспечения и его модели;
управление качеством;
современные подходы
к организации процесса разработки программного обеспечения;
и др.
Лабораторные работы:
Структурное программирование (программирование
«сверху-вниз» и «снизу-вверх»);
работа с системами версионного контроля и отслеживания ошибок в ПО;
методы кодирования и тестирования программного обеспечения, включая стиль программирования, в том числе, защитное программирование
Слайд 15Стандарты программной инженерии
Стандарт - standard - норма,
образец, мерило:
утверждаемый компетентным органом нормативно-технический документ, устанавливающий комплекс норм
и правил по отношению к объекту стандартизации,
типовой образец, эталон, модель, принимаемые за исходные для сопоставления с ними других предметов
Слайд 16Основные типы стандартов
Корпоративные стандарты разрабатываются крупными фирмами с целью
повышения качества своей продукции. Создаются на основе собственного опыта компании,
но с учетом требований мировых стандартов. Не сертифицируются, но являются обязательными для применения внутри корпорации
Отраслевые стандарты действуют в пределах организаций некоторой отрасли (министерства). Разрабатываются с учетом требований мирового опыта и специфики отрасли. Являются, как правило, обязательными для отрасли. Подлежат сертификации
Государственные стандарты (ГОСТы) принимаются государственными органами и имеют силу закона. Разрабатываются с учетом мирового опыта или на основе отраслевых стандартов. Могут иметь как рекомендательный, так и обязательный характер. Для сертификации создаются государственные или лицензированные органы сертификации
Международные стандарты разрабатываются специальными международными организациями на основе мирового опыта и лучших корпоративных стандартов. Имеют сугубо рекомендательный характер
Слайд 17Разработчики стандартов в области программной инженерии
ISO - The International Standards
Organization - международная организация по стандартизации, работающая в сотрудничестве с
IEC - The International Electrotechnical Commission - международной электротехнической комиссией
IEEE Computer Society - профессиональное объединение специалистов в области программной инженерии
ACM - Association for Computing Machinery – Ассоциация по вычислительной технике
SEI - Software Engineering Institute – Институт Программной Инженерии при университете Карнеги-Мелон
PMI - Project Management Institute – Международный Институт Проектного Менеджмента
Слайд 18Объекты стандартизации в программной инженерии
процессы разработки ПО
продукты разработки
ресурсы, которые используют
процессы для создания программного продукта
Слайд 19Ядро профессиональных знаний SWEBOK (Software Engineering Body of Knowledge)
Software
Requirements – требования к ПО
Software Design – проектирование ПО
Software Construction
– конструирование ПО
Software Testing – тестирование ПО
Software Maintenance – сопровождение ПО
Software Configuration Management – управление конфигурацией
Software Engineering Management – управление IT проектом
Software Engineering Process – процесс программной инженерии
Software Engineering Tools and Methods – методы и инструменты
Software Quality – качество ПО
Слайд 20Свод знаний по управлению проектами PMI PMBOK (Project Management Body
of Knowledge)
Управление интеграцией – Project Integration Management
Управление содержанием – Project
Scope Management
Управление временем – Project Time Management
Управление затратами – Project Cost Management
Управление рисками – Project Risk Management
Управление персоналом – Project Personnel Management
Управление коммуникациями – Project Communication Management
Управление закупками – Project Procurement Management
Управление качеством – Project Quality Management
Слайд 21Кодекс этики программной инженерии
(краткая версия)
Программные инженеры будут действовать соответственно общественным
интересам
Программные инженеры будут действовать в интересах клиентов и работодателя, соответственно
общественным интересам
Программные инженеры будут добиваться, чтобы произведенные ими продукты и их модификации соответствовали высочайшим профессиональным стандартам
Программные инженеры будут добиваться честности и независимости в своих профессиональных суждениях
Менеджеры и лидеры программных инженеров будут руководствоваться этическим подходом к руководству разработкой и сопровождением ПО, а также будут продвигать и развивать этот подход
Программные инженеры будут улучшать целостность и репутацию своей профессии соответственно с интересами общества
Программные инженеры будут честными по отношению к своим коллегам и будут всячески их поддерживать
Программные инженеры в течение всей своей жизни будут учиться практике своей профессии и будут продвигать этический подход к практике своей профессии
Слайд 22Принципы, положенные в основу кодекса этики программной инженерии
согласование профессиональной деятельности
инженеров-программистов с интересами общества;
взаимоотношения между клиентом, работодателем и исполнителем разработки;
достижение
соответствия качества продукта лучшим профессиональным стандартам;
честность и независимость профессиональных оценок;
соблюдение этических норм в менеджменте и в сопровождении разработок;
поддержка становления профессии в соответствии с кодексом этики;
соблюдение этических норм во взаимоотношениях с коллегами;
усовершенствование специальности
Слайд 23Список литературы
Иванова Г.С. Технология программирования.- М.: из-во МГТУ им. Н.Э. Баумана,
2002
Вендров А.М. Проектирование программного обеспечения экономических информационных систем. – М.: Финансы
и статистика, 2000
Липаев В.В. Программная инженерия: методологические основы. – М.: из-во «ТЕИС», 2006
Костров А.В. Основы информационного менеджмента. – М.: Финансы и статистика, 2001
Орлов С.А. Технологии разработки программного обеспечения. – СПб.: из-во «Питер», 2002
Фредерик Брукс. Мифический человеко-месяц или как создаются программные системы. Пер. с англ. – СПб.: из-во «Символ», 2001
Уокер Ройс. Управление проектами по созданию программного обеспечения. Пер. с англ. – М.: из-во «Лори», 2002
Роберт Т. Фатрелл, Дональд Ф. Шафер, Линда И. Шафер. Управление программными проектами: достижение оптимального качества при минимуме затрат. Пер. с англ. - М.: Издательский дом «Вильямс», 2003
Эдвард Йордон. Путь камикадзе: как разработчику программного обеспечения выжить в безнадежном проекте. Пер. с англ. - М.: из-во «Лори», 2001
Скотт Кендалл. Унифицированный процесс. Основные концепции. Пер. с англ. - М.: Издательский дом «Вильямс», 2002
Слайд 24Список литературы
Кент Бек. Экстремальное программирование. Пер. с англ. – СПб.:
из-во «Питер», 2002
Тимоти Пайрон. Использование Microsoft Project 2003. Пер. с
англ. – М.: из-во «Виьямс», 2005
Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. Пер. с англ. – СПб.: из-во «Питер», 2002
Стив Макконнелл. Остаться в живых! Руководство для менеджера программных проектов. Пер. с англ. – СПб.: из-во «Питер», 2006
Фергус О’Коннэл. Как успешно руководить проектами. Серебряная пуля. Пер. с англ. – М.: из-во «Кудиц-образ», 2003
Дж. Филипс. Менеджмент IT- проектов: на пути от старта до финиша. Пер. с англ. – М.: из-во «Лори», 2008
Стив Макконнелл. Сколько стоит программный проект. Пер. с англ. – СПб.: из-во «Питер», 2007
Слайд 25Список литературы
Оценка и аттестация зрелости процессов создания и сопровождения программных
средств и систем (ISO/IEC TR 155-4 – CMM). Пер. с
англ. – М.: Книга и бизнес, 2001
Рейнвотер Дж. Как пасти котов. Наставления для программистов, руководящих другими программистами. – СПб.: Питер, 2006
Орлик С. Введение в программную инженерию и управление жизненным циклом ПО. – Copyright © Сергей Орлик, 2005, http://sorlik.blogspot.com, http://sorlik.ru/
Скопин И.Н. Основы менеджмента программных проектов. http://www.intuit.ru/department/se/msd/