본문 바로가기

개인 스터디/정리

[정보처리기사 실기] 1. 요구사항 확인

 

1. 소프트웨어 개발 방법론

  • 소프트웨어 생명주기(SDLC) 모델 : 시스템 개발 생애 작업 프로세스 모델화
  • 모델 프로세스
    1. 요구사항 분석 : 개발할 소프트웨어의 기능, 제약 조건, 목표, 사용자를 명확하게 정의-> 기능/비기능 요구사항
    2. 설계 : 정의한 기능의 수행 바법을 논리적으로 결정 : 시스템 구조/프로그램/사용자 인터페이스 설계
    3. 구현 : 문제 해결 방법을 특정 프로그래밍 언어를 사용해 작성 -> 인터페이스/자료 구조 개발, 오류 처리
    4. 테스트 : 시스템이 요구를 만적하는지 평가 -> 단위/통합/시스템/인수 테스트
    5. 유지 보수 : 시스템이 인수되고 설치된 후 일어나는 모든행동 -> 예방/완전/교정/적응 유지보수   
  • SDLC 종류
    • 폭포수 모델(Waterfall Model) : 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델
    • 프로토타이핑 모델(Prototyping Model) : 고객이 요구한 주요 기능을 프로토타입으로 구현 후 피드백 반영
    • 나선형 모델(Spiral Model) : 위험을 최소화 하기 위해 점진적으로 개발
    • 반복적 모델(Iteration Model) : 구축 대상을 나누어 병렬적으로개발 후 통합 하거나, 반복적으로 개발
  • 소프트웨어 개발 방법론 : 소프트웨어 개발 전 과정에 적용할 수 있는 구체적인 방법이나 도구
  • 소프트웨어 개발 방법론 종류
    • 구조적 방법론 : 분할과 정복 접근 방식의 하향식 방법론. 나씨-슈나이더만 차트 사용
    • 정보공학 방법론 : 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
    • 객체 지향 방법론 : '객체'라는 기본 단위로 시스템을 분석 및 설계
    • 컴포넌트 기반 방법론 : 컴포넌트를 조립해 하나의 새로운 프로그램을 작성
    • 애자일 방법론 : 사람이 중심이 되어 변화에 유연하고 신속하게 적응하는 방법론
    • 제품 계열 방법론 : 임베디드 소프트웨어를 작성하는 데 유용한 방법론 
  • 나씨-슈나이더만 차트 : 논리의 기술에 중점을 둔 도형식 표현 방법
  • 애자일(Agile) 방법론 유형
    • XP : 의사소통 개선과 즉각적 피드백
      • 5가지 가치 :용기, 단순성, 의사소통, 피드백, 존중
      • 12가지 기본원리 : 짝 프로그래밍(Pair Programming), 공동코드 소유(Collective Ownership), 지속적인 통합(CI), 계획 세우기(Planning Process), 작은 릴리즈(Small Release), 메타포어(Metaphor), 간단한 디자인(Simple Design), 테스트 기반 개발(TDD), 리팩토링(Refactoring), 40시간 작업(40-Hour Work), 고객 상주(On site Customer), 코드 표준(Coding Standard)
    • SCRUM : 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 방법론
      • 주요 용어 : 백로그, 스프린트, 스크럼 미팅, 스트럼 마스터, 스프린트 회고, 번 다운 차트, 속도, 린
  • 객체 지향 분석 방법론
    • 구성요소
      • Class : 변수와 매서드를 정의하는 틀
      • Object : 물리적, 추상적으로 자신과 다른 것을 식별할 수 있는 대상
      • Method : 클래스로부터 생성된 객체를 사용하는 방법
      • Message : 객체에게 행위를 하도록 지시하는 방법
      • Instance : 클래스를 통해 만든 실제 메모리상에 할당된 객체
      • Property : 객체들이 가지고 있는 데이터 값들을 단위별로 정의  
    • 객체 지향 기법
      • 캡슐화(Encapsulation) : 필요한 인터페이스만밖으로 드러내는 기법. 결합도가 낮아지고 재사용이 용이
      • 상속성(Inheritance) : 상위 클래스의 속성과 메서드를 재정의 없이 물려받아 사용하는 기법
      • 다형성(Polymorphism) : 상솟받은 하위 객체들이 다른 형태로 이용될 수 있는 성질(오버로딩, 오버라이딩)
      • 추상화(Abstaction) : 공통 설질을 추출하여 추상 클래스를 설정하는기법   
      • 정보 은닉(Information Hiding) : 공개 인터페이스를 통해서만 접근이 가능하게 하는 코드 보안 기술
      • 관계성(Relationshop) : 데이터를 참조하는 관계를 나타내는 기법(연관화, 집단화, 분류화, 일반화, 특수화)
    • 오버로딩 : 매개변수의 유형과 개수를 다르게
    • 오버라이딩 : 메서드를 재정의
    • 객체 지향 설계 원칙(SOLID)
      • 단일 책임의 원칙(SRP) : 하나의 클래스는 하나의 목적을 위해서 생성
      • 개발 폐쇄 원칙(OCP) : 소프트웨어 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 함
      • 리스코프 치환의 원칙(LSP) : 하위 클래스는 자신의 상위 클래스로 교체할 수 있어야 함
      • 인터페이스 분리의 원칙(ISP) : 자신이 사용하지 않는 인터페이스는 구현하지 말아야 함
      • 의존성 역전의 원칙(DIP) : 추상을 매개로 메시지를주고 받음으로써 관계를 최대한 느슨하게 만드는 원칙   
    • 객체 지향 분석(OOA) : 사용자의 요구사항을 분석해 관련된 구성요소를 정의하여 모델링하는 기법
    • 객체 지향 분석 방법론 종류 
      • OOSE(야콥슨) : 유스케이에 의한 접근 방법
      • OMT(럼바우) : 그래픽 표기법을 이용해 구성요소 모델링. 객체 -> 동적 -> 기능 모델링 진행
      • OOD(부치) : 설계 문서화를 강조하여 다이어그램 중심으로 개발
      • 코드-요든 : E-R 다이어그램을 사용하여 객체의 행위 모델링
      • 워프-브록 : 고객 명세서를 평가해 설계 작업까지 연속적으로 수행 

 

