[소공 목차]

 

개념

  • 프로그램이 효율적으로 관리될 수 있도록 하는 소프트웨어의 특성으로 모듈화를 수행하면 소프트웨어 복잡도가 감소하고 변경이 용이하며 프로그램 구현 편의성이 증대됨
  • 시스템을 분해하고 추상화를 통하여 소프트웨어 제품의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하게 하는 설계 방법

  • 모듈화는 구현 및 유지보수에 있어 비용 및 성능을 크게 좌우하는 요소로, 설계 및 구현 단계에 있어서도 중요한 원리로 자리 잡고 있음

모듈화의 원리

구분 설명
비용과 모듈과의 관계 모듈수가 증가하면 인터페이스 비용의 증가
모듈의 독립성 낮은 결합도와 높은 응집도를 가짐
자료 추상화 각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현 내역을 은폐

모듈화의 주요 특성

구분 설명 특징
모듈성
(Modularity)
프로그램을 효율적으로 관리할 수 있도록 하는 소프트웨어의 특성으로 시스템 분해 및 추상화를 통해 소프트웨어 성능 향상을 위한 적합한 프로그램 단위 성능향상
컴포넌트화
재사용성
응집도
(Cohesion)
모듈의 독립성을 나타내는 개념으로 하나의 모듈 내부 처리 요소들간에 기능적 연관도를 측정하는 척도 높을수록 좋음
결합도
(Coupling)
소프트웨어 구조에서 모듈간 연관성을 측정하는 척도 낮을수록 좋음

 

모듈화 기법의 종류

구분 기법 내용
설계 Module
  • 설계 시 관련이 있는 기능을 한 부분에 모아놓고 library 형태로 사용
컴포넌트
  • 바이너리형태의 재사용 가능한 형태로
  • 인터페이스에 의해 로직을 수행할 수 있는 모듈단위
서비스
  • 기존 컴포넌트 보다는 Loosely coupled 한 형태의 기능을 제공하는 모듈단위
구현 Macro
  • 프로그램 구현 시 반복되는 부분을 특정 이름을 부여하고 이름을 호출하여 실행할 수 있도록 하는 프로그래밍 기법. , 전 처리기는 macro가 사용된 모든 곳에 코드를 대체해 놓음
Function
  • 프로그램 구현 시 커다란 프로그램의 일부 코드로
  • 특정한 작업을 수행하고 상대적으로 다른 코드에 비해 독립적인 모듈
Inline
  • 프로그램 구현 시 반복되는 부분을 특정 이름을 부여해 놓고 이름을 호출하여 실행할 수 있도록 하는 프로그램 기법. , 컴파일러는 이 inline이 사용된 모든 곳에 코드를 복사해 놓음
  • Module
    - 전체 프로그램을 구성할 요소인데, 기능 단위로 묶은 것이며 재사용을 용이하게 하기 위해 만든다.

Component
- 재사용 가능한 블럭, 다른 component들의 조합으로도 가능
  다른 서버에 배치 가능, 서비스 위해 서로 통신 가능

응집도/결합도

fan-in/fan-out

[소공 목차]

 

1. 결함 제거 극대화, 테스트 설계 기법의 개요

   가. 테스트 설계 기법의 정의

  • 테스트 설계 과정을 통해 테스트 케이스와 테스트 데이터를 설계하고 명세화하는 기법
  • 보다 적은 테스트 케이스로 보다 많은 결함을 찾을 수 있도록 테스트를 설계하는 방법

   나. 테스트 설계 기법의 분류

            - 분류 방법은 SW내부구조 참조여부에 따라 분류(블랙/화이트)할 수도 있고,

              설계근원의 기준에 따라 분류(명세/구조/경험기반) 할 수도 있음
            - 블랙박스 기법명세기반 기법과 경험기반 기법을 포함,  화이트박스 기법구조 기반 기법을 포함함 

 

2. 테스트 설계 기법의 주요 종류     

분류 주요 종류 설명
명세기반




