CS 공부

정보처리기사 실기 공부 ①

Algomalgo 2024. 4. 17. 04:43
728x90
  • 소프트웨어 공학의 3R
    • 정의 : 완성된 소프트웨어를 기반으로 역공학(Reverse Engineering), 재공학(Re-engineering), 재사용(Re-use)을 통해 소프트웨어의 생산성을 극대화하는 기법
    • 역공학
      • 차세대 : 재개발 + 재사용 (뭔가 새롭게 만들기)
      • 고도화 : 재공학(기존에 뭔가 덧붙이기)
    • 재공학
    • 재사용
      • 방법
        • 합성 중심 : 모듈을 끼워 맞춰서 소프트웨어를 완성시키는 방법
        • 생성 중심 : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
  • 소프트웨어 개발 단계
    • 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
      • 계획 : 범위, 비용, 일정 등을 정함

  • 소프트웨어 개발 방법론 종류
    1. 구조적 방법론
      • 절차지향 소프트웨어(ex: C언어) 개발 방법론
      • 제한된 구조에서 코드 생성 및 순차적 실행(하향식)
    2. 정보공학 방법론
      • 기업에서 사용한다.
    3. 객체지향 개발 방법론
      • Java, Python 등에서 사용하며, 분석, 설계, 구현의 전과정을 객체 중심으로 개발하는 상향식 개발이다.
      • 객체, 클래스 간의 관계를 식별해 설계 모델로 변환하는 방법론
      • 현실 세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)로 표현
      • 특징 : 캡슐화, 정보은닉, 상속, 다형성(오버로딩[매서드이름 동일], 오버라이딩[함수 재정의]), 추상
    4. CBD(Component Based Development) 분석 방법론
      • 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 어플리케이션 개발
      • 새로운 기능 추가가 쉬운 확장성
      • 생산성 및 품질 향상
    5. 애자일 방법론
      • 기존 방법론들이 절차를 중시한 나머지 변화에 빠른 대응을 할 수 없는 단점 개선을 위해 등장
      • XP, SCRUM, FDD, Crystal
  • 소프트웨어 개발 모델
    1. 폭포수 모델(WaterFall Model)
      • 계획, 분석, 설계, 구현, 테스트, 운영 등 전 과정을 순차적으로 접근하는 개발모델(선형 순차 모델)
      • 문서화에 중시한다.
      • 각 단계 검증 후에 다음 단계를 순차적으로 진행되므로 나중의 요구사항의 변경이 어렵다.
      • 가장 오래된 모형으로 적용 경험과 성공사례가 많다.
    2. 프로토타이핑 모델(Prototyping Model)
      • 고객이 요구한 주요 기능을 프로토타입으로 구현해 완성해나가는 모델, 사전에 만들어 요구사항을 유도 및 수집한다. ("시제품")
      • 사용자 평가 및 오류를 초기에 발견할 수 있다.
    3. 나선형 모델(Spiral Model)
      • 폭포수 모델과 프로토타이핑 모델의 장점을 수용하고, "위험 분석"을 추가한 점증적 개발 모델
      • 위험을 관리 및 최소화 목적
      • 대규모 프로젝트 및 위험 부담이 큰 시스템 개발에 적합
      • 순서 : 계획 수립 > 위험 분석 > 공학적 개발 > 평가
    4. RAD(Rapid Application Development) 모델
      • 매우 짧은 개발 주기를 강조하며, 강력한 소프트웨어 개발 도구를 이용하는 순차적 소프트웨어 개발이다.
      • CASE(Computer Adied Software Engineering) 도구를 이용해 시스템으로 개발하며 60~90일 정도의 개발 기간을 갖는다.
      • 기술적으로 위험이 적고 빠른 개발이 요구될 때 사용된다.
    5. V 모형
      • 폭포수 모델에 시스템 검증과 테스트 작업을 강조
      • 높은 신뢰성이 요구되는 분야에 적합
      • 요구분석 > 아키텍처 설계 > 모듈 설계 > 구현 > 단위 테스트(정적/동적) > 통합테스트(상향식[드라이버], 하향식[스텁], 빅뱅) > 시스템 테스트(기능/비기능) > 인수 테스트(알파[사용자+개발자]/베타[사용자])
    6. 4세대 기법
      • CASE 등의 자동화도구를 이용해 요구사항 명세로부터 원시코드를 자동으로 생성
  • 애자일 방법론
    • 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론
    • 공적과 도구보다 개인과 상호작용을
    • 포괄적인 문서보다 작동하는 소프트웨어를
    • 계약 협상보다 고객과의 협력을
    • 계획을 따르기보다 변화에 대응하기를
    • 애자일 방법론 종류
      1. XP(eXtream Programming)
        • 문서보다는 코드를 중시하고, 5가지 핵심가치(용기, 존중, 의사소통, 피드백, 단순성)와 12개 실천항목이 존재(의사선생님, 약 담아서 주실 때 피존용기에 담아서 주세요)
        • 개발을 세분화해 1~3주의 반복으로 개발을 진행
      2. SCRUM
        • 소프트웨어에 포함될 기능 및 개선점에 대한 우선 순위를 부여
        • 개발 주기는 30일 정도 스프린트 단위로 조절하고 개발 주기마다 실제 동작 가능한 결과를 제공
        • 개발 주기마다 적용할 기능 및 개선에 대한 목록 작성
        • 날마다 15분의 회의
        • 항상 팀 단위로 생각
      3. 크리스털 패밀리(Crystal) : 프로젝트의 규모와 영향의 크기에 따라서 여러 종류 방법론을 제공
      4. Feature-Driven Development(FDD) : feature마다 2주 정도의 반복 개발을 실시, 기능 주도 개발
      5. Adaptive Software Development(ASD) : 합동 애플리케이션 개발을 사용하는 방법

