ekcapaper
1. 개요
소프트웨어 회계 프레임워크는 소프트웨어가 제공하는 가치와 기술적 의존성, 내부 개발 요소, 구현 방식, 유지보수 비용 및 잠재적 리스크 등을 한눈에 파악하고 체계적으로 관리하기 위한 프레임워크입니다.
회계의 재무제표 개념을 소프트웨어 관리에 적용함으로써, 소프트웨어 프로젝트의 상태를 투명하게 시각화하고, 소프트웨어의 상태와 위험성을 명확히 파악하고 대응할 수 있도록 하고자 합니다.
2. 프레임워크의 목표
소프트웨어 회계 프레임워크의 목표는 다음과 같습니다.
1.
소프트웨어의 전체 코드를 직접 보지 않고도, 현재 상태를 파악할 수 있는 지표를 제공
2.
코드 품질이 아닌 프로젝트 품질을 평가
a.
개발 방법론이나 프로젝트 관리가 아니라 프로젝트의 결과물에 해당하는 소프트웨어에 대한 지표를 제공한다.
•
소나큐브 → 코드 품질
•
UML → 시스템이 "어떻게 작동하는지" 설명하는 용도
•
유스케이스 → 기능을 어떻게 사용할 수 있는지 설명
3. 소프트웨어 회계의 핵심 구성 요소
소프트웨어 회계는 회계의 주요 재무제표 개념을 소프트웨어 관리에 맞춰 변형·적용하여 구성됩니다.
3.1 소프트웨어 상태 정리 및 관리
3.1.1 소프트웨어 대차대조표
목적
•
소프트웨어가 제공하는 가치(자산), 우리가 직접 개발한 내부 요소(자본), 그리고 외부 의존성(부채)을 기록합니다.
•
시스템의 의존성과 기술적 기여도를 균형 있게 평가하여 장기적인 유지보수를 지원합니다.
구성 요소
항목 | 정의 | 예시 |
자산 | 소프트웨어가 제공하는 가치 | - 프로그램의 핵심 기능
- 사용자에게 직접 가치를 제공하는 서비스 |
자본 | 직접 개발해 소유하고 있는 내용
(핵심 코드, 내부 기능) | - 자체 개발한 인증 시스템
- API 모듈
- 배포 자동화 스크립트 |
부채 | 외부 라이브러리, 클라우드 서비스 등 외부 의존 요소 | - 오픈소스 라이브러리
- 서드파티 API
- 클라우드 플랫폼 사용 |
이 대차대조표를 통해 어떤 부분이 우리 조직의 핵심 자산인지, 어떤 부분이 외부 의존성에 의한 부채인지 명확히 구분할 수 있습니다.
3.1.2. 소프트웨어의 기술적 정황과 기술적 결정
목적
•
소프트웨어가 어떤 기술적 정황과 결정을 통해 구현되었는지를 기록합니다.
•
“현재 상황이 이렇기 때문에, 이러한 결정을 내렸다”라는 구현 단계의 맥락을 남겨둠으로써 향후 유지보수 및 기능 확장 시 의사결정 근거를 빠르게 파악할 수 있습니다.
•
소프트웨어의 코드를 확인하지 않고 소프트웨어의 구현 상태를 파악하기 위한 도구입니다.
•
문서들에서 기술적 판단만 추출하면, 프로젝트가 어떤 식으로 구현되어 있는지 즉각적으로 확인이 가능합니다.
주요 내용
•
상황과 정황
◦
특정 시점에 소프트웨어가 처한 기술적·환경적 상황
•
결정 사항과 근거
◦
해당 상황에서 내렸던 결정, 채택된 기술 스택 및 아키텍처
•
결정의 영향도와 대안(선택)
◦
결정이 이후 개발·운영 과정에 미친 영향 및 고려된 대안
예시
기술적 결정 | 기술적 정황 |
프로그램의 실행시에 테이블을 초기화한다. | - 시스템 테스트 서버
- 데이터는 임의의 가상 데이터 |
3.3 지표 기반 분석
1. 개념
•
프로젝트의 특성에 따라 중요한 지표를 정의하고, 해당 지표를 지속적으로 측정하여 프로젝트 상태를 정량적으로 평가
•
시스템 프로젝트라면 MTBF(평균고장간격, Mean Time Between Failures), MTTR(평균복구시간, Mean Time to Repair) 등이 핵심 지표
프로젝트 유형 | 핵심 지표 예시 |
웹 서비스 | - 평균 응답 시간 (Average Response Time)
- 처리량 (Throughput, TPS)
- 오류율 (Error Rate) |
AI 모델 | - 모델 정확도 (Model Accuracy)
- 추론 속도 (Inference Speed)
- 학습 시간 (Training Time) |
시스템 | - 평균 고장 간격 (MTBF, Mean Time Between Failures)
- 평균 복구 시간 (MTTR, Mean Time to Repair)
- 리소스 사용량 (CPU, Memory, Disk)
- RPO, RTO |
4. 파생 문서
3.1.3. 리스크 평가
목적
•
소프트웨어 운영 중 발생하거나, 발생한 문제(장애, 버그 등)를 기록·분석하고, 재발 가능성을 평가하여 리스크 관리 전략을 수립합니다.
•
영향도와 해결 비용을 파악하여, 최적의 방안을 결정할 수 있도록 돕습니다.
•
대차대조표와 기술적 정황, 결정 문서를 참조하여 제작합니다.
구성 요소
항목 | 내용 |
문제 발생 기록 | - 장애 원인 분석
- 영향 범위와 해결 조치 |
가능성 평가 | - 문제의 발생 확률
- 장기적 해결 방안 필요성 |
해결 비용 및 영향도 평가 | - 문제 해결에 소요되는 비용 분석 |
3.1.4. 소프트웨어 리소스 예측서
•
소프트웨어의 기술적 정황과 기술적 결정에 기반하여, 필요시 작성하는 문서입니다.
목적
•
소프트웨어의 새로운 기능 추가나 유지보수를 위해 얼마나 많은 변경이 필요한지 사전에 파악합니다.
•
변경이 필요한 영역과 리스크를 예측하여, 구조적 변화와 영향도를 면밀히 분석하고 체계적인 변경 계획을 수립합니다.
구성 요소
항목 | 내용 |
기능 추가로 인한 변경 사항 | - 신규 기능 추가를 위해 변경해야 할 모듈 및 설정
- 예: 데이터베이스 스키마 수정, API 수정 |
연관된 모듈 및 영향도 | - 특정 기능 추가 혹은 변경이 영향을 미치는 영역
- 예: 인증 모듈 변경 시 보안 정책 전반 재검토 필요 |
수정 필요 항목 | - 기존 코드 및 설정에서 조정해야 할 부분
- 예: 성능 최적화를 위한 캐싱 전략 수정 |
기술적 리스크 | - 변경으로 인해 발생할 수 있는 기술적 문제
- 예: 기존 시스템과의 호환성 문제, 외부 라이브러리 충돌 가능성 |
테스트 및 검증 계획 | - 변경 후 예상되는 테스트 항목 및 검증 절차
- 예: 회귀 테스트, 로드 테스트, 종합 성능 테스트 |
구현 동기 및 결론
이 프레임워크는 개발자가 프로젝트의 상태와 정황, 구조를 명확하게 파악할 수 있도록 구성한 도구입니다. 이를 기반으로 여러가지 판단과 결정을 내리는 것을 지원합니다.
•
기술적 대차대조표:
◦
프로젝트의 기술적 자산, 부채, 그리고 내부적으로 개발된 핵심 요소의 확인
•
기술적 정황과 결정:
◦
소프트웨어가 왜 이러한 구조를 가지게 되었는지, 어떤 결정들이 내려졌는지에 대한 기록
•
지표 기반 분석 (Key Metrics-Based Analysis)
◦
프로젝트의 상태를 정량적으로 평가할 수 있도록, 핵심 지표를 설정하고 이를 기반으로 분석
▪
직관적으로 분석한 결과와 데이터가 나타내는 결과가 다른 경우