- 동등분할 - 입력값/출력값 영역, 등가집합 대표값 예) 각 레벨 범위의 대표값을 테스트
- 경계값 분석 - 동등분할의 경계값 포함 예) 각 레벨의 경계의 값을 테스트
- 결정테이블 테스팅  - 논리적으로 의존적 모든 조건들의 조합 생성
- 테스트 조건/기대결과 True, False로 논리조합
- 상태전이 테스팅 - 현재상황, 이전이력의 상태/변화를 상태 전이 다이어그램을 통해 도출
- 유즈케이스 테스팅 - 컴포넌트(단위)레벨, 시스템 레벨
- 페어와이즈 테스팅 - 결함의 2요소의 상호작용에 기인, 2개 요소의 모든 조합을 다루는 테스트
- 직교배열 테스팅 - 각 행과 열이 페어와이즈하게 함으로써 조합의 수를 줄임
- 구문 커버리지(SC) - 테스트 스위트(테스트 케이스 묶음)에 실행된 구문이 몇 퍼센트인지를 측정
- 결정 커버리지(DC)  - 결정포인트 내의 전체 조건식이 최소한 참/거짓 한번의 값을 갖도록 측정
- 조건 커버리지(CC)  - 전체 조건식의 결과와 관계없이 각 개별 조건식이 참/거짓 한번 모두 갖도록 개별 조건식을 조합
- 조건/결정 커버리지 (C/DC) - 전체조건식 참/거짓 한번씩하면서 개별조건식 참/거짓 모두 한번씩 갖도록 조
- 변경조건/결정 커버
   리지(MC/DC)
- 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 무관하게 영향
- 각 ISO 26262의 최고 안전 무결성 등급인 ASIL D의 경우 MC/DC 100%의 구조적(코드) 커버리지를 만족해야 함
- 다중조건 커버리지
(MCC)
- 결정포인트 내의 모든 개별조건식의 모든 가능한 논리적 조합 100% 보장
경험기반 - 탐색적 테스팅 접근법
(Exploratory Testing approach)
- 테스트의 설계, 수행, 계획, 테스트 기록 및 학습을 동시에 진행하는 휴리 스틱(heuristic, 발견적인) 테스팅 접근법
 o 테스트 목적 기반 수행 (Test-charter)
 o 60~120분의 제한된 시간에 수행 (Time-boxing)
 o 테스트 수행 후 요약보고 (Debriefing)
- 분류 트리 기법 - SW 일부 또는 전체를 트리 구조로 분석 및 표현, 테스트케이스를 도출
- 체크리스트 - 테스트 하고 평가해야 할 내용과 경험과 노하우를 분류 정리하고 목록화
- 특성 테스팅 - ISO9126 등의 품질모델에 있는 품질특성을 근간으로 테스트케이스를 도 출하는 방법
- 비기능적 테스팅에서 주로 사용

 

[소공 목차]

1. 요구명세서 기반 테스트, 블랙박스 테스트 (BlackBox Test)

1) 개념

- 소프트웨어 내부 구조를 고려하지 않고, 입력값에 대한 출력값을 확인하여 테스트하는 기법

- 특) 기능테스트, Data Driven, I/O Driven

 

2) 블랙박스 테스트 주요 기법

기법 활용예 상세 설명
동등 클래스
분할 기법
(Equivalence
Class
Partitioning)

- 등가 분할 된 대표 값을 이용 테스트케이스 도출
- 프로그램의 입력 도메인을 등가 영역들로 분할 후 각 영역별로 대표되는 값들을 선정하여 테스트 케이스를 설계하는 방법
) 입력데이터 x값이 0 ~ 100 사이여야 한다면 TC (x < 0), (x = 50), (x > 100)으로 분할하여 적용
경계값 분석
(Boundary Value Analysis)


- 결함은 경계 값 근처에서 많이 발생 이용
- 입력 영역의 분할 클래스의 경계값으로 테스트 케이스를 설계하는 방법
- 등가 분할 기법의 확장, 등가분할 된
경계의 유효한 값, 경계의 가장 가까운
유효하지 않는 값 선택 테스트 진행
) x값이 0∼100사이여야 한다면 TC
(x=0), (x=100), (x=-0.01), (x=100.1) 로 정의
의사결정 테이블 테스팅
(Decision
Table
Testing)

