* 개발환경 구축:

- 개발환경 구성시 구현될 시스템 요구사항의 명확한 이해가 필요

- 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것

 

* 개발 도구 분류:

- 구현도구

- 테스트 도구

- 형상관리 도구

- 빌드 도구

 

* 개발환경 구성요소

- 하드웨어 개발환경:

  • 클라이언트: 사용자와의 인터페이스 역할. 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

+ Recent posts