189.43K
Category: programmingprogramming

1.1 Основные понятия ПИ

1.

Основные понятия
программной инженерии

2.

Оглавление

3.

• Инженерия программного обеспечения — сравнительно молодая
научная дисциплина.
• Термин software engineering был впервые предложен в 1968 году
на конференции, посвященной так называемому кризису
программного обеспечения. Этот кризис был вызван появлением
мощной (по меркам того времени) вычислительной техники
третьего поколения. Новая техника позволяла воплотить в жизнь
не реализуемые ранее программные приложения. В результате
программное обеспечение достигло размеров и уровня
сложности, намного превышающих аналогичные показатели у
программных систем, реализованных на вычислительной технике
предыдущих поколений.

4.

• Программное обеспечение – это совокупность программ,
выполненных вычислительной системой.
• Основная задача ПИ – сокращение стоимости программ. Этапы
развития ПИ связаны с появлением очередной проблемы и
нахождением путей и способов её решения. ПИ – дисциплина,
которая связана с аспектами разработки ПО от начальной стадии
создания спецификации до поддержки системы после сдачи в
эксплуатацию.

5.

Модульное программирование
• Проблема: высокая стоимость ПО связана с повторной разработкой
одинаковых фрагментов программ.
• Решение: модульное программирование, которое является организацией
программы как совокупности небольших независимых блоков, называемых
модулями, структура и поведение которых подчиняются определенным
правилам.
Использование модульного программирования позволяет упростить
тестирование программы и обнаружение ошибок, упрощается процесс
повышения эффективности программ, так как критичные по времени модули
могут быть написаны на языках низкого уровня (ассемблерах) и многократно
переделываться независимо от других. Кроме того, модульные программы
могут разрабатываться параллельно во времени многими исполнителями, что
сокращает сроки их разработки и испытаний, их значительно легче понимать, а
модули могут использоваться как строительные блоки в других программах.

6.

Структурное программирование
• Проблема: возрастание стоимости ПО, связанное с переходом от разработки
простых программ к разработке сложных.
• Решение: структурное программирование.
Эдсгер В. Дийкстра, опираясь на теорему Бома и Джакопини, ввел понятие
структурного программирования, которое часто называют “программирование
без GOTO” (управляющая конструкция перехода не используется при написании
программ).
Основные принципы структурного программирования:
нисходящее функционирование программ;
применение специальных языков программирования;
планирование и документирование проекта, поддержка кодов проектной
документации;
структурное кодирование без go to.

7.

Объектно-ориентированное
программирование
• Проблема: рост стоимости ПО, связанный с тем, что изменения требований к
программе стали возникать не только на стадии проектирования, но и на
стадии сопровождения.
• Решение: ООП. Использование метода, который состоял в введении понятия
класса с его свойствами и поведением.
Основные парадигмы ООП:
инкапсуляция – объединение в классе данных и методов (сокрытие данных);
наследование – возможность порождения нового класса на основе
существующего с частичным изменением его свойств и методов;
полиморфизм – определение свойств, методов объекта по контексту.

8.

Компонентно-ориентированное
программирование
• Проблема: рост стоимости ПО.
• Решение: Компонентно-ориентированная разработка,
формальном закреплении повторного использования кода.
основанная
на
Программный компонент – это автономный элемент программного
обеспечения, предназначенный для многократного использования, который
может распространяться для использования в других программах в виде
скомпилированного кода.
Компонентно-ориентированный
подход

развитие
объектноориентированного. Создан для проектирования и реализации крупных и
распределенных программных систем (корпоративных приложений).
С точки зрения КОП программная система – это набор компонентов с четко
определенным интерфейсом. Изменения в систему вносятся путем создания
новых компонентов или изменения старых. Наследование реализации
запрещено. Наследуется только интерфейс.

9.

Определение
требований
Анализ доступных
компонентов
Модификация
требований
Проектирование системы
Разработка и
интеграция
Валидация
системы
Финальная
система