- 조건과 결과를 참/거짓으로 표현
- 주요한 의사결정 요소들을 표(결정테이블)로 만들고, 요소들간의 결합에 의한 테스트 케이스 설계
- 각 의사결정 요소들의 조합을 통해 다양한 형태의 테스트 시나리오를 도출
유스케이스
테스팅
(Use Case
Testing)

- usecase명세서 이용 테스트 케이스 설계
- 유즈케이스를 통해 도출되는 비즈니스 시나리오 (기본 흐름, 대체 흐름)를 기반으로 테스트를 명세화하여 테스트
- 컴포넌트/단위 레벨 유즈케이스 테스팅
- 시스템 레벨 유즈케이스 테스팅
분류 트리 기법(Classification Tree Method)

- SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하는 기법
- 트리구조를 시각화 하여 테스트 케이스를 설계하므로 불필요한 중복 및 누락을 회피
페어와이즈
테스팅
(Paireise
Testing)
- 대부분 결함이 2 개의 요소(Pair)의 상호 작용에 기인한다는 것에 착안하여, 각 값들이 다른 파라미터의 값과 최소 한번씩은 조합을 이루도록 구성하는 테스트 기법
- 모든 조합을 포함하지 않으므로 결함을 찾지 못하는 경우 발생 가능
원인-결과
그래프
(Cause Effect
Graph)
- 입력 데이터간 관계가 출력에 영향을 미치는 상황을 체계적으로 분석하여 테스트 케이스 설계 및 테스트
- 원인,결과에 근거한 테스트 케이스 생성하며 시스템 외부 동작만 고려 
오류예측
기법
(Error Guessing)
) 입력값 없이 Return 친다.
문법에 어긋난 입력을 시험한다 등
각 시험 기법들이 놓치기 쉬운 오류들을 감각과 경험으로 찾아 검증
- Ad-hoc Testing이라고도 하며 직관과 경험에 의한 특정 형태의 결함 예측 및 해당 결함을 드러내는 테스트 케이스 설계 기법.

 

2. 내부구조기반 테스트. 화이트박스 테스트 (White-Box Test)

1) 개념

- 소프트웨어의 내부 구조와 복잡도를 기반으로 테스트 케이스를 도출하여 테스트를 수행하는 방식

- 특) 구조 테스트, Logic Driven

 

2) 화이트박스 테스트 주요 기법

기법 설명 사례
제어구조 시험
(Control Structure Testing)
- McCabe에 의해 제안된 대표적 White Box Test 기법
- 프로그램의 처리 흐름을 제어하는 방법 및 수행 제어를 위해 사용되는 문장의 구조
- 순차형(순차 구조, Sequence)
- 선택형(분기구조, If Then Else)
- 반복형(반복구조, Do While)
루프 시험
(Loop Testing)
- 프로그램 루프 구조에 국한해서 실시하는 기법
- 루프 시험의 대상 결함 : 초기화 결함, 인덱싱 및 증가의 결함, 루프의 경계선에서 나타나는 경계 오류
- 루프의 유형 : 단순루프, 중첩루프, 연결루프, 비구조적 루프
- for, while
- go to

- Test Coverage 선정으로 테스트 범위 정의 가능

https://meta-study-group.tistory.com/322

 

코드 커버리지(김도현 부장님)

[소공 목차] 1. 코드에 대한 테스트 수행 범위 지표, 코드 커버리지의 개념 - What : 테스트 대상인 소스 코드 중 테스트를 통해 실행된 코드의 비율 지표 - Why : 테스트의 정확성(테스트 범위)을 판

meta-study-group.tistory.com

 

 

3. 블랙박스, 화이트박스 테스트 비교

