개인 스터디/정리
[정보처리기사 실기] 17. 개발 환경 구축~18. 모듈 구현
you__me
2025. 5. 8. 15:57
17. 개발 환경 구축
1. 개발 환경 구축
- 개발 환경 구축 : 개발 환경 구성 시 구현될 시스템 요구사항의 명확한 이해와, 개발 도구 및 서버 선정
- 개발 도구 분류
- 빌드 도구 : 작성한 코드의 빌드 및 배포 수행
- 구현 도구 : 코드의 작성, 디버깅, 수정 등과 같은 작업
- 테스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용
- 형상 관리 도구 : 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리
- 개발 환경 구성요소
- 서버 하드웨어 개발 환경
- Web Server : HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 정적 콘텐츠를 처리 -> Apache 웹 서버, Google Web Server, Nginx 등
- WAS : 서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고 동적 콘텐츠를 처리 -> Tomcat, Jeus, Resin, Gunicorn 등
- DB : 데이터의 수집, 저장 -> MySQL, Oracle, Ms-SQL, DB2 등
- File Server : 파일을 저장하고 관리, 대용량 HDD, SSD등의 장치 존재
- 클라이언트 하드웨어 개발 환경
- 클라이언트 프로그램 : 설치를 통해 사용자와 커뮤니케이션. Visual Basic, C#, Delphi 등으로 개발
- 웹 브라우저 : 웹 서비스 형태로 사용자와 커뮤니케이션
- 모바일 앱 : 모바일 디바이스에 설치되어 활용
- 모바일 웹 : 웹 브라우저와 동일한 형태로 모바일 상의 웹 브라우저를 통해 서비스 제공
- 소프트웨어 개발 환경
- 운영체제 : 프로젝트의 성격에 따른 운영체제 사용
- 미들웨어 : 컴퓨터 간의 연결을 쉽고 안전하게 관리. JAVA 기반 환경에서 JVM을 설치해 컨테이너로의 기능을 이용
- DBMS : 데이터의 저장 및 활용을 위해 DBMS를 설치
- 서버 하드웨어 개발 환경
- 형상 관리 : 소프트웨어 개발 과정에서 발생하는 모든 항목의 변경 사항을 관리
- 형상 관리 목적 : 제품의 무결성과 변경에 대한 추적성 확보
- 형상 관리 절차
- 형상 식별 : 형상 관리 대상을 정의 및 식별, ID와 관리번호를 부여
- 형상 통제 : 변경요구 관리, 변경제어, 현상 관리 등의 통제를 지원
- 형상 감사 : 소프트웨어 베이스라인의 무결성을 평가
- 형상 기록 : 소프트웨어 형상 및 변경관리에 대한 수행결과를 기록
- 베이스라인 : 개발 과정 산출물의 변화를 통제하는 기준이 되는 시점
- 소프트웨어 형상 관리 도구 유형
- 공유 폴더 방식(RCS, SCCS) : 개발이 완료된 파일을 약속된 위치의 공유 폴더에 복사
- 클라이언트/서버 방식(CVS, SVM) : 중앙에 버전 관리 시스템을 항시 동작
- 분산 저장소 방식(Git) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장
- 소프트웨어 형상 관리 도구별 특징
- RCS : 소스 파일의 수정을 한 사람만으로 제한하여 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상 관리 도구
- CVS : 중앙 집중형 식별 저장소를 두고 클라이언트가 접속해 버전 관리 실행
- CVS 주요 기능
- 변경 사항 동기화 : 명령어를 이용한 서버 저장소와 클라이언트의 변경 사항 전송 기능 제공
- 파일 단위 관리 : diff를 통해 파일 내용 비교 및 관리
- SVN : 중앙 집중형 클라이언트-서버 장식으로 CVS의 단점 보완
- SVN 주요 기능
- CVS 기능 제공
- 바이너리 파일 관리 : 실행파일과 같은 바이너리 파일도 지원
- 롤백 기능 지원
- Git : 리누스 토발즈가 리눅스 커널의 개발을 위해 만든 형상 관리 시스템
- Git 주요 기능
- 로컬/원격 현상 관리 : 로컬 저장소와 원격 저장소로 분리되어 분산 저장
- 롤백 기능 지원
- 백업 : 데이터를 복제하여 안전하게 보관하는 기법
- 백업 유형
- 전체 백업 : 백업받고자 하는 데이터 전체에 대해 백업
- 차등 백업 : 마지막 전체 백업 이후 변경된 모든 데이터를 백업
- 증분 백업 : 정해진 시간을 기준으로 그 이후에 변경된 파일만을 백업
18. 모듈 구현
1. 모듈 구현
- 재사용(Reuse) : 개발 시간 및 비용 절감을 위해 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
- 재사용 종류
- 재공학 : 기존 소프트웨어의 기능을 개선하거나 새로운 소프트웨어로 재활용
- 재개발 : 기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발
- 모듈 : 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 모듈 특징 : 독립성이 높을 수록 영향을 미치지 않고, 오류 발생 시에도 쉽게 해결. 결합도는 약하게, 응집도는 강하게 개발
- 모듈화 : 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 관리가 용이하도록 모듈로 분해
- 모듈화 기법
- 루틴 : 소프트웨어에서 특정 동작을 구행하는 일련의 코드
- 메인 루틴 : 프로그램의 주요 부분으로, 전체의 개략적인 동작 절차를 표시
- 서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출되는 루틴
- 응집도 : 모듈 내부 구성요소 간 연관 정도
- 응집도 유형(낮은 -> 높은)
- 우연적 응집도 : 모듈 내부의 각 구성요소가 연관이 없음
- 논리적 응집도 : 유사한 겅격을 갖는 처리 요소들이 한 모듈에서 처리
- 시간적 응집도 : 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리
- 절차적 응집도 : 모듈 안의 구성요소들이 기능을 순차적으로 수행
- 통신적(교환적) 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동이 모임
- 순차적 응집도 : 모듈 내에서 한 활동의 출력값을 다른 활동의 입력값으로 사용
- 기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행
- 결합도 : 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
- 결합도 유형(높은 -> 낮은)
- 내용 결합도 : 다른 모듈 내부의 변수나 기능을 또 다른 모듈에서 사용
- 공통 결합도 : 모듈 밖에 선언되어 있는 전역 변수를 참조 및 갱신
- 외부 결합도 : 외부 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조
- 제어 결합도 : 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신
- 스탬프 결합도 : 모듈 간의 인터페이스로 배열, 객체, 구조 등이 전달
- 자료 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 상호작용이 일어남
- 팬인 및 팬아웃 : 모듈을 계층적으로 분석하기 위한 개념. 팬인은 높게, 팬아웃은 낮게 설계해 복잡도를 최적화
- 팬인(Fan-In) : 모듈을 제어하는 모듈의 수로, 자신을 기준으로 들어오는 수
- 팬아웃(Fan-Out) : 모듈에 의해 제어되는 모듈의 수로, 모듈 자신을 기준으로 나가는 수
2. 모듈 테스트
- 모듈 테스트 : IDE 도구를 활용해 개별 공통 모듈에 대한 디버깅을 수행, 화이트박스 기법 활용
- 화이트박스 기법 : 프로그램의 로직을 이해하고, 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식
- 모듈 테스트 종류(jUnit 종류)
- jUnit : 자바 프로그래밍 언어용 단위 테스트 도구
- CppUnit : jUnit을 C++로 구현한 단위 테스트 도구
- HttpUnit : Java 기반의 웹 애플리케이션 단위 테스트 도구
# 회고
개인적으로 중요하게 생각하는 개발 환경 구성요소가 나옴.
미들웨어에 WAS와 WebServer가 포함된다고 볼 수 있다.
그리고 시험에 엄청 많이 나오는 응집도와 결합도가 나왔다....응집도 <우논시절통순기> 결합도<내공외제스자> 외우기..