Эволюция программного обеспечения - Software evolution

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

Общее введение

Фред Брукс в своей ключевой книге Мифический человеко-месяц,[1] утверждает, что более 90% затрат на типичную систему возникает на этапе обслуживания, и что любое успешное программное обеспечение неизбежно будет поддерживаться.

Фактически, Гибкие методы проистекают из мероприятий, связанных с обслуживанием, в веб-технологиях и вокруг них, где большая часть возможностей обеспечивается структурами и стандартами.[нужна цитата ]

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

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

Базовые концепты

Необходимость эволюции программного обеспечения возникает из-за того, что никто не может предсказать, как будут развиваться требования пользователей. априори .[3] Другими словами, существующие системы никогда не завершаются и продолжают развиваться.[4] По мере их развития сложность систем будет расти, если не будет найдено лучшего решения для решения этих проблем. Основные цели эволюции программного обеспечения - обеспечение функциональной актуальности, надежности и гибкости системы. Эволюция программного обеспечения может быть полностью ручной (на основе изменений, вносимых разработчиками программного обеспечения), частично автоматизированной (например, с использованием инструментов рефакторинга) или полностью автоматизированной (с автономной конфигурацией или эволюцией).[5]).

Интернет сильно повлиял на эволюцию программного обеспечения:

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

Виды сопровождения программного обеспечения

Э. Свонсон первоначально выделил три категории обслуживания: корректирующее, адаптивное и совершенное. Затем Линц и Свансон (1980) каталогизировали четыре категории программного обеспечения.[6]С тех пор они были обновлены и нормализованы на международном уровне в ISO / IEC 14764:2006:[7]

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

Все предыдущее имеет место, когда есть известная потребность в изменении.

Хотя эти категории были дополнены многими авторами, такими как Warren et al. (1999)[8] и Чапин (2001),[9] Международный стандарт ISO / IEC 14764: 2006 сохранил четыре основные категории.

Совсем недавно описание обслуживания и развития программного обеспечения было выполнено с использованием онтологий (Kitchenham et al. (1999),[10] Дериддер (2002),[11] Бискайно (2003),[12] Диас (2003),[13] и Руис (2004)[14]), которые обогащают описание многих видов эволюционной деятельности.

Сценическая модель

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

  • По словам К. Х. Беннета и В. Т. Райлиха,[15] Ключевой вклад заключается в разделении фазы «обслуживания» на стадию развития, за которой следуют стадии обслуживания и поэтапного отказа. Первая версия программного обеспечения, в которой отсутствуют некоторые функции, будет разработана на начальном этапе разработки или также известна как альфа-этап.[15] Тем не менее, архитектура уже была в собственности на этом этапе с учетом любых будущих изменений или дополнений. Большинство ссылок на этом этапе основано на сценариях или тематическом исследовании. Знания определили как еще один важный результат начального развития. Такие знания, включая знание предметной области, требований пользователей, бизнес-правил, политик, решений, алгоритмов и т. Д., Также кажутся важным фактором для последующей фазы эволюции.
  • Как только предыдущий этап завершился успешно (и должен быть успешно завершен перед переходом на следующий этап), следующим этапом будет эволюция. Пользователи, как правило, изменяют свои требования, а также предпочитают видеть некоторые улучшения или изменения. Из-за этого фактора индустрия программного обеспечения сталкивается с проблемами быстрых изменений среды. Следовательно, цель эволюции - адаптировать приложение к постоянно меняющимся требованиям пользователей и операционной среде.[15] На предыдущем этапе созданное приложение первой версии могло содержать много ошибок, и эти ошибки будут исправлены на этапе эволюции на основе более конкретных и точных требований, связанных с ситуацией или сценариями.
  • Программное обеспечение будет непрерывно развиваться до тех пор, пока оно не перестанет развиваться, а затем перейдет на стадию обслуживания (также известную как зрелость программного обеспечения). На этом этапе будут внесены только незначительные изменения.
  • Следующим этапом является поэтапный отказ от обслуживания данного программного обеспечения. Однако программное обеспечение все еще находится в разработке.
  • Наконец, закрытие. Использование программного обеспечения отключено или прекращено[15] и пользователей направляют на замену.[15]

