유지보수 Maintenance 

: SW개발 단계 중 가장 많은 노력과 비용이 투입되는 단계

: 유지보수를 용이하게 하려면 시험,수정 용이성/ 이해성/ 이식성등이 고려되어야 함

- 종류

> Corrective 수정적 : 잠재적 오류를 찾아서 수정

> Adaptive 적응적 : 환경의 변화를 기존sw에 반영하기 위함

> Perfective 완전적 : 새기능 추가, 성능개선을 위함

> Preventive 예방적 : 오류발생에 대비하여 유지보수, SW재공학 관점에서의 유지보수 유형

 

 SW 재공학 

: 기존 SW를 새로운 요구에 맞도록 기능을 수정/보완/추가하여 성능을 향상 시킴

= 예방적 유지보수

> 목적 : 시스템의 이해성 향상, 재사용성 개선

 

SW 재사용

> 이점 : 개발시간과 비용 단축, 실패위험 감소, 품질/생산성 향상

> 단점 : 표준화 부족, 새로운 개발방법론 도입 어렵 

 

 암호화 알고리즘 

암호화 = Cryptography

> 양방향

대칭키
(공개키 = 암호키)
> 스트림 암호 : 주기긴 난수열 발생 
LFSR, SEAL
> 블록암호 : 긴 평문 암호화, 고정길이 블록암호화 반복
DES, AES, SEED
비대칭키
(암호화- 공개키, 복호화- 개인키)
DH, ECC, RSA(속도↓, 파일크기↑, 소수활용)

> 일방향 (=단방향)

해시함수 변경감지 MDC 키 사용X, 감지코드로 메시지 무결성 보장
MD4, M5, SHA
메시지 인증 MAC 키 사용, 메시지 인증코드 무결성과 사용자 인증보장
HMAC, NMAC

> 데이터 암호화 (네트워크영역)

IPsec IP패킷 무결성, 데이터 무결성/기밀성 보장, Tunnel모드와 전송모드로 운영
ESP- 발신지 인증, HA- 발신지 호스트 인증
SSL/ TLS 전송-응용계층사이 클라이언트와 서버 간의 웹 데이터 암호화 역할
전송시 데이터 무결성 보장
S-HTTP  

+) Salt : 공격을 막기위해 동일 패스워드들이 다른 암호값으로 저장되도록 추가되는 값

 해싱 

: 검색/접근속도 빠름, 삽입/삭제 빈도가 높은 작업에 유리

: 해싱테이블(기억공간)에 할당 -> 해시함수 이용 -> 테이블내 홈주소 계산 후 기억장소 저장/ 검색작업 수행

> Overflow 발생시 개방주소법, 폐쇄주소법, 재해싱 

> 홈 주소 동일시 충돌Collision 발생 > 충돌이 발생한 레코드 집합: Synonym

> 충돌시 선형개방 주소법 사용 (충돌시 다음 버킷들을 차례대로 검색하여 최초의 빈 버킷에 저장함)

 해싱탐색  (키-주소 변환법)

: 키 값으로부터 레코드가 저장되어 있는 주소를 직접계산하여 산출된 주소로 바로 접근하는 방법

 해싱함수 

> 제곱법 : (레코드 키 값 K)^2 후 중간부분을 홈주소로 사용

> 숫자분석법 : K를 이루는 숫자의 분포를 분석하여 고른자리를 필요만큼 택하여 홈주소로 사용

> 제산법 : K를 해시표의 크키보다 크고 가장작은 소수로 나눈 나머지를 홈주소로 사용

> 폴딩법 : K를 여러부분으로 나누고, 각 부분의 값을 더하거나 XOR연산을 통해 나온 결과를 홈주소로 사용

 

 모듈 

: 독립된 1개의 SW,HD단위, 재사용/ 통합/ 단독 컴파일 가능

독립성 유지보수 용이성 ,응집도 (모듈내부 요소사이의 연관도) 

 
모듈크기, 결합도 (외부모듈과 연관도)

 - 응집도           (우논시 절교 순기응)

(낮음)

1. 우연적 : 서로 어떠한 연관관계가 없는 기능요소로 구성, 다른 상위모듈에 의해 호출되어 서로 다른기능 수행

2. 논리적 : 논리적으로 유사한 기능수행 but, 서로 관계는 밀접하지 않음

