
- •Курганский государственный университет Кафедра программного обеспечения автоматизированных
- •План лекции
- •Введение
- •1. Предпосылки и история развития
- •1.2. Структурное программирование
- •1.3. Объектно-ориентированное проектирование
- •1.4.Краткие исторические итоги
- •Кризис программирования продолжается
- •Кризис программирования продолжается
- •Кризис программирования продолжается
- •2. Предмет программной инженерии
- •2. Предмет программной инженерии
- •2.1. Что такое инженерия (engineering) и чем занимаются инженеры ?
- •2.2. Что такое программное обеспечение (программный продукт) ?
- •2.3. Что такое программная инженерия (software engineering)?
- •2.4. В чем отличия программной инженерии от информатики?
- •2.5. В чем отличие программной инженерии от других инженерий?
- •2.5. В чем отличие программной инженерии от других инженерий?
- •2.5. В чем отличие программной инженерии от других инженерий?
- •Типовая структура стоимости ПО
- •2.5. В чем отличие программной инженерии от других инженерий?
- •2.6. Краткие итоги
- •3. Методология программной инженерии
- •3.1. Модели и методы программной инженерии
- •Модели и методы программной инженерии
- •3.2. Что такое CASE ?
- •3.3. Свойства хорошей компьютерной программы
- •3.3. Свойства хорошей компьютерной программы
- •3.3. Свойства хорошей компьютерной программы
- •4. Обзор программы изучения
- •Образовательные результаты
- •СТРУКТУРА ДИСЦИПЛИНЫ
- •АТТЕСТАЦИЯ РАБОТЫ СТУДЕНТОВ
- •Балльные оценки Текущий и рубежный контроль
- •Основная литература
- •Дополнительная литература
- •5.Контрольные вопросы и задания

2.5. В чем отличие программной инженерии от других инженерий?
3). Третье отличие заключается в том, что
программная инженерия – молодая дисциплина, опыт которой насчитывает всего
несколько десятков лет.
По сравнению с опытом строительной инженерии (тысячелетия) это, конечно, очень мало. Программную инженерию иногда сравнивают с ранней строительной, когда законы строительной механики еще не были известны и строительные инженеры действовали методом проб и ошибок, накапливая бесценный опыт.
Несмотря на молодой возраст, программная инженерия также накопила определенный опыт, который позволяет делать удачные проекты.
21

2.6. Краткие итоги
Программная инженерия качественно отличается от других инженерных дисциплин нематериальностью программного
обеспечения и дискретной природой его функционирования. Важные следствия: 1) отсутствие производственной фазы в
традиционном промышленном смысле; 2) фаза сопровождения программного обеспечения в основном связана с продолжающейся его разработкой или эволюцией, а не с традиционным ремонтом и обслуживанием по причине физического износа.
Программная инженерия концентрируется на абстрактных/логических объектах вместо конкретных/физических и стремится интегрировать принципы математики и информатики с инженерными подходами, разработанными для производства материальных технических объектов.
Основанием программной инженерии является информатика, а не естественные науки, при этом основной упор делается на дискретную, а не на классическую (непрерывную) математику.
Основываясь на математике и компьютерной технике, программная инженерия занимается разработкой моделей и надежных методов производства высококачественного программного обеспечения, и данный подход распространяется на все уровни – от теории и принципов до реальной практики создания ПО.
22

3. Методология программной инженерии
Толковый словарь русского языка С.И.Ожегова
определяет понятие "Методология" как "Принципы и способы организации теоретической и практической деятельности. Совокупность методов, применяемых в какой- либо науке".
Методология программной инженерии – это совокупность принципов и способов организации деятельности проектной группы для создания качественного программного продукта при заданных ограничениях на основные ресурсы: время, бюджет, оборудование, количество и профессиональная компетентность исполнителей.
23

3.1. Модели и методы программной инженерии
Методология программной инженерии основана на идее
поэтапного преобразования моделей ПО в компьютерную программу – окончательную модель
решаемой задачи.
На этапе спецификаций создается модель – описание требований;
Далее эта модель преобразуется в модель проекта ПО;
Затем модель проекта преобразуется в исходный код программы на языке высокого уровня;
И, наконец, исходный код программы преобразуется в
исполнимый программный код.
24

Модели и методы программной инженерии
Методы программной инженерии должны включать в себя следующие компоненты:
Описание моделей и нотация, используемая для их описания (например, объектные модели, конечно-автоматные модели и т.д.);
Правила и ограничения, которые надо выполнять при разработке моделей (например, каждый объект должен иметь уникальное имя);
Рекомендации — эвристики, характеризующие хорошие приемы проектирования в данном методе (например, ни один объект не должен быть больше семи подчиненных ему объектов);
Руководство по применению метода — описание последовательности работ (действий), которые надо выполнить для построения моделей (например, все атрибуты объекта должны быть документированы до определения операций, связанных с этим объектом).
Нет идеальных методов – каждый из них применим и эффективен только для тех или иных случаев.
Нет абсолютных методов – применяемые на практике методы могут включать элементы различных подходов.
Выбор эффективного в конкретной ситуации метода – одна из задач, решаемых программными инженерами.
Модели метода представляются графически с помощью некоторого языка
представления моделей (языка диаграмм). Позднее в нашей дисциплине будут рассмотрены элементы одного из таких языков - Unified Modeling Language (UML).
25

