단위 모듈 ( Unit Module )
: 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현
- 단위 모듈로 구현되는 하나의 기능을 단위 기능이라고 말함
- 두 개의 단위 모듈이 합쳐지면 두개의 기능을 구현할 수 있음
- 단위모듈로부터 값을 전달을 받아서 수행하는 작은 프로그램을 의미
단위 모듈의 구성 요소 : 처리문, 명령문, 데이터 구조 등
단위 모듈 구현 순서 : 단위기능 명세서 작성 - 입출력기능 구현 - 알고리즘 구현
단위기능 명세서 작성
설계 과정에서 작성하는 기능 및 코드 명세서, 설게 지침과 같이 단위 기능을 명세화한 문서를 의미
복잡한 시스템을 단순하게 구현하기 위한 추상화 작업 필요
입출력기능 구현
단위 기능 명세서에서 정의한 데이터 형식에 따라 입출력 기능을 위한 알고리즘 및 데이터 구현
- 단위 모듈 간의 연동 또는 통신을 위한 입출력 데이터 구현
- CLI, GUI 와의 연동 고려
- 네트워크나 외부 장치의 입출력은 Open Source API를 이용하면 간편하게 구현 가능
알고리즘 구현
단위 기능별 요구 사항들을 구현 가능한 언어를 이용해 모듈로 구현
- 구현된 단위 기능들이 사용자의 요구와 일치하는 확인 과정 필요
구현되는 모듈의 종류를 단위 기능의 종류에 따라 구분
- 디바이스 드라이버 모듈 : 하드웨어 주변 장치의 동작을 구현한 모듈
네트워크 모듈 : 네트워크과 관련된 장비나 데이터 동싱을 위한 기능을 구현한 모듈
파일 모듈 : 데이터 구조 영역에 접근하는 방법을 구현한 모듈
메모리 모듈 : 파일을 프로세스의 가상 메모리에 매칭과 해지하는 방법, 프로세스 사이의 통신 기능을 구현한 모듈
프로세스 모듈 : 명령어 처리, 하나의 프로세스에서 또 다른 프로세스를 생성하는 방법을 구현한 모듈
단위 모듈 테스트
: 프로그램의 단위 기능을 구현하는 모듈이 정해진 기능을 수행하는가를 검증
- 화이트박스 테스트와 블랙박스 테스트 기법을 사용
화이트박스 테스트 : 프로그램 내부 검사, 모듈의 소스 코드를 오픈 시킨 상태에서 소스 코드의 모든 논리적 경로 테스트
종류 : 기초 경로, 제어 흐름 테스트, 분기 테스트, 제어 구조 검사
블랙박스 테스트 : 소프트웨어가 수행할 특정 기능이 완전히 작동되는 것을 입증하는 테스트, 내부 검사는 아님
종류 : 동기 분할 검사, 경계값 분석검사, 원인 효과 그래프 검사, 오류 예측 검사
테스트 케이스 ( Test Case )
: 사용자의 요구사항에 준수하였는지 확인하기 위해 모듈에 입력 될 수 있는 값과 예상 결과들로 나열해 테스트케이스를 만드는 과정
- 테스트 항목에 대한 명세서
- 명세 기반 테스트의 설계 산출물에 해당
ISO 표준에 다른 케스트 케이스의 구성 요소
종류 기억
식별자 ( Identifier ) : 항목 식별자, 일련 번호
테스트 항목 ( Test Item ) : 테스트 대상
입력 명세 ( Input Specification ) : 입력 데이터 또는 테스트 조건
출력 명세 ( Output Specification ) : 테스트 케이스 수행 시 예상되는 출력 결과
환경설정 ( Environmental Needs ) : 필요한 하드웨어나 소프트웨어의 환경
특수절차요구 ( Special Procedure Requirement ) : 테스트 케이스 수행 시 특별히 요구되는 절차
의존성 기술 ( Inter-case Dependencies ) : 테스트 케이스 간의 의존성
테스트 프로세스
: 테스트의 목적 조건을 달성할 수 있도록 도와주는 과정으로 5단계가 있음
테스트 프로세스 5단계
계획 및 제어 단계
: 테스트 목표를 달성하기 위한 계획 수립, 계획대로 진행되도록 제어
분석 및 설계 단계
: 테스트할 목표를 구체화해 테스트 시나리오와 테스트 케이스 작성
구현 및 실행 단계
: 효율적인 테스트 진행을 위한 테스트 케이스들을 조합해 테스트 프로시저에 명세, 단위 테스트로 진행
평가 단계
: 테스트 계획과 목표에 맞게 수행되었는가의 평가 & 기록
완료 단게
: 이후 테스트를 위한 참고 자료 및 증거 자료로 활용하기 위해 수행 과정과 산출물을 기록 및 저장
통합 개발 환경 (IDE : Integrated Development Environment )
: 개발에 필요한 환경, 편집기 ( Editor ), 컴파일러 ( Compiler ), 디버거 (, Debugger ) 등의 다양한 툴을 하나로 통합하여 제공하는 것을 의미
- 통합 개발 환경을 제공하는 소트프웨어를 의미
대표 도구 : 이클립스, 비주얼 스튜디오 엑스코드, 안드로이드 스튜디오, IDEA
빌드 도구
: 소스 코드를 소프트웨어로 변환하는 과정에 필요한 전처리, 컴파일 등의 작업들을 수행하는 소프트웨어
대표 도구 : Ant, Maven, Gradle
기타 협업 도구
개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구
협업 소프트웨어, 그룹웨어 ( Gropware ) 등
협업 도구 종류
프로젝트 및 일정 관리
- 전체 프로젝트, 개별 업무들이 진행 상태 일정 등을 공유하는 기능 제공
- 구글 캘릭터, 트렐로, 지라, 플로우 등
정보 공유 및 커뮤니케이션
: 주제별로 구성원들을 구성하여 정보를 공유하고 대화하는 기능
- 파일 관리 간편, 의사소통이 자유로움
- 슬랙, 잔디, 태스크월드 등
디자인
: 디자이너가 설계한 정보들을 코드화하여 개발자에게 전달하는 기능
- 스캐치, 제플린
기타
에버노트 : 아이디어 공유
스웨거 : API를 문서화해 개발자들간 협업을 도움
깃허브 : 깃의 웹 호스팅 서비스
'이외 개발 스터디 > 정보처리기사' 카테고리의 다른 글
[ 정보처리기사 ] 2과목 - 데이터 입출력 구현 4 (0) | 2024.03.29 |
---|---|
[ 정보처리기사 ] 2과목 - 데이터 입출력 구현 3 (0) | 2024.03.29 |
[ 정보처리기사 ] 2과목 - 데이터 입출력 구현 1 (0) | 2024.03.28 |
[ 정보처리기사 ] 1과목 - 인터페이스 설계 (0) | 2024.03.28 |
[ 정보처리기사 ] 1과목 - 애플리케이션 설계 2 (1) | 2024.03.27 |