현재 선택한 정보처리 과정

정보처리기사 필기 이론 학습

이론 목록으로 돌아가기

요구공학·재사용·재공학·CASE

요구공학의 도출·분석·명세·확인과 변경 관리를 구분한다. 재사용과 재공학의 목적, 역공학·재구조화·순공학의 방향, 상위·하위·통합 CASE의 지원 범위를 비교한다.

예상 읽기 7

핵심 요약

요구공학은 이해관계자가 필요로 하는 기능과 제약을 도출·분석·명세·확인하고 변경을 관리하는 활동이다. 재사용은 기존 자산의 활용, 재공학은 기존 시스템의 분석과 개선, CASE는 개발 활동을 지원하는 도구 체계다.

개념핵심 질문대표 결과
요구공학무엇을 만들어야 하며 어떤 조건을 만족해야 하는가?합의된 요구사항과 변경 이력
재사용이미 있는 자산 중 무엇을 활용할 수 있는가?재사용한 기능·모듈·컴포넌트·설계
재공학기존 시스템을 어떻게 분석·개선할 것인가?구조·문서·데이터 등이 개선된 시스템
CASE어떤 개발 활동을 도구로 지원할 것인가?일관된 모델·문서·코드·시험 결과

1. 요구사항 개발과 관리

요구사항 개발은 필요한 요구를 만들고 합의하는 활동이고, 요구사항 관리는 확정한 요구와 그 변경을 통제하는 활동이다. 개발과 관리는 한 번씩 종료되는 독립 단계가 아니라 서로 영향을 주며 반복된다.

개발의 기본 흐름

활동주요 내용대표 기법
도출이해관계자의 필요·문제·제약을 찾아 수집인터뷰, 설문, 관찰, 워크숍, 기존 문서 분석
분석·협상충돌·중복·누락·실현 가능성을 검토하고 우선순위 합의모델링, 유스케이스, 프로토타입, 우선순위 분석
명세합의한 요구를 명확한 형태로 기록자연어 명세, 표·모델, 정형 명세
확인명세가 실제 필요를 반영하고 일관·완전한지 검토검토 회의, 프로토타입 평가, 시험 가능성 확인

프로토타입은 사용자가 추상적인 설명보다 구체적인 화면·동작을 통해 요구를 설명할 수 있게 돕는다. 도출·확인의 보조 수단이지 모든 요구를 자동으로 완성하는 도구가 아니다.

기능 요구와 비기능 요구

기능 요구사항은 시스템이 수행할 일을 설명한다. 예를 들어 “회원은 예약 내역을 조회할 수 있어야 한다”가 해당한다. 비기능 요구사항은 성능·보안·가용성·사용성 등 기능의 품질이나 제약을 설명한다. “동시 사용자 500명 조건에서 조회 응답의 95%가 2초 이내여야 한다”는 성능 요구다.

“빠르게 처리한다”는 표현은 측정 기준이 없어 검증하기 어렵다. 적용 조건, 처리 대상, 허용 한계를 명확하게 적어야 한다. 좋은 요구사항은 명확성·완전성·일관성·실현 가능성·검증 가능성·추적 가능성을 갖춰야 한다.

정형 명세는 수학적 표현 등을 사용해 엄밀성을 높이지만 작성과 이해에 전문성이 필요하다. 비정형 명세는 자연어 등으로 이해하기 쉽지만 모호함과 해석 차이가 생길 수 있다.

검증·확인과 추적성

Verification은 산출물이 정해진 명세·기준을 만족하는지, Validation은 실제 사용 목적과 요구를 충족하는지에 초점을 둔다. 번역어만 외우지 말고 명세에 맞게 만들었는가 / 필요한 제품을 만들었는가로 구분한다.

추적성은 요구사항과 설계·코드·시험 등의 연결을 따라갈 수 있는 성질이다. 요구에서 시험으로 따라가면 구현·검증 누락을 찾을 수 있고, 시험이나 코드에서 요구로 되짚으면 근거 없는 기능이나 변경 영향을 확인할 수 있다.

예를 들어 ‘예약 취소’ 요구를 취소 설계와 취소 시험에 연결해 두면, 취소 가능 시간이 바뀔 때 관련 설계·코드·시험을 함께 찾아 수정할 수 있다. 이를 표로 관리한 것이 요구사항 추적 매트릭스다.

확정된 요구의 기준선을 변경하려면 변경 요청을 기록하고, 비용·일정·품질·관련 기능의 영향을 분석한 뒤 승인 여부를 결정한다. 승인된 변경은 명세와 연결된 산출물에 함께 반영한다. 기준선은 변경 금지가 아니라 변경을 통제하는 기준이다.

좌우로 이동해 그림을 확인하세요.그림 크게 보기
요구사항과 설계·구현·시험의 연결을 양방향으로 추적하여 변경 영향과 누락을 확인한다.
요구사항과 설계·구현·시험의 연결을 양방향으로 추적하여 변경 영향과 누락을 확인한다.

2. 소프트웨어 재사용

재사용은 기존 코드뿐 아니라 요구사항·설계·시험·문서·컴포넌트 등의 자산을 새로운 개발에 활용하는 것이다. 기대 효과는 개발 시간과 비용 절감, 검증된 자산을 통한 품질 향상, 결과의 일관성이다. 다만 요구와 자산의 적합성 검토·수정·통합 비용은 남는다.