Законы Лемана эволюции программного обеспечения

Проф. Меир М. Леман, который работал в Имперский колледж Лондон с 1972 по 2002 год, и его коллеги определили набор моделей поведения в развитии проприетарного программного обеспечения. Такое поведение (или наблюдения) известно как законы Лемана, и их восемь:

  1. (1974) «Постоянные изменения» - система E-типа должна постоянно адаптироваться, иначе она становится все менее удовлетворительной.[16]
  2. (1974) «Возрастающая сложность» - по мере развития системы E-типа ее сложность увеличивается, если не выполняется работа по ее поддержанию или уменьшению.[16]
  3. (1980) «Саморегулирование» - процессы эволюции системы Е-типа саморегулируются с распределением продукта и показателей процесса, близкими к нормальным.[16]
  4. (1978) «Сохранение организационной стабильности (неизменная скорость работы ) "- средний эффективный глобальный уровень активности в развивающейся системе E-типа не меняется в течение всего срока службы продукта.[16]
  5. (1978) «Сохранение привычки» - по мере развития системы электронного типа все связанные с ней разработчики, торговый персонал и пользователи, например, должны сохранять мастерство в ее содержании и поведении, чтобы добиться удовлетворительного развития. Чрезмерный рост снижает это мастерство. Следовательно, средний постепенный рост остается инвариантным по мере развития системы.[16]
  6. (1991) «Постоянный рост» - функциональное содержание системы электронного типа необходимо постоянно увеличивать, чтобы поддерживать удовлетворенность пользователей на протяжении всего срока ее службы.
  7. (1996) «Снижение качества» - качество системы электронного типа будет снижаться, если ее не поддерживать и не адаптировать к изменениям операционной среды.
  8. (1996) «Система обратной связи» (впервые заявлено в 1974 г., официально оформлено в виде закона 1996 г.) - процессы эволюции E-типа представляют собой многоуровневые, многопетлевые, многоагентные системы обратной связи и должны рассматриваться как таковые для достижения значительного улучшения по сравнению с любым разумным основание[17]

Стоит отметить, что применимость всех этих законов ко всем типам программных систем изучалась несколькими исследователями. Например, см. Презентацию Нанджангуда К. Нарендры.[18] где он описывает тематическое исследование корпоративного Agile-проекта в свете законов эволюции программного обеспечения Lehman. Некоторые эмпирические наблюдения, полученные в результате изучения разработка программного обеспечения с открытым исходным кодом похоже, бросает вызов некоторым законам[нечеткий ][нужна цитата ].

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

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

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

Эволюция программного обеспечения вряд ли будет Дарвиновский, Ламаркиан или же Балдвинский, но само по себе важное явление. Учитывая растущую зависимость от программного обеспечения на всех уровнях общества и экономики, успешная эволюция программного обеспечения становится все более важной. Это важная тема исследования, которой не уделялось особого внимания.

Эволюция программного обеспечения из-за его быстрого пути по сравнению с другими созданными руками человека объектами, рассматривалась Леманом как «плодовая муха» в исследовании эволюции искусственных систем.

Смотрите также

Доступные инструменты

  • apiwave - Развитие API в GitHub Java-проекты.
  • LibVCS4j Библиотека Java, которая позволяет существующим инструментам анализировать эволюцию программных систем, предоставляя общий API для различных систем контроля версий и средств отслеживания проблем.

