본문 바로가기
Study

[정보처리기사] 1강 정리

by jisayDeveloper 2024. 1. 19.
728x90
반응형

 소프트웨어 생명주기(Software Life Cycle)

1. 폭포수 모형(Waterfall Model)

가장 오래된 전통적인 모형, 고전적 생명 주기모형이라고도 함

성공 사례가 많고 두개 이상의 과정이 병행되지 않는다

 

2. 프로토타입 모형(Prototype Model)

요구사항에 맞게 견본(시제품)을 만들어 최종 결과 예측

폭포수 모형 단점 보완

 

3. 나선형 모령(Spiral Model)

폭포수 모형 + 프포토타입, 점진적 모형

점진적으로 개발 과정이 반복, 누락되거나 요구사항 첨가 가능

 

4. 애자일 모형(Agile Model)

요구사항 변화에 유연하게 대응

소규모 프로젝트, 급변하는 요구사항에 적합

 

* 애자일 개발 핵심가치

1. 프로세스와 도구보다 개인과 상호작용에 더 가치를 둔다

2. 문서보다 실행되는 SW에 더 가치를 둔다

3. 계약 협상보다 협업에 더 가치를 둔다

4. 계획을 따르기보다 변화에 반응하는 것에 더 가치를 둔다

 

스크럼(Scrum)

제품 책임자(PO : project Owner)

백로그를 작성하고 우선순위를 지정

 

스크럼 마스터(SM : Scrum master)

가이드 역할, 일일 스크럼 회의 주관

 

개발팀(DT : Development Team)

제품 개발을 위해 참여하는 모두를 지칭

 

스크럼 개발 프로세스 

  • 제품 백로그 : 요구사항 우선순위에 따라 나열, 릴리즈 계획 수립
  • 스프린트 계획회의 : 단기 일정 수립
  • 스프린트 : 실제 개발 과정 (약 2~4주) 
  • 일일 스크럼 회의 : 스크럼 마스터 주관, 소멸 차트 표시
  • 스프린트 검토 회의
  • 스프린트 회고

XP(eXtream Programming)

XP : 수시로 발생하는 요구사항에 유연하게 대응, 릴리즈 기간을 짧게 반복해서 가시성을 높임

 

5가지 핵심가치 

1. 의사소통(Comunication)

2. 단순성(Simplicity)

3. 용기(Courage)

4. 존중(Respect)

5. 피드백(Feedback)

 

주요 실천 방법

Pair Programming - 개발 책임 공분 분배

Collective Ownership - 개발 코드에 대한 권한 책임 공동 소유

Test-Driven Development - 테스 케이스 먼저 작성, 자동화된 테스팅 구조

Whole Team - 모든 구성원들 책임 의식

Continuous intergration - 지속적 통합

Design Improvement - 프로그램 기능 변경없이 단순화, 유연성 강화

Small Releases - 릴리즈 기간 짧게 반복

 

요구사항

기능 요구사항 - 시스템이 무엇을 하는지, 어떤 기능을 하는지에 대한 사항

비기능 요구사항

  • 장비 구성
  • 성능
  • 인터페이스
  • 데이터
  • 테스트
  • 보안
  • 품질
  • 제약사항
  • 프로젝트 관리
  • 프로젝트 지원

사용자 요구사항 - 사용자 관점

시스템 요구사항 - 개발자 관점

 

요구사항 개발 프로세스 

도출(Elicitation) - SDLC동안 지속적으로 반복(ex>브레인스토밍, 프로토타이핑, 유스케이스)

분석(Analysis) - 타당성 조사(ex>자료 흐름도(DFD), 자료 사전(DD))

명세(Specification) - 정형 명세 기법, 비정형 명세 기법

확인(Validation) 

 

요구사항 분석

구조적 분석 기법 - 하향식

 

자료 흐름도 (DFD)

프로세스 - 자료를 변환시키는 시스템의 한 부분, 원이나 둥근 사각형으로 표기

자료 흐름 - 자료 이동이나 연관관계, 화살표 위 자료 이름 기입

자료 저장소 - 도형 안에 자료 저장소 이름 기입

단말 - 시스템과 교신하는 외부 개체, 도형 안에 이름 기입

 

자료 사전

=  자료의 정의

+ 자료의 연결

(  ) 자료의 생략

[ | ] 자료의 선택

{  } 자료의 반복

*  * 자료의 설명

 

요구사항 분석 CASE와 HIPO

SADT - 구조적 요구 분석을 하기 위한 블록 다이어그램

SREM(= RSL/REVS) - 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 하기 위함

TAGS - 개발 주기 전과정에 이용하는 통합 자동화 도구

 

HIPO - 하향식 소프트웨어 개발을 위한 문서화 도구

  • 가시적 도표 : 전체적인 흐름
  • 총체적 도표 : 프로그램 구성하는 기능 전반적인 정보 제공
  • 세부적 도표 : 기본 요소들을 상세히 기술

UML(Undified Modeling Language)