계획 > 분석 > 설계 > 구현 > Test > 유지보수

  • 프로젝트 관리 : 기간, 예산, 자원 내에서 제품을 개발하도록 행하는 기술적, 관리적 활동
  • 프로젝트 핵심 관리대상(3P) : People, Problem, Process
  • PMBOK(Project Management Body of Knowledge) : PMI에서 제작한 프로젝트 관리 프로세스 및 지식 체계
    • 단계 : 프로젝트 착수 > 계획 > 실행 > 통제 > 종료
    • 1단계 [프로젝트 착수] : 광범위한 프로젝트의 범위를 정하는 단계
    • 2단계 [프로젝트 계획] : 프로젝트 세부 범위 정의하고, 관리 계획을 만드는 단계(비용, 품질, 기간, 자원)
    • 3단계 [프로젝트 실행] : 프로젝트가 개발되고 완료되는 단계
    • 4단계 [프로젝트 통제] : 계획 대비 목표의 진척상황을 모니터링하고 성과 측정
    • 5단계 [프로젝트 종료] : 프로젝트가 요구사항을 만족하는지 검증하고, 고객으로부터 확인받는 단계
  • 개발 비용 산정
    • 하향식 : 전문가 기법, 델파이 기법
      • 전문가 기법 : 조직 내 경험 있는 전문가에게 비용 산정 의뢰
      • 델파이 기법 : 여러 전문가의 의견을 종합해 판
    • 상향식 : LOC(원시코드 라인수) 기법, 단계별 인원수(M/M) 기법
      • LOC : (낙관치 + (4*중간치) + 비관치) / 6
    • 수학적 : COCOMO 기법, PUTNAM 기법, FP(기능점수) 기법
      • COCOMO : 조직형(5만 라인 이하), 반분리형(30만 라인 이하), 내장형(30만 라인 이상)
      • PUTNAM : Rayleigh-Norden 곡선의 노력 분포도를 기초로 함. SLIM 자동화 추정도구를 쓴다.
      • FP : 소프트웨어가 가지는 기능의 개수를 기준으로 규모를 측정, ESTIMACS 자동화 추정도구를 쓴다.
  • 개발 일정 산정
    • 작업 순서 : 작업 분해(WBS) > CPM 네트워크 작성 > 최소 소요 기간 구하기 > 소요 M/M, 기간 산정 후 CPM 수정 > 간트차트로 표현
    • WBS(Work Breakdown Structure) : 업무 세분화, 전체를 큰 단위로 분할 후 각각을 더 작은 단위로 분해하여 계층적으로 표현, 담당인원을 배치하여 구성도 작성
    • Network Chart(PERT/CPM)
      • PERT : 미 해군의 미사일 개발 프로젝트에서 파생, 예측치 = (낙관치 + (4*기대치) + 비관치) / 6
      • CPM : 화학공장 유지 및 관리를 위해 개발됨, 최소의 비용 추가 투입을 고려해 시간 단축을 목표로 함
      • 작업의 선/후행 관계를 고려하여 전체 작업의 완료시간을 결정하고(PERT), 추가비용 투입을 고려해 전체작업 완료시간을 단축하는 (CPM) 네트워크 분석 기법
      • 임계 경로 : 프로젝트를 끝내기 위해 필요한 최소 소요기간
      • 빠른 착수일 : 바로 시작했을 때 걸리는 기간
      • 늦은 착수일 : 바로 시작했을 때 걸리는 기간 + 여유 기간
    • 간트 차트 : 일정 계획의 최종 산출물, 프로젝트 일정관리를 위한 바 형태의 차트

 

728x90