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

Программный интеллект: недостающий слой между вашим кодом и вашими решениями.

Каждая крупная организация работает на программном обеспечении, которое она не до конца понимает. Финансовое учреждение, обрабатывающее транзакции на одном и том же COBOL-ядре уже сорок лет. Производитель, чья система планирования производства накопила логику за пятнадцать версий и три поколения разработчиков. Страховая компания, чья система администрирования полисов содержит бизнес-правила, которые существуют только в поведении самого кода. Эти организации не невежественны, их команды квалифицированы и опытны. Но программное обеспечение переросло полные знания любого отдельного человека, и документация перестала соответствовать коду задолго до того, как это кто-либо заметил.

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

Просмотрите все структуры данных, которыми вы владеете.

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

Узнать больше

Содержание

Что такое программный интеллект?

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

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

Программная аналитика против бизнес-аналитики

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

РазмерыBusiness IntelligenceПрограммный интеллект
Что он анализируетБизнес-данные (транзакции, события, показатели)Структура программного обеспечения (код, зависимости, схемы)
Основной выходПанели мониторинга, отчеты, ключевые показатели эффективности (KPI).Карты зависимостей, анализ влияния, метрики кода
Кто его используетБизнес-аналитики, руководителиПрограммисты, архитекторы, ИТ-менеджеры
Ответ на ключевой вопросЧем занимается эта компания?Что содержит это программное обеспечение и как оно взаимодействует?
Когда он работаетНепрерывный доступ к бизнес-данным в режиме реального времени.В исходном коде, по запросу или непрерывно.
Стоимость предприятияОперативная видимостьУправление инженерными рисками и контроль изменений

Программный интеллект против интеллектуального программного обеспечения

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

Платформа программного обеспечения для интеллектуального анализа данных, подобная SMART TS XL Анализирует корпоративное программное обеспечение, включая устаревшие программы на COBOL, современные сервисы на Java и все промежуточные варианты, чтобы получить структурные знания об этих системах. Оно не делает эти системы интеллектуальными в смысле искусственного интеллекта. Оно делает их понятными: видимыми, доступными для запросов и безопасными для внесения изменений.

Компоненты платформы программного интеллекта

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

Статический анализ кода

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

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

Отображение зависимостей

Карта зависимостей отслеживает взаимосвязи между каждым компонентом программной системы: какие программы вызывают какие другие, какие модули импортируют какие библиотеки, какие функции обращаются к каким таблицам базы данных, какие наборы данных передаются от каких программ к каким потребителям. Карта зависимостей — это структурная модель системы, граф, позволяющий ответить на вопрос: «Если я изменю это, что еще пострадает?»

В крупных корпоративных системах, особенно тех, которые используют несколько языков и платформ, отображение зависимостей должно учитывать взаимосвязи, выходящие за рамки языков: программа на COBOL, которая записывает данные в таблицу DB2, затем служба на Java считывает данные из этой таблицы, а конвейер на Python выполняет преобразование. Ни один инструмент для работы с зависимостями, поддерживающий только один язык, не может увидеть эту межъязыковую цепочку; только платформа, которая понимает все языки и может объединить их модели в единый граф, обеспечивает полное покрытие.

Анализ воздействия

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

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

Поиск по всему коду предприятия

В контексте интеллектуального поиска программного обеспечения корпоративный поиск означает возможность за считанные секунды найти любой элемент программной системы, любую функцию, любую переменную, любое определение поля, любой SQL-запрос, любое имя программы во всей кодовой базе, независимо от языка программирования. Если поиск в IDE общего назначения охватывает один проект на одном языке, то корпоративный поиск кода охватывает всю систему одновременно на всех языках.

Корпоративный поиск кардинально меняет опыт работы с большими, незнакомыми кодовыми базами. Разработчик, присоединившийся к команде, которая поддерживает 200 программ на COBOL, 50 потоков заданий JCL и слой сервисов на Java, может найти необходимую информацию с помощью поискового запроса, а не тратить дни на ручное чтение кода. Архитектор, планирующий изменение схемы базы данных, может за считанные секунды найти каждое SQL-запрос, ссылающееся на определенный столбец во всех программах, вместо того, чтобы использовать поиск по нескольким репозиториям, который может пропустить динамически создаваемые запросы.

Визуализация кода

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

Визуализация служит различным целям: разработчики используют графы вызовов и диаграммы потоков данных для понимания незнакомого кода; архитекторы используют диаграммы компонентов и карты зависимостей для планирования структурных изменений; заинтересованные стороны из бизнеса используют упрощенные блок-схемы для понимания масштаба системы во время планирования или проверки соответствия требованиям; а операционные группы используют диаграммы последовательности для отслеживания потоков запросов при диагностике проблем с производительностью.

Программный интеллект на практике: примеры использования в корпоративной среде

Модернизация устаревшей системы

Наиболее сложная задача применения интеллектуальных программных средств — модернизация устаревших систем, миграция приложений на COBOL, PL/I или RPG из мэйнфреймовых сред в современные облачные архитектуры. Основная проблема заключается не в технологии миграции, а в пробеле в знаниях. Устаревшие системы накапливают десятилетия незадокументированных изменений, неявные зависимости, сформированные через общие данные, а не через явные интерфейсы, и бизнес-логику, существующую только в поведении кода.

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

Управление изменениями и оценка рисков

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

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

Техническая проверка благонадежности

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

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

Ввод в должность разработчиков и передача знаний

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

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

Непрерывный мониторинг качества

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

В конвейерах CI/CD непрерывный анализ программного обеспечения обеспечивает контроль качества, который гарантирует соблюдение структурных стандартов на этапе разработки: новая функция, превышающая порог цикломатической сложности, приводит к сбою сборки; новое обнаружение критически важных изменений в статическом анализе блокирует слияние; изменение, создающее циклическую зависимость в архитектуре, запускает проверку. Это переносит контроль качества с аудитов после выпуска на обратную связь в процессе разработки, снижая стоимость проблем с качеством за счет их выявления в момент, когда их исправление обходится дешевле всего.

Программная аналитика для различных аудиторий

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

РолиОсновное использованиеКлючевой вывод
Разработчики программного обеспеченияПонимание незнакомого кода, отслеживание зависимостейГрафы вызовов, перекрестные ссылки, поиск кода
Архитекторы программного обеспеченияИзменения в планировании, оценка структурных рисковКарты зависимостей, анализ воздействия, тепловые карты сложности.
Управление ИТ-Авторизация изменений, контроль рисковОтчеты о масштабах воздействия, показатели качества, коэффициенты технического долга.
Службы безопасностиОценка уязвимости, соответствие требованиямРезультаты статического анализа безопасности, данные об уязвимостях зависимостей.
Бизнес-аналитикиПонимание масштаба системы, подтверждение соответствия требованиямУпрощенные схемы, документация по технологическим процессам.
Слияния и поглощения и комплексная проверкаОценка качества кодовой базыПоказатели качества, коэффициенты задолженности, отчеты по классификации рисков.

Как SMART TS XL Предоставляет программную аналитику

SMART TS XL Платформа Software Intelligence® от IN-COM специально разработана для корпоративных организаций, использующих программное обеспечение, работающее на нескольких языках, платформах и с различными поколениями технологий. В то время как большинство инструментов анализа программного обеспечения работают в рамках одного языка, SMART TS XL Создает единую интеллектуальную модель, которая одновременно охватывает COBOL, JCL, Java, Python, .NET, RPG, PL/I, SQL и другие языки программирования.

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

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

Почему интеллектуальное программное обеспечение необходимо для корпоративных ИТ

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

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

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