* 개발환경 구축:
- 개발환경 구성시 구현될 시스템 요구사항의 명확한 이해가 필요
- 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것
* 개발 도구 분류:
- 구현도구
- 테스트 도구
- 형상관리 도구
- 빌드 도구
* 개발환경 구성요소
- 하드웨어 개발환경:
- 클라이언트: 사용자와의 인터페이스 역할. ex) PC, 스마트폰 등
- 서버: 웹서버 / 웹 애플리케이션 서버 WAS / 데이터베이스 서버 / 파일서버
- 클라이언트 하드웨어 개발환경
- 클라이언트 프로그램
- 웹 브라우저
- 모바일 앱
- 모바일 웹
- 소프트웨어 개발환경
- 운영체제
- 미들웨어
- DBMS
- 형상관리
- Git
- SVN
* 소프트웨어 아키텍처: 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체.
* 소프트웨어 아키텍처 설계의 기본원리:
- 모듈화
- 추상화
- 단계적 분해
- 정보은닉
* 소프트웨어 개발의 설계 단계:
- 상위설계/ 아키텍처 설계/ 예비설계: 시스템의 전체적인 구조. ex) 구조, DB, 인터페이스
- 하위설계/ 모듈설계/ 상세설계: 시스템의 내부 구조 및 행위. ex) 컴포넌트, 자료구조, 알고리즘
* 공통 모듈: 여러 프로그램에서 공통으로 사용할 수 있는 모듈
* 공통 모듈 명세 기법의 종류:
- 정확성
- 명확성
- 완전성
- 일관성
- 추적성
* 재사용: 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화 하는 작업
* 재사용 규모에 따른 분류:
- 함수와 객체
- 컴포넌트
- 애플리케이션
* 모듈: 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어.
* 모듈의 특징:
- 상대적으로 독립성을 가지고있다.
- 모듈 내부에는 수많은 조합이 존재
- 단독으로 컴파일 할 수 있으며, 재사용 가능
- 모듈의 독립성은 결합도와 응집도에 의해 측정됨. 결합도는 약하게, 응집도는 높게 해야 독립성이 높아진다.
* 결합도: 모듈간 상호 의존하는 강도.
- 내용결합도 Content Coupling: 한 모듈이 다른 모듈 내부에 있는 변수나 기능을 직접 참조하거나 수정
- 공통 결합도 Common Coupling: 전역 변수를 참고하거나 갱신하는 식으로 상호작용 하는 경우
- 외부 결합도 External Coupling: 어떤 모듈에서 선언한 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우
- 제어 결합도 Control Coupling: 처리할 대상인 값만 전달되는 것이 아닌 제어 신호나 요소를 이동, 전달하는 결합도.
- 스탬프 결합도 Stamp Coupling: 모듈간의 인터페이스로 배열, 레코드 등의 자료구조가 전달되는 경우
- 자료 결합도 Data Coupling: 모듈간의 인터페이스로 자료 요소로만 구성될 경우의 결합도. 모듈간 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우.
- 내용 결합도가 가장 결합도가 높으며 자료 결합도가 가장 결합도가 낮다.
* 응집도:
- 우연적 응집도 Coincidental Cohesion: 모듈 내부의 구성요소가 연관이 없을 경우
- 논리적 응집도 Logical Cohesion: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈 형성
- 시간적 응집도 Temporal Cohesion: 특정 시간에 처리되어야하는 기능을 한 모듈에서 처리할 경우
- 절차적 응집도 Procedural Cohesion: 모듈 안의 구성요소들이 순차적으로 수행할 경우
- 통신적 응집도 Communication Cohesion: 동일한 입/출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우
- 순차적 응집도 Sequential Cohesion: 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동이 사용할 경우
- 기능적 응집도 Functional Cohesion: 모듈 내부의 모든 기능이 단일 목적을 위해 수행되는 경우
- 우연적 응집도가 가장 낮으며, 기능적 응집도가 가장 높다.
* 단위모듈: 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
* 단위모듈의 구현 과정:
- 단위 기능 명세서 작성
- 입/출력 기능 구현
- 알고리즘 구현
* IPC Inter-Process Communication
: 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
* 단위 모듈 테스트: 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
* 테스트 케이스: 소프트웨어가 사용자의 요구사항을 정확히 준수했는지 확인을 위한 테스트 항목에 대한 명세서
- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스 구성요소:
- 식별자
- 테스트 항목
- 입력 명세
- 출력 명세
- 환경 설정
- 특수 절차 요구
- 의존성 기술
* 디자인 패턴: 모듈간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제.
* GOF 디자인패턴:
- 생성 패턴
- 구조 패턴
- 행위 패턴
* 생성 패턴: 클래스나 객체의 생성과 참조 과정을 정의하는 패턴
- 추상 팩토리
- 빌더
- 팩토리 메소드
- 프로토타입
- 싱글톤
* 구조 패턴: 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴
- 어댑터 Adapter
- 브리지 Bridge
- 컴포지트 Composite
- 데코레이터 Decorator
- 퍼싸드 Facade
- 플라이웨이트 Flyweight
- 프록시 Proxy
* 행위 패턴: 클래스나 객체들이 서로 상호작용 하는 방법이나 책임 분배 방법을 정의하는 패턴
- 책임 연쇄 Chain of Responsibility
- 커맨드 Command
- 인터프리터 Interpreter
- 반복자 Iterator
- 중재자 Mediator
- 메멘토 Memento
- 옵저버 Observer
- 상태 Sate
- 전략 Strategy
- 템플릿 메소드 Template Method
- 방문자 Visitor
* 소프트웨어 개발 보안: 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동
- 기밀성
- 무결성
- 가용성
보안요소 충족을 목표로 한다.
* 배치 프로그램 Batch Program: 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
* 배치 프로그램의 필수 요소:
- 대용량 데이터
- 자동화
- 견고성
- 안정성/신뢰성
- 성능
* 배치 스케줄러: 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
- 스프링 배치
- Quartz
- Cron
'정처기 실기' 카테고리의 다른 글
[정처기 실기] 화면설계 (0) | 2022.07.10 |
---|---|
[정처기 실기] 인터페이스 구현 (0) | 2022.07.07 |
[정처기 실기] 통합 구현 (0) | 2022.07.06 |
[정처기 실기] 데이터 입출력 구현 (2) | 2022.07.04 |
[정처기 실기] 요구사항 확인 (1) | 2022.07.02 |