모든 대규모 조직은 완전히 이해하지 못하는 소프트웨어를 사용하고 있습니다. 40년 동안 동일한 COBOL 코어로 거래를 처리해 온 금융 기관, 15개 버전과 세대에 걸친 개발자들을 거치면서 로직이 축적된 생산 일정 관리 시스템을 사용하는 제조업체, 코드 자체의 동작 방식에만 존재하는 비즈니스 규칙을 보험 계약 관리 시스템에 포함하는 보험사 등이 그 예입니다. 이러한 조직들이 무지한 것은 아닙니다. 그들의 팀은 숙련되고 경험이 풍부합니다. 하지만 소프트웨어는 이미 개개인의 완벽한 이해 수준을 넘어섰고, 문서화는 누구도 알아차리기 훨씬 전에 코드의 발전 속도를 따라가지 못했습니다.
소프트웨어 인텔리전스는 이러한 격차를 해소하는 학문 분야이자 기술입니다. 소프트웨어 시스템의 구조, 의존성, 동작 방식, 품질 및 위험을 체계적으로 분석하고, 그 분석 결과를 엔지니어링 팀, 아키텍트 및 비즈니스 의사 결정자가 활용할 수 있는 실행 가능한 지식으로 변환하는 역량입니다. 기존 소프트웨어 도구가 코드 실행 시의 동작을 알려준다면, 소프트웨어 인텔리전스는 코드의 내용, 구성 방식, 연결 관계, 그리고 변경 시 발생할 수 있는 문제점까지 알려줍니다. 이는 시스템을 운영하는 것과 시스템을 이해하는 것의 차이를 만들어냅니다.
보유하고 있는 모든 데이터 구조를 검색하세요
SMART TS XL 모든 데이터 관계를 매핑하여 팀이 사용자가 문제를 경험하기 전에 품질 오류를 찾아낼 수 있도록 합니다.
더 알아보기소프트웨어 인텔리전스란 무엇인가요?
소프트웨어 인텔리전스는 소프트웨어 시스템을 체계적으로 분석하여 엔지니어링 의사 결정, 위험 관리 및 전략 계획에 도움이 되는 구조적, 동작적, 품질적 통찰력을 도출하는 것입니다. 이는 정적 코드 분석, 의존성 매핑, 영향 분석 및 시각화를 결합하여 소프트웨어 시스템의 내부 구조를 명확하게 파악하고, 시스템 내용에 대한 정확한 지식이 필요한 팀, 도구 및 조직 프로세스를 지원하는 데 활용됩니다.
이 용어는 맥락에 따라 다양한 의미를 지닙니다. 비즈니스 인텔리전스 도구에서 "소프트웨어 인텔리전스"는 때때로 고객의 소프트웨어 제품 사용 방식, 기능 채택률, 사용자 흐름, 오류율 등에 대한 분석을 의미합니다. 인공지능(AI) 및 머신러닝 분야에서는 "지능형 소프트웨어"가 자율적으로 동작을 조정하는 시스템을 가리킵니다. 이 글에서 다루는 기업 IT 및 소프트웨어 엔지니어링 맥락에서 소프트웨어 인텔리전스는 개발팀이 코드베이스, 프로그램, 종속성, 데이터 흐름, 비즈니스 로직, 그리고 변경 위험 환경에 대한 심층적이고 자동화된 이해를 얻을 수 있도록 지원하는 분석 기능을 구체적으로 지칭합니다.
소프트웨어 인텔리전스와 비즈니스 인텔리전스
비즈니스 인텔리전스는 기업 데이터, 거래, 고객, 수익, 운영 등을 분석하여 기업 활동에 대한 통찰력을 제공합니다. 소프트웨어 인텔리전스는 소프트웨어 코드, 프로그램, 모듈, 종속성, 스키마, 워크플로 등을 분석하여 소프트웨어 시스템의 구성 요소와 동작 방식에 대한 통찰력을 제공합니다.
| 외형 치수 | 비즈니스 인텔리전스 | 소프트웨어 인텔리전스 |
|---|---|---|
| 분석 대상 | 비즈니스 데이터(거래, 이벤트, 지표) | 소프트웨어 구조(코드, 종속성, 스키마) |
| 기본 출력 | 대시보드, 보고서, KPI | 의존성 맵, 영향 분석, 코드 메트릭 |
| 누가 사용하나요? | 비즈니스 분석가, 임원 | 소프트웨어 엔지니어, 아키텍트, IT 관리자 |
| 핵심 질문에 대한 답변 | 그 사업은 무슨 일을 하고 있나요? | 소프트웨어에는 무엇이 포함되어 있으며 어떻게 연결됩니까? |
| 실행될 때 | 실시간 비즈니스 데이터를 지속적으로 활용합니다. | 소스 코드 기반으로, 요청 시 또는 지속적으로 |
| 기업 가치 | 운영 가시성 | 엔지니어링 위험 관리 및 변경 관리 |
소프트웨어 인텔리전스 vs. 지능형 소프트웨어
이 두 용어는 어휘가 비슷해서 혼동되는 경우가 많습니다. 소프트웨어 인텔리전스는 기존 소프트웨어에 적용되는 기능으로, 이미 존재하는 것을 분석하고 이해하는 능력을 말합니다. 지능형 소프트웨어는 새로운 소프트웨어의 특징으로, 인공지능(AI), 머신러닝 또는 규칙 엔진을 사용하여 상황에 맞춰 의사결정을 내리는 시스템을 의미합니다.
소프트웨어 인텔리전스 플랫폼은 다음과 같습니다. SMART TS XL 이 기술은 기존 COBOL 프로그램부터 최신 Java 서비스에 이르기까지 모든 종류의 엔터프라이즈 소프트웨어를 분석하여 시스템에 대한 구조적 지식을 생성합니다. 인공지능처럼 시스템을 지능화하는 것이 아니라, 시스템을 읽기 쉽게, 즉 시각화하고, 쿼리할 수 있도록 하며, 안전하게 변경할 수 있도록 합니다.
소프트웨어 인텔리전스 플랫폼의 구성 요소
완벽한 소프트웨어 인텔리전스 플랫폼은 5가지 분석 영역에 걸쳐 기능을 제공합니다. 이러한 영역들을 통해 기업 팀은 문서, 개발자 지식, 또는 기존 모니터링 방식으로는 제공할 수 없는 소프트웨어 자산에 대한 포괄적인 가시성을 확보할 수 있습니다.
정적 코드 분석
정적 코드 분석은 소스 코드를 실행하지 않고 검사하여 품질 문제, 보안 취약점, 코드 스멜 및 구조적 패턴을 식별합니다. 실행 중인 시스템이 필요한 동적 분석과 달리 정적 분석은 소스 코드 자체에서 작동하므로 메인프레임 시스템에서 실행되는 코드, 최신 런타임 도구가 없는 언어로 작성된 코드, 그리고 여러 언어로 작성된 코드를 동시에 분석할 수 있습니다.
소프트웨어 인텔리전스 관점에서 정적 코드 분석은 세 가지 유형의 출력을 생성합니다. 코드 품질 지표(복잡성, 중복, 유지 관리성 지수), 보안 결과(취약점 패턴, 안전하지 않은 코딩 관행, 노출된 자격 증명), 그리고 종속성 매핑 및 영향 분석 계층에 제공되는 구조적 데이터(함수 정의, 변수 선언, 모듈 경계)입니다.
종속성 매핑
의존성 매핑은 소프트웨어 시스템의 모든 구성 요소 간의 관계를 추적합니다. 즉, 어떤 프로그램이 다른 프로그램을 호출하는지, 어떤 모듈이 어떤 라이브러리를 가져오는지, 어떤 함수가 어떤 데이터베이스 테이블에 접근하는지, 어떤 데이터 세트가 어떤 프로그램에서 어떤 소비자에게 전달되는지 등을 보여줍니다. 의존성 맵은 시스템의 구조적 모델이자 그래프로서, "이 부분을 변경하면 다른 어떤 부분에 영향을 미치는가?"라는 질문에 답할 수 있게 해줍니다.
특히 여러 언어와 플랫폼에 걸쳐 있는 대규모 엔터프라이즈 시스템에서는 종속성 매핑이 언어 경계를 넘나드는 관계를 처리해야 합니다. 예를 들어, DB2 테이블에 데이터를 쓰는 COBOL 프로그램이 Java 서비스에서 데이터를 읽고, Python 파이프라인이 이를 변환하는 경우처럼 말입니다. 단일 언어 종속성 도구로는 이러한 언어 간 연결 고리를 파악할 수 없습니다. 모든 언어를 이해하고 각 언어의 모델을 통합된 그래프로 연결할 수 있는 플랫폼만이 완벽한 지원 범위를 제공합니다.
영향 분석
영향 분석은 의존성 맵을 사용하여 제안된 변경 사항에 대한 특정 질문, 즉 어떤 구성 요소가 영향을 받을 것인지에 대한 답을 찾습니다. 변경 대상 구성 요소에서 시작하여 의존성 그래프를 따라가면서 영향 분석은 변경된 요소에 직간접적으로 의존하는 모든 모듈, 기능, 프로그램 및 데이터 세트를 열거합니다. 이렇게 열거된 영향 범위는 테스트 계획, 변경 위험 분류 및 변경 자문 검토를 위한 근거 자료가 됩니다.
영향 분석을 하지 않으면 변경 사항의 범위는 해당 코드를 작성한 개발자가 추정합니다. 하지만 영향 분석을 하면 코드의 실제 구조에서 범위를 도출할 수 있습니다. 대규모 시스템에서는 이 두 추정치가 크게 다르며, 이러한 차이로 인해 실제 운영 환경에서 장애가 발생하기도 합니다.
코드 전반에 걸친 엔터프라이즈 검색
소프트웨어 인텔리전스 맥락에서 엔터프라이즈 검색이란 소프트웨어 시스템의 모든 요소, 함수, 변수, 필드 정의, SQL 문, 프로그램 이름 등을 어떤 언어로 작성되었든 상관없이 전체 코드베이스에서 몇 초 만에 찾아낼 수 있는 기능을 의미합니다. 일반적인 IDE 검색이 하나의 언어로 작성된 하나의 프로젝트만 대상으로 하는 반면, 엔터프라이즈 코드 검색은 모든 언어로 작성된 전체 시스템을 동시에 대상으로 합니다.
엔터프라이즈 검색은 방대하고 낯선 코드베이스를 다루는 경험을 혁신적으로 변화시킵니다. 200개의 COBOL 프로그램, 50개의 JCL 작업 스트림, 그리고 Java 서비스 계층을 관리하는 팀에 합류한 개발자는 며칠 동안 직접 코드를 읽는 대신 검색 쿼리를 통해 필요한 정보를 찾을 수 있습니다. 데이터베이스 스키마 변경을 계획하는 아키텍트는 모든 프로그램에서 특정 열을 참조하는 모든 SQL 문을 몇 초 만에 찾을 수 있으며, 동적으로 생성된 쿼리를 놓칠 수 있는 여러 저장소에 걸친 grep 작업을 수행할 필요가 없습니다.
코드 시각화
코드 시각화는 정적 분석 및 의존성 매핑을 통해 생성된 구조적 데이터를 시스템 아키텍처, 의존성 관계 및 복잡성 구조를 시각적으로 전달하는 다이어그램으로 변환합니다. 수작업으로 유지 관리하려면 몇 주가 걸릴 다이어그램이 코드에서 자동으로 생성되므로 시스템이 발전함에 따라 항상 최신 상태를 유지합니다.
시각화는 다양한 대상에게 각기 다른 방식으로 활용됩니다. 개발자는 익숙하지 않은 코드를 이해하기 위해 호출 그래프와 데이터 흐름도를 사용하고, 아키텍트는 구조적 변경을 계획하기 위해 구성 요소 다이어그램과 종속성 맵을 사용하며, 비즈니스 이해관계자는 계획 또는 규정 준수 검토 중에 시스템 범위를 이해하기 위해 간소화된 순서도를 사용하고, 운영팀은 성능 문제를 진단할 때 요청 흐름을 추적하기 위해 시퀀스 다이어그램을 사용합니다.
실제 적용 사례: 기업용 소프트웨어 인텔리전스 활용 사례
레거시 시스템 현대화
소프트웨어 인텔리전스의 가장 까다로운 응용 분야는 레거시 시스템 현대화, 즉 COBOL, PL/I 또는 RPG 애플리케이션을 메인프레임 환경에서 최신 클라우드 네이티브 아키텍처로 마이그레이션하는 것입니다. 근본적인 과제는 마이그레이션 기술 자체가 아니라 지식 격차입니다. 레거시 시스템은 수십 년 동안 축적된 문서화되지 않은 변경 사항, 명시적인 인터페이스가 아닌 공유 데이터를 통해 형성된 암묵적인 종속성, 그리고 코드의 동작에만 존재하는 비즈니스 로직을 가지고 있습니다.
소프트웨어 인텔리전스는 마이그레이션 작업이 시작되기 전에 이러한 격차를 체계적으로 해소합니다. 프로그램 인벤토리는 마이그레이션 범위에 포함된 모든 구성 요소를 식별합니다. 종속성 맵은 구성 요소 간의 연결 방식을 보여줍니다. 영향 분석은 제안된 변경 사항으로 인해 어떤 부분이 영향을 받을지 보여줍니다. 비즈니스 로직 추출은 각 프로그램이 실제로 수행하는 작업을 문서화하여 마이그레이션된 시스템을 검증해야 하는 기준이 되는 명세를 제공합니다. 이러한 구조적 기반이 없으면 마이그레이션은 계획 단계가 아닌 테스트 또는 운영 단계에서 가장 큰 비용 부담을 초래하는 문제에 직면하게 됩니다.
변화 관리 및 위험 평가
대규모 소프트웨어 환경에서 변경 관리는 제안된 변경 사항을 승인하기 전에 그 범위를 파악하는 것을 필수적으로 요구합니다. 소프트웨어 인텔리전스는 변경 자문 위원회가 개발자의 추정치가 아닌 실제 시스템 구조를 기반으로 승인 결정을 내리는 데 필요한 구조적 근거를 제공합니다.
변경 사항이 승인되기 전에 영향 분석을 통해 검증이 필요한 모든 종속 구성 요소를 식별합니다. 복잡성 지표는 변경된 구성 요소가 단순한지 또는 위험도가 높은지를 나타냅니다. 종속성 시각화는 변경된 구성 요소가 시스템의 나머지 부분과 어떻게 연결되는지 보여줍니다. 이러한 요소들을 종합하여 비공식적인 "이 변경으로 인해 어떤 문제가 발생할 것 같습니까?"라는 대화를 대체하는 증거 기반 변경 영향 평가를 수행합니다.
기술적 실사
기업들이 인수, 파트너십 또는 규정 준수 감사 목적으로 소프트웨어 시스템을 평가할 때, 기술적 실사에는 코드베이스에 대한 객관적인 평가가 필요합니다. 즉, 품질, 유지보수성, 보안 상태, 기술 부채 및 복잡성을 분석해야 합니다. 소프트웨어 인텔리전스 플랫폼은 이러한 평가를 대규모로 자동화하여, 수동 검토로는 몇 주가 걸릴 구조적 분석 결과를 단 몇 시간 만에 제공합니다.
소프트웨어 인텔리전스를 통한 기술 실사에는 코드베이스 전반에 걸친 코드 품질 지표 분포, 보안 취약점 밀도 및 심각도, 기술 부채 비율 및 해결 비용 추정치, 오래되었거나 버려진 라이브러리를 포함한 종속성 상태, 아키텍처 결합도 및 응집도 지표, 그리고 사용되지 않는 코드 비율 등이 포함됩니다. 이러한 지표들은 위험 분류 및 해결 비용 추정치로 직접 이어져 비즈니스 의사 결정에 중요한 정보를 제공합니다.
개발자 온보딩 및 지식 이전
대규모 소프트웨어 시스템을 운영하는 모든 조직은 지속적인 지식 이전이라는 과제에 직면합니다. 숙련된 개발자는 은퇴하거나 이직하고, 새로운 개발자는 시스템 설계 초기 단계에 참여하지 않은 사람은 이해할 수 없도록 만들어진 시스템을 이해해야 합니다. 소프트웨어 인텔리전스 플랫폼은 이러한 지식 이전을 수월하게 만들어주는 구조적 문서화 및 검색 기능을 제공합니다.
새로운 개발자가 익숙하지 않은 COBOL 프로그램을 개발할 때, 엔터프라이즈 검색을 통해 특정 필드가 사용되는 모든 위치를 찾고, 종속성 맵을 통해 자신이 수정하는 프로그램과 상호 작용하는 프로그램을 파악하고, 시각화 기능을 통해 전체 시스템 아키텍처에서 프로그램의 위치를 확인할 수 있습니다. 이 모든 작업을 해당 지식을 보유한 동료에게 직접 문의할 필요 없이 수행할 수 있습니다. COBOL 전문가의 지식 이전 과 관련하여 설명했듯이 , 은퇴하는 개발자들이 보유한 암묵적 지식은 시스템에서 가장 중요하면서도 문서화가 가장 미흡한 자산인 경우가 많습니다.
지속적인 품질 모니터링
특정 변경 전에 필요에 따라 적용되는 것이 아니라 지속적으로 적용되는 소프트웨어 인텔리전스는 사전 예방적 품질 관리를 가능하게 합니다. 즉, 시간 경과에 따른 품질 지표의 변화를 추적하고, 팀이 관리할 수 있는 속도보다 복잡성이 빠르게 증가하는 시점을 감지하고, 변경 위험이 과도하게 누적되는 파일을 식별하고, 새 코드가 프로덕션 환경에 배포되기 전에 보안 취약점을 도입할 경우 경고를 보냅니다.
CI/CD 파이프라인에서 지속적인 소프트웨어 인텔리전스는 개발 단계에서 구조적 표준을 준수하도록 하는 품질 게이트를 제공합니다. 예를 들어, 순환 복잡도 임계값을 초과하는 새로운 함수는 빌드를 실패시키고, 심각한 수준의 정적 분석 오류가 발견되면 병합을 차단하며, 아키텍처에 순환 종속성을 도입하는 변경 사항은 코드 리뷰를 트리거합니다. 이는 품질 관리 방식을 릴리스 후 감사에서 개발 중 피드백으로 전환하여, 수정 비용이 가장 저렴한 시점에 품질 문제를 발견함으로써 비용 절감을 가능하게 합니다.
다양한 사용자층을 위한 소프트웨어 인텔리전스
소프트웨어 인텔리전스의 가치는 역할에 따라 동일하지 않으며, 대상 고객은 동일한 기본 구조 분석에서 서로 다른 유형의 가치를 추출합니다.
| 직위별 | 1 차 사용 | 주요 출력 |
|---|---|---|
| 소프트웨어 개발자 | 익숙하지 않은 코드 이해하기, 의존성 추적하기 | 호출 그래프, 상호 참조, 코드 검색 |
| 소프트웨어 아키텍트 | 계획 변경, 구조적 위험 평가 | 의존성 맵, 영향 분석, 복잡성 히트맵 |
| IT 관리 | 변경 승인, 위험 관리 | 영향 범위 보고서, 품질 지표, 기술 부채 비율 |
| 보안팀 | 취약성 평가, 규정 준수 | 정적 분석 보안 결과, 종속성 취약점 데이터 |
| 비즈니스 분석가 | 시스템 범위 이해, 규정 준수 증거 | 간소화된 다이어그램, 프로세스 흐름 문서 |
| 인수합병 및 실사 | 코드베이스 품질 평가 | 품질 지표, 부채 비율, 위험 분류 보고서 |
방법 SMART TS XL 소프트웨어 인텔리전스를 제공합니다
SMART TS XL IN-COM의 Software Intelligence® 플랫폼은 여러 언어, 플랫폼 및 기술 세대에 걸쳐 소프트웨어 환경을 운영하는 기업을 위해 특별히 설계되었습니다. 대부분의 소프트웨어 분석 도구는 단일 언어 내에서 작동하는 반면, SMART TS XL COBOL, JCL, Java, Python, .NET, RPG, PL/I, SQL 등을 동시에 포괄하는 통합 인텔리전스 모델을 구축합니다.
정적 코드 분석 기능은 환경 내 모든 구성 요소에 대한 품질 지표, 보안 결과 및 구조 데이터를 제공합니다. 애플리케이션 종속성 매핑은 모든 구성 요소가 서로 어떻게 연결되는지 보여주는 언어 간 종속성 그래프를 구축합니다. 영향 분석 기능을 통해 해당 그래프를 쿼리할 수 있습니다. 제안된 변경 사항에서 영향을 받는 모든 구성 요소를 열거할 수 있습니다. JCL 확장 기능은 카탈로그화된 프로시저의 기호 매개변수 치환을 포함하여 메인프레임 작업 제어 언어를 해석하여 모든 배치 작업에 관련된 실제 프로그램과 데이터 세트를 표시합니다. 엔터프라이즈 검색 기능을 통해 통합 모델을 쉽게 찾을 수 있습니다. 모든 언어에 걸쳐 소프트웨어 환경의 모든 요소를 몇 초 만에 검색할 수 있습니다. 코드 시각화 기능은 종속성 모델을 탐색 가능한 다이어그램으로 변환하여 모든 사용자가 시스템 구조를 이해할 수 있도록 합니다.
이 플랫폼은 소프트웨어 환경이 개인이 완전히 이해하기에는 규모와 복잡성이 너무 커진, 체계적이고 자동화된, 항상 최신 상태를 유지하는 구조 분석의 가치가 가장 큰 환경을 위해 설계되었습니다. 레거시 시스템 현대화를 계획하거나, 복잡한 시스템의 변경 사항을 관리하거나, 기술 실사를 수행하거나, 신속하고 자신감 있는 엔지니어링을 가능하게 하는 개발자 지식 인프라를 구축하는 조직에 적합합니다. SMART TS XL 이를 가능하게 하는 소프트웨어 인텔리전스 레이어를 제공합니다.
기업 IT에 소프트웨어 인텔리전스가 필수적인 이유
기업에서 운영되는 소프트웨어의 규모가 커지면서, 이를 관리하는 비공식적인 방식, 즉 문서화, 개발자 지식, 수동 코드 검토 등은 구조적으로 부적합해졌습니다. 문서는 항상 불완전하고 대개 오래되었으며, 개발자 지식은 분산되어 있고 일관성이 없으며, 지식을 보유한 사람들에게만 의존하는 경향이 있습니다. 수동 코드 검토는 너무 느리고 검토자의 기존 시스템 숙련도에 지나치게 의존적입니다.
소프트웨어 인텔리전스는 이러한 구조적 결함에 대한 체계적인 해결책입니다. 개발자의 지식을 대체하는 것이 아니라, 확장하고 보존하여 특정 개인에게만 국한되지 않고 팀 구성원 모두가 활용할 수 있도록 합니다. 또한 문서화를 대체하는 것이 아니라, 코드에서 직접 구조적 문서를 생성하여 코드가 발전함에 따라 문서가 최신 상태로 유지되도록 합니다. 코드 리뷰를 대체하는 것이 아니라, 리뷰어가 변경 사항을 정확하게 평가하는 데 필요한 구조적 맥락을 제공하는 자동화된 분석을 제공합니다.
소프트웨어 인텔리전스 인프라에 투자하는 조직은 여러 가지 이점을 누릴 수 있습니다. 모든 변경 사항은 추정이나 가정이 아닌 정확한 구조 모델을 기반으로 이루어집니다. 모든 마이그레이션은 단편적인 발견이 아닌 완벽한 정보를 바탕으로 계획됩니다. 모든 신규 개발자는 수년간 축적된 경험적 지식이 아닌 탐색 및 검색이 가능한 시스템 표현을 기반으로 업무에 투입됩니다. 엔지니어링 의사 결정의 질은 그 결정의 기반이 되는 정보의 질이 향상됨에 따라 높아집니다. 이것이 바로 소프트웨어 인텔리전스의 가치 제안이며, 복잡한 소프트웨어 환경을 가진 조직들이 이를 도구가 아닌 인프라로 간주하는 이유입니다.