3. 시간적 : 특정시간에 실행되는 기능을 모아 작성

4. 절차적 : 반드시 특정 순서대로 수행

5. 교환적 : 요소들이 동일한 입출력 자료로 서로 다른기능을 수행

6. 순차적 : 한 요소의 출력data가 다음요소의 입력data로 사용

7. 기능적 : 모든 요소들이 단일 기능을 수행

(높음)

 - 결합도           (자스제외 공내)

(낮음)

1. 자료data (파라미터 통해 공유하는 경우)

2. 스탬프 (데이터구조 공유, 서로 다른 일부만 사용)

3. 제어 (다른 모듈로 정보를 넘기고 다른 모듈의 흐름을 제어하는 경우)

4. 외부

5. 공통(두 모듈이 같은 전역변수를 공유하는 경우)

6. 내용 

(높음)

 모듈화  : 기능단위 모듈로 분해하여 설계구현 기법,  Subroutine/function 등으로 표현
  : 지능적 관리에 도움, 복잡도 해결, 유지보수/ 수정 용이

 단위모듈 

: 한가지 동작(단위기능)을 모듈로 구현, 독립적 컴파일, 다른모듈에 호출,삽입가능

: 사용자나 다른모듈로부터 값을 전달받아 시작되는 작은 프로그램

> 구성요소 : 처리문, 명령문, 데이터구조

> 구현순서 : 단위기능 명세작성→ 입출력 구현기능→ 알고리즘 구현기능 (CLI와 GUI연동고려)

 공통모듈 

: 추상화, 성능향상, 공통 컴포넌트(자주 사용하는 기능) 구현기법, 재사용성/ 유지보수성↑

> 재사용 범위 :  컴포넌트, 객체, Application, Function

> 명세작성 기법 : 명확성/ 완전성/ 추적성/ 정확성(필요성을 알 수 있도록)/ 일관성(공통기능간 상호충돌되지 않도록)

   > 컴포넌트 명세서 :  컴포넌트 개요, 내부클래스 동작,인터페이스 통해 외부와 통신하는 명세 정의

   > 인터페이스 명세서 : 인터페이스 클래스의 세부조건/ 기능 정의

> Fan-in : 모듈을 제어하는 모듈의 수 (상위모듈 수) 

> Fan-out : 모듈에 의해 제어되는 모듈의 수 (하위모듈 수)

 

 효과적 모듈 설계방안 

: 결합도는 낮게 응집도는 높게 (독립성과 재사용성 향상)

: 복잡도와 중복성 낮게 (일관성 유지)

: 단일 입,출구/ 기능과 구조 이해하기 쉬운 크기로 분해

 

 GOF 디자인 패턴

: 생성패턴 5개/ 구조패턴 7개/ 행위패턴 11개로 구성, 서브시스템 컴포넌트와 그 관계를 설계

  PS.팩토리빌더 생성패턴    (암기방법)

 구조=F BAD comPosite 패턴   (암기방법)

 행위 mand MOV.st 패턴   (암기방법)


 모델링 

: 개발팀이 응용문제를 이해하는데에, 여러 분야 엔지니어들이 공통된 개념을 공유하는데 도움

> 사용하는 다이어그램 : UML, DataFlow(DFD), E-R 다이어그램

 DFD 

: 프로세스 위주의 모델링

> 구성요소 : Process , Data Flow ━>, Data Store , 단말

+ 다중값 속성

 UML 

: 의사소통을 위해 표준화한 모델링 언어, 시스템의 산출물을 규정/시각화/문서화하는 언어

: 단순화, 대규모 로드맵이나 개발을 위한 시스템 구축의 기본을 마련, 직관성↑

: SW시스템/ 업무 모델링 (시스템 상호작용, 업무흐름, 시스템 구조, 컴포넌트 관계등을 표시)

: 사물/ 관계/ 다이어그램으로 구성됨

 > 사물 

: 모델을 구성하는 기본요소, 다이어그램 안에서 관계가 형성될 수 있는 대상들

 - 구조사물 : 시스템의 개념적/ 물리적 요소를 표현

 - 행동사물 : 시간/공간에 따른 요소들의 행위를 표현

 - 그룹사물 : 요소들을 그룹으로 묶어서 표현

 - 주해사물 : 부가적인 설명이나 제약조건등을 표현

 > 관계 

