씬디의 블로그
[정보처리기사 필기] 2. 소프트웨어 개발 본문

정보처리기사
수제비2024 기출문제집으로 공부하면서 틀린 부분 위주로 기록
2-1 데이터 입출력 구현
1. 논리 데이터 저장소 확인
수식의 표기법
- 전위 표기법(PreFix): 연산자 -> Left -> Right
- 중위 표기법(InFix): Left -> 연산자 -> Right
- 후위 표기법(PostFix): Left -> Right -> 연산자
2-2 통합 구현
1. 모듈 구현
테스트 vs 디버그
- 테스트: 오류를 찾는 작업
- 디비깅: 오류를 수정하는 작업
Migration
- 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
Component
- 명백한 역할을 가지고 독립적으로 존재할 수 있는 시스템의 일부분으로 넓은 의미에서 재사용되는 모든 단위라고 볼 수 있으며 인터페이스를 통해서만 접근할 수 있는 것
화이트박스 테스트
- 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
- 모듈 안의 작동을 직접 관찰한다
- 화이트박스 테스트의 이해를 위해 논리 흐름도를 이용할 수 있다
- 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트에 해당한다
- 테스트 데이터를 선택하기 위하여 검증 기준을 정한다
블랙박스 테스트
- 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다
- 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 요구나 명세를 기초로 결정한다
- 기능 및 동작 위주의 테스트를 진행하기 때문에 내부 구조나 작동 원리를 알지 못해도 가능하다
- 블랙박스 테스트를 이용하여 발견할 수 있는 오류
- 비정상적인 자료를 입력해도 오류 처리를 수행하지 않는 경우
- 정상적인 자료를 입력해도 요구된 기능이 제대로 수행되지 않는 경우
- 경곗값을 입력할 경우 요구된 출력 결과가 나오지 않는 경우
2. 통합 구현 관리
형상관리
- 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동이다
- 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다
- 관리 항목에는 소스 코드뿐만 아니라 각종 정의서, 지침서, 분석서 등이 포함된다
- 형상 관리를 위하여 구성된 팀을 형상 통제 위원회(CCB, Change Control Board)이라고 한다
- 대표적인 형상 관리 도구에는 Git이 있다
소프트웨어의 버전 등록 관련 주요 기능
- 체크인: 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신함
통합 개발 환경 (IDE, Integrated Development Environment)
- 통합 개발 환경은 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램에서 처리할 수 있도록 제공하는 소프트웨어적인 개발 환경
- 코딩: C, JAVA 등의 프로그래밍 언어로 프로그램을 작성하는 기능
- 컴파일: 개발자가 작성한 고급 언어로 된 프로그램을 컴퓨터가 이해할 수 있는 목적 프로그램(저급언어 프로그램)으로 번역하여 컴퓨터에서 실행 가능한 형태로 변환하는 기능
- 디버깅: 소프트웨어나 하드웨어의 오류나 잘못된 동작, 즉 버그를 찾아 수정하는 기능
- 배포: 소프트웨어를 사용자에게 전달하는 기능
2-3 제품 소프트웨어 패키징
1. 제품 소프트웨어 패키징
디지털 저작권 관리의 기술요소 [암키식저 파정크인]
- 암호화 / 키 관리 / 식별 기술 / 저작권 표현 / 파일 생성 / 정책 관리 / 크랙 방지 / 인증
2. 제품 소프트웨어 매뉴얼 작성
소프트웨어 품질 목표
- 이식성(Portability)
- 하나 이상의 하드웨어 환경에서 운용되기 위해 쉽게 수정될 수 있는 시스템 능력
- 효율성(Efficiency)
- 명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력
- 품질 부특성으로 시간반응성, 자원효율성, 준수성 등을 갖는다
소프트웨어 품질 측정을 위해 개발자 관점에서 고려해야할 항목
- 정확성, 무결성, 사용성 등
브룩스 법칙
- S/W Project 일정이 지연된다고 해서 Project 말기에 새로운 인원을 추가 투입하면 Project는 더욱 지연되게 된다
파레토의 법칙
- 소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다
3. 제품 소프트웨어 버전 관리
분산 저장소 방식
- 버전 관리 자료가 원격 저장소와 로컬 저장소에 함께 저장되어 관리된다
- 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있다
- 대표적인 버전 관리 도구로 Git이 있다
제품 소프트웨어의 형상 관리 역할
- 형상 관리를 통해 이전 리비전이나 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용
- 불필요한 사용자의 소스 수정 제한
- 동일한 프로젝트에 대해 여러 개발자 동시개발 가능
2-4 애플리케이션 테스트 관리
1. 애플리케이션 테스트 케이스 설계
인수 테스트의 종류
- 알파 테스트
- 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
- 테스트는 통제된 환경에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 기록함
- 베타 테스트
- 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법
- 실업무를 가지고 사용자가 직접 테스트 하는 것
- 개발자에 의해 제어되지 않은 상태에서 테스트가 행해지며, 발견된 오류와 사용상의 문제점을 기록하고 개발자에게 주기적으로 보고함
단위 테스트(Unit Test)
- 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트
- 단위 테스트로 발견 가능한 오류
- 알고리즘 오류에 따른 원치 않은 결과, 탈출구가 없는 반복문의 사용, 틀린 계산 수식에 의한 잘못된 결과
목적에 따른 테스트
- 강도(Stress)
- 시스템 처리 능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트
- 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
테스트 케이스
- 개발된 서비스가 정의된 요구사항을 준수하는지 확인하기 위한 입력값과 실행 조건, 예상결과의 집합으로 볼 수 있다
- 테스트 목표와 방법을 설정한 후 테스트 케이스를 작성한다
- 프로그램에 결함이 있더라도 입력에 대해 정상적인 결과를 낼 수 있기 때문에 결함을 검사할 수 있는 테스트 케이스를 찾는 것이 중요하다
- 테스트 케이스 실행이 통과되었는지 실패하였는지 판단하기 위한 기준을 테스트 오라클이라고 한다
테스트 오라클
- 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동
- 종류에는 참, 샘플링, 휴리스틱, 일관성 검사가 존재
코드 인스펙션
- 프로그램을 수행시켜보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다
- 코드 품질 향상 기법 중 하나이다
- 정적 테스트 시 활용하는 기법이다
- 결함과 함께 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다
소프트웨어 생명주기 모델 중 V 모델
- 요구 분석 및 설계 단계를 거쳐 구현, 테스트 등 각 단계를 연결하여 V 형태를 이루는 모델
- Perry에 의해 제안되었으며 세부적인 테스트 과정으로 구성되어 신뢰도 높은 시스템을 개발하는데 효과적이다
- 개발 작업과 검증 작업 사이의 관계를 명확히 들어내 놓은 폭포수 모델의 변형이라고 볼 수 있다
- 폭포수 모델이 산출물 중심이라면 V모델은 작업과 결과의 검증에 초점을 둔다
2. 애플리케이션 통합 테스트
테스트 드라이버
- 시험대상 모듈을 호출하는 간이 소프트웨어이다
- 필요에 따라 매개 변수를 전달하고 모듈을 수행한 후에 결과를 보여줄 수 있다
- 상향식 통합 테스트에서 사용된다
- 하위 모듈을 호출하는 상위 모듈의 역할을 한다
3. 애플리케이션 성능 개선
시간복잡도에 따른 알고리즘 분류
정렬 | 종류 |
O(nlog2n) | 퀵, 힙, 병합 |
O(n2) | 버블, 삽입, 선택 |
해싱 함수의 종류
- 제곱법
- 숫자 분석법
- 제산법
- 폴딩법
- 레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용하는 방식
알고리즘
- 주어진 작업을 수행하는 컴퓨터 명령어를 순서대로 나열한 것
퀵 정렬
- 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법
- 키를 기준으로 작은 값은 왼쪽에, 큰 값은 오른쪽 서브파일로 분해시키는 방식
선택 정렬
- 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 정렬되지 않은 부분의 가장 앞의 데이터와 교환해나가는 알고리즘
알고리즘 설계 기법 [분동탐백]
- 분할과 정복(Divide and Conquer)
- 동적 계획법(Dynamic Programming)
- 탐욕법(Greedy)
- 백트래킹(Backtracking)
소스 코드 품질분석 도구 중 정적분석 도구
- 소스 코드의 잠재적인 문제를 발견한다
- 주로 도구로는 pmd, checkstyle, cppcheck가 있다
이분 검색
- 이분 검색은 전체 파일을 두 개의 서브파일로 분리해 가면서 Key 레코드를 검색하는 방식
- 반드시 순서화된 파일이어야 검색할 수 있다
- 비교 횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어듦으로 탐색 효율이 좋고 탐색 시간이 적게 소요된다
선형 검색(순차 검색: Sequential Search)
- 배열의 처음부터 끝까지 차례대로 비교하여 원하는 데이터를 찾아내는 알고리즘
- 검색할 리스트의 길이가 길면 비효율적이지만, 검색 방법 중 가장 단순하여 구현이 쉽고, 정렬되지 않은 리스트에서도 사용할 수 있다는 장점
2-5 인터페이스 구현
1. 인터페이스 설계 확인
EAI(Enterprise Application Integration)의 구축 유형
- Point-to-Point
- Hub & Spoke
- Message Bus
- 애플리케이션 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식
- Hybrid
- Hub & Spoke와 Message Bus의 혼합방식
- 필요한 경우 한 가지 방식으로 EAI 구현 가능
- 데이터 병목현상 최소화
2. 인터페이스 기능 구현
인터페이스 구현 검증 도구 [엑스피 엔셀웨]
- xUnit
- CppUnit(C++)
- JUnit(Java)
- HttpUnit(Web)
- STAF
- 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
- 각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하여 자동화하는 검증 도구
- Fitnesse
- NTAF
- Selenium
- watir
'Qualifications > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 3. 데이터 입출력 구현 (0) | 2024.07.05 |
---|---|
[정보처리기사 실기] 2. 화면 설계 (0) | 2024.07.04 |
[정보처리기사 실기] 1. 요구사항 확인 (0) | 2024.07.02 |
[정보처리기사 필기] 3. 데이터베이스 구축 (0) | 2024.05.23 |
[정보처리기사 필기] 1. 소프트웨어 설계 (0) | 2024.05.18 |