구 분 블랙박스 테스트(명세기반) 화이트박스 테스트(구조기반)
개념도
개념 프로그램 내부 구조를 고려하지 않고, 요구사항 명세서나 사양서에서 테스트 케이스를 추출하여 테스트 하는 기법 컴포넌트 혹은 소프트웨어의 내부 구조 분석에 바탕을 두고 테스트케이스를 도출하여 테스트 하는 기법
특징 기능/데이터 위주, 명세 기반 내부로직 위주 설계, 알고리즘 위주, 구조 기반
관점 개발자 관점 사용자 관점
대상 시작/종료/인터페이스 결함 Loop, Decision 결함, 비 수행 구문
장점 시스템의 기능과 명세로 테스트 케이스를 도출하여 테스트케이스가 명확 내부 로직에 대한 테스트를 수행함으로써 상세한 테스트 가능
단점 내부 로직 테스트가 없어 테스트 범위가 구조기반보다 제한적 테스트케이스 도출 한계
기법 동등분할, 경계값분석, 의사결정테이블, 상태전이, Pairwise 분석 오류 예측, 원인결과 그래프 구문 커버리지, 결정 커버리지, 조건/결정 커버리지, 루프테스트, 제어구조 시험
활용 대부분의 테스트에 적용, 베타 테스트 단위 테스트 위주, 알파 테스트

* 알파테스트 : 자체 테스트 * 베타테스트 : 사용자 테스트

[소공 목차]

 

1. 신규사업 프로젝트에 대한 평가 사업타당성 평가 개요

<실무상 기술 가치 평가 방법>

- 사업화 하거나 투자를 확대할 때 사업의 기술서 및 타당성을 등급으로 평가하는 방법

- 사업타당성 평가 방법 : 기술성/권리성 관점, 시장성/사업성 관점, 유용성 관점, 경쟁성 관점

2. 사업타당성 평가 방법

 - 평가에 따라 기업의 생존성이 달려 있기 때문에 세분화 기준이 필요함.

 - 기술적 사업 타당성 여부는 기술의 현재와 미래를 보는 것

 - 따라서 현재를 보고 미래를 예측 해야 함.

가. 기술성/권리성 관점

나. 시장성/사업성 관점

다. 유용성 관점

라. 경쟁성 관점

3. 기술사업타당성 평가와 기술가치평가의 비교

-끝-

[소공 목차]

 

공공 소프트웨어 사업 영향평가 제도

 

1. SW 산업 생태계의 영향을 평가하는, 공공 SW 사업 영향 평가 제도

 1)  공공 SW 사업 영향 평가제도 개요

  • 국가기관등에서 소프트웨어사업의 예산편성, 발주, 소프트웨어 배포 및 서비스 제공을 추진하는 경우 민간 소프트웨어시장침해 등 소프트웨어 산업 생태계에 미치는 영향을 검토하여 사전 조정하는 소프트웨어 영향평가제도에 대한 가이드를 개발 및 보급하는 제도
  • 공공과 민간 간 불필요한 경쟁 및 SW산업 위축을 방지하기 위해 공공 정보화 사업의 기획단계에서 민간 시장 침해 등 SW 산업 생태계에 미치는 영향을 평가하여 개선 의견을 제시하는 제도

 2) 법적 근거

  • 소프트웨어진흥법 제43조(소프트웨어사업 영향평가), 동법 시행령 35조, 36조, 37조
  • 소프트웨어사업 계약 및 관리감독에 관한 지침 제5조, 제6조

 3) 도입 배경

도입 배경 설명
공공기관의 SW 무상배포에 관한 문제 제기 - 일부 공공기관이 SW 또는 정보시스템을 개발하여 무상 제공함에 따라 민간시장을 위축시켜 SW 산업육성을 저해한다는 산업계의 문제제기
공공기관 자체 직접적으로 대국민서비스 앱을 직접 개발(무료배포) - 민간의 유사 서비스와 불필요한 경쟁 발생 및 민간시장 축소
  • 정부-민간 SW 사업 중복, 민간 업체 도산 등의 문제 발생, 선순환 생태계 구축을 위해 시행

 