일반화
Generalization
실체화
Relization
연관
Association
의존
Dependency
집합관계
Aggregation
구성(포함)
Composition
사물 -------▷기능 ━>
or

----------> ◇ 

- 일반화 : 하나의 사물이 다른사물에 비해 일반적인지 구체적인지 표현

- 실체화 : 오퍼레이션을 수행하도록 지정하는 의미적 관계

          : 사물이 할 수 있거나 해야하는 행위나 인터페이스로 서로를 그룹화 할 수 있는 관계

- 연관 : 2개이상의 사물이 서로 관련되어 있는 관계

- 의존 : 필요에 의해 짧은시간만 연관을 유지하는 관계, 명세 변경시 영향줌, 오퍼레이션의 매개변수로 사용

- 집합 : 하나의 사물이 다른 사물에 포함되어 있는 관계

- 포함 : 집합관계의 특수한 형태로 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계

- 연산 Operation : 클래스의 동작 

 > 다이어그램 종류 

 구조다이어 Compo클래스 대패삼겹    (암기방법)

 행위다이어 Ase CommUse    (암기방법)


 E-R 다이어그램 

: 시스템안에 있는 모든 역할을 표현하여 뷰를 하나로 단일화 함

 > 표기법 

**

개체와 속성 연결 : 직선 

 >객체관계 모델

: 개념적 데이터 모델(논리적표현), 데이터 요소 간의 개체 간 관계가 기본요소임, DBMS 고려X, E-R다이어그램으로 표현

 

 Capability Maturity Model (CMM모델) 

1. 초기단계 (initial)

2. 관리단계 (Repeatable)

3. 정의단계 (Define)

4. 관리단계 (Managed)

5. 최적단계 (Optimizing)

 개체란? 

: 하나의 정보단위로 속성attribute가 모여 하나의 정보단위를 이룬 것

: 개체들 사이의 연관성 = 관계

 

 객체란? 

: 실세계에 존재하거나 생각할 수 있는 것, 식별가능한 이름, 상호연관성에 의한 관계가 형성됨

: 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈, 반응가능한 메시지(행위)의 집합

   →속성, 상태(조건), 변수, 상수 자료구조  →객체상태 참조, 수단: 메소드, 서비스, 동작, 연산

: 클래스Class의 인스턴스Instance

 

 인스턴스란? 

: 객체를 실체화 한 것, 클래스에 속한 각 객체

 

 클래스란? 

: 공통된 속성attribute과 변수, 메서드, 연산을 갖는 객체들의 집합, 데이터를 추상화하는 단위

: 객체를 생성하기 위한 설계도/ 틀

 

 객체지향 

: 개체entity를 객체로 조립하여 작성할 수 있는 기법, 비절차적 언어

: 재사용/ 확장/ 유지보수가 용이함, 단계적/계층적표현으로 복잡한구조

> 구성 : 객체, 인스턴스, 클래스

> 설계원칙

> 설계절차 : 문제정의→ 요구 명세화→ 객체 연산자 정의→ 객체 인터페이스 결정→ 객체 구현

 

 객체지향 기법 

: 객체-속성/ 클래스-멤버 / 전체-부분(집단화) 으로 나누어 분석

            집단화  : 부분과 전체, 부분과 부분의 관계로 설명되는 연관성 

> 분석 방법론

Coad-Yourdon : 개체-관계모델 E-R다이어그램을 사용하여 객체의 행위를 데이터 모델링에 초점을 둔 방법
럼바우 : 데이터와 행위를 하나로 묶어 객체를 정의하여 추상화 시키는 방법
: 코드를 재사용하여 생산성 향상과 시스템 변경용이
분석활동
(객 동 기)
정보 - 객체모델링
 : 객체 다이어그램, 시스템에서 요구하는 객체 찾기, 가장중요, 객체 관계를 규정하여 표시함
상태 - 동적모델링
 : 상태다이어그램(상태도), 시간의 흐름에따라 동적인 행위를 표현함
흐름 - 기능모델링
 : 자료흐름도 DFD, 처리과정을 표현, 구조적분석
 > 구성요소 : 프로세스(○), 자료흐름(→), 저장소(-), 단말(□)
 > 기능모형설계 순서 : 입출력결정→ DFD작성→ 기능기술→ 제약사항 결정/최소화
 > 지침사항 : 프로세스 거쳐 변환시 새 이름을 부여함
 **프로세스가 출력자료 산출시 반드시 입력자료를 발생해야 함, 상위단계Process는 하위DFD의 자료흐름
