728x90
1. 개발 환경
- 개발 환경 구축 : 개발 프로젝트를 이해하고 SW 및 HW 장비를 구축
- 하드웨어 환경 : Web Server, WAS, DB Server, File Server
- 소프트웨어 환경 : 시스템 소프트웨어(OS, 서버 프로그램, DBMS) + 개발 소프트웨어
- 웹 서버 기능 : HTTP/HTTPS 지원, 통신 기록, 정적 파일 관리, 대역폭 제한, 가상 호스팅(하나의 서버로 여러개 도메인 연결), 인증
- 개발 언어 선정 기준 : 적정성, 효율성, 이식성, 친밀성, 범용성
2. 개발 패턴과 방법
- 소프트웨어 아키텍처 : SW를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
- 품질 속서 : 시스템, 비즈니스, 아키텍쳐 측면으로 나뉨
- 모듈화 : 시스템의 기능들을 모듈 단위로 나누는 것
- 추상화 : 전체적이고 포괄적인 개념 설계 후 차례로 세분화해서 구체화시킴
- 과정 추상화, 자료 추상화, 제어 추상화로 나뉨
- 단계적 분해 : 상위의 중요 개념으로부터 하위의 개녀므로 구체화 시킴
- 정보 은닉 : 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 함
- 상위 설계와 하위 설계
- 상위 설계 : 아키텍처, 예비 설계 / 구조, DB, 인터페이스를 설계
- 하위 설계 : 모듈, 상세 설계 / 컴포넌트, 자료구조, 알고리즘을 설계
- 협약에 의한 설계 : 컴포넌트 설계 시 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것
- 선행 조건, 결과 조건, 불변 조건
- 아키텍처 패턴 : 전형적인 해결 방식 및 예제
- 레이어 패턴 : 계층으로 구분하여 구성
- 클라이언트-서버 패턴 : 하나의 서버 - 여러개의 클라이언트 컴포넌트
- 파이프-필터 패턴 : 데이터 스트림 절차의 각 단계를 필터로 캡슐화, 파이프 통해 전송 / 대표적으로 UNIX 쉘
- MVC 패턴 : 모델, 뷰, 컨트롤러 구성
- 마스터-슬레이브 패턴 : 장애 허용/병렬 컴퓨팅 시스템
- 브로커 패턴 : 분산 환경 시스템, 사용자가 원하는 서비스와 특성을 브로커에 요청 -> 브로커가 연결
- 피어-투-피어 : 하나의 컴포넌트가 클러이언트 or 서버 둘다 가능(파일 공유 네트워크)
- 이벤트-버스 패턴 : 소스가 이벤트 메시지를 발행(퍼블리시)하면, 구독한 리스너들이 이벤트를 처리(알림 서비스)
- 블랙보드 패턴 : 모든 컴포넌트들이 블랙보드& 공유 데이터 저장소에 접근 가능(음성 인식, 차량 식별 등)
- 인터프리터 패턴 : 각 라인을 수행하는 방법을 지정, 기호마다 클래스를 갖도록 구성(번역기, 컴파일러, 인터프리터)
3. 객체 지향
- 객체 지향 : SW의 각 요소를 객체로 만든 후 그 객체를 조립해 SW를 개발하는 기법
- 객체 : 데이터 + 함수
- 클래스 : 공통된 속성 및 연산을 갖는 객체 집합
- 메시지 : 객체의 동작이나 연산을 일으키는 외부의 요구 사항
- 캡슐화 : 외부 접근 제한, 세부내용 은닉
- 상속 : 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려 받는 것
- 다형성 : 각각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 것
- 연관성 : 두 개 이상의 객체들이 상호 참조하는 관계
- is member of : 연관화, 상호 관련
- is instance of : 분류화, 동일한 특성
- is part of : 집단화, 하나의 상위 객체를 구성
- is a : 일반화, 특수화/ 상세화
- 객체 지향 분석 : 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업
- 방법론
- 럼바우 : 객체기
- 객체 모델링 = 정보모델링 : 객체 다이어그램으로 표시
- 동적 모델링 : 동적인 행위 표현
- 기능 모델링 : 자료 흐름도 이용
- 부치 : 미시 , 거시
- 제이콥슨 : 유스케이스
- 코드와 요르돈 : E-R다이어그램
- Wirfs-Brock : 분석과 설계 간 구분 없음
- 럼바우 : 객체기
- 방법론
- SOLID : SRP(단일 책임), OCP(개방-폐쇄), LSC(리스코프 치환), ISP(인터페이스 분리), DIP(의존 역전)
4. 모듈
- 모듈 : 모듈화를 통해 분리된 시스템의 각 기능
- 결합도 : 자스제외공내 자료 -> 내용으로 가면 결합도 강함
- 내용(Content) : 직접 참조
- 공통(Common) : 공통 데이터 영역
- 외부(External) : 외부 다른 모듈
- 제어(Control) : 제어 요소를 전달
- 스탬프(Stamp) : 자료구조
- 자료(Data) : 자료 요소로만 구성
- 응집도 : 우논시절교순기 우연 -> 기능으로 가면 응집도가 강함
- 우연(Coincidental) : 서로 관련 없음
- 논리(Logical) : 유사한 성격이나 특정 형태
- 시간적(Temporal) : 특정 시간
- 절차(Procedural) : 순차적으로 수행
- 통신(Communication) : 동일한 입출력
- 순차적(Sequential) : 하나의 출려기 그 다음 입력
- 기능(Functional Cohesion) : 모든 기능 요소
- 패인/팬아웃 : 팬아웃은 나가는 화살표 숫자 패인은 들어오는 숫자
- N-S차트 : 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
- 단위 모듈 : 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- IPC : 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적 프로그래밍 인터페이스 집합
- 대표 메소드 : 공유 메모리, 소켓, 세마포어, 파이프와 네임드 파이프, 메시지 큐잉
5. 테스트
- 테스트 케이스 : 소프트웨어가 요구사항을 정확하게 준수했는지 확인하기 위해 테스트 항목에 대한 명세서
- 공통 모듈 명시 기법의 :
- 정확성, 명확성, 완전성(모든 것을 기술), 일관성(상호 충돌 안나게 작성), 추적서
- 재사용 : 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하느 ㄴ작업
- 함수와 객체 단위
- 컴포넌트 단위
- 애플리케이션 단위
- 코드 주요 기능 : 식별, 분류, 배열, 표준화, 간소
- 종류
- 순차 코드 1 2 3 4
- 블록 코그 1001 ~ 1100
- ...
- 종류
6. 디자인 패턴
- 디자인 패턴 : 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
- 생성
- 추상 팩토리 : 연관 서브 클래스, 서로 연관-의존하는 객체 그룹
- 빌더 : 객체의 생성 과정과 표현 방법을 분리, 인스턴스 건축하듯 조합
- 팩토리 메소드 : 가상 생성자 패턴, 객체 생선을 서브 클래스에서 처리하도록 분리해 캡슐화
- 상위 클래스에서 인터페이스만 정의, 실제 생성은 서브 클래스 담당
- 프로토타입 : 원본 객체를 복제해 객체 생성, 비용 큰 경우
- 싱글톤 : 인스턴스가 하나뿐임을 보장. 생성된 객체를 어디서든 참조
- 구조
- 어댑터 : 호환성이 없는 클래스의 인터페이스를 다른 클래스가 이용할 수 있도록 변환
- 기존 클래스 이용 원하지만 인터페이스가 일치하지 않을 때 이용
- 브리지 : 구현부에서 추상층을 분리, 기능과 수현을 두 개의 별도 클래스로 구현
- 컴포지트 : 복합 객체와 단일 객체를 구분없이 다루고자 사용. 객체를 트리 구조로 구성
- 퍼케이드 : Wrapper 객체 필요. 서브 클래스 상위에 인터페이스 구현. 서브클래스 기능 간편 사용
- 플라이웨이트 : 가능한 한 공유해서 사용해 메모리 절약. 다수의 유사 객체를 생성하거나 조작할 때 유용
- 프록시 : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터체이스 역할 수행. 네트워크 연결 등에 사용
- 어댑터 : 호환성이 없는 클래스의 인터페이스를 다른 클래스가 이용할 수 있도록 변환
- 행위
- 커맨드 : 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택 되어 실행됨
- 옵저버 : 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는것
- 중재자 : 객체지향 설계에서 객체의 수가 너무 많아져 통신이 복잡해지면 느슨한 결합을 해칠 수 있기 때문에 중간에서 이를 통제하고 지시할 수 있는 역할
- ...
- 생성
728x90