Методы программной инженерии

Методология и инструменты программной инженерии

Методы программной инженерии

Методология и инструменты программной инженерии

Молодяков С.А.

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

Программная инженерия — это область компьютерной науки и технологии, которая занимается построением программных систем… Это инженерная дисциплина, которая связана со всеми аспектами производства программного обеспечения (ПО) от начальных стадий создания спецификации до поддержки системы после сдачи в эксплуатацию. Термин – software engineering (программная инженерия) — впервые был озвучен в октябре 1968 года на конференции подкомитета НАТО по науке и технике (г.Гармиш, Германия).

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

Одним из основных понятий программной инженерии является понятие жизненного цикла программного продукта и программного процесса.

 Жизненный цикл ПО – период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации. Этот цикл — процесс построения и развития ПО.

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

Основными процессами (иногда называют этапами или фазами) жизненного цикла являются:

— Разработка спецификации требований (результат – описания требований к программе, которые обязательны для выполнения – описание того, что программа должна делать); — Разработка проекта программы (результат – описание того, как программа будет работать); — Кодирование (результат – исходный код и файлы конфигурации); — Тестирование программы (результат — контроль соответствия программы требованиям); — Документирование (результат – документация к программе);

— Сопровождение (внесение изменений в ПО в целях исправления ошибок, повышения производительности или адаптации к изменившимся условиям работы или требованиям).

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

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

во многом определяет успех проекта.

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

Несколько десятков стандартов этого комплекса допускают целеустремленный отбор необходимых процессов, в зависимости от характеристик и особенностей конкретного проекта, а также формирование на их базе проблемно-ориентированных профилей стандартов для определенных типов проектов и/или предприятий.

Процесс стандартизации и сертификации давно вошел и в программную инженерию, где он составляет основу промышленного производства программных продуктов.

Наиболее известными стандартами программной инженерии являются: ·

ISO/IEC 12207 — Information Technology — Software Life Cycle Processes — Процессы жизненного цикла программных средств. Стандарт содержит определения основных понятий программной инженерии. (в частности программного продукта и жизненного цикла программного продукта).

SEI CMM — Capability Maturity Model (for Software) — модель зрелости процессов разработки программного обеспечения. Стандарт отвечает на вопрос: «Какими признаками должна обладать профессиональная организация по разработке ПО?». PMBOK — Project Management Body of Knowledge — Свод знаний по управлению проектами.

SWBOK — Software Engineering Body of Knowledge — Свод знаний по программной инженерии — содержит описания состава знаний по разделам (областям знаний) программной инженерии.

ACM/IEEE CC2001 — Computing Curricula 2001 – Академический образовательный стандарт в области компьютерных наук. Выделены 4 основных раздела компьютерных наук: Computer science, Computer engineering, Software engineering и Information systems, по каждому из которых описаны области знаний соответствующего раздела, состав и планы рекомендуемых курсов.

В настоящее время сообществом SWBOK разрабатывается расширенная версия знаний по программной инженерии, которая включает 15 областей:

  • Software Requirements — требования к ПО.
  • Software Design — проектирование ПО.
  • Software Construction — конструирование ПО.
  • oftware Testing — тестирование ПО.
  • Software Maintenance — сопровождение ПО.
  • Software Configuration Management — управление конфигурацией.
  • Software Engineering Management — управление IT проектом.
  • Software Engineering Process — процесс программной инженерии.
  • Software Engineering Models and Methods — модели и методы разработки.
  • Software Engineering Professional Practice — описание критериев профессионализма и компетентности.
  • Software Quality — качество ПО.
  • Software Engineering Economics — экономические аспекты разработки ПО.
  • Computing Foundations — основы вычислительных технологий, применимых в разработке ПО.
  • Mathematical Foundations — базовые математические концепции и понятия, применимые в разработке ПО.
  • Engineering Foundations — основы инженерной деятельности.

Метод программной инженерии — это структурный подход к созданию ПО, который способствует производству высококачественного продукта эффективным в экономическом аспекте способом.

В этом определении есть две основные составляющие: (а) создание высококачественного продукта и (б) экономически эффективным способом.

Иными словами, метод – это то, что обеспечивает решение основной задачи программной инженерии: создание качественного продукта при заданных ресурсах времени, бюджета, оборудования, людей.

