✅ 핵심 키워드
공통 모듈 구현
- 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상하고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법이다.
응집도(Cohesion)
- 모듈의 독립성을 나타내는 개념으로 모듈 내부 구성요소 간 연관 정도이다.
- 정보은닉 개념의 확장개념으로 하나의 모듈은 하나의 기능을 수행하는 것을 의미한다.
결합도(Coupling)
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.
- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.
공통 모듈 구현 대상
- 공통 모듈은 화면 모듈, 화면에서 입력받은 데이터 처리를 위한 서비스 컴포넌트 비즈니스 트랜잭션 컴포넌트 등이 있다.
서버 프로그램 구현
- 업무프로세스를 기반으로 개발언어와 도구를 이용해 서비스 제공에 필요한 업무 프로그램을 구현한다.
배치 프로그램(Batch Program)
- 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법이다.
✅ 21. 개발환경 구축
💡 개발환경 구축
- 컴퓨터 시스템에 필요한 운영체제, 개발 툴 등을 설치한다.
- 설치된 툴을 이용하여 개발에 필요한 프로그래밍 언어, 라이브러리 등을 설치하고 구성한다.
- 개발환경을 유지보수하고 업그레이드하여 개발 생산성과 품질을 향상한다.
💡 기출
[약술형] 2020년 3회
형상 통제를 설명하시오.
- 형상 항목의 버전 관리를 위해서 변경 여부와 변경 활동을 통제하는 활동
[해설]
형상 통제
- 소스 코드와 같은 소프트웨어 개발 자산을 버전 관리 시스템(VCS)에 등록하여 변경 이력을 관리한다.
- 변경 요청이 있을 경우 변경 요청을 검토하고 승인하며, 변경 사항을 기록하고 반영한다.
- 변경 이력을 추적하고 변경 내역을 문서화하여 향후 유지보수와 개발에 활용한다.
[단답형] 2020년 2회
Linux 위에서 구동하며 휴대전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트 등)을 포함하고 있는 자바 및 코틀린을 사용하여 개발하는 운영체제는 무엇인가?
- 안드로이드(Android)
[단답형] 2022년 3회
다음에서 형상 관리에 대한 설명이다. 괄호 안에 들어갈 형상 관리 도구를 보기에서 고르시오.
- (SVN, Subversion): 중앙 집중형 클라이언트-서버 방식으로 하나의 서버에서 소스를 쉽고, 유용하게 관리할 수 있게 도와주는 도구로 저장소를 만들어 그곳에 소스를 저장해서 소스 중복이나 여러 문제를 해결하기 위한 도구
- (CVS, Concurrent Versions System): 가장 오래된 형상 관리 도구 중의 하나로서 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행하는 형상 관리 도구로 파일 단위로 변경 사항 관리가 가능한 도구
- (Git): 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 도구로 빠른 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용한 도구
✅ 22. 공통 모듈 구현
💡 공통 모듈 구현
- 공통 모듈의 기능을 정의하고, 이를 구현하는 코드를 작성한다.
- 공통 모듈을 호출하여 기능을 수행하는 코드를 작성하고, 이를 다른 소프트웨어 모듈에서 재사용한다.
- 일관된 인터페이스를 제공하여 다른 모듈과의 결합을 최소화하며, 유지보수성과 확장성을 고려하여 설계한다.
💡 공통 모듈 테스트
- 공통 모듈의 기능과 요구사항을 이해하고, 테스트 케이스를 작성한다.
- 작성한 테스트 케이스를 실행하여 공통 모듈이 요구사항에 부합하는지 확인한다.
- 테스트 결과를 분석하고, 발견된 결함을 수정하고 테스트를 재실행한다.
💡 기출
[단답형] 2020년 1회
다음은 모듈의 관계를 나타낸 다이어그램이다. fan-in 개수가 2 이상인 모듈 명칭을 쓰시오.
- F. H
[해설]
모듈 다이어그램
- 소프트웨어 시스템을 구성하는 모듈들과 이들 간의 의존 관계를 나타내는 다이어그램이다.
- Fan-In: 한 모듈에서 호출되는 다른 모듈의 수를 나타내는 지표이다.
- Fan-Out: 한 모듈이 호출하는 다른 모듈의 수를 나타내는 지표이다.
[단답형] 2022년 2회
다음 프로세스 구조에서 모듈 F의 Fan-In과 Fan-Out을 구하시오.
- Fan-in: 3
- Fan-Out 2
[단답형] 2020년 1회
다음에 들어갈 단어를 각각 적으시오.
- 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는 것으로, 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호 작용을 배제함으로써 이루어진다. 모듈의 독립성을 높이기 위해서는 (결합도(Coupling))은/는 약하게, (응집도(Cohesion))은/는 강하게 만들어야 한다.
[해설]
- 결합도(Coupling): 소프트웨어 시스템의 모듈 간 상호 의존 정도를 나타내는 지표
- 응집도(Cohesion): 소프트웨어 시스템의 모듈 내부의 기능적 연관성 정도를 나타내는 지표
[단답형] 2021년 1회
다음은 결합도에 대한 설명이다. 빈칸에 들어갈 알맞은 용어를 쓰시오.
- (내용 결합도(Content Coupling))은/는 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
- (공통 결합도(Common Coupling))은/는 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
- (스탬프 결합도(Stamp Coupling))은/는 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
[단답형] 2021년 3회
결합도(Coupling) 종류 중 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우의 결합도를 영어로 쓰시오.
- 제어 결합도(Control Coupling)
[해설]
내용 결합도(Content Coupling)
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
- 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도
공통 결합도(Common Coupling)
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
- 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
외부 결합도(External Coupling)
- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
- 외부 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
제어 결합도(Control Coupling)
- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도
스탬프 결합도(Stamp Coupling)
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
- 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미치게 됨
자료 결합도(Data Coupling)
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도
- 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장 바람직한 결합도
[단답형] 2021년 2회
아래에서 설명하는 응집도의 종류를 쓰시오.
- 절차적 옹집도(Procedural Cohesion): 입출력 간 연관성은 없으나, 순서에 따라 수행될 필요가 있음
- 교환적 응집도(Communication Cohesion): 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동
- 기능적 응집도(Functional Cohesion): 모든 기능들이 연관되어 있는 것, 그룹화
[해설]
우연적 응집도(Coincidental Cohesion)
- 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
논리적 응집도(Logical Cohesion)
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도(Temporal Cohesion)
- 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도(Procedural Cohesion)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도(Communication Cohesion)
- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우의 응집도
순차적 응집도(Sequential Cohesion)
- 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도
기능적 응집도(Functional Cohesion)
- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
[단답형] 2022년 1회
다음에서 설명하는 인터페이스 도구를 쓰시오.
- 자바를 이용한 xUnit 테스트 도구이다. Erich Gamma와 Kent Beck 등이 작성한 오픈소스로 JAVA 단위 테스트 프레임워크이다.
- jUnit
[해설]
jUnit
- 자바에서 단위 테스트를 수행하는 데 사용되는 인터페이스 도구이다.
- 개발한 코드의 품질을 테스트하고 검증한다.
- 테스트 케이스 작성, 실행, 결과 분석 등의 기능을 제공하여 소프트웨어의 품질을 향상한다.
✅ 23. 배치 프로그램 구현
💡 배치 프로그램
- 대용량의 데이터를 일괄 처리하기 위한 프로그램이다.
- 예약된 시간에 자동으로 실행되어 데이터의 정합성을 유지하며, 반복적으로 수행되는 작업을 자동화한다.
- 주로 데이터 처리 작업을 수행하며, 데이터베이스에서 데이터를 추출하여 가공, 처리, 저장하는 등의 작업을 수행한다.