구분의미
재사용을 위한 개발여러 곳에서 쓸 수 있는 자산을 개발공통 로그인 컴포넌트 제작
재사용에 의한 개발기존 자산을 활용하여 제품을 개발공통 로그인 컴포넌트를 새 서비스에 적용
합성 중심 재사용기존 부품을 조립하여 시스템 구성컴포넌트 조립
생성 중심 재사용명세·패턴·규칙에서 결과를 생성명세에 따른 코드 생성
블랙박스 재사용내부 구현을 바꾸지 않고 인터페이스로 사용공개 API로 기능 이용
화이트박스 재사용내부 구조를 이해하고 수정·확장하여 사용기존 코드를 변경하여 적용

여러 분류는 서로 다른 기준이다. 재사용 가능한 기능이 있다는 사실만으로 현재 요구사항, 보안성, 성능, 라이선스 조건까지 자동 충족되는 것은 아니다.

3. 역공학·순공학·재공학

개념방향과 목적구분 단서
역공학(Reverse Engineering)기존 코드·시스템을 분석하여 설계·명세 수준의 정보를 추출구현에서 상위 수준의 이해로 이동
순공학(Forward Engineering)요구·설계 등 상위 수준의 표현에서 구현으로 이동명세·설계를 프로그램으로 구현
재구조화(Restructuring)주로 같은 추상화 수준에서 구조를 개선동작을 보존하면서 코드·데이터 구조 개선
재공학(Reengineering)기존 시스템을 분석하고 수정하여 개선된 형태로 재구성역공학과 재구조화·순공학 등의 결합

역공학은 기존 시스템을 이해하는 데 목적이 있으므로 분석했다는 이유만으로 시스템이 개선된 것은 아니다. 재공학은 이해한 결과를 바탕으로 수정·재구성하는 활동까지 포함한다.

전형적인 재공학 활동에는 기존 시스템의 가치·품질 분석, 문서 재정비, 코드·데이터 역공학, 코드·데이터 재구조화, 새 환경에 맞춘 순공학과 검증이 있다. 리팩터링은 외부 동작을 보존하며 코드 내부 구조를 개선하는 활동으로, 전체 재공학과 같은 범위는 아니다.

업무 가치는 높지만 기술적으로 낡고 유지보수가 어려운 시스템은 재공학의 후보가 된다. 업무 가치가 사라졌다면 재공학보다 폐기가 합리적일 수 있다. 모든 기존 시스템을 무조건 다시 만드는 것이 재공학의 목적은 아니다.

4. CASE

CASE(Computer-Aided Software Engineering)는 소프트웨어 개발·유지보수 활동을 컴퓨터 도구로 지원하는 접근이다. 분석·설계·코드 생성·시험·문서화·형상관리 등의 자동화와 일관성 유지에 활용한다.

종류주로 지원하는 범위
상위 CASE(Upper CASE)계획, 요구분석, 설계 등 개발 전반부
하위 CASE(Lower CASE)구현, 시험, 유지보수 등 개발 후반부
통합 CASE(I-CASE)전반부와 후반부를 연계한 생명주기 지원

공용 저장소를 사용하면 모델과 문서 사이의 일관성, 산출물 추적성, 변경 관리에 도움을 줄 수 있다. 그래픽 모델링, 오류·일관성 검사, 문서·코드 생성도 대표 기능이다.

단일 작업을 지원하는 도구보다 여러 관련 작업을 통합한 워크벤치, 여러 개발 활동을 포괄하는 환경이 더 넓은 범위를 지원할 수 있다. 그러나 도구가 개발자의 요구 판단과 설계 책임을 없애거나 무결함 소프트웨어를 보장하지는 않는다.

요구사항·재사용·개발 도구의 정밀 구분

요구 충돌은 이해관계자별 목적·영향·우선순위를 검토하고 합의하여 해결한다. 한쪽 문장을 몰래 삭제하여 해결한 것으로 처리하지 않는다. 자연어 명세는 이해하기 쉽지만 모호성과 불일치가 생길 수 있고, 형식 명세는 수학적인 구문과 의미를 사용해 정밀한 추론을 돕지만 작성·이해 비용이 있다.

추적성은 요구→설계→구현→시험 관계를 양방향으로 연결한다. 요구 변경의 영향은 직접 연결뿐 아니라 중간 산출물을 거치는 간접 의존까지 확인해야 한다. 기준선은 승인된 특정 버전의 요구·산출물 집합이다. 이전 승인본을 보존하면서 변경 요청·영향 분석·승인·버전 갱신을 연결해야 한다.

재사용의 관점

'재사용을 위한 개발(Development for Reuse)'은 다른 제품에도 쓸 공통 자산을 만드는 일이며, '재사용에 의한 개발(Development with/by Reuse)'은 기존 자산을 적용해 제품을 만드는 일이다. 화이트박스 재사용은 내부 구현을 이해하고 수정·상속하는 방식, 블랙박스 재사용은 공개 인터페이스를 통해 내부 변경 없이 이용하는 방식으로 구분한다. 생성 중심 재사용은 명세·모델·템플릿 등으로 구현을 생성하며, 조립 중심은 기존 컴포넌트를 연결한다.