Программный интеллект — это понимание внутренней работы и структурного состояния программных активов, созданных программным обеспечением, разработанным для анализа структуры базы данных , программной инфраструктуры и исходного кода для лучшего понимания и управления сложными программными системами в средах информационных технологий . [1] [2] Подобно бизнес-аналитике (BI), программный интеллект создается набором программных инструментов и методов для добычи данных и внутренней структуры программного обеспечения. Результаты автоматически генерируются и пополняют базу знаний, содержащую техническую документацию и чертежи внутренней работы приложений, [3] и делают ее доступной для использования всеми заинтересованными сторонами бизнеса и программного обеспечения для принятия обоснованных решений, [4] измерения эффективности организаций по разработке программного обеспечения, информирования о состоянии программного обеспечения, предотвращения катастроф программного обеспечения. [5]
История
Программный интеллект использовался Кирком Полом Лафлером, американским инженером, предпринимателем и консультантом, основателем Software Intelligence Corporation в 1979 году. В то время он был в основном связан с деятельностью SAS , в которой он является экспертом с 1979 года. [6]
В начале 1980-х годов Виктор Р. Базили участвовал в различных работах, в которых подробно описывалась методология сбора достоверных данных по программной инженерии, касающихся программной инженерии, оценки разработки программного обеспечения и вариаций. [7] [8]
В 2004 году различные поставщики программного обеспечения в области анализа программного обеспечения начали использовать эти термины как часть своей стратегии наименования продуктов и маркетинга.
Затем в 2010 году Ахмед Э. Хассан и Тао Се определили программный интеллект как « практику, предлагающую программным специалистам актуальную и уместную информацию для поддержки их ежедневных процессов принятия решений, и программный интеллект должен поддерживать процессы принятия решений на протяжении всего жизненного цикла программной системы ». Они продолжают, определяя программный интеллект как « сильное влияние на современную практику программного обеспечения » на предстоящие десятилетия. [9]
Возможности
Ввиду сложности и широкого спектра компонентов и субъектов, подразумеваемых в программном обеспечении, программный интеллект выводится из различных аспектов программного обеспечения:
- Состав программного обеспечения — это построение компонентов программного приложения. [10] Компоненты являются результатом кодирования программного обеспечения, а также интеграции исходного кода из внешних компонентов: Open source, сторонних компонентов или фреймворков. Другие компоненты могут быть интегрированы с использованием вызова интерфейса прикладного программирования к библиотекам или службам.
- Архитектура программного обеспечения относится к структуре и организации элементов системы, отношениям и свойствам между ними.
- Недостатки программного обеспечения обозначают проблемы, которые могут привести к безопасности, стабильности, отказоустойчивости и неожиданным результатам. Стандартного определения недостатков программного обеспечения не существует, но наиболее приемлемое определение дано The MITRE Corporation , где общие недостатки каталогизированы как Common Weakness Enumeration . [11]
- Оценки программного обеспечения оценивают атрибуты программного обеспечения. Исторически классификация и терминология атрибутов были получены из модели качества ISO 9126-3 и последующей модели качества ISO 25000:2005 [12] .
- Экономика программного обеспечения относится к оценке ресурсов программного обеспечения в прошлом, настоящем или будущем для принятия решений и управления. [13]
Компоненты
Возможности платформ программного интеллекта включают в себя все большее количество компонентов:
- Анализатор кода, служащий информационной основой для других компонентов программного интеллекта, идентифицирующих объекты, созданные языком программирования, внешние объекты из открытого исходного кода , сторонние объекты, фреймворки , API или службы.
- Графическая визуализация и проектирование внутренней структуры программного продукта или приложения рассматривается [14], включая зависимости, от сбора данных (автоматизированный и в режиме реального времени сбор данных, записи конечного пользователя) до хранения данных, различных слоев [15] в программном обеспечении и связи между всеми элементами.
- Возможности навигации в компонентах и функции анализа воздействия
- Список недостатков, нарушений архитектуры и кодирования, противоречащих стандартизированным передовым практикам, [16] облачный блокировщик, препятствующий миграции в облачную среду, [17] и несанкционированный вызов данных, влияющий на безопасность и целостность программного обеспечения [18]
- Оценки или баллы структурного и программного качества, соответствующие отраслевым стандартам, таким как OMG , CISQ или SEI, оценивающие надежность, безопасность, эффективность, удобство обслуживания и масштабируемость для облака или других систем.
- Метрики, количественно определяющие и оценивающие экономику программного обеспечения, включая трудозатраты, размер и технический долг [19]
- Отраслевые ссылки и сравнительный анализ, позволяющие сравнивать результаты анализа с отраслевыми стандартами
Пользовательский аспект
Необходимо учесть некоторые соображения для успешной интеграции использования систем программного обеспечения Intelligence в компании. В конечном счете, система программного обеспечения Intelligence должна быть принята и использована пользователями, чтобы она могла добавить ценность для организации. Если система не добавляет ценности миссии пользователей, они просто не используют ее, как заявил М. Стори в 2003 году. [20]
На уровне кода и представления системы программные интеллектуальные системы должны обеспечивать другой уровень абстракций: абстрактный вид для проектирования, объяснения и документирования и подробный вид для понимания и анализа программной системы. [21]
На уровне управления принятие пользователем программного интеллекта охватывает различные области, связанные с внутренним функционированием системы, а также с выходом системы. Оно охватывает следующие требования:
- Всеобъемлющий: отсутствие информации может привести к неправильному или неадекватному решению, а также является фактором, влияющим на принятие системы пользователем. [22]
- Точность: точность зависит от того, как собираются данные, чтобы обеспечить справедливое и бесспорное мнение и суждение. [23]
- Точность: точность обычно оценивается путем сравнения нескольких измерений из одного и того же или разных источников. [24]
- Масштабируемость: отсутствие масштабируемости в индустрии программного обеспечения является критическим фактором, ведущим к неудачам. [25]
- Достоверность: результаты должны вызывать доверие и веру.
- Готов к развертыванию и использованию.
Приложения
Программный интеллект имеет множество приложений во всех сферах бизнеса, связанных с программной средой, будь то программное обеспечение для профессионалов, отдельных лиц или встроенное программное обеспечение. В зависимости от ассоциации и использования компонентов приложения будут относиться к:
- Изменение и модернизация: единая документация и чертежи для всех внутренних компонентов, внешний код интегрирован или вызов внутренних или внешних компонентов программного обеспечения [26]
- Устойчивость и безопасность: измерение в соответствии со стандартами отрасли для диагностики структурных недостатков в ИТ-среде. [ необходима ссылка ] Проверка соответствия требованиям безопасности, конкретным правилам или техническим вопросам.
- Принятие решений и управление: предоставление аналитики о самом программном обеспечении или заинтересованных сторонах, участвующих в разработке программного обеспечения, например, измерение производительности для информирования руководителей бизнеса и ИТ-отделов о прогрессе в достижении бизнес-целей. [27]
- Оценка и сравнительный анализ помогают руководителям бизнеса и ИТ-отделов принимать обоснованные решения относительно программного обеспечения на основе фактов. [28]
Торговая площадка
Программный интеллект — это дисциплина высокого уровня, которая постепенно расширяется, охватывая перечисленные выше приложения. Потребность в нем обусловлена несколькими рынками:
- Анализ портфеля приложений (APA), направленный на повышение производительности предприятия. [29] [30]
- Оценка программного обеспечения для разработки ключевых показателей эффективности программного обеспечения и повышения качества и производительности. [31]
- Меры по обеспечению безопасности и отказоустойчивости программного обеспечения, а также проверка.
- Эволюция программного обеспечения или модернизация устаревшего ПО, для которой не требуется ни проектирование систем программного обеспечения, ни инструменты, улучшающие и упрощающие модификации. [ необходима цитата ]
Ссылки
- ^ Домбровски Р. (2012) Об архитектурных хранилищах и программном интеллекте. В: Ким Т., Ли Ю., Фанг В. (ред.) Информационные технологии будущего поколения. FGIT 2012. Конспект лекций по информатике, том 7709. Springer, Берлин, Гейдельберг
- ^ Хинчи, Майк; Джейн, Амит; Каушик, Манджу; Мисра, Санджай (январь 2023 г.). «Гостевая редакционная статья: Интеллект для системной и программной инженерии». Инновации в системной и программной инженерии . 19 (1). Springer : 1–4. doi :10.1007/s11334-023-00526-1. PMC 9886201. PMID 36744022.
- ^ Bartoszuk, C., Dąbrowski, R., Stencel, K., & Timoszuk, G. "О быстром понимании и оценке программного обеспечения.", В трудах 14-й Международной конференции по компьютерным системам и технологиям, июнь 2013 г., стр. 161-168 doi :10.1145/2516775.2516806
- ^ Рэймонд ПЛ Бус и Томас Циммерман. "Информационные потребности в аналитике разработки программного обеспечения". 2012 34-я Международная конференция по программной инженерии (ICSE). IEEE, июнь 2012 г., стр. 987-996 doi :10.1109/ICSE.2012.6227122
- ^ Ахмед Э. Хассан и Тао Се. 2010. Программный интеллект: будущее данных по разработке программного обеспечения. В трудах семинара FSE/SDP по будущему исследований в области разработки программного обеспечения (FoSER '10). ACM, Нью-Йорк, США, 161–166
- ^ "Г-н Кирк Пол Лафлер". 21 декабря 2015 г.
- ^ Basili, Victor R. (1981). Сбор данных, проверка и анализ. Software Metrics: An Analysis and Evaluation (PDF) . MIT Press. стр. 143. ISBN 0-262-16083-8.
- ^ Basili, Victor R.; Weiss, David M. (ноябрь 1984 г.). «Методология сбора достоверных данных по программной инженерии». IEEE Transactions on Software Engineering (6). IEEE Trans. Softw. Eng. 10, 6 (ноябрь 1984 г.): 728–738. doi :10.1109/TSE.1984.5010301. hdl : 1903/7513 .
- ^ Ахмед Э. Хассан и Тао Се. 2010. Программный интеллект: будущее интеллектуального анализа данных по программной инженерии. В материалах семинара FSE/SDP по будущему исследований в области программной инженерии (FoSER '10). ACM, Нью-Йорк, штат Нью-Йорк, США, 161–166. doi :10.1145/1882362.1882397
- ^ Ниерстрас, Оскар и Тео Дирк Мейлер. «Направления исследований в области составления программного обеспечения». ACM Computing Surveys 27.2 (1995): 262-264 doi :10.1145/210376.210389
- ^ Канаширо, Л. и др. «Прогнозирование недостатков программного обеспечения с помощью моделей низкой сложности на основе данных статического анализа». Журнал «Информационная системная инженерия и менеджмент» 3.2 (2018): 17 doi :10.20897/jisem.201817
- ^ "ISO 25000:2005" (PDF) . Архивировано (PDF) из оригинала 2013-04-14 . Получено 2013-10-18 .
- ^ Бём, Барри В. и Кевин Дж. Салливан. «Экономика программного обеспечения: дорожная карта». Труды конференции «Будущее программной инженерии». 2000. doi :10.1145/336512.336584
- ^ Ренато Новаис, Хосе Амансио Сантос, Маноэль Мендонса, Экспериментальная оценка комбинации нескольких стратегий визуализации для анализа эволюции программного обеспечения, Журнал систем и программного обеспечения, том 128, 2017, стр. 56–71, ISSN 0164-1212, doi : 10.1016/j.jss.2017.03.006.
- ^
Ролиа, Джером А. и Кеннет С. Севчик. «Метод слоев». Труды IEEE по программной инженерии 21.8,1995, 689-700, doi :10.1109/32.403785
- ^ "Правила разработки программного обеспечения по качеству кода". Object Management Group, Inc. 2023 . Получено 15 декабря 2023 .
- ^ Балалайе, Армин, Аббас Хейдарноори и Пуян Джамшиди. «Архитектура микросервисов позволяет использовать DevOps: миграция на архитектуру, изначально ориентированную на облако». Ieee Software 33.3, май–июнь 2016 г., 42–52, doi :10.1109/MS.2016.64
- ^
Q. Feng, R. Kazman, Y. Cai, R. Mo и L. Xiao, «На пути к архитектурно-ориентированному подходу к анализу безопасности», 13-я рабочая конференция IEEE/IFIP по архитектуре программного обеспечения (WICSA), Венеция, 2016, стр. 221-230, doi :10.1109/WICSA.2016.41
- ^
Р. Хаас, Р. Нидермайр и Э. Юргенс, «Teamscale: борьба с техническим долгом и контроль качества вашего программного обеспечения», Международная конференция IEEE/ACM по техническому долгу (TechDebt) 2019 г., Монреаль, Квебек, Канада, 2019 г., стр. 55–56, doi : 10.1109/TechDebt.2019.00016
- ^ Стори М. А. (2003) Разработка инструмента исследования программного обеспечения с использованием когнитивной структуры. В: Чжан К. (ред.) Визуализация программного обеспечения. Международная серия Springer по инжинирингу и информатике, том 734. Springer, Бостон, Массачусетс.
- ^ Сона Ли, Сонвон Канг, Какая ситуативная информация поможет разработчикам при использовании графического рекомендателя кода?, Журнал систем и программного обеспечения, том 117, 2016, стр. 199–217, ISSN 0164-1212, doi :10.1016/j.jss.2016.02.050.
- ^ Линда Г. Уоллес, Стивен Д. Шитц, Принятие мер по программному обеспечению: перспектива модели принятия технологий (TAM), Информация и менеджмент, том 51, выпуск 2, 2014, стр. 249–259, ISSN 0378-7206, doi : 10.1016/j.im.2013.12.003
- ^ Липперт, СК; Форман, Х. (август 2005 г.). «Использование информационных технологий: изучение когнитивных и эмпирических факторов поведения после внедрения». Труды IEEE по инженерному менеджменту . 52 (3): 363–381. doi :10.1109/TEM.2005.851273 . Получено 8 декабря 2023 г.
- ^ Banker, RD; Kemerer, CF (декабрь 1992 г.). «Метрики оценки производительности для разработки информационных систем: модель принципала-агента». Information Systems Research . 3 (4): 379–400. doi :10.1287/isre.3.4.379. JSTOR 23010648. Получено 8 декабря 2023 г.
- ^ Краун, М. (9 июля 2003 г.). «Почему стартапы по разработке программного продукта терпят неудачу и что с этим делать. Эволюция разработки программного продукта в стартапах». Международная конференция по инженерному менеджменту IEEE . Том 1. Международная конференция по инженерному менеджменту IEEE. стр. 338–343. doi :10.1109/IEMC.2002.1038454. ISBN 0-7803-7385-5. Получено 8 декабря 2023 г. .
- ^ Парнас, Дэвид Лорж, Точная документация: ключ к лучшему программному обеспечению, Будущее программной инженерии, 2011, 125–148, doi :10.1007/978-3-642-15187-3_8
- ^ LaValle, S.; Lesser, E.; Shockley, R.; Hopkins, MS (21 декабря 2010 г.). «Большие данные, аналитика и путь от понимания к ценности». MIT Sloan Management Review . 52 (2): 21–32 . Получено 8 декабря 2023 г.
- ^ Янез Прашникар; Жига Дебеляк; Алеш Ахчан (3 декабря 2010 г.). «Бенчмаркинг как инструмент стратегического управления». Тотальное управление качеством и совершенство бизнеса . 16 (2): 257–275. дои : 10.1080/14783360500054400 . Проверено 8 декабря 2023 г.
- ^ "Gartner Glossary - Applications Portfolio Analysis (APA)". Gartner, Inc. 2023 . Получено 7 декабря 2023 .
- ^ "Gartner Research - Эффективные стратегии для обеспечения устойчивой оптимизации затрат в службах приложений". Gartner, Inc. 4 октября 2017 г. Получено 7 декабря 2017 г.
- ^ "О спецификации автоматизированных функциональных точек версии 1.0". Object Management Group. Декабрь 2013 г. Получено 7 декабря 2023 г.