UML - 시스템 개발자와 고객의 의사소통이 원활하게 이뤄지도록 표준화한 객체지향 모델링 언어

 

구성요소 

사물 - 구조, 행동, 그룹, 주해

관계 

  • 연관(Association)
  • 집합(Aggregation)
  • 포함(Composition)
  • 일반화(Generlization)
  • 의존(Dependency)
  • 실체화(Realization)

다이어그램

- 구조적 다이어그램

  • 클래스
  • 객체
  • 컴포넌트
  • 배치
  • 복합체 구조 
  • 패키지

- 행위 다이어그램

  • 유스케이스
  • 순차
  • 커뮤니케이션
  • 활동
  • 상호작용
  • 타이밍

주요 UML 다이어그램

유스케이스 다이어그램 구성요소

  • 시스템/ 시스템 범위
  • 액터
  • 유스케이스
  • 관계

클래스 다이어그램 구성요소

  • 클래스
  • 제약조건
  • 관계

순차 다이어그램 구성요소

  • 액터
  • 객체
  • 생명선
  • 실행상자
  • 메시지

사용자 인터페이스

CLI - 텍스트 형태

GUI - 아이콘이나 메뉴를 마우스로 선택

NUI - 말이나 행동으로 기기 조작

VUI - 음성으로 기기 조작

OUI - 모든 사물들과 상호작용

 

사용자 인터페이스 기본 원칙

  • 직관성
  • 유효성
  • 학습성
  • 유연성

UI 설계도구

와이어프레임 - 초기에 제작, 뼈대 설계

목업 - 와이어프레임보다 좀 더 실제화면과 유사하게 정적인 형태

스토리 보드 - 와이어 프레임 + 설명, 페이지 이동 흐름

프로토타입 - 실제 구현된것처럼 동적인 형태

유스케이스 - 요구사항 내용 

 

품질 요구사항

ISO/IEC 9126 - 품질 특성과 평가

  • 기능성
  • 신뢰성
  • 사용성
  • 효율성
  • 유지 보수성
  • 이식성

ISO/IEC 25010

  • + 보안성
  • 호환성

소프트웨어 아키텍처

소프트웨어 아키텍처 설계

  상위 설계 하위 설계
별칭 아키텍처 설계, 예비 설계 모듈 설계, 상세 설계
설계 대상 전체적인 구조 내부구조 및 행위
세부 목록 구조, DB, 인터페이스 컴포넌트, 자료 구조, 알고리즘

 

소프트웨어 아키텍처 기본원리

모듈화 - 재사용성

추상화 

  • 과정 추상화
  • 데이터 추상화
  • 제어 추상화

단계적 분해 - Niklaus Wirth 제안, 하향식 설계 전략

정보 은닉 - 필요한 정보만 인터페이스를 통해 송수신, 수정&시험&유지보수 용이

 

아키텍처 패턴

레이어 패턴 - 서로 마주보는 두 개의 계층 사이에서 상호작용

클라이언트-서버 패턴 - 하나의 서버 다수의 클라이언트 컴포넌트

파이프 필터 패턴 - 데이터 스트림 활용, 재사용성, 확장 용이

MVC 패턴

 

객체지향

클래스 - 데이터를 추상화

캡슐화 - 세부 내용 은폐, 재사용 용이

상속

다형성

 

객체지향 분석 및 설계

객체지향 분석 방법론

  • Rumbaugh(럼바우) 방법 : 객체모델, 동적모델, 기능모델
  • Booch(부치) 방법 : 미시적, 거시적
  • jacobson 방법 : use case 강조
  • Coad와 Yourdon 방법 : E-R 다이어그램
  • Wirfs-Brocks 방법 : 고객 명세서 평가해서 설계 작업까지 연속적

객체지향 설계 원칙

  • 단일 책임 원칙(SRP, Single Responsibility Principle) : 응집도 높고, 결합도 낮게
  • 개방-폐쇄 원칙(OCP, Open-Closed principle) : 캡슐화
  • 리스코프 치환 원칙(LSP, Liskov Substitution Principle) : 자식 클래스는 부모 클래스가 가능한 행위는 모두 수행, 확장만 한다
  • 인터페이스 분리 원칙(ISP, Interface Sergregation Principle) : 사용하지 않는 인터페이스와 의존 관계이거나 영향을 받지 말아야한다
  • 의존 역전 원칙(DIP, Dependency Inversion Principle) : 추상성 낮은 클래스보다 높은 클래스와 의존 관계맺는다

모듈

모듈 - 단독 컴파일, 재사용 가능, 독립성은 결합도는 약하게 응집력은 높게

 

결합도

        약함 -------------------------------------------------------------------------------------------------------------------------------> 강함

자료 결합도
(data coupling)
스탬프 결합도
(stamp coupling)
제어 결합도
(control coupling)
외부 결합도
(Externel coupling)
공통 결합도
(comon coupling)
내용 결합도
(content coupling)
자료 요소로만
구성
자료 구조가 전달 될 때 제어 신호를 이용
제어 요소를 전달
외부의 다른 모듈 참조 공통되는 데이터 영역 다른 모듈의 내부기능, 내부 자료 직접 참조

 