Обычно выделяют три группы методов: эвристические методы (heuristic methods), касающиеся неформализованных подходов; формальные методы (formal methods), обоснованные математически; методы прототипирования (prototyping methods), базирующиеся на различных формах прототипирования.

Методология программной инженерии и стандарты регламентируют современные процессы управления проектами сложных систем и программных средств.

Они обеспечивают организацию, освоение и применение апробированных, высококачественных процессов проектирования, программирования, верификации, тестирования и сопровождения программных средств и их компонентов.

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

Программные инструменты предназначены для обеспечения поддержки процессов жизненного цикла программного обеспечения.

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

Инструменты часто проектируются с целью поддержки конкретных (частных) методов программной инженерии, сокращая административную нагрузку, ассоциированную с “ручным” применением соответствующих методов.

CASE (Computer-Aided Software Engineering) – набор инструментов и методов программной инженерии для проектирования программного обеспечения, который помогает обеспечить высокое качество программ, отсутствие ошибок и простоту в обслуживании программных продуктов.

Инструменты (CASE) программной инженерии (Software Engineering Tools) [1]:

1.1. Инструменты работы с требованиями (Software Requirements Tools).

1.2. Инструменты проектирования (Software Design Tools) — инструменты для создания и проверки программного дизайна. (SADT/IDEF, UML, BPMN/BPEL, Microsoft DSL и т.п.)

1.3. Инструменты конструирования (Software Construction Tools) В соответствии с пониманием “конструирования”, заданным соответствующей областью знаний SWEBOK. Эти инструменты используются для производства и трансляции программного представления (например, исходного кода), достаточно детального и явного для машинного выполнения.

  • Редакторы (program editors). Эти инструменты используются для создания и модификации программ и, возможно, ассоциированной с ними документации.
  • Компиляторы и генераторы кода (compilers and code generators). Неинтерактивные (командные) трансляторы исходного кода. Компиляторы и редакторы в интегрированных средах программирования. К этому классу также относятся препроцессоры, линковщики/загрузчики, а также генераторы кода.
  • Интерпретаторы (interpreters). Можно объединить интерпретаторы с компиляторами и генераторами кода, как средства непосредственной подготовки (трансляции) исходного кода к исполнению.
  • Отладчики (debuggers). Эти инструменты поддерживают процесс конструирования программного обеспечения, но, в то же время, отличаются от редакторов и компиляторов.

1.4. Инструменты тестирования (Software Testing Tools)

  • Генераторы тестов (test generators). Эти инструменты помогают в разработке сценариев тестирования.
  • Средства выполнения тестов (test execution frameworks). Эти средства обеспечивают среду исполнения тестовых сценариев в контролируемом окружении, позволяющем отслеживать поведение объекта, подвергаемого тестированию.
  • Инструменты оценки тестов (test evaluation tools). Эти инструменты поддерживают оценку результатов выполнения тестов, помогая определить в какой степени и где именно обнаруженное поведение соответствует ожидаемому поведению.
  • Средства управления тестами (test management tools).
  • Инструменты анализа производительности (performance analysis tools).

1.5. Инструменты сопровождения (Software Maintenance Tools) Эта тема охватывает инструменты, особенно важные для обеспечения сопровождения существующего программного обеспечения, подверженного модификациям:

  • Инструменты облегчения понимания (comprehension tools). Эти инструменты помогают человеку в понимании программ. Примерами могут служить различные средства визуализации.
  • Инструменты реинжиниринга (reengineering tools). Эти инструменты поддерживают деятельность по реинжинирингу, описанную в области знаний SWEBOK “Software Maintenance”.

1.6. Инструменты конфигурационного управления (Software Configuration Management Tools) Инструменты конфигурационного управления делятся на три категории:

  • Инструменты отслеживания (tracking) дефектов, расширений и проблем. •
  • Инструменты управления версиями. •
  • Инструменты сборки и выпуска. Эти инструменты предназначены для управления задачами сборки и выпуска продуктов, а также включают средства инсталляции.

1.7. Инструменты управления инженерной деятельностью (Software Engineering Management Tools) Средства управления деятельностью по программной инженерии делятся на три категории:

  • Инструменты планирования и отслеживания проектов.
  • Инструменты управления рисками.
  • Инструменты количественной оценки.