3.2. Что такое CASE ?
CASE - Computer Aided Software Engineering - инструментальные программные средства, используемые для поддержки процесса создания ПО.
CASE средства могут быть классифицированы по нескольким признакам:
По уровню применения:
Upper CASE - средства анализа требований;
Middle CASE - средства проектирования;
Low CASE - средства разработки приложений.
Специализированные:
Средства проектирования баз данных;
Средства реинжиниринга (восстановления) модели (формирование ERD на основе анализа схем БД или формирования диаграмм на основе анализа программных кодов).
Вспомогательные:
Средства планирования и управления проектом;
Средства конфигурационного управления;
Средства тестирования.
Интегрированные CASE-средства охватывают все этапы и процессы создания ПО от анализа требований до тестирования и выпуска документации. Интегрированные CASE-средства представлены, как правило, в виде набора согласованных по интерфейсу средств, предназначенных для поддержки отдельных этапов процесса.
При выборе CASE-средств следует руководствоваться основным принципом: сначала метод создания ПО, а потом – CASE-средства, применимые для этого метода.
В практической части нашей дисциплины мы ознакомимся с некоторыми CASE-средствами. Более подробное их освоение планируется при изучении других специальных дисциплин.
26

3.3. Свойства хорошей компьютерной программы
Прежде всего, хорошая компьютерная
программа должна удовлетворять функциональным требованиям – то есть делать то, что ожидает от нее заказчик.
Кроме функциональных требований, существует еще ряд характеристик, которым в той или иной степени должна обладать каждая программа.
Эти характеристики принято называть
нефункциональными требованиями:
Сопровождаемость(maintainability)
Надежность (dependability)
Эффективность (efficiency)
Удобство использования (usability)
27

3.3. Свойства хорошей компьютерной программы
Сопровождаемость означает, что ПО должно быть написано с расчетом на его дальнейшее развитие. Это критическое свойство системы, т.к. изменения ПО неизбежны вследствие изменения бизнеса. Сопровождение ПО выполняют, как правило, не те люди, которые его разрабатывали. Сопровождаемость ПО включает следующие элементы:
наличие и понятность проектной документации;
соответствие проектной документации исходному коду;
понятность исходного кода;
простота изменений исходного кода;
простота добавления новых функций.
Надежность ПО включает три основных элемента:
отказоустойчивость – возможность восстановления программы и данных в случае сбоев в работе;
безопасность – сбои в работе программы не должны приводить к опасным последствиям (авариям);
защищенность от случайных или преднамеренных внешних воздействий ("защита от дурака", защита от вирусов, спама).
Эффективность. ПО не должно впустую тратить системные ресурсы, такие, как память, процессорное время, каналы связи. Показатели оценки эффективности:
время выполнения кода;
загруженность процессора;
объем требуемой памяти;
время отклика на запрос и т.п.
Удобство использования. ПО должно быть легким в использовании, причем именно той категорией пользователей, на которых рассчитано приложение. Это включает в себя наличие адекватной документации и понятный пользователям интерфейс, причем понятный не "интуитивно", а профессионально.
28

3.3. Свойства хорошей компьютерной программы
Как правило, реализация нефункциональных требований требует больших затрат, чем функциональных.
Сопровождаемость требует значительных усилий по поддержанию соответствия проекта исходному коду и применения специальных методов создания модифицируемых программ.
Надежность – требует дополнительных средств восстановления системы при сбоях, шифрования данных и/или ограничения доступа.
Эффективность – требует поиска специальных архитектурных решений, выбора каналов передачи данных с требуемыми характеристиками и оптимизации программного кода.
Удобство использования – требует создания профессионально понятного пользовательского интерфейса, проектирование которого потребует от разработчика более глубокого "погружения" в предметную область проекта.
29

4. Обзор программы изучения
дисциплины |
|
Очная форма обучения |
Очно- |
||||
|
|
|
|
||||
Виды учебной работы |
|
|
|
|
заочная |
||
|
|
|
|
|
|
|
форма |
|
|
|
|
|
|
|
обучения |
|
|
|
|
|
Часов учебных занятий |
|
|
|
|
|
|
Всего |
Семестр |
Всего |
Семестр |
|
|
|
|
|
ы |
|
ы |
|
|
|
|
|
4-й |
|
2-й |
Аудиторные занятия (АЗ), |
всего: |
|
42 |
42 |
24 |
24 |
|
в том числе: |
|
Лекции |
28 |
28 |
8 |
8 |
|
(ЛК) |
|
|
|
|
|
|
|
|
Лабораторные работы (ЛР) |
14 |
14 |
16 |
16 |
||
|
Текущий контроль (ТК) |
4 |
4 |
2 |
2 |
||
Учебные |
занятия, |
проводимые |
в |
28% |
28% |
67% |
67% |
интерактивных формах, (% от АЗ) |
|
|
|
|
|
||
Самостоятельная работа, |
|
|
30 |
30 |
48 |
48 |
|
всего: |
|
|
|
|
|
|
|
в том числе: |
|
|
|
|
|
|
|
|
Рубежный контроль (РК) |
12 |
12 |
12 |
12 |
||
|
Промежуточная аттестация |
8 |
8 |
8 |
8 |
||
Другие виды самостоятельной работы |
10 |
10 |
28 |
28 |
|||
Виды промежуточной аттестации |
|
|
Зачет |
|
Зачет |
||
Общая трудоемкость дисциплины |
|
72 |
72 |
72 |
72 |
||
|
|
|
|
|
|
|
|
30