응집도

        강함 -------------------------------------------------------------------------------------------------------------------------------> 약함

기능적 응집도
(Functional
Cohension)
순차적 응집도
(Sequential
Cohension)
교환적 응집도
(Communication Cohension)
절차적 응집도
(Procedural
Cohension)
시간적 응집도
(Temporal
Cohension)
논리적 응집도
(Logical 
Cohension)
우연적 응집도
(Coincidental 
Cohension)
모든 기능 요소가 단일 문제 연관 하나의 활동으로부터 나온 데이터를 그 다음 활동의 데이터로 쓰일때 동일 입출력 사용 다수의 관련 기능을 가질때 순차적으로 수행 특정 시간의 몇 개의 기능을 하나의 모듈로 작성 유사한 성격, 특정 형태 처리 요소를 하나의 모듈로 형성 서로 관련없는 요소로만 구성

 

공통 모듈

  • 정확성
  • 명확성
  • 완전성
  • 일관성
  • 추적성

재사용

  • 함수와 객체
  • 컴포넌트
  • 애플리케이션

효과적인 모듈 설계 방안

  • 결합도는 낮고 응집도 는 높게
  • 복잡도와 중복성을 줄이고 일관성 유지
  • 유지보수 용이

코드

종류

  • 순차코드 ex)1,2,3,4...
  • 블록코드 ex)1001~1100 : 총무부
  • 10진 코드 ex)1000 : 공학, 1100 : 소프트웨어 공학
  • 그룹 분류 코드 ex)1-01-001 : 본사 , 2-01-001 : 인사계
  • 연상 코드 ex)tv-40 : 40인치 TV
  • 표의 숫자 코드 ex)120-750-1500 : 두께x폭x길이 강판
  • 합성 코드 ex) KE-1700 : 대한항공 1700

디자인 패턴

생성 패턴

  • 추상 팩토리 -  구체적 클래스에 의존하지 않고 서로 연관, 의존하는 객체를 추상적으로 표현
  • 빌더 - 건축하듯 조합하여 객체 생성, 동일 객체 생성에서도 다른 결과를 만들 수도 있다
  • 팩토리 메서드 - 상위클래스에서 인터페이스만 정의, 실제 생성은 서브 클래스가 담당
  • 프로토타입 - 원본 객체 복제
  • 싱글톤 - 클래스 내에서 인스턴스가 하나뿐임을 보장

구조 패턴

  • 어댑터 - 호환성없는 클래스들의 인터페이스를 다른 클래스가 이용하게 해주는 패턴
  • 브리지 - 구현부 추상층 분리, 서로 독립 확장할 수 있도록 구성
  • 컴포지트 - 복합 객체, 단일 객체 구분 없이 사용할 때
  • 데코레이터 - 임의의 객체에 부가적 기능 추가
  • 퍼싸드 - Wrapper 객체
  • 플라이웨이트 - 메모리 절약
  • 프록시 - 접근이 어려운 객체의 인터페이스 역할

행위 패턴

  • 책임연쇄 
  • 커맨드
  • 인터프리터
  • 반복자
  • 중재자
  • 메멘토
  • 옵서버
  • 상태
  • 전략
  • 탬플릿 메서드
  • 방문자

인터페이스 요구사항 검증

요구사항 검토계획 수립 -> 검토 및 오류  수정 -> 베이스 라인 설정

 

요구사항 검증 방법

  • 동료검토 : 동료들이 결함발견
  • 워크스루 : 미리 배포 후 검토
  • 인스펙션 : 검토 전문가들이 결함 발견
  • 프로토타이핑 : 견본품
  • 테스트 설계 : 테스트 케이스
  • CASE 도구 활용 : 일관성 분석

인터페이스 요구사항 검증의 주요 항목

  • 완전성
  • 일관성 
  • 명확성
  • 기능성
  • 검증 가능성
  • 추적 가능성
  • 변경 용이성

인터페이스 방법 명세화

시스템 연계 기술

  • DB Link :  DB에서 제공하는 DB Link 객체 이용
  • API/Open API 
  • 연계 솔루션 : EAI 서버와 송수신 시스템에 설치되는 클라이언트 이용
  • Socket : 소켓을 생성 포트 할당
  • Web Service : WSDL, UDDI, SOAP

인터페이스 통신 유형

  • 단방향
  • 동기
  • 비동기

미들웨어 솔루션

종류 - DB, RPC, MOM, TP-Monitor, ORB, WAS

 

MOM - 비동기형 메시지, 온라인 업무보다 이기종 분산 데이터 시스템

TP-Monitor - 트랜잭션 처리 모니터

ORB - 객체 지향, 코바(CORBA) 표준 스텍 구현

 

 

 

 

728x90
반응형