Booch  : 미시적- 거시적 객체지향 방법

 

 정보은닉 

: 다른 모듈 구현에 영향받지 않게 설계, 모듈간 독립성 유지, 객체 속성/ 오퍼레이션의 일부를 감추어 외부접근 방지

: 대상 - 기본정보(IP,주소)같은 물리적 코드와 상세데이터 구조

 

 캡슐화 

: 중요 데이터를 보존/보호, 인터페이스만 밖으로 드러내며 그외 세부내용은 정보은닉 →외부모듈의 변경에 의한 영향 적음

: 외부에서 특정 메소드, 속성에 접근하지 못하도록 함 → 객체손상 방지, 재사용 용이, 오류파급 효과 적음

 

 상속 

: 자식이 부모를 선택, 부모클래스를 재사용하여 개발속도 향상됨 (하위 객체/클래스 기능 = 상위 객체/클래스 기능 + a)

: 코드중복 감소, 유지보수 용이, 객체의 다형성 구현가능

 

 다형성 

: 동일타입, 실행결과가 다양한 객체를 이용할 수 있는 성질, 자식객체들이 다른형태의 특성을 갖는 객체로 이용가능

: 객체/ 클래스는 동일한 메소드명 사용함, 객체 부품화 가능, 자식타입은 부모타입으로 자동 타입변환

 

 추상화 

: 불필요한 부분 생략, 객체 속성 중 가장 중요한것에 중점을 두어 모델화 한 것

: 완전한 시스템 구축 전, 시스템과 유사한 모델을 만들어 여러 요인들을 테스트 가능함 

 > 과정추상화(전반적 흐름파악 설계)

 > 데이터추상화(속성/용도 정의하지 않고 구조를 대표하는 표현으로 대체)

 > 제어 추상화(이벤트 발생 절차와 방법 정의하지 않고 대표하는 표현으로 대체)

 SW 생명주기(SDLC) 

요구사항 분석→ 설계→ 구현→ 테스트→ 유지보수

: 요구 분석부터 유지보수 전 공정을 체계화하는 절차 

=> Secure SLDC : 보안극복을 위함

 

 생명주기 개발표준 ISO/IEC 12207 

> 기본공정 프로세스 (획득, 공급, 개발, 운영, 유지보수)

> 조직공정 프로세스 (관리, 기반구조, 훈련, 개선)

> 지원공정 프로세스 (품질보증, 검증, 확인, 활동검토, 문제해결)

 

 개발표준 

+ SPICE = 수준 0(불완전단계) ~ 수준5(최적화단계)

 

 SW 비용산정법 

- 결정요소 : 프로젝트(복잡도, 크기, 요구신뢰도), (인적, HD, SW)자원, (개발자 능력, 기간)생산성

- 종류

 SW테스트 원리 

- 결함집중 : 파레토법칙 (오류의 80% 중 전체모듈의 20%내에서 발견됨)이 원인

               : 소수 특정모듈에 결함이 집중되어 추가 발생 가능성↑

- 초기집중 : 요르돈법칙이 원인, 개발 설계시부터 고려, 조기발견가능, 재유입 방지

 

+)브록스 법칙 : 프로젝트 진행 중에 새 인원 투입시 프로젝트 완성이 지연됨

 

 SW개발 프레임워크 

- 주요기능 : 예외처리, 트랜잭션처리, 메모리공유, 데이터소스 관리, 쿼리/로킹 서비스 관리

- 종류

Spring : JAVA 오픈소스의 경량형, 동적 웹사이트, 전자정부 프레임워크 기반 기술
전자정부 : 공공사업과 효과적 구축을 위한 필요기능과 아키텍처 제공, 품질/재사용성을 높이기 위함
: 공통컴포넌트 중복개발 방지
닷넷 : Windows사 개발, 실행환경제공, 가상머신CLR에서 작동, 코드실행관리

 

 SW개발 방법론 

: 개발, 유지보수 등에 필요한 수행법과 도구를 체계적으로 정리, 표준화 한 것으로 생산성과 품질이 향상 됨

 

+ Recent posts