2. 공공 SW 사업 영향평가 제도 평가 절차

 1) 공공 SW 사업 영향 평가제도 평가 절차

  • 평가 결과에 따라 사업계획 변경 또는 사업 재검토 수행
  • 평가 결과에 따라 단계적으로 민간 이양 또는 사업 중지 수행

  • 민간 SW  시장 침해 가능성 및 사업의 필요성 및 공공성을 위주로 평가 수행

 2) 공공 SW사업 영향 평가제도 평가 기준

  • 평가 결과
구분 내용
민간시장 침해 가능성 없음 - 평가 결과 민간시장 침해 가능성이 없어 사업추진 가능
민간 시장 침해 가능성 있음 민간시장 침해 최소화 - 평가 결과 민간시장 침해 가능성이 있어 민간시장에 침해가 되지 않도록 유의하여 사업 추진
사업 재검토 - 평가 결과 민간시장 침해 우려가 매우 높아 사업 계획의 변경 또는 중지

 

3. 공공SW 사업 영향평가 단계별 활동

 1) 공공 SW 사업 영향평가 단계별 주요 활동

단계 주요활동 참고자료
소프트웨어 사업 기본정보 작성 - 소프트웨어사업의 기본정보를 확인하여 작성하는 단계로 사업기본정보(사업명, 주요 사업내용, 사업기간), 영향평가 단계, 사업 구분을 분류하여 작성 - 사업추진계획서
- 제안 요청서
운영계획 검토 - 운영기관 또는 사용자의 공동 사용 여부 등 소프트웨어 사업의 운영 계획을 분석하여 작성 - 사업추진계획서
- 운영계획안
민간 소프트웨어 시장 침해 가능성 검토 - 소프트웨어사업의 주요 기능과 동일·유사한 민간 소프트웨어가 존재하는지를 확인 - 사업추진계획서
- 기능 요구사항
- 제안 요청서
- 민간 소프트웨어 현황 정보 검색
사업의 필요성 및 공공성 검토 - 주요 기능이 동일·유사한 민간 소프트웨어가 있음에도 불구하고 해당 사업을 추진해야만 하는 필요성과 공공성에 대해 기재한 - 대상 SW 규정 관련 법령
- 국가안보 점검 기준
- 공공데이터 활요 공공서비스 제공 및 정비 가이드라인
종합의견 작성 - 단계별 검토 내용을 토대로 소프트웨어사업의 민간 소프트웨어 시장 침해 가능성을 종합적으로 판단하여 작성
- 민간소프트웨어시장 침해 가능성이 있음에도 추진하여야 하는 경우 민간 소프트웨어 시장 침해를 완화할 방안을 작성
- 민간 소프트웨어시장 침해가능성이 있으며 사업의 필요성 및 공공성이 낮은 경우 사업을 재검토
- 각 단계별 검토 내용

 

2) 공공 SW 사업 영향평가 항목

유형 평가항목 설명
기관 공동사용형 SW 산업계의 파급 효과 - 정부의 SW 개발 및 배포가 시장에 미치는 영향을 정성평가
사업추진의 필요성 - 사업의 기획단계에서 여러 대안을 충실히 검토했는지와 사업 추진의 타당성(필요성, 시급성, 효과성 등)에 대해 정성평가
대국민 서비스형 민간 유사서비스 침해여부 - 매우 침해 : 핵심기능과 수요계층이 유사 서비스 2개 이상
- 침해함 : 핵심기능과 수요계층이 유사한 서비스 1개 존재
- 침해 없음 : 핵심기능과 수요계층이 유사한 서비스 없음
추진사업의 공공성 - 높음 : 민간대체가 힘든 사업으로 공공에서 수행해야하는 서비스
- 낮음 : 민간대체가 가능한 서비스

 

 

  • 소프트웨어 사업 영향 평가 가이드라인 : https://www.swit.or.kr/download.do?fileName=/202104/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EC%82%AC%EC%97%85%20%EC%98%81%ED%96%A5%ED%8F%89%EA%B0%80%20%EA%B0%80%EC%9D%B4%EB%93%9C%EB%9D%BC%EC%9D%B8%EB%82%B4%EC%A7%80(2021)%EC%B5%9C%EC%A2%85.pdf

+ Recent posts