1.8. Инструменты поддержки процессов (Software Engineering Process Tools):

  • Инструменты моделирования.
  • Инструменты управления проектами.
  • Инструменты конфигурационного управления, поддерживающие работу с актуальными версиями всего комплекса артефактов проекта.
  • Ролевые платформы разработки программного обеспечения, охватывающие все стадии жизненного цикла и, на сегодняшний день, являющиеся развитием интегрированных средств разработки и CASE-инструментов в направлении поддержки “смежной” функциональности – управления требованиями, работ по конфигурационному управлению с поддержкой управления изменениями, тестирования и оценки качества.

1.9. Инструменты обеспечения качества (Software Quality Tools) Средства обеспечения качества делятся на две категории:

  • Инструменты инспектирования. Эти средства используются для поддержки обзора (review) и аудита.
  • Инструменты (статического) анализа. Эти средства используются для анализа программных артефактов, данных, потоков работ и зависимостей.

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

Хотя прошло уже много лет с момента определения термина «Программная инженерия», однако и сейчас эта область знаний все еще относительно молода по сравнению со своими сестринскими областями инженерии, есть все еще большая работа и дебаты вокруг того, что представляет собой «инженерия программного обеспечения», и удовлетворяет ли оно понятию инженерии. Не смотря на «юность» профессии программиста, будущее области программной инженерии радужно.

В заключение приведу слова Липаева В.В.

[3]:
Важнейшей проблемой развития и применения современных систем, является обучение и воспитание специалистов в области программной инженерии, использование международных стандартов, способствующих высокому качеству ПО и достоверному его оцениванию.

Необходимо обучение специалистов умению формализовать требования и достигать конкретные значения характеристик качества функционирования и применения сложных комплексов программ, с учетом тех ресурсов, которые нужны и доступны для обеспечения и совершенствования этого качества.

В публикации использованы открытые электронные материалы:

  1. Орлик С., Булуя Ю. «Введение в программную инженерию и управление жизненным циклом» (базируется на SWEBOK). http://software-testing.ru/library/around-testing/engineering/267-swebok
  2. Программная инженерия http://iibs.vvsu.ru/ispi/nap/pi/
  3. Липаев В.В. Программная инженерия в жизненном цикле программных средств http://citforum.ru/SE/lipaev/

Источник: https://hsse.spbstu.ru/metodologiya_i_instrumentu_programmnoy_inzghenerii/

Методы программной инженерии

Методы программной инженерии

В период появления термина «программная инженерия», когда ресурсы по разработке программного обеспечения стали приближаться к стоимости самих вычислительных средств (компьютеров), что ознаменовалось так называемым «кризисом программирования» — возникла идея удешевления создания программ использованием различных инженерных методов при их создании. Инновационная на тот период идея со временем и стала называться во всем мире программной инженерией и в 21 веке продолжает неуклонно развиваться, обрастая постепенно различными методами ускорения разработки и внедрения программных продуктов.

Модульное программирование

При формировании и становлении программной инженерии сразу отмечалось, что большие затраты ресурсов на создание и внедрение программных продуктов зачастую связаны с написанием одних и тех же частей кода (подобных с небольшими различиями) в совершенно разнотипных программах.

Объяснялось это легко – в разных программах их похожие части выполняли однотипные (аналогичные) решения: расчет расходов и доходов, учет ресурсов, задачи с нелинейными уравнениями и тому подобные.

Даже поверхностный анализ дает неопровержимый вывод о необходимости применения при написании новых программных продуктов уже ранее разработанных частей программного кода (модулей), что ускоряет данный процесс и экономит ресурсы при разработке.

Ничего непонятно?

Попробуй обратиться за помощью к преподавателям

Таким образом, сформировался один из первых эффективных методов программной инженерии – модульный — состоящий в нахождении и выделении повторяющихся (похожих) элементов кода (фрагментов программ) и оформлении их в виде модулей.

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

Модульный интерфейс необходим для установления связей с остальными модулями (при их наличии) и со всем программным продуктом – связи по управления и данным.

Сама возможность многократного использования таких выявленных модулей определяется во многом именно сложностью и количеством связей, при этом учитываются возможности согласования по управлению и структуре данных. Постепенно были накоплены большие библиотеки стандартных процедур (модулей) по решению большинства математических задач.

Но, тем не менее, для многих обнаруживаемых и классифицируемых модулей (не математических задач) возможности по их многократному применению оказываются при таком подходе проблематичными именно в виду не универсальности интерфейса с основной программой. Многократное применение модулей со сложными связями позволяют использовать специально разработанные формы или структуры организации их интерфейсов и представления модулей.

