본문 바로가기

정보처리기사_실기

정보처리기사 1~19 (소프트웨어 생명주기 ~ 다이어그램)

  • 소프트웨어 생명주기 (Software Life Cycle)
    • 소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것
  • 소프트웨어 공학 (Software Engineering)
    • 소프트웨어 위기를 극복하기 위한 방안으로 연구된 학문
    • 소프트웨어 품질과 생산성 향상이 목적
    • 기본 원칙
      • 현대적인 기술을 계속적으로 적용
      • 지속적으로 검증
      • 명확한 기록을 유지

 

  • 폭포수형 모형(Waterfall Model)
    • 각 단계를 확실히 매듭짓고 다음 단계를 징행하는 개발 방법론
    • 고정적 생명 주기 모형 (전통적인 소프트웨어 생명주기 모형)
  • 프로토타입 모형(Prototype Model)
    • 실제 개발될 소프트웨어의 프로토타입을 만들어 최종 결과물을 예측
  • 나선형 모형(Sprial Model)
    • 점진적으로 최종 소프트웨어를 개발하는 모형
    • 위험분석 기능을 추가
    • 계획 → 위험분석 → 개발 → 평가
  • 애자일 모형 (Agile Model)
    • 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발
    • 폭포수형 모형과 대조적
    • 대표적인 모형 : 스크럼, XP, 칸반, Lean, 기능 중심 개발
    • 4가지 핵심가치 : 개인과의 상호작용, 실행되는 SW, 고객과 협업, 변화에 반응
  • 스크럼
    • 팀이 중심이 되어 개발의 효율성을 높이는 기법
      • 제품 책임자 (PO) : 요구사항이 담긴 백로그를 작성하는 주체
        • 백로그(BackLog) : 제품 개발에 필요한 요구사항을 모두 모아 우선순위를 부여해 놓은 목록
      • 스크럼마스터 (SM): 팀이 스크럼을 잘 수행하고록 하는 가이드 역할
      • 개발팀 (DT)
    • 계획 → 스프린트 → 회의/검토 → 회고
  • XP (eXtreme Programming)
    • 고객의 요구사항 변화에 유연하게 대응하기 위해 고객의 참여를 극대화하여 생산성을 향상시키는 방법
    • 5가지 핵심 가치
      • 의사소통 (Communication)
      • 단순성 (Simplicity0
      • 용기 (Courage)
      • 존중 (Respect)
      • 피드백 (Feedback)
    • 릴리즈 계획 수립 → 이터레이션 → 승인 검사 → 소규모 릴리즈
    • 주요 실천 방법
      • Pair Programming : 다른 사람과 함께 프로그래밍 → 개발에 대한 공동책임
      • Collective Ownership : 개발 코드에 대한 권한과 책임을 공동 소유
      • Test-Driven Development : 테스트 케이스를 먼저 작성하고 개발
      • Whole Team 
      • Continuos Integration : 하나의 작업이 마무리될 때 마다 지속적으로 통합
      • Refactoring : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발하기 위함 → 기능의 변경없이 시스템 재구성
      • Small Releases : 릴리즈 기간을 짧게 반복
  • 현행 시스템 파악
    • 1단계
      • 시스템 구성 파악 : 기간업무와 지원업무로 구분하여 기술
      • 시스템 기능 파악 : 주요기능,하부기능, 세부기능으로 구분하여 계층형으로 표시
      • 시스템 인터페이스 파악 : 데이터의 종류, 프로토콜 등을 명시
    • 2단계
      • 아키텍처 구성 파악
      • 소프트웨어 구성 파악 : 라이선스 적용 방식, 라이선스 수 등을 명시
    • 3단계
      • 하드웨어 구성 파악 : 서버의 이중화 적용 여부 명시
        • 이중화 (Replication) : 운용 서버에 장애가 발생했을 때 대기서버에서 서비스를 계속 유지
      • 네트워크 구성 파악
  • 개발 기술 환경 파악
    • OS (운영체제) : 시스템의 자원을 효율적으로 관리하고 사용할 수 있는 환경을 제공
      • 식별 고려사항 : 가용성, 성능, 기술지원, 주변기기, 구축비용
    • DBMS : 사용자와 DB 사이에서 정보를 생성해 주고, 관리해 주는 소프트웨어
      • 종속성과 중복성 문제 해결
      • 식별 고려사항 : 가용성, 성능, 기술지원, 상호 호환성, 구축비용
    • 웹 애플리케이션 서버 (WAS) : 동적인 컨텐츠를 처리하기 위한 미들웨어
      • 식별 고려사항 : 가용성, 성능, 기술지원, 구축비용
    • 오픈 소스 
      • 소스코드를 공개한 소프트웨어
      • 식별 고려사항 : 라이선스 종류, 사용자 수, 기술의 지속 가능성
  • 요구사항
    • 문제 해결을 위해 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약조건
    • 기능 요구사항
      • 기능이나 수행과 관련된 요구사항
      • 데이터 입.출력, 연산, 반드시 수행해야하는 기능 등..
    • 비기능 요구사항
      • 품질과 제약사항에 관련된 요구사항
      • 성능, 인터페이스, 품질 등..
    • 사용자 요구사항
      • 사용자 관점에서 본 시스템이 제공해야 할 요구사항
    • 시스템 요구사항
      • 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항
  • 요구사항 개발 프로세스
    • 도출 분석 명세 검증
    • 요구사항 도출
      • 요구사항 수집 방법을 식별하고 이해하는 과정
      • 이해관계자 식별
      • 브레인스토밍, 프로토타이핑, 유스케이스 등..
    • 요구사항 분석
      • 요구사항 중 명확하지않거나 모호하여 이해되지 않는 부분을 발견하고 걸러내기 위한 과정
      • 자료 흐름도 (DFD), 자료 사전 (DD) 등..
    • 요구사항 명세
      • 분석된 요구사항을 바탕으로 모델을 작성하고 문서화
      • 기능 요구사항은 빠짐없이 기술, 비기능 요구사항은 필요한 것만 기술
      • 소단위 명세서 (Mini Spec)
      • 명세 기법
        • 정형 명세 기법
          • 수학적 원리 기반, 일관성 높음, 이해하기 어려움
          • Z, VDM, Petri-net 등 ..
        • 비정형 명세 기법
          • 상태/기능/객체 중심, 자연어 기반, 일관성 떨어짐, 이해하기 쉬움
          • ER모델링, FSM, SADT 등..
    • 요구사항 검증
      • 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동
      • 형상관리 수행
    • 요구 공학
      • 요구사항을 정의, 분석, 관리하는 프로세스를 연구하는 학문
  • 요구사항 분석
    • 사용자의 요구사항을 이해하고 문서화
    • 구조적 분석 기법
      • 자료 흐름과 처리 중심
      • 하향식 방법
      • 중복 배제 가능
    • 자료 흐름도 (DFD)
      • 자료의 흐름 및 변환과정과 기능을 도형중심으로 기술
      • 자료 흐름 그래프 또는 버블차트
      • 기호
        • 프로세스 : 시스템의 처리 과정.      ⃝
        • 자료 흐름 : →
        • 자료 저장소 : =
        • 단말 : 시스템과 교신하는 외부개체.  ▭
    • 자료 사전 (DD)
      • 자료 흐름도의 자료를 자세히 정의하고 기록
      • 메타 데이터
      • 기호
        • 정의 : =
        • 연결 : +
        • 생략 : ()
        • 선택 : []
        • 반복 : {}
        • 주석 : **
    • 요구사항 분석용 CASE (자동화 도구)
      • 요구사항을 자동으로 분석하고 명세서를 기술
      • 종류
        • SADT : SoftTech사에서 개발, 블록 다이어그램 채택
        • SREM : TRW사가 새발, 실시간 처리 시스템에서 사용
        • PSL/PSA : 미시간 대학에서 개발
        • TAGS : 자동 접근 방법
    • HIPO (Hierarchy Input Process Output)
      • 시스템의 처리 과정인 입력, 처리, 출력의 기능을 표현
      • 하향식 소프트웨어 개발을 위한 문서화 도구
      • 종류
        • 가시적 도표
        • 총체적 도표
        • 세부적 도표
  • UML (Unified Modeling Language)
    • 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
    • OMG에서 표준으로 지정
    • 구성 요소
      • 사물
        • 다이어그램 안에서 관계가 형성될 수 있는 대상
        • 종류
          • 구조 사물 : 개념적, 물리적 요소 표현
          • 행동 사물 : 행위를 표현
          • 그룹 사물 : 요소들을 그룹으로 묶어서 표현
          • 주해 사물 : 부가적인 설명이나 제약조건
      • 관계
        • 사물사이의 연관성을 표현
        • 연관 관계 (Association)
          • 사물이 서로 관련되어 있는 관계
          • 화살표로 표현
          • 다중도 표기 
        • 집합 관계 (Aggregation)
          • 한 사물이 다른 사물에 포함되어 있는 관계
          • 서로 독립적
          • 포함하는 쪽으로 속이 빈 마름모
        • 포함 관계 (Composition)
          • 포함하는 사물의 변화가 포함되는 사물에게 영향
          • 독립될 수 없음
          • 포함하는 쪽으로 속이 채워진 마름모
        • 일반화 관계 (Generalization)
          • 다른 사물에 비해 더 일반적이거나 구체적인 관계
          • 일반적인 개념을 상위, 구체적인 개념을 하위
          • 상위 방향으로 속이 빈 화살표
        • 의존 관계 (Dependency)
          • 영향을 주는 짧은 시간 동안만 연관을 유지
          • 영향을 받는 사물 쪽으로 점선 화살표
        • 실체화 관계 (Realization)
          • 할 수 있거나 해야하는 기능, 서로를 그룹화
          • 기능쪽으로 속이 빈 점선 화살표 
  • 다이어그램
    • 사물간의 관계를 도형으로 표현
    • 구조적 다이어그램 (정적 모델링에 사용)
      • 클래스 다이어그램 : 클래스 사이의 관계를 표현
      • 객체 다이어그램 : 클래스 속에 속한 객체, 즉 인스턴스 들의 관계를 표현
      • 컴포넌트 다이어그램 : 컴포넌트 간의 관계나 인터페이스를 표현, 구현단계에서 사용
      • 배치 다이어그램 : 물리적 요소들의 위치를 표현, 구현단계에서 사용
      • 복합체 구조 다이어그램
      • 패키지 다이어그램 : 요소들을 그룹화 한 패키지들의 관계를 표현
    • 행위 다이어그램 (동적 모델링에 사용)
      • 유스케이스 다이어그램 : 사용자의 요구를 분석, 액터와 유스케이스로 구성
      • 시퀀스 다이어그램 : 객체들이 주고받는 메세지를 시간의 흐름에 따라 표현
      • 커뮤니케이션 다이어그램 : 주고받는 메세지와 객체들간의 연관관계도 표현
      • 상태 다이어그램 : 클래스의 상태 변화 혹은 어떻게 변하는지 표현
      • 활동 다이어그램 : 처리의 흐름을 순서에 따라 표현
      • 상호작용 개요 다이어그램
      • 타이밍 다이어그램
    • 스테레오 타입
      • 기본기능 외 추가적인 기능 표현
      • 길러멧 (<< >>) 으로 기술
      • 형태 : include(포함), extends(확장), interface, exception, constructor
    • 기능 모델링
      • 시스템이 갖춰야 할 기능을 표현
      • 유스케이스 다이어그램
        • 수행할 수 있는 기능을 사용자 관점에서 표현
        • 외부요소와 시스템 간의 상호작용 확인 가능
        • 구성 요소
          • 시스템
          • 액터 : 시스템과 상호작용하는 외부 시스템
          • 유스케이스 : 사용자의 관점에서 제공하는 서비스나 기능 표현
          • 관계 : 포함, 확장, 일반화 관계
      • 활동 (Activity Diagram)
        • 사용자의 관점에서 기능을 처리흐름에 따라 순서대로 표현
        • 자료흐름도와 유사
        • 구성요소
          • 액션/액티비티 : 액션 = 분해할 수 없는 단일 작업, 액티비티 = 분해할 수 있는 작업
          • 시작 노드, 종료 노드
          • 조건 노드
          • 병합 노드
          • 포크 노드
          • 조인 노드
          • 스윔 레인 : 액티비티 수행을 담당하는 주체를 구분
    • 정적 모델링
      • 논리적인 구조 표현
      • 객체들을 클래스로 추상화하여 표현
      • 클래스 다이어그램
        • 클래스가 가지는 속성, 클래스 사이의 관계 표현
        • 구성요소
          • 클래스 : 객체들이 갖는 속성과 오퍼레이션을 표현
          • 제약조건
          • 관계
      • 연관 클래스
        • 두 클래스에 추가적으로 표현해야 할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스
    • 동적 모델링
      • 상태 변화 과정과, 과정에서 발생하는 상호작용을 표현
      • 시퀀스 다이어그램
        • 객체들이 메세지를 주고받으며 상호작용 하는 과정을 그림으로 표현
        • 시간의 흐름에 따라 표현
        • 구성 요소
          • 액터 : 외부 요소
          • 객체
          • 생명선 : 객체가 메모리에 존재하는 기간
          • 실행상자 : 객체가 메시지를 주고받으며 구동되고 있음을 표현
          • 메시지 : 객체가 상호작용을 위해 주고받는 메시지
          • 객체 소멸
          • 프레임
      • 커뮤니케이션 다이어그램
        • 메시지를 주고받으며 상호작용하는 과정 뿐 아니라 객체들 간의 연관을 표현
        • 관계가 제대로 표시되었는지 점검하는 용도로도 사용
        • 구성요소
          • 액터
          • 객체
          • 링크 : 객체들 간의 관계를 표현
          • 메시지
      • 상태 다이어그램
        • 이벤트에 의한 객체들의 상태변화를 표현
        • 객체가 갖는 속성 값의 변화 의미
        • 구성요소
          • 상태
          • 시작 상태, 종료 상태
          • 상태 전환
          • 이벤트 : 상태에 변화를 주는 현상
          • 프레임
      • 패키지 다이어그램
        • 요소들을 그룹화 한 패키지 간의 의존관계 표현
        • 주요 요소 간의 종속성 파악에 용이
        • 구성요소
          • 패키지
          • 객체
          • 의존관계