Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch3
- @Aspect
- 코드로 시작하는 자바 첫걸음
- jpa 활용2 - api 개발 고급
- 스프링 입문(무료)
- 자바의 정석 기초편 ch14
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch12
- 게시글 목록 api
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch8
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch7
- 스프링 db1 - 스프링과 문제 해결
- jpa - 객체지향 쿼리 언어
- 스프링 고급 - 스프링 aop
- 타임리프 - 기본기능
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch13
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch2
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch6
- 스프링 mvc1 - 스프링 mvc
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch1
Archives
- Today
- Total
나구리의 개발공부기록
2장 - 통합 구현 | 섹션7. 단위 모듈 구현, 섹션8. 단위 모듈 테스트, 섹션9. 개발 지원 도구 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 2강 - 소프트웨어 개발
2장 - 통합 구현 | 섹션7. 단위 모듈 구현, 섹션8. 단위 모듈 테스트, 섹션9. 개발 지원 도구
소소한나구리 2024. 4. 25. 09:002024년도 시나공 필기 책 내용 정리
섹션7. 단위 모듈 구현
1. 단위 모듈 구현(Unit Module)의 개요
- 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- 단위 모듈로 구현되는 하나의 기능을 단위 기능이라고 부름
- 사용자나 다른 모듈로부터 값을 전달받아 시작되는 작은 프로그램을 의미함
- 두 개의 단위 모듈이 합쳐질 경우 두 개의 기능을 구현할 수 있음
- 구성 요소에는 처리문, 명령문, 데이터 구조 등이 있음
- 독립적인 컴파일이 가능하며, 다른 모듈에 호출되거나 삽입되기도 함
- 단위 모듈을 구현하기 위해서는 단위 기능 명세서를 작성한 후 입,출력 기능과 알고리즘을 구현해야 함
단위기능 명세서 작성 -> 입,출력 기능 구현 -> 알고리즘 구현
2. 단위 기능 명세서 작성
- 설계 과정에서 작성하는 기능 및 코드 명세서나 설계 지침과 같이 단위 기능을 명세화한 문서들을 의미함
- 복잡한 시스템을 단순하게 구현하기 위한 추상화 작업이 필요함
- 대형 시스템을 분해하여 단위 기능별로 구분하고 각 기능들을 계층적으로 구성하는 구조화 과정을 거침
- 모듈의 독립적인 운용과 한 모듈 내의 정보가 다른 모듈에 영향을 주지 않도록 정보 은닉의 원리를 고려
3. 입,출력 기능 구현
- 단위 기능 명세서에서 정의한 데이터 형식에 따라 입,출력 기능을 위한 알고리즘 및 데이터를 구현
- 단위 모듈 간의 연동 또는 통신을 위한 입,출력 데이터를 구현
- 사용자 인터페이스인 CLI, GUI와의 연도을 고려
- 네트워크나 외부 장치와의 입,출력은 무료로 공개 되어 있는 Open Source API를 이용하면 간편하게 구현이 가능
IPC(Inter-Process Communication)
- 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합으로 복수의 프로세스를 수행하며 이뤄지는 프로세스 간 통신까지 구현이 가능함
- IPC의 대표 메소드 5가지
- Shared Memory : 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스 간 통신을 수행
- Socket : 네트워크 소켓을 이용하여 네트워크를 경우하는 프로세스들 간 통신을 수행
- Semaphores : 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신을 수행
- Pipes&named Pipes : Pipe라로 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행, 하나의 프로세스가 Pipe를 이용 중 이라면 다른 프로세스는 접근할 수 없음
- Message Queueing : 메세지가 발생하면 이를 전달하는 형태로 프로세스 간 통신을 수행
4. 알고리즘 구현
- 입,출력 데이터를 바탕으로 단위 기능별 요구 사항들을 구현 가능한 언어를 이용하여 모듈로 구현
- 구현된 단위 기능들이 사용자의 요구와 일치하는지 확인하는 과정이 필요
- 구현되는 모듈은 단위 기능의 종류에 따라 디바이스 드라이버 모듈, 네트워크 모듈, 파일 모듈, 메모리 모듈, 프로세스 모듈 등으로 구분
- 디바이스 드라이버 모듈 : 하드웨어 주변 장치의 동작을 구현한 모듈
- 네트워크 모듈 : 네트워크 장비 및 데이터 통신을 위한 기능을 구현한 모듈
- 파일 모듈 : 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현한 모듈
- 메모리 모듈 : 파일을 프로세스의 가상 메모리에 매핑/해제하는 방법, 프로세스 사이의 통신 기능을 구현한 모듈
- 프로세스 모듈 : 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현한 모듈
섹션8. 단위 모듈 테스트
1. 단위 모듈 테스트의 개요
- 프로그램의 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
- 단위 테스트(Unit Test)라고도 하며, 화이트 박스 테스트와 블랙박스 테스트 기법을 사용함
- 모듈을 단독적으로 실행할 수 있는 환경과 테스트에 필요한 데이터가 모두 준비되어있어야 함
- 모듈의 통합 이후에는 오랜 시간 추적해야 발견할 수 있는 에러들도 단위 모듈 테스트를 수행하면 쉽게 발견하고 수정할 수 있음
- 단위 모듈에 대한 코드이므로 시스템 수준의 오류는 잡아낼 수 없음
2. 테스트 케이스(Test Case)
- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로 명세 기반 테스트의 설계 산출물에 해당 됨
- 단위 모듈을 테스트 하기 전에 테스트에 필요한 입력 데이터, 테스트 조건, 예상 결과 등을 모아 테스트 케이스를 만듦
- 테스트 케이스를 이용하지 않고 수행하는 직관적인 테스트는 특정 요소에 대한 검증이 누락되거나 불필요한 검증의 반복으로 인해 인력과 시간을 낭비할 수 있음
- ISO / IEC / IEEE 29119-3 표준에 따른 테스트 케이스의 구성 요소
- 식별자(Identifier) : 항목 식별자, 일렬번호
- 테스트 항목(Test Item) : 테스트 대상(모듈 또는 기능)
- 입력 명세(Input Specification) : 입력 데이터 또는 테스트 조건
- 출력 명세(Output Specification) : 테스트 케이스 수행 시 예상되는 출력 결과
- 환경 설정(Environmental Needs) : 필요한 하드웨어나 소프트웨어의 환경
- 특수 절차 요구(Special Procedure Requirement) : 테스트 케이스 수행 시 특별히 요구되는 절차
- 의존성 기술(Inter-case Dependencies) : 테스트 케이스 간의 의존성
3. 테스트 프로세스
- 테스트를 위해 수행하는 모든 작업들이 테스트의 목적과 조건을 달성할 수 있도록 도와주는 과정
테스트 프로세스 5단계
- 계획 및 제어 단계 : 테스트 목표를 달성하기 위한 계획을 수립하고, 계획대로 진행 되도록 제어하는 단계
- 분석 및 설계 단계 : 테스트 목표를 구체화하여 테스트 시나리오와 테스트 케이스를 작성하는 단계
- 구현 및 실현 단계 : 효율적인 테스트 수행을 위해 테스트 케이스들을 조합하여 테스트 프로시저에 명세하는 단계, 모듈의 환경에 적합한 단위 테스트 도구를 이용하여 테스트를 수행하는 단계
- 평가 단계 : 테스트가 계획과 목표에 맞게 수행되었는지 평가하고 기록하는 단계
- 완료 단계 : 이후의 테스트를 위한 참고 자료 및 테스트 수행에 대한 증거 자료로 활용 하기 위해 수행 과정과 산출물을 기록 및 저장하는 단계
섹션8. 단위 모듈 테스트
1. 통합 개발 환경(IDE: Integrated Development Environment)
- 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램에서 처리할 수 있도록 제공하는 소프트웨어적인 개발 환경을 말함
- 기존 소프트웨어 개발에서는 편집기(Editer), 컴파일러(Compiler), 디버거(Debugger)등의 다양한 툴을 별도로 사용했으나 현재는 하나의 인터페이스로 통합하여 제공
- 통합 개발 환경을 제공하는 소프트웨어를 의미하며 플랫폼, 운영체제, 언어별로 다양하게 존재함
프로그램 | 개발사 | 플랫폼 | 운영체제 | 지원 언어 |
이클립스 (Eclipe) |
Eclipse Foundation, IBM |
크로스 플랫폼 | Windows, Linux, MacOS등 |
Java, C, C++, PHP, JSP, Python 등 |
비주얼 스튜디오 (Visual Studio) |
Microsoft | Win32, Win64 | Windows | Basic, C, C++, Python |
엑스 코드(Xcode) | Apple | Mac, iPhone | Mac OS, iOS | C, C++, C#, Java, Python, AppleScript등 |
안드로이드 스튜디오 (Android Studio) |
Android | Windows, Linux, MacOS |
Java, C, C++ | |
IDEA | JetBrains (이전 IntelliJ) |
크로스 플랫폼 | Windows, Linux, MacOS |
Java, JSP, XML, Go, Kotlim, PHP |
- 통합 개발 환경 도구의 대표적인 기능
코딩(Coding) | C, JAVA, Python 등의 프로그래밍 언어로 프로그램을 작성하는 기능 |
컴파일(Complie) | 개발자가 작성한 고급 언어로 된 프로그램을 컴퓨터가 이해할 수 있는 목적 프로그램으로 변역하여 컴퓨터에서 실행 가능한 형태로 변환하는 기능 |
디버깅(Debugging) | 소프트웨어나 하드웨어의 오류나 잘못된 동작, 즉, 버그(Bug)를 찾아 수정하는 기능 |
배포(Deployment) | 소프트웨어를 사용자에게 전달하는 기능 |
2. 빌드 도구
- 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물을 말함
- 소스 코드를 소프트웨어로 변환하는 과정에 필요한 전처리(Preprocessing), 컴파일(Complie) 등의 작업들을 수행하는 소프트웨어를 말함
- 대표적인 도구 목록
Ant (Another Neat Tool) |
아파치 소프트웨어 재단에서 개발한 소프트웨어로 자바 프로젝트의 공식적인 빌드도구 XML기반의 빌드 스크립트를 사용하며, 자유도와 유연성이 높아 복잡한 빌드 환경에도 대처가 가능 |
Maven | Ant와 동일한 아파치 소프트웨어 재단에서 개발된 것으로, Ant의 대안으로 개발됨 규칙이나 표준이 존재하여 예외 사항만 기록하면 되며, 컴파일과 빌드를 동시에 수행할 수 있음 의존성(Dependency)을 설정하여 라이브러리를 관리 |
Gradle | 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구 한스 도커(Hans Dockter) 외 6인의 개발자가 모여 공동으로 개발하였음 안드로이드 스튜디오의 공식 빌드 도구로 채택된 소프트웨어 Maven과 동일하게 의존성을 활용하며 그루비(Groovy) 기반의 빌드 스크립트 사용함 |
*의존성(Dependency) : Maven이나 Gradle에서 라이브러리를 관리할 때 사용하는 명령어로, 빌드 스크립트 안에 사용하고자 하는 라이브러리를 <dependency>예약어로 등록하면 빌드 수행 시 인터넷상의 라이브러리 저장소에서 해당 라이브러리를 찾아 코드에 추가해 줌
*라이브러리(Library) : 라이브러리는 개발 편의를 위해 자주 사용되는 코드, API, 클래스, 값, 자료형 등의 다양한 자원들을 모아놓은 것을 의미
*그로비(groovy) : 자바를 기반으로 여러 프로그래밍 언어들의 장점을 모아 만들어진 동적 객체지향 프로그래밍 언어
3. 기타 협업 도구
- 개발에 참여하는 사람들이 서로 다른 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구(Tool)
- 협업 소프트웨어, 그룹웨어(Groupware)등으로도 불림
- 협업 도구의 종류
프로젝트 및 일정 관리 | 전체 프로젝트와 개별 업무들의 진행 상태, 일정 등을 공유하는 기능을 제공 구글캘린더, 분더리스트, 트렐로, 지라, 플로우 등 |
정보 공유 및 커뮤니케이션 | 주제별로 구성원들을 지목하여 방을 개설한 후 정보를 공유하고 대화하는 것이 가능 파일 관리가 간편하고 의사소통이 자유로운 것이 특징 슬랙, 잔디, 태스크월드 등 |
디자인 | 디자이너가 설게한 UI나 이미지의 정보들을 코드화하여 개발자에게 전달하는 기능을 제공 스케치(Sketch), 제플린(Zeplin) 등 |
기타 | 아이디어 공유에 사용되는 에버노트(Evernote) API를 문서화하여 개발자들 간 협업을 도와주는 스웨어(Swagger) 깃(Git)의 웹 호스팅 서비스인 깃허브(Git Hub) |
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 필기 2강 - 소프트웨어 개발' 카테고리의 다른 글
3장 - 제품 소프트웨어 패키징 | 섹션10. 소프트웨어 패키징, 섹션11. 디지털 저작권 관리(DRM), 섹션12. 소프트웨어 설치 매뉴얼 작성 (0) | 2024.04.28 |
---|---|
2장 - 통합 구현 핵심 요약 (0) | 2024.04.27 |
1장 - 데이터 입・출력 구현 핵심 요약 (0) | 2024.04.24 |
1장 - 데이터 입・출력 구현 | 섹션5. 데이터베이스 개요, 섹션6. 절차형SQL (0) | 2024.04.23 |
1장 - 데이터 입・출력 구현 | 섹션3. 정렬(Sort), 섹션4. 검색 - 이분 검색 / 해싱 (0) | 2024.04.23 |