Структурное программирование

При возрастании сложности программных продуктов обозначился следующий этап увеличения стоимости разработки программ. К сложным программам относятся системы управления производствами и комплексами, в том числе описывающие поведение различных космических тел и объектов. Сложность оценивается большими показателями по:

  • объему кода (более миллиона строк);
  • количествам связей между элементами программы;
  • коллективу программистов (несколько отделов с узкой специализацией) и пользователей,
  • длительности использования во времени.

Для сложных программ (более миллиона строк машинного кода) оказалось, что основная часть затрат ресурсов затрачивается не на их написание, а на внедрение и обеспечение устойчивого функционирования при эксплуатации.

При этом из промышленности в программную инженерию был взят новый термин, описывающий жизненный цикл программ.

Жизненный цикл программного продукта сложился таким образом из этапов, присущих промышленной инженерии — проектирование, разработка, тестирование, внедрение, сопровождение в процессе функционирования и вывод из эксплуатации.

Структурное программирование сформировалось при проведении работ по сопровождению программного продукта, включая действия по исправлению ошибок в работе и проведение доработок в соответствии с уточненными или изменившимися требованиями.

При этом важной причиной затрат ресурсов (иногда — невозможности создания или совершенствования определенных программ) этапа сопровождения оказалось недостаточность проработки этапа проектирования.

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

Разработана была соответственно технология структурного программирования, используемая в обязательном порядке и в современности при написании программных продуктов, обеспечивающая простоту понимания кодов и процесса кодирования, имеющая принципы:

  • нисходящего функционального проектирования (при таком подходе система делится на основные подсистемы, элементы этих подсистем и т.д);
  • использования специальных средств проектирования и автоматизации их использования (языки программирования нового уровня);
  • усиления дисциплины при проведении проектирования и создания программных продуктов (написание и соблюдение планов и полное документирование проектов, обеспечение соответствия между программными изделием и документацией).

Каскадный и гибкие методы

Одними из самых современных методов программирования являются каскадный и гибкий циклы создания современных программных продуктов.

Замечание 1

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

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

И потому применение гибкого метода оправдано только в крупных проектах или растянутых по временным рамкам, либо при периодических изменениях (корректировке) исходных требований, или когда нет возможности четко спланировать изначально все нюансы при создании программного продукта. А вот классический каскадный метод подойдет для всех небольших проектов с четко определенными начальными требованиями и при наличии достаточного числа специалистов высокой квалификации (рисунок 1).

Рисунок 1. Каскадный метод. Автор24 — интернет-биржа студенческих работ

Современное развитие методов программной инженерии при создании программных продуктов позволяет создавать быстро и с затратой минимального количества ресурсов качественные программы, способные прекрасно функционировать на всем своем жизненном цикле от проектирования до выведения (или снятия) из эксплуатации.

Источник: https://spravochnick.ru/informacionnye_tehnologii/metody_programmnoy_inzhenerii/

Инструменты и методы программной инженерии — Программирование

Методы программной инженерии

