
- •Программная инженерия, основные понятия Инженеры и программные инженеры
- •Программная инженерия как инженерная дисциплина
- •Цели программных инженеров
- •Качественный программный продукт
- •Создание по должно укладываться в бюджет
- •Создание по должно укладываться в сроки
- •Программные инженеры и научная среда
- •Процесс создания программного обеспечения
- •Понятие процесса
- •Модели процесса
- •Каскадная модель (Waterfall model)
- •Эволюционная модель (Evolutionary development)
- •Итерационный подход
- •Модель пошаговой разработки
- •Спиральная модель разработки
- •Что дальше?
- •Литература
- •Профессиональные и этические требования
- •Стандарты и сертификация
- •Что такое технология
- •Что такое стандарт?
- •Что такое сертификация?
- •Какие бывают стандарты?
- •Кто разрабатывает стандарты se?
- •Iso - International Organization for Standardization
- •Acm - Association for Computing Machinery
- •Sei - Software Engineering Institute
- •Pmi - Project Management Institute
- •Ieee – Institute of Electrical and Electronics Engineers
- •Основные стандарты se
- •Iso/iec12207-95
- •Iso/iec tr 15504
- •Pmipmbok
- •Ieee swebok
- •Acm/ieee Computing Curricula
- •Характер и роль стандартов инженерии программного обеспечения
- •Какие бывают стандарты?
- •Кто разрабатывает стандарты ?
- •Iso - International Organization for Standardization
- •Acm - Association for Computing Machinery
- •Sei - Software Engineering Institute
- •Pmi - Project Management Institute
- •Ieee – Institute of Electrical and Electronics Engineers
- •Основные стандартыSe
- •Iso/iec12207-95
- •Iso/iec tr 15504
- •Pmipmbok
- •Ieee swebok
- •Acm/ieee Computing Curricula
- •1. Основы качества программного обеспечения (Software Quality Fundamentals)
- •2. Процессы управления качеством программного обеспечения (Software Quality Processes)
- •3. Практические соображения (Practical Considerations)
Профессиональная практика программной инженерии
Целью курса является усвоение знаний и приобретение умений в отрасли профессиональной деятельности и этики программной инженерии. Рассматриваются вопрос истории программной инженерии, аккредитации, сертификации и лицензирования, кодекс этики и профессионального поведения, социальные, юридические и исторические вопросы, природа и значимость профессиональных союзов и стандартов программной инженерии; экономическое влияние программного обеспечения; защита интеллектуальной собственности и другое законодательство в отрасли программной инженерии.
Терминология
Программирование(Computerscience) – молодая, активно развивающаяся область, за полвека своего развития преодолевшая огромный путь. Будучи как искусством, так и наукой, в наше время термин программирование приобрел качественно новую окраску, став одной из отраслей бизнеса.
Под IT-проектамиможно понимать любые проекты в областиинформационных технологий. Мы далее будем рассматривать лишь те IT-проекты, целью которых является разработкапрограммного обеспечения.
Программное обеспечение(Software) – набор компьютерных программ, процедур и связанной с ними документации и данных. Таким образом,программное обеспечение– это не простопрограмма. Это еще и документация и руководство пользователя. Вместо терминапрограммное обеспечение часто используют термин программный продукт.
Для того чтобы бизнес, связанный с разработкой ПО, был успешным, необходимо выпускать качественное ПО, интересное потенциальным пользователям, делать это в срок, укладываться в имеющийся бюджет. К сожалению, доля проваленных проектов по-прежнему катастрофически высока.
Анализ рынка ПО в мире показывает большие темпы роста. В отрасль вкладываются огромные деньги. В России в отрасли ITнаблюдается бум. Отрадный факт – укрепление РоссийскихIT-компаний.
Основными причинами неудачи IT-проектов являются:
Причина 1. Нереалистичные временные рамки.
Причина 2. Недостаток количества исполнителей.
Причина 3. Размытые границы проекта.
Причина 4. Недостаток средств.
Причина 5. Нехватка квалифицированных кадров.
Технологии программирования– путь к успеху в разработке ПО. Использование различных технологий позволяет преодолевать сложность решаемых задач и, соответственно, сложность создания качественного ПО. Среди основных технологий можно выделить следующие: структурное программирование, модульное программирование, объектно-ориентированное программирование, компонентное программирование.
Программная инженерия, основные понятия Инженеры и программные инженеры
Говоря о программной инженерии, необходимо выяснить, кто такие инженеры.
За ответом обратимся к Большой Советской Энциклопедии:
Инженер(франц. ingénieur, от лат. ingenium – способность, изобретательность), специалист с высшим техническим образованием. Первоначально – название лиц, управлявших военными машинами[5].
Понятие гражданский инженер появилось в 16 в. в Голландии применительно к строителям мостов и дорог, затем в Англии и др. странах. Первые учебные заведения для подготовки инженеров были созданы в 17 в. в Дании, в 18 в. – в Великобритании, Франции, Германии, Австрии и др. В России первая инженерная школа основана Петром I в 1712 в Москве. В Петербурге были открыты Горное училище, приравненное к академиям (1773), Институт инженеров путей сообщения (1809), Училище гражданских инженеров (1832, с 1882 – Институт гражданских инженеров), Инженерная академия (1855). С 19 в. за рубежом стали различать инженеров-практиков, или профессиональных инженеров (по существу специалистов, имевших квалификацию техника), и дипломированных инженеров, получивших высшее техническое образование (Civil Engineer) [5].
Итак, инженер– дипломированный специалист, имеющий высшее техническое образование. Нетрудно догадаться, чтопрограммный инженер– инженер в области разработки программного обеспечения.
Инженерия - это способ применения научных результатов, что позволяет получать пользу от свойств материалов и источников энергии;
инженерия - деятельность по созданию машин для предоставления полезных для потребителя услуг и изделий.
Инженеры в программной инженерии - это специалисты, выполняющие практические работы по реализации программ с применением теории, методов и средств компьютерной науки. Компьютерная наука охватывает теорию и методы построения вычислительных и программных систем, тогда как программная инженерия рассматривает вопросы практического построения ПО. Знание компьютерной науки необходимо специалистам в области программного обеспечения так же, как знание физики - инженерам-электронщикам. Если для решения конкретных задач программирования не существует подходящих методов или теории, инженеры применяют свои знания, накопленные ими в процессе разработок конкретных ПО, а также используют опыт применения соответствующих инструментальных программных средств.
Инженеры, как правило, работают в условиях заключенных контрактов и выполняют задачи проекта с учетом этих условий и ограничений на сроки, время, стоимость и др. В отличие от науки, цель которой - получение знаний, для инженерии знание - это способ получения некоторой пользы. Кроме программистов, занимающихся непосредственно разработкой ПО, в программной инженерии используются:
менеджеры, которые планируют и руководят проектом, отслеживают сроки и затраты;
инженеры службы ведения библиотек и репозитариев компонентов;
технологи, которые определяют инженерные методы и стандарты, создают для проекта модель ЖЦ, удовлетворяющую его целям и задачам;
тестировщики (контролеры), которые проверяют правильность выполнения процесса проектирования путем тестирования и на основе собранных данных проводят измерения разных характеристик качества, включая оценку надежности ПО;
верификаторы, которые проверяют правильность реализации функций в проекте;
валидаторы, проверяющие ПО на соответствие заданным требованиям.