Рекомендации

  1. ^ Фред Брукс, Мифический человеко-месяц. Эддисон-Уэсли, 1975 и 1995. ISBN0-201-00650-2 и ISBN  0-201-83595-9.
  2. ^ эдди; ref: Общие сведения об эволюции программного обеспечения с открытым исходным кодом Институт исследований программного обеспечения Уолта Скакки
  3. ^ Bennett, K. H .; Rajlich, V.T .; Мазрул, Р. Мохамад (1995). «Устаревшая система: как справиться с успехом». Программное обеспечение IEEE. С. 19–23.
  4. ^ Чунг Хунг Во (2007), Сопровождение программного обеспечения
  5. ^ Бодри, Бенуа; Монперрус, Мартин; Мони, Сендрин; Шовель, Франк; Флёри, Франк; Кларк, Шивон (2014). «РАЗНООБРАЗИТЬ: Эволюция программного обеспечения, вдохновленная экологией, для появления разнообразия». 2014 неделя развития программного обеспечения - конференция IEEE по сопровождению, реинжинирингу и обратному проектированию программного обеспечения (CSMR-WCRE). С. 395–398. CiteSeerX  10.1.1.646.2786. Дои:10.1109 / csmr-wcre.2014.6747203. ISBN  9781479937523.
  6. ^ Линц, Б. и Суонсон, Э. Б., Управление обслуживанием программного обеспечения, исследование обслуживания программного обеспечения компьютерных приложений в 487 организациях обработки данных. Аддисон-Уэсли, Рединг, Массачусетс, 1980. ISBN  0-201-04205-3
  7. ^ ISO / IEC 14764:2006, 2006.
  8. ^ Пол Уоррен; Корнелия Болдырева; Малькольм Манро (1999). «Эволюция сайтов». Материалы седьмого международного семинара по пониманию программ. IEEE. С. 178–185.
  9. ^ Нед Чапин; Джоан Э. Хейл; Халед Мад Хан; Хуан Ф. Рамиль; Вуй-Ги Тан (2001). «Типы развития программного обеспечения и сопровождение программного обеспечения». Журнал поддержки и развития программного обеспечения: исследования и практика. 13 (1): 3–30. Дои:10.1002 / smr.220.
  10. ^ Барбара Китченхэм; Гильерме Травассос; Аннелиз фон Майрхаузер; Фрэнк Ниссинк; Норман Шнайдвинд; Дженис Сингер; Синго Такада; Ристо Вехвилайнен; Хунцзи Ян (1999). «К онтологии сопровождения программного обеспечения». Журнал обслуживания программного обеспечения. 11 (6): 365–389. Дои:10.1002 / (SICI) 1096-908X (199911/12) 11: 6 <365 :: AID-SMR200> 3.0.CO; 2-W. HDL:10945/55140.
  11. ^ Дирк Дериддер (2002). «Концептуально-ориентированный подход к поддержке деятельности по обслуживанию и повторному использованию программного обеспечения». Труды 5-й совместной конференции по разработке программного обеспечения, основанного на знаниях.
  12. ^ Аврора Вискайно; Хесус Фавела; Марио Пиаттини (2003). «Многоагентная система управления знаниями при сопровождении программного обеспечения». Интеллектуальные информационные и инженерные системы, основанные на знаниях. Springer. С. 415–421.
  13. ^ Марсио Диас; Николя Анкетиль; Катия де Оливейра (2003). «Организация знаний, используемых при обслуживании программного обеспечения». Журнал универсальных компьютерных наук. 9 (7): 641–658.
  14. ^ Франсиско Руис; Аврора Вискайно; Марио Пиаттини; Феликс Гарсия (2004). «Онтология для управления проектами сопровождения программного обеспечения». Международный журнал программной инженерии и инженерии знаний. 14 (3): 323–349. Дои:10.1142 / S0218194004001646.
  15. ^ а б c d е ж Беннетт, Кейт; Райлих, Вацлав (01.07.2000). «Поэтапная модель жизненного цикла программного обеспечения» (PDF). Компьютер (журнал). Компьютерное общество IEEE: 66–71. Дои:10.1109/2.869374. Получено 2020-05-23.CS1 maint: дата и год (связь)
  16. ^ а б c d е Леман, М. М. (1980). «О понимании законов, эволюции и сохранения в жизненном цикле больших программ». Журнал систем и программного обеспечения. 1: 213–221. Дои:10.1016/0164-1212(79)90022-0.
  17. ^ Законы Лемана эволюции программного обеспечения
  18. ^ Нарендра, Нанджангуд (29 апреля 2011 г.). «Эволюция программного обеспечения в гибкой разработке». InfoQ. Получено 19 марта 2016.

дальнейшее чтение

  • Андреа Капилуппи, Хесус М. Гонсалес Бараона, Исраэль Херрайс, Грегорио Роблес, адаптация «Поэтапной модели эволюции программного обеспечения» к FLOSS
  • Марк К. Полк, История программного обеспечения модели зрелости возможностей