Рабочий план (весенний семестр 2020)
неделяТема лекцииТема лаб. занятияПрограммаПРКонтроль КП
1Принципы проектирования SOLIDПроектирование MVC приложенияЗадача Обойный калькулятор.pdfpr1. Обойный калькулятор1Таблица сравнение аналогов и концепция ПО
2Характеристики качества ПОИспользование MVC  компонента в приложенииКаталог учебных дисциплин2, 4use-case и список требований
3Архитектурные стили. Репозиторий и клиент-сервер Многоуровневая архитектура.MVC и разновидности Реализация MVP приложенияpr2. Html-редактор3ТЗ
4Событийная архитектура и ее разновидностиОбработка событий мышиpr3. Растровый графический редактор5диаграммы последовательностей
5Тестирование как этап разработки ПО (Уровни тестирования)Работа с БДpr4. Менеджер паролей5CRC карточки и представление архитектуры
6Тестирование – как инструмент разработки ПО (методы функционального и структурного тестирования) Использование паттерна DAO в приложенииМенеджер паролей8тест-кейсы
7Управление конфигурацией как вспомогательный процесс разработки ПОРеализация событийного управленияpr4. Мониторинг «теплицы» (программа управления микроклиматом)13размещение проекта на githab
8Архитектура «каналы и фильтры» и ее разновидностиПотоковая обработка данныхpr5. Генератор паролей9unit-тесты
9Техники программирования. Организация многопоточностиРазработка многопоточного приложенияpr6. Моделирование «Аквариум»6код ревью
10Техники программирования. Синхронизация потоковСинхронизацияМоделирование «Аквариум»+корм
11Управление качеством процесса и документированиеРеализация насыщенных GUIpr7. Игра «Двоичный пазл»7листинг программы
12Паттерны проектированияПаттерн Компоновщикpr8. ?Клипмейкервыбор паттерна
13Клиент-серверная архитектура. Механизмы взаимодействия компонентовСокетыpr9. Чат14руководство пользователя
14Эволюция ПОРеализация клиент-серверного взаимодействияpr9. Игра с «соседом»11инсталлятор
15Техники программирования. Обработка исключенияРазработка веб-приложения «Конструктор тестов»10
16SOA и механизмы интеграции приложенийРазработка веб-приложенияpr10. Веб-сервер «контроль знаний»12
17Методологии ПОИнтеграция приложенийИОС15контроль лаб.
18Введение в управление программными проектамиЗащита проектовПрезентация

Слайды к лекциям см. здесьПрактические занятия (ищите ПР по номерам )Описание лабораторных работ на странице Программы ВЕСНА-2020

Контроль семестра — ЭКЗАМЕН (для допуска 7 программ и КП, «отлично» — 12 программ или 8 программ и 10 отчетов по ПР)

Источник: https://www.sites.google.com/site/opaisspo/instrumenty-i-metody-programmnoj-inzenerii

2. Методы программной инженерии (Software Engineering Methods)

Методы программной инженерии

Основы программной инженерии (по SWEBOK)

Программная инженерия. Инструменты и методы программной инженерии.

Инструменты инспектирования. Эти средства используются для поддержки обзора (review) и аудита.

Инструменты (статического) анализа. Эти средства используются для анализа программных артефактов, данных, потоков работ и зависимостей. Такие инструменты предназначены для проверки определенных свойств или артефактов, в целом, на соответствие .

1.10Дополнительные аспекты инструментального обеспечения (Miscellaneous Tool Issues)

Эта тема охватывает вопросы, касающиеся всех классов инструментов. Создателями SWEBOK идентифицированы три категории таких аспектов:

Техники интеграции инструментов. Эти техники важны для естественного использования сочетания различных инструментов. Типичные виды интеграции инструментов включают платформы, представление, процессы, данные и управление.

Мета-инструменты. Такие средства генерируют другие инструменты. Например, классическим примером мета-инструмента является компилятор компиляторов.

Оценка инструментов. Данная тема представляется достаточно важной в силу постоянной эволюции инструментов программной инженерии.

Данная секция (подобласть) разделена на три темы: эвристические методы (heuristic methods), касающиеся неформализованных подходов; формальные методы (formal methods), обоснованные математически; методы прототипирования (prototyping methods), базирующиеся на различных формах прототипирования. Эти три темы не являются изолированными , скорее они выделены исходя из их значимости и на основе определенных достаточно явных индивидуальных особенностей. Например, объектно-ориентированный подход может включать формальные техники и использовать прототипирование для проверки и аттестации. Так же как и инструменты, методы программной инженерии постоянно эволюционируют. Именно поэтому, в описании данной области знаний авторы SWEBOK постарались избежать, насколько это возможно, упоминания любых конкретных методологий.

2.1 Эвристические методы (Heuristic Methods)

Эта тема содержит четыре категории методов: структурные, ориентированные на данные,

объектно-ориентированные и ориентированные на область применения.

Структурные методы (structured methods). При таком подходе системы строится с

функциональной точки зрения, начиная с высокоуровневого понимания поведения системы с постепенным уточнением низко-уровневых деталей. (такой подход, иногда, также называют “проектированием сверху-вниз”)

Методы, ориентированные на данные (data-oriented methods). Отправной точкой такого подхода являются структуры данных, которыми манипулирует создаваемое программное обеспечение. Функции в этом случае являются вторичными.

Объектно-ориентированные методы (object-oriented methods). Система при таком подходе рассматривается как коллекция объектов, а не функций.

