1단원. 요구사항 확인
1.소프트웨어 생명주기
- 소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것
- 나선형 모형, 폭포수 모형, 프로토타입 모형, 애자일 모형 존재
- 나선형 모형 : 여러번의 sw개발 과정을 거쳐 점진적으로 완벽한 최종 sw를 개발하는 모형
- 폭포수 모형 : 고전적 생명주기 모형
- 프로토타입 모형 :실제 개발된 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측
- 애자일 모형
- 특정한 개발방법론x, 요구사항 변화에 유연하게 대응, 일정한 주기 반복
- 스크럼,xp,칸반,린, 기능중심개발(fdd) 등
- 소프트 웨어 공학 : 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
- 여러가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성 향상을 목적
- 스크럼
- PO(백로그 담당), SM(가이드 역할), DT(그냥 일반 팀원)
- 스프린트 계획 희의 -> 스프린트 -> 일일 스크럼회의, 스프린트 검토회의 -> 스프린트 회고
- XP
- 피드백,존중,의사소통,용기,단순성
- XP실천방법
- 페어프로그래밍(pair programming),공동코드소유(collective ownership),테스트주도개발(test-driven development),전체팀(whole team),계속적통합(continuous integration),리팩토링(refactoring),소규모릴리즈(small release)
2. 관리 시스템
가성기구
- OS : 가용성, 성능, 기술지원, 구축비용, 주변기기
- DBMS : 가용성, 성능, 기술지원, 구축비용, 상호호환성
- WAS : 가용성, 성능, 기술지원, 구축비용
- 오픈소스 : 라이선스의 종류, 사용자 수, 기술의 지속 가능성
3. 요구사항
- 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 조건
- 기능 요구사항
- 시스템이 무엇을 하는지, 어떤 기능을 하는지 등에 대한 기능이나 수행과 관련된 요구사항
- 비기능 요구사항
- 품질이나 제약사항과 관련된 요구사항
- 요구사항 개발 프로세스
- 도출
- 분석
- 개발대상에 대한 사용자의 요구사항을 이해하고 문서화 하는 활동
- DFD(Data Flow Diagram) : 자료의 흐름 및 변환과정과 기능을 도형중심으로 기술. 구조적 분석 기법에 이용
- 프로세스,자료흐름,자료저장소,단말로 구성
- 자료사전(DD; Data Dictionary) : 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
- 데이터를 설명하는 데이터로, 데이터의 데이터 또는 메타 데이터(Meta Data)라고도 한다.
- 정의(=), 연결(+), 생략( () ), 선택( [] ), 반복 ({} ), 설명(**)
- 분석용 case : 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
- sadt, srem(=rsl/revs), psl/psa, tags
- SADT : SoftTech 개발. 시스템 정의/ 소프트웨어 요구사항 분석/ 시스템및소프트웨어 설계를 위한 도구
- HIPO(hierrarchy input process output) : 시스템 실행 과정인 입력,처리,출력의 기능을 표현한 것, 하향식 소프트웨어 개발을 위한 문서화 도구
- HIPO Chart : 시스템의 기능을 여러개의 고유 모듈로 분할하여 이들 간의 인터페이스를 계층 구조로 표현
- 명세
- 분석된 요구사항을 바탕으로 모델 작성, 문서화
- 정형 명세 기법
- 수학적 원리기반
- 요구사항을 정확하고 간결하게 표현 , 표기법이 어려워 사용자 이해하기 어려움
- VDM, Z , Petri-net, CSP
- 비정형 명세 기법
- 상태/기능/객체 중심
- 자연어의 사용으로 요구사항에 대한 결과가 다를 수 있어 일관성 떨어짐
- 내용의 이해가 쉬워 의사소통이 용이
- FSM, Decision Table, ER모델링, State Chart(SADT) 등
- 확인
4.UML(unified modeling language)
- UML은 시스템 개발 과정에서 참여자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적 객체지향 모델링 언어
- 럼바우(Rumbaugh), 부치(Booch), 제이콥슨(Jacobson)등의 객체지향 방법론의 장점을 통합
- 구성 요소는 사물(Things), 다이어그램(diagram), 관계(relationship)
- 다이어그램은 사물과 관계를 도형으로 표현한 것
- 정적 모델링에서는 주로 구조적 다이어그램, 동적 모델링에서는 주로 행위 다이어그램 사용
- 구조적 다이어그램
- 클래스 다이어 그램 : 클래스와 클래스가 가지는 속성,클래스 사이의 관계를 표현
- 연관 클래스 : 연관 관계에 있는 두 클래스에 추가적으로 표현해야 할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스
- 객체 다이어그램 : 럼바우의 객체 지향 분석기법, 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
- 컴포넌트 다이어그램 : 구현 단계에서 사용, 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 구현
- 배치 다이어그램 : 구현 단계에서사용, 물리적 요소의 위치
- 복합체 구조 다이어그램 : 복합 구조
- 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소를 그룹화한 패키지들의 관계를 표현
- 클래스 다이어 그램 : 클래스와 클래스가 가지는 속성,클래스 사이의 관계를 표현
- 행위 다이어그램
- 유스케이스 다이어그램 : 시스템, 액터, 유스케이스, 관계로 구성
- 시퀀스 다이어그램 : 시스템, 객체들의 메시지
- 커뮤니케이션 다이어그램 : 객체들의 메시지, 객체들간 연관 관계 표현(시퀀스와의 차이점)
- 상태다이어그램 : 럼바우 동적 모델링 활용, 상호작용에 따라 상태 변화하는 것 표현
- 활동다이어그램 : 객체 처리 로직이나 조건에 따른 처리 흐름
- 상호작용다이어그램 : 상호작용 다이어그램 간의 제어 흐름을 표현
- 타이밍다이어그램 : 객체상태변화와 시간제약을 명시적으로 표현
- 구조적 다이어그램
- 관계 : 사물과 사물 사이의 연관성을 표현한 것
- 연관 관계(Association) : 실선연결, 서로 관련되어 있는 관계(사람-집)
- 집합 관계(Aggregation) : 속이빈마름모, 포함되어 있는 관계(컴퓨터-마우스)
- 포함관계(Composition) : 속찬마름모, 포함하는 사물 변화가 포함되는 사물에게 영향을 미치는 관계(문-키)
- 일반화관계(Generalization) : 속이빈화살표, 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계(커피-아메리카노,에스프레소)
- 의존관계(Dependency) : 점선화살표, 서로에게 영향을 주는 짦은 시간동안만 연관을 유지하는 관계(등급-할인율)
- 실체화관계(Realization) : 속이빈점선화살표, 사물이 할 수 있거나 해야하는 기능(날수 있다- 새 , 비행기)
- 스테레오 타입 : uml에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것
- 길러멧(Guilemet)이라고 부르는 겹화살괄호( <<>>) 사이에 표현할 형태를 기술
5. 개발 방법론
- 객체지향 방법론 : 개체를 하나의 객체로 만들어 이 객체들을 조립해서 필요한 sw를 구현하는 방법론
- 요구사항 분석 - 설계 - 구현 - 테스트 - 인도
- 컴포넌트 기반 방법론 : 기존의 시스템이나 sw를 구성하는 컴포넌트를 조합하여 하나의 새로운 app 제작
- 개발 준비 - 분석 -설계 구현-테스트-전개-인도
- 소프트웨어 재사용
- 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
- 합성 중심 : 블록을 끼워 맞춰 소프트웨어를 완성(블록구성방법이라고도함)
- 생성 중심 : 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법(패턴 구성 방법 이라고도함)
- 소프트웨어 재공학
- 기존 시스템을 이용하여 나은 시스템을 구축, 새로운 기능 추가로 sw성능 향상
- case(Computer Aided Software Engineering)
- sw개발과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 sw도구를 사용하여 자동화
- 비용 산정 기법
- 하향식 비용 산정 기법
- 전문가 감정 기법, 델파이 기법
- 상향식 비용 산정 기법
- LOC(원시코드라인수, source Line Of Code)기법. 예측치 = (a+4m+b)/6 , 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
- 비관치 : 가장 많이 측정된 코드 라인 수(b)
- 낙관치 : 가장 적게 측정된 코드 라인 수(a)
- 기대치 : 측정된 모든 코드 라인 수의 평균(m)
- 산정 공식
- 노력 = 개발기간 * 투입인원 = loc/1인당 월평균 생산 코드 라인수
- 개발비용 = 노력 * 단위비용(1인당 월평균 인건비)
- 개발기간=노력/투입 인원
- 생산성 = loc / 노력
- LOC(원시코드라인수, source Line Of Code)기법. 예측치 = (a+4m+b)/6 , 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
- 수학적 산정기법
- 상향식 비용 산정 기법
- COCOMO : 보헴제안 ,LOC에 의함, Man-Month로 나타냄
- 유형
- 조직형(Organic Mode) : 5만라인 이하
- 반분리형(Semi-Detached Mode) : 30만 라인 이하
- 내장형(Embedded Mdoe) : 30만 라인 이상
- 유형
- Putnam : 노력 분포도를 예상, Rayleigh-Norden 곡선 노력 분포도가 기초, 푸르남이 제안, 생명주기예측모형
- 기능점수모형(FP; Function Point) : 소프트웨어의 기능을 증대시키는 요인별로 가중치부여, 기능점수구한 후 비용산정
- COCOMO : 보헴제안 ,LOC에 의함, Man-Month로 나타냄
- 상향식 비용 산정 기법
- 하향식 비용 산정 기법
- 비용 산정 자동화 추정 도구
- SLIM
- Reyleigh-Nordern 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS
- 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로하여 개발된 자동화 추정 도구
- SLIM
- PERT : 전체 작업의 상호 관계를 표시하는 네트워크(낙관, 가능성, 비관으로 종료시기결정)
- CPM : 필요한 작업 나열, 작업에 필요한 소요 시간 예측, 임계경로(최장경로)찾기
- 간트차트 : 시간선 차트, 막대 도표를 이용하여 작업 일정을 표시하는 프로젝트 일정표
- 소프트웨어 생명 주기 표준 및 평가 모델
- ISO/IEC 12207 : 생명주기 프로세스 , 기본, 지원 ,조직으로 나눔
- CMMI : 초기,관리,정의,정량적 관리, 최적화로 나눠 업무 능력 및 조직성숙도를 평가
- SPICE : ISO/IEC 15504, 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가
- 소프트웨어 개발 방법론 테일러링 : 소프트웨어 개발 방법론의 절차 ,사용기법 등을 수정 및 보완하는 작업
- 내부적기준 : 목표환경, 요구사항, 프로젝트 규모, 보유 기술
- 외부적기준 : 법적 제약사항, 표준품질기준
- 개발 프레임워크 : SW개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러가지 기능들을 제공해주는 반제품형태의 소프트웨어 시스템
- 스프링 : 자바를 위한 OPEN SOURCE, 경량형 APP Framework
- 특성 : 모듈화, 재사용성, 확장성, 제어의 역흐름
2단원. 데이터 입출력 구현
1.데이터전환
- 데이터 전환 : 데이터를 추출하여 새로 개발할 정보 시스템에서 운영할 수 있도록 변환후 적재하는 과정(ETL; Extraction, Trasformation, Load)
- 데이터 검증 : 원래 데이터를 목적 시스템의 데이터로 전환하는 과정이 정상적으로 수행되었는지 확인
- 오류 데이터 측정 및 통제 : 데이터품질분석 - > 오류데이터 측정 -> 오류데이터 정제
2. 데이터베이스
- 데이터베이스 : 공동으로 사용될 데이터를 중복을 배제하여 통합하고, 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 데이터
- 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터로 구분
- DBMS : 사용자의 요구에 따라 정보를 생성, DB를 관리해주는 소프트웨어
- 정의기능(DDL), 조작기능(DML), 제어기능(DCL)
- 스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세
- 외부스키마 : 각 개인의 입장에서 필요로 하는 DB의 논리적 구조의 정의
- 개념스키마 : DB의 전체적인 논리적 구조, 하나만 존재
- 내부스키마 : 물리적 저장장치에서 본 DB구조
- DB 설계 순서 : 요구 조건 분석 -> 개념 -> 논리 -> 물리 -> 구현
- 요구 조건 분석 : 요구 조건 명세서 작성
- 개념적 설계 : 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정(개념스키마,트랜잭션모델링,E-R모델)
- 논리적 설계 : 현실의 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환(Mapping)하는 과정 (목표DBMS에 맞는 논리스키마 설계, 트랜잭션 인터페이스 설계)
- 물리적 설계 : 논리적 구조의 데이터를 물리적 구조의 데이터로 변환 (목표 DBMS에 맞는 물리적 구조의 데이터로 변환)
- 구현 : 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 트랜잭션 작성
- 데이터 모델 : 현실 세계의 정보를 체계적으로 표현한 개념적 모형
- 표시 요소
- 구조 : 논리적으로 표현될 대상으로서의 개체 타입과 개체타입간의 관계
- 연산 : 실제 데이터를 처리하는 작업에 대한 명세
- 제약 조건 : 논리적인 제약 조건
- 구성 요소
- 개체 : 데이터베이스에 표현하려는 것, 현실세계의 대상체 , 유일한 식별자에 의해 식별
- 관계 : 개체와 개체 사이의 논리적인 연결(1:1 , 1:N, N:M)
- 속성 : 가장 작은 논리적 단위
- E-R(Entity-Relationship, 개체-관계)모델
- 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 사각형:개체타입, 마름모:관계타입, 타원:속성
- 표시 요소
- 관계형 DB의 릴레이션 구조
- 속성(학번,이름,학년...) , 튜플(가로줄 하나), 도메인(속성의 자료값의 집합)
- 릴레이션 스키마(속성의 집합) + 릴레이션 인스턴스(실제 값)으로 구성
- 튜플의 수를 카디널리티 또는 기수, 대응수라고함
- 속성의 수를 디그리 또는 차수라고 함
- 후보키,기본키,대체키,슈퍼키,외래키
- 후보키는 유일성과 최소성을 모두 만족, 기본키는 후보키 중에 나옴. 나머지 후보키는 대체키이다.
- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키(최소성 만족X, 유일성 만족)
- 외래키는 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 무결성 : 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성
- 개체 무결성 : 기본키는 NOT NULL, 중복 값 X
- 참조 무결성 : 외래키값은 NULL OR 참조 릴레이션의 기본키 값과 동일.
- 관계 대수 : 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 관계연산자
- Select : 시그마(수평연산, 튜플의 부분집합을 구함)
- Project : 파이(수직연산, 애트리뷰트의 부분집합을 구함)
- Join : 공통 속성 중심으로 두개의 릴레이션을 합침. 커디시언 프로덕트 후 실렉트
- Division : 나누기 (R+S할때 R-S한 속성을 구하는 연산)
- 일반 집합 연산자
- 합집합 = U
- 교집합 = 뒤집은 U
- 차집합 = -
- 교차곱 = X
- 관계연산자
- 관계 해석 : 관계 데이터의 연산을 표현하는 방법, 비절차적 특성
- 이상과 정규화/반정규화
- 이상 : 테이블에서 데이터의 중복이 발생하고, 이 중복(redundancy)으로 인해 문제가 발생하는 현상
- 삽입 이상 : 의도와는 상관없이 원하지 않은 값들로 인해 삽입합 수 없게되는 현상
- 삭제 이상 : 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄삭제가 발생하는 현상
- 갱신 이상 : 속성값을 갱신할때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상
- 함수적 종속과 정규화
- 제 1 정규화 : 도메인이 모두 원자값
- 제 2 정규화 : 부분적 함수 종속 제거
- 제 3 정규화 : 이행적 함수 종속 제거
- BCNF : 결정자이면서 후보키가 아닌 것 제거
- 제 4 정규화 : 다치 종속 제거
- 제 5 정구화 : 조인 종속성 이용
- 반정규화 : 정규화된 데이터 모델을 의도적으로 통합/중복/분리하여 정규화 원칙을 위배하는 행위
- 중복 테이블 추가
- 집계 테이블 : 집계 데이터를 위한 테이블 생성 + 트리거 생성
- 진행 테이블 : 이력관리
- 특정 부분만을 포함하는 테이블 추가
- 중복 테이블 추가
- 시스템 카탈로그 : 다양한 객체에 관한 정보를 포함하는 System Data Base
- 데이터 사전(Data Dictionary)이라고도 한다.(데이터 사전에 저장되기 때문)
- 메타 데이터(Meta-Data) : 시스템 카탈로그에 저장된 정보
- 데이터 디렉터리(Data Directory) : 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템, 카탈로그는 사용자 시스템 모두 접근가능 그러나 데이터 디렉터리는 시스템만 접근가능
- 이상 : 테이블에서 데이터의 중복이 발생하고, 이 중복(redundancy)으로 인해 문제가 발생하는 현상
- 트랜잭션
- 작업 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산(논리적 기능을 수행하기 위함)
- 원자성, 일관성, 독립성, 영속성
- CRUD 분석 : 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것
- INDEX : 데이터 레코드를 빠르게 접근하기 위해 <키값,포인터> 쌍으로 구성되는 데이터 구조
- 클러스티드/넌 클러스티드 인덱스
- 클러스티드 인덱스 : 키의 순서에 따라 데이터도 정렬
- 넌/클러스티드 인덱스 : 키 값만 정렬, 데이터는 정렬 X
- 뷰: 하나이상의 기본테이블로부터 유도된 가상 테이블(CREATE와 DROP 문 사용)
- 파티션 : 대용량의 테이블이나 인덱스를 작은 논리적 단위로 나눈 것
- 범위 분할 : 지정한 열의 값을 기준으로 분할 (일별, 월별, 분기별 등)
- 해시 분할 : 고객번호, 주민번호 같이 데이터가 고른 칼럼에 효과적
- 조합 분할 : 범위 분할로 분할하고 다시 해시 분함수적용하여 분할
- 분산 데이터 베이스의 목표
- 위치 투명성 : 단지 논리적 명칭으로 액세스
- 중복 투명성 : 마치 하나의 데이터처럼
- 병행 투명성 : 다수 트랜잭션이 동시 실행해도 결과 영향 X
- 장애 투명성 : 장애에도 불구하고 트랜잭션 정확하게 처리
- 데이터 베이스 이중화
- 동일한 데이터베이스를 복제하여 관리
- Eager 기법 : 트랜잭션 수행 중 데이터 변경 발생하면 즉시 전달하고 변경 내용이 즉시 적용
- Lazy 기법 : 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달하는 기법
- 클러스터링
- 두대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 공유 스토리지(NAS; Network Attached Stroage) : 데이터 저장소를 네트워크로 연결
- 고가용성(HA; High Availability) : 시스템을 오랜 시간동안 계속해서 정상적으로 운영이 가능한 성질
- 고가용성 클러스터링, 병럴 처리 클러스터링
- RTO(Recovery Time Objective, 목표복구시간) : 복구되어 가동될 때까지의 소요 시간
- RPO(Recovery Point Objective, 목표 복구 지점) : 데이터를 복구할 수 있는 기준점
- 두대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 암호화 : 암호화와 복호화 과정을 거침. 암호화기법은 개인키 암호방식과 공개키 암호방식으로 나뉨
- 접근 통제
- 임의 접근 통제(DAC) : 사용자 신원에 따라 접근 권한 부여
- 강제 접근 통제(MAC): 주체와 객체 등급 비교 후 접근 권한 부여
- 역할 기반 접근 통제(RBAC) : 사용자 역할에 따라 접근 권한 부여
- 스토리지 : 대용량 데이터 저장히기 위해 서버와 저장장치 연결하는 기술
- DAS : 전용 케이블로 연결
- NAS : 네트워크 통해 연결
- SAN : DAS의 빠른처리와 NAS의 파일공유 장점 혼합. 전용 네트워크 별도 구성
- 작업 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산(논리적 기능을 수행하기 위함)
3. 자료구조
- 선형구조 : 배열, 연속리스트, 연결리스트, 스택,큐,데크
- 비선형구조 : 트리 , 그래프
- 트리
- Preorder : 가 왼 오
- Inorder : 왼 가 오
- postorder : 왼 오 가
- 트리
4. 서버프로그램구현
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 : 연관화(Association), 2개이상의 객체가 상호관련
- is instnace of : 분류화(Classfication), 동일한 특성을 갖는 객체들을 모아 구성
- is part of : 집단화(Aggregation), 하나의 상위 객체를 구성
- is a : 일반화(Generalization), 특수화/상세화(Specialization)
- 객체지향 분석
- 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업
- 방법론
- 럼바우 : 객동기
- 객체 모델링 : 객체 다이어그램으로 표시
- 동적 모델링 : 상태다이어그램, 동적인 행위 표현
- 기능 모델링 : 자료흐름도
- 부치 : 미시,거시
- 제이콥슨 : 유스케이스
- 코드와 요르돈 : e-r다이어그램
- wirfs-brock : 분석과 설계 간 구분 없음
- 럼바우 : 객동기
- 객체지향 설계 원칙
- solid : spr(단일 책임), ocp(개방-폐쇠), lsp(리스코프치환), isp(인터페이스 분리), dip(의존역전)
4. 모듈
- 모듈 : 모듈화를 통해 분리된 시스템의 각 기능
- 결합도 : 자스제외공내
- 자료(Data) : 자료 요소로만 구성
- 스탬프(Stamp) : 자료구조
- 제어(control) : 제어 요소를 전달
- 외부(external) : 외부 다른 모듈
- 공통(common) : 공통 데이터 영역
- 내용(content) : 직접 참조
- 응집도 : 우논시절교순기
- 우연(coincidental) : 서로 관련없음
- 논리적(Logical) : 유사한 성격이나 특정 형태
- 시간적(Temporal) : 특정 시간
- 절차(procedural) : 순차적으로 수행
- 통신(communication) : 동일한 입출력
- 순차적(sequential) : 하나의 출력이 그 다음 입력
- 기능(functional cohesion) : 모든 기능 요소
- 팬인/팬아웃 : 팬아웃은 나가는 화살표 숫자, 팬인은 들어오는 화살표 숫자
- n-s차트 : 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
- 단위 모듈 : 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- ipc : 모듈간통신방식을 구현하기 위해 사용되는 대표적 프로그래밍 인터페이스 집합
- 대표 메소드 : 공유메모리, 소켓, 세마포어, 파이프와 네임드 파이프, 메시지 큐잉
5. 테스트
- 테스트 케이스 : 소프트웨어가 요구사항을 정확하게 준수했는지 확인하기 위해 테스트항목에 대한 명세서
- 공통 모듈
- 여러 프로그램에서 공통으로 사용할 수 있는 모듈
- 공통 모듈 명세기법의 종류 : 정확성, 명확성, 완전성(모든것을기술), 일관성(상호충돌안나게작성),추젃어
- 재사용 : 이미개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화 하는 작업
- 함수와 객체 단위
- 컴포넌트 단위
- 애플리케이션 단위
- 코드의 주요기능 : 식별, 분류, 배열, 표준화, 간소화
- 종류
- 순차코드 1 2 3 4
- 블록 코드 1001 ~ 1100
- 10진코드 1000: 공학, 2000: 문학...
- 그룹 분류 코드 1-01-001: 본사-총무부-인사계
- 연상 코드 TV-40 40인치 TV
- 표의숫자코드 120-720-1500 두께 폭 길이
- 합성코드 : 연상코드 + 순차코드 등 2개이상 코드조합
- 종류
6. 디자인 패턴
- 디자인 패턴 : 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결방식 또는 예제
- 생성 패턴
- 추상 팩토리 : 연관 서브 클래스, 서로 연관-의존하는 객체 그룹
- 빌더 : 객체의 생성과정과 표현방법을 분리, 인스턴스 건축하듯 조합
- 팩토리 메소드 : 가상생성자 패턴, 객체 생성을 서브 클래스에서 처리하도록 분리해 캡슐화
- 상위 클래스에서 인터페이스만 정의 , 실제 생성은 서브 클래스 담당
- 프로토타입 : 원본 객체를 복제해 객체 생성, 비용 큰 경우
- 싱글톤 : 인스턴스가 하나뿐임을 보장. 생성된 객체를 어디서든 참조
- 구조 패턴
- 어댑터 : 호환성이 없는 클래스의 인터페이스를 다른 클래스가 이용할 수 있도록 변환
- 브리지 : 구현부에서 추상층을 분리, 기능과 구현을 두개의별도 클래스로 구현
- 컴포지트 : 복합 객체와 단일 객체를 구분없이 다루고자 사용. 객체를 트리 구조로 구성
- 퍼케이드 : WRAPPER 객체 필요, 서브 클래스 상위에 인터페이스 구현, 서브클래스 기능 간편 사용
- 플라이웨이트 : 메모리절약, 다수의 유사 객체를 생성하거나 조작할 때 유용
- 프록시 : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할 수행, 네트워크 연결등에 사용
- 행위 패턴
- mediator : 중간테 통제 중재자
- interpreter : 언어의 다양한 해석
- iterator : 내부 표현방법 노출 없이 순차적 접근 가능
- template method : 상위클래스 -추상, 하위클래스-구체 (공통된 내용 상위 작성)
- observer: 한 객체의 상태 바뀌면 의존하는 다른객체에 연락
- state: 상태에 따라 다르게 처리
- visitor : 메소드가 각 클래스를 돌아다니며 작업 수행
- command : 명령이 들어오면 그에 맞는 서브클래스 선택되어 실행
- memento: 작업취소, 되돌리기
- chain of responsibility(책임연쇄) : 한 객체가 처리하지 못하면 다음 객체로 넘어가는
7. 기타
- 서버 개발 프레임 워크: 대부분 mvc 기반
- codeigniter: php 기반
- ruby on rails : ruby 기반
- api : 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스
- 공개 api를 open api라고 함
- 배치 프로그램 : 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
- 대용량 데이터, 자동화, 견고성, 안정성/신뢰성 , 성능이 꼭필요
- 배치 스케줄러 : 스프링배치, quartz, cron이 있음
'정보처리기사 > 실기' 카테고리의 다른 글
정보처리기사 - 9. 소프트웨어 보안 구축 (0) | 2023.04.18 |
---|---|
정보처리기사 - 8. SQL응용 (1) | 2023.04.18 |
정보처리기사 - 7. 애플리케이션 테스트 관리 (1) | 2023.04.16 |
정보처리기사 - 4.서버 프로그램 구현 (2) | 2023.04.16 |
정보처리기사 - 2.데이터 입출력 구현 (0) | 2023.04.14 |