정보처리기사

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

nayeonee__ 2023. 3. 28. 09:24

https://www.njobler.net/product/lecture/show/prod/10810

 

1억뷰 N잡

[연장 미포함] 흥나게 합격달성! 정보처리기사 실기

www.njobler.net

본 강의를 듣고 내용을 정리하며 적은 게시글 입니다. 

 

 

 

 

  1. 소프트웨어 개발 방법론 개념
    1. 소프트웨어 개발에 필요한 과정들을 체계적으로 정리한 것
  2. 개발 방법론 종류
    1. 구조적 방법론
      1. 절차지향 소프트웨어 개발방법론
      2. 제한된 구조에서 코드 생성 및 순차적 실행
      3. 구조적 방법론 구성요소
        1. 데이터 흐름도 DFD
        2. 자료사전 DD
        3. 상태전이도 STD
        4. 소단위 명세서 Minispec
    2. 정보공학 방법론
      1. 기업에서 사용하는 데이터 중심 방법론
      2. 빠른 결과물 확인이 가능하며 단순 소프트웨어 개발이 아닌 기업의 경영전략에 초점을 둔다.
    3. 객체지향 개발 방법론
      1. 현실세계의 개체를 속성과 메서드(행동) 형태로 표현
      2. 객체 클래스 간의 관계를 식별하여 설계 모델로 변환하는 방법론 - UML
      3. 분석과 설계, 구현의 전 과정을 객체 중심으로 개발
      4. 전체 프로세스 방향성 유지와 상속에 의한 재사용성 향상
      5. 특징: 캡슐화, 정보은닉, 상속, 다형성, 추상화
    4. CBD(Component Based Development) 분석 방법론
      1. 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 애플리케이션 개발
      2. 새로운 기능 추가가 쉬운 확장성
      3. 생산성 및 품질이 향상
      4. 시스템 유지보수 비용 최소화
    5. 애자일 방법론
      1. 기존 방법론들이 절차를 중시한 나머지, 변화에 빠른 대응을 할 수 없다는 단점 개선을 위해 등장
    6. 개발 방법론 선택 기준
      1. 프로젝트 특정 및 규모
      2. 프로젝트 참여자의 수준
      3. 가용 자원의 정도 - 인력, 장비 시간 비용
      4. 등등
  3. 소프트 웨어 개발 모델
    1. 폭포수 모델 - waterfall model
      1. 계획 분석 설계 구현 테스트 운뎡 등 전과정을 순차적으로 접근하는 개발 모델
      2. 각 단계가 순차적을으로 진행되며 병행되거나 거슬러 반복 진행되지 않는다
      3. 요구사항의 변경이 어렵다
      4. 단계별 정의가 분명하고 단계별 산출물이 명확하다
    2. 프로토타이핑 모델
      1. 고객이 요구한 주요기능을 프로토타입으로 구현하여 완성해가는 모델
      2. 개발자가 구출할 소프트웨어의 모델을 사전에 만들어 요구사항을 효과적으로 유도하고 수집한다
      3. 장점 :
        1. 사용자의 요구사항을 충실히 반영한다.
        2. 변경이 용이하다.
        3. 오류를 초기에 발견할 수 있다.
        4. 등등
      4. 단점 :
        1. 최종적으로 시간과 비용이 훨씬 많이 들 수 있다.
        2. 사용자가 실제 제품과 혼동할 수 있다.
        3. 문서 작성이 소홀해질 수 있다.
        4. 등등
    3. 나선형 모델 - sprial model
      1. 폭포수 모델과 프로토타이핑의 모델의 장점을 수용하고 위험분석을 추가한 점증적 모델 개발
      2. 프로젝트 수행시 발생하는 위험을 관리하고 최소화하려는 것이 목적
      3. 장점 :
        1. 분석을 하기 때문에 위험성이 큰 프로젝트를 수행할 수 있다
      4. 단점 :
        1. 반복 단계가 길어질 수록 프로젝트 관리가 어렵다
    4. RAD - Rapid Application Development - 모델
      1. 매우 짧은 개발 주기를 강조하는 점진적 소프트웨어 개발방식
      2. 케이스 도구를 이용해 시스템을 개발
      3. 개발 기간이 60~90일 정도로 짧다.
      4. 기술적으로 위험이 적고 빠른 개발이 요구될때 사용이 적합
    5. V 모형
      1. 폭포수 모델에 시스템 검증과 테스트 작업을 강조
      단위 테스트(정적, 동적)→ 통합테스트(상향식, 하향식, 빅뱅테스트) → 시스템 테스트 → 인수 테스트(알파, 베타)
    6. 4세대 기법 - 4th Generation Techniques
      1. 요구사항 명세서로부터 원시코드를 자동으로 생성할 수 있게 해주는 모델
  4. 애자일 방법론
    1. 개념
      1. 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발방식
      2. 작동하는 소프트웨어의 작은 구성요소를 신속하게 제공
      3. 경량 프로세스라고도 함
      4. 등등
    2. 등장 배경
      1. 기존 소프트웨어 개발방법론의 문제점을 개선하기 위해 등장
      2. 등등
    3. 애자일 선언문
      1. 공정과 도구보다 개인과 상호작용을
      2. 포괄적인 문서보다 작동하는 소프트웨어를
      3. 계약 협상보다는 고객과의 협력을
      4. 변화에 대응하기를
      5. 등등
    4. 특징
      1. 고객과 개발자의 지속적인 소통을 통하여 변화하는 요구사항을 신속하게 수용
      2. 고객의 의견을 가장 우선
      3. 변화에 유연하게 대처
      4. 등등
    5. 종류
      1. XP(eXtream Programming)
        1. 특징
          1. 문서보다는 코드를 중시하고, 5가지 핵심가치와 12개 실천항목이 존재
          2. 등등
        2. 5가지 핵심 가치
          1. 용기
          2. 존중
          3. 의사소통
          4. 피드백
          5. 단순성
        3. 12가지 실천사항
          1. 짝 프로그래밍 pair programming
          2. 계획 세우기 Planning Game
          3. 테스트 기반 개발 Test Driven Development
          4. 고객 상주 Whole Team
          5. 지속적인 통합 continuous integration
          6. 코드 개선 design improvement
          7. 작은 릴리즈 small releases
          8. 코딩 표준 coding standards
          9. 공동 코드 소유 collective code ownership
          10. 간단한 디자인 simple design
          11. 시스템 메타 포어 system metaphor
          12. 작업시간 준수 sustainable pace
      2. 스크럼 SCRUM
        1. 특징
          1. 소프트웨어에 포함될 기능 개선점에대한 우선순위를 부여
          2. 항상 팀단위로 생각하고, 날마다 15분 정도의 회의
          3. 개발 주기는 30일 정도로 조절하고 개발 주기마다 실제 동작할 수 있는 결과를 제공
        2. 주요 개념
          1. 제품 백로그
            1. 개발할 제품에 대한 요구사항 목록
          2. 스프린트
            1. 반복적인 개발주기
            2. 1~3주의 짧은 기간을 목표로 설정
          3. 스프린트 계획 회의
            1. 스프린트 목표와 스프린트 백로그를 계획하는 회의
          4. 스프린트 백로그
            1. 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
          5. 일일 스크럼 회의
          6. 실행 가능한 제품
          7. 제품 책임자
            1. 제품 백 로그를 정의하여 우선순위를 정해준다
          8. 스크럼 마스터
            1. 프로젝트 관리자
            2. 등등
      3. 그 외 애자일 방법론
        1. 크리스털
          1. 프로젝트의 규모와 영향의 크기에 따라서 여러 종류의 방법론 제공
        2. 기능주도개발 FDD Feature Driven Development
          1. feature 마다 2주 정도의 반복 개발을 실시
          2. 신규 기능 단위로 하는 개발 방법론
        3. Adaptive Software Development
          1. 합동 애플리케이션 개발을 사용하는 방법론
          2. 등등
        4. Lean
          1. 도요타 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
  5. IT 서비스 관리
    1. SLM - Service Level Management
      1. IT서비스의 품질을 높이는 일련의 관리 및 활동
    2. SLA - Service Level Agreement
      1. 서비스 수준을 명시적으로 정의한 문서
    3. ITSM - Information Technology Service Management
      1. 서비스 수준(SLA) 에 맞는 IT 서비스를 제공하는 것
    4. ITIL - IT Infrastructure Library
      1. IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 혹은 프레임워크
      2. ITSM 을 실현하는 도구 또는 방법