Методы, ориентированные на конкретную область применения (domain-specific methods). Такие специализированные методы разрабатываются с учетом специфики решаемых задач, например, систем реального времени, безопасности (safety) и защищенности (security).

2.2Формальные методы (Formal Methods)

Copyright © Сергей Орлик, 2004-2010.

8

http://swebok.sorlik.ru

Основы программной инженерии (по SWEBOK)

Программная инженерия. Инструменты и методы программной инженерии.

Эта тема касается математических (строгих) методов программной инженерии.

К сожалению, SWEBOK не дает здесь какого-либо определения формальных методов, поэтому, хотелось бы привести в данном контексте характеристику, данную им одним из классиков программной инженерии – Ианом Соммервиллем [Соммервилл, 2002, стр.

188]: “Термин формальные методы подразумевает ряд операций, в состав которых входит создание формальной спецификации системы, анализ и доказательство спецификаций, реализация системы на основе преобразования формальной спецификации в программы и верификация программ.

Все эти действия зависят от формальной спецификации программного обеспечения. Формальная спецификация – это системная спецификация, записанная на языке, словарь, синтаксис и семантика которого определены формально.

Необходимость формального определения языка предполагает, что этот язык основывается на математических концепциях. Здесь используется область математики, которая называется дискретной математикой и основывается на алгебре, теории множеств и алгебре логики.”

Эти методы можно классифицировать в виде следующих категорий:

Языки и нотации специфицирования (specification languages and notations). Языки спецификаций могут быть ориентированы на модель, свойства и поведение. По мнению автора, ярким примером такого рода методов являются формальные методы описания требований, интерес к которым периодически возникает на протяжении всей истории программной инженерии.

Уточнение (refinement). Данные подходы связаны с уточнением (трансформацией) превращения спецификаций в конечный результат, максимально близкий желаемому. В качестве результата применения таких методов рассматривается конечный — исполнимый программный продукт.

Подтверждение/доказательство (verification/proving properties). Этот подход основывается на строгом доказательстве точности характеристик с использованием теорем и проверки точности моделей.

История программной инженерии показала, что в области разработки прикладных систем, обоснованность (в частности, в силу трудоемкости) применения формальных методов не подтверждается на практике, за исключением случаев “скрытого” (неявного для разработчиков) применения определенных формальных методов на уровне внутренней реализации конкретных инструментов программной инженерии, например, в средствах моделирования и проектирования. Иан Соммервилл дает такую характеристику формальным методам [Соммервилл, 2002, стр. 188]: “Традиционные технические дисциплины … обычно легко адаптируют математические методы. Однако инженерия программного обеспечения не идет таким путем. Хотя прошло более 25 лет исследований по использованию математических методов в процессе создания ПО, воздействие этих методов все же ограничено. Так называемые формальны методы … широко не используются. Многие компании, разрабатывающие ПО, не считают экономически выгодным применение этих методов в процессе разработки.”

2.3 Методы прототипирования (Prototyping Methods)

Эта тема охватывает методы, основанные на прототипировании программного обеспечения. Они разделены на три категории:

Стили прототипирования. Идентифицированы следующие подходы, касающиеся стилей прототипирования – создание временно используемых прототипов (throwaway), эволюционное прототипирование (в подавляющем большинстве случаев предполагает превращение прототипа в конечный продукт) и разработка исполняемых спецификаций (часто основывается как на формальных методах).

Цели прототипирования. Примерами таких целей служат требования, архитектурный дизайн или пользовательский интерфейс.

Copyright © Сергей Орлик, 2004-2010.

9

http://swebok.sorlik.ru

Основы программной инженерии (по SWEBOK)

Программная инженерия. Инструменты и методы программной инженерии.

Техники оценки/исследования (evaluation) прототипирования. Эти аспекты касаются того, как именно будут использованы результаты создания прототипа (например, будет ли он трансформирован в продукт, создается он для оценки нагрузочных способностей и других аспектов масштабируемости и т.п.).

Copyright © Сергей Орлик, 2004-2010.

10

http://swebok.sorlik.ru

Основы программной инженерии (по SWEBOK)

Программная инженерия. Качество программного обеспечения.

Программная инженерия

Качество программного обеспечения

(Software Quality)

Глава базируется на IEEE Guide to the Software Engineering Body of Knowledge — SWEBOK®, 2004.

Источник: https://studfile.net/preview/3652697/page:23/

Booksm
Добавить комментарий