10.

Достоинства и недостатки компонентноориентированной разработки
Достоинства:
• Уменьшается объем ПО, которое необходимо разработать => уменьшается
цена и риски;
• Уменьшается время разработки.
Недостатки:
• Компромиссы при выработке требований могут привести к тому, что
реальные требования пользователей не будут учтены;
• Контроль над системой может быть потерян при появлении новых версий
используемых компонентов.

11.

Структура стоимости ПО зависит от типа ПО,
применяемых методов его разработки м метода оценки.
Типовое распределение стоимости между основными этапами:
15% спецификация
25% проектирование
20% разработка
40% интеграция и тестирование

12.

Индустрия программного обеспечения ежедневно
поставляет на рынок программных продуктов десятки, если
не сотни новых программ, в которых сложно
ориентироваться даже специалисту в этой области.
Одним из аспектов проблемы выбора является учет
перспектив развития выбранного программного средства,
которые во многом определяются общими тенденциями
развития программного обеспечения. То, насколько при
разработке того или иного приложения были учтены эти
тенденции, во многом определяет его успех у
пользователей.

13.

Основные тенденции развития ПО:
—стандартизация как отдельных компонентов программных средств, так и
интерфейсов между ними, которая позволяет использовать то или иное
приложение на разных аппаратных платформах и в среде разных
операционных систем, а также обеспечить его взаимодействие с широким
кругом приложений;
—ориентация на ООП и программирование программных средств, что
позволяет в совокупности с их стандартизацией перейти к новой технологии
«сборки» того или иного приложения, ориентированного на конкретные
потребности конкретного пользователя, из отдельных модулей-«кубиков»,
избегая тем самым ненужных пользователю функций. При этом снижаются
объем и стоимость и повышается надежность «собранного» таким образом
приложения (существующие офисные системы, например, используются
абсолютным большинством обычных пользователей не более чем на 20 —
30%);

14.

—интеллектуализация интерфейса пользователя, обеспечение его
интуитивной понятности, непроцедурности и приближение языка
общения с компьютером к профессиональному языку
пользователя; настройка интерфейса пользователя на особенности
и потребности конкретного пользователя при организации его
диалога с компьютером; использование средств мультимедиа при
реализации интерфейса пользователя;
—интеллектуализация возможностей программ и программных
систем; все шире при проектировании приложений используются
методы искусственного интеллекта, что позволяет сделать
приложения более «умными» и решать все более сложные, плохо
формализуемые задачи;
—ориентация на совместную, групповую работу пользователей при
решении той или иной проблемы при помощи программных
средств. В связи с этим при разработке ПО все большее внимание
уделяется коммуникационным компонентам. Примером является
включение в ОС коммуникационных средств, обеспечивающих
работу пользователя в сети Интернет;

15.

—универсализация отдельных компонентов (модулей) прикладных программ и
постепенный переход этих компонентов, а затем и самих программ из области
специализированного прикладного ПО в область универсального прикладного
ПО. Подобная ситуация сложилась с текстовыми процессорами, которые в свое
время относились к специализированному прикладному ПО;
— внедрение ПО в аппаратную составляющую технических средств (товаров)
массового потребления — телевизоров, телефонов и т. п. Это, с одной стороны,
повышает требования к надежности ПО, интерфейсу пользователя, а с другой
— требует от пользователя в определенной мере более полных знаний как об
основных понятиях ПО (файлы, папки и т. д.), так и о типичных действиях в
программной среде;
—постепенный
переход
компонентов
ПО,
характерных
для
специализированного прикладного ПО, в универсальное прикладное ПО. Те
программные средства, которые ранее были доступны специалистам в
конкретной проблемной области, становятся доступны широкому кругу
пользователей. Еще 15—20 лет назад текстовые редакторы были доступны в
основном работникам подразделений, занимавшихся издательской
деятельностью.
English     Русский Rules