2. 프로젝트 관리

  • 프로젝트 관리 :주어진 기간 내에 최ㅗ의 비용으로 사용자를 만족시키는 시스템 개발 활동
  • 프로젝트 관리 대상
    • 계획 관리 : 프로젝트 계획, 비용산정, 일정 계획, 조직 계획
    • 품질 관리 : 품질 통제 및 품질 보증
    • 범위 관리 : 모든 요구사항이 포함되었는지 보장하고, 필요한 작업만 수행되도록 관리
  • 프로젝트 관리 3대 요소 : 사람, 문제, 프로세스
  • 비용산정 모형 : 실행 가능한 계획 수립을 위해 비용을 산정하는 방식
  • 비용산정 모형 분류
    • 하향식 산정 방법 : 경험이 많은 전문가에게 의뢰
      • 전문가 감정 기법
      • 델파이 기법 : 전문가 집단의 의견을 반복적으로 수집하고 조율
    • 상향식 산정 기법 : 세부적인 요구사항과 기능에 따라 비용 계산
      • LOC  모형 : 코드 라인 수의 낙관치, 비관치, 예측치를 구하고 비용 산정
      • Man Month(M/M) 모형 : 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 비용 산정
      • COCOMO 모형 : 보헴이 제안한 모형으로 프로그램 규모에 따라 비용 산정(조직형 -> 반 분리형 -> 임베디드형)
      • Putnam 모형 : 시간에 따른 함수 Rayleigh-Norden 곡선의 노력 분포도를 기초로 예측
      • 기능점수(FP) 모형 : 기능 증가 인자멸로 가중치를 부여 후 합산하여 비용 산정
  • 일정 관리 모델 : 프로젝트가 일정 기간 내에 완료될 수 있도록 관리하는 모델
  • 일정 관리 모델 종류
    • 주 공정법(CPM) : 노드와 노드 간 열결을 통해 공정을 계산, 가장 긴 시간이 임계 경로가 된다.
    • PERT : 비관치, 중간치, 낙관치의 3점 추정 방식을 통해 일정을 관리하는 기법
    • 중요 연쇄 프로젝트 관리(CCPM) : 주 공정 연쇄법으로 자원 제약사항을 고려하여 일정 작성
    • 간트 차트 : 업무별 일정을 그래픽으로 표시한 바 형태의 차트
  • 위험 관리 : 프로젝트에 내제된 위험 요소를 인식하고 그 영향을 분석하여 관리
  • 위험 종류
    • 알려진 위험 : 프로젝트 계획서, 기술적 환경, 정보 등에 의해 발견될 수 있는 위험
    • 예측 가능한 위험 : 과거 경험으로부터 예측할 수 있는 위험
    • 예측 불가능한 위험 : 사전 예측이 어려운 위험
  • 위험 대응 전략
    • 회피(Avoidance) : 발생 가능성을 원천적으로 제거
    • 전가(Transference) : 위험에 대한 책임을 제 3자에게 넘기는 전략
    • 완화(Mitigation) : 위험 발생 가능성을 감소시키거나 영향력을 감소시키는 전략
    • 수용(Acceptance) : 위험을 그대로 받아들이는 전략