5 minute read

1 요구사항 확인

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


소프트웨어 생명주기(SDLC)

  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차


생명주기 모델종류

  • 폭포수 모델
    • 소프트웨어 개발 시 단계를 확실히 마무리 지은 후 다음단계로
    • 고전적 생명주기 모델
    • 요구사항 변경 어려움


  • 프로토타이핑 모델
    • 고객이 요구한 주요 기능을 프로토타입으로 구현


  • 나선형 모델
    • 시스템 개발 시 위험을 최소화 하기 위해 점진적으로 완벽한 시스템 개발


  • 반복적 모델
    • 반복적으로 개발하여 완성시키는 모델


소프트웨어 개발 방법론

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법,절차,기법


개발 방법론 종류

  • 구조적 방법론(Structured Development)
    • 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 접근 방식 방법론
    • 나씨 - 슈나이더만 차트(논리의 기술에 중점을 둔 도형식 표현 방법)


  • 정보공학 방법론(Information Engineering Development)
    • 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체계화한 방법론


  • 객체지향 방법론(Object-Oriented Development)
    • 객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론
    • 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템 적용하는 방법론


  • 컴포넌트 기반 방법론(CBD: Component Based Development)
    • 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론


  • 애자일 방법론
    • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템 개발


  • 제품 계열 방법론(Product Line Development)
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 영영 공학, 응용 공학


  • 애자일 방법론 유형
    • XP
      • 5가지 가치
        • 용기(courage)
        • 단순성(simplicity)
        • 의사소통(communication)
        • 피드백(FeedBack)

        • 존중(respect)
      • 12가지 기본원리
        • 짝 프로그래밍(Pair programming)
        • 공동 코드 소유(Collective OwnerShip)

        • 지속적인 통합(continuous integration)
        • 계획세우기(planning process)
        • 작은릴리즈(Small Release)
        • 메타포어(Metaphor) : 고객과 개발자간의 의사소통
        • 간단한 디자인(simple desigm)
        • 테스트 기반 개발(Test Driven Develop) : 테스트 먼저 수행하고 코드작성
        • 리팩토링(refactoring)
        • 40시간 작업
        • 고객 상주(on site customer)
        • 코드 표준(coding standard)


  • 스크럼 : 정해진 시간,장소에서 짧은 시간의 개발 하는 팀을 위한 프로젝트 관리 중심 기법
    • 백로그 : 제품과 프로젝트에 대한 요구사항
    • 스프린트 : 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상
    • 스크럼 미팅 : 매일 15분 정도의 미팅으로 To-do-list 계획수립
    • 스크럼 마스터 : 프로젝트 리더
    • 스프린트 회고 : 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 확인,기록
    • 번 다운 차트 : 남아 있는 백로그 대비 시간을 그래픽적으로 표현한 차트


  • 린 : 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질 향상시키는 방법론
    • JIT,칸반보드 사용
    • 7가치 원칙
      • 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화


객체 지향 분석(OOA : Object Oriented Analysis)

  • 사용자의 요구사항을 분석하여 문제와 관련된 관계를 정의하여 모델링하는 기법

  • 종류

    • OOSE : 야콥슨
    • OMT : 럼바우(객->동->기)
    • OOD : 부치


비용산정 모형

  • 소프트웨어 규모파악을 통한 비용산정 방식
    • 하향식 산정방법
      • 경험이 많은 전문가에게 비용 산정을 의뢰
        • 전문가 판단, 델파이 기법
    • 상향식 산정 방법
      • 세부적인 요구사항과 기능에 따라 필요한 비용 계산방식
        • 코드라인수, Man Month, COCOMO모형, 푸트남 모형, 기능점수 모형


코드 라인수 모형(LOC)

  • 코드 라인 수의 낙관치, 중간치, 비관치 측정
  • 예측치 : 낙관치+4중간치+비관치 / 6


Man Month 모형

  • LOC / 월간 생산성


COCOMO 모형

  • 보햄이 제안한 모형으로 프로그램 규모에 따라 비용 산정
    • 조직형 : 5만 라인 이하
    • 반분리형 : 30만 라인 이하
    • 임베디드형 : 30만 라인 이상


푸트남 모형

  • 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정
  • Rayleigh-Norden 곡선 노력 분포도 사용


기능점수 모형(FP)

  • 기능의 점수를 계산하여 비용 산정 방식
  • 기능점수 : 총 기능 점수 [0.65+(0.1총 영향도)]


일정 관리 모델

  • 일정관리 모델은 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델

  • 종류

    • 주 공정법(CPM) : 수행 순서가 얽혀 있는 프로젝트 일정을 계산, 가장 긴 시간을 걸리는 경로 계산
    • PERT : 비관치,중간치, 낙관치 3점 추정방식
    • 중요 연쇄 프로젝트 관리(CCPM) : 지원제약사항 고려하여 계산


1-2 현행 시스템 분석

소프트웨어 아키텍쳐

  • 여러가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 관계를 표현하는 시스템 구조,구조체


소프트웨어 아키텍쳐 프레임워크

  • 소프트웨어 아키텍쳐가 표현하는 내용, 과계를 제공하는 기술표준
  • 구성요소
    • 아키텍처 명세서 : 아키텍처 기록하기 위한 산출물
    • 이해관계자 : 시스템 갭라에 관련된 사람
    • 관심사(concerns) : 시스템에 대해 이해관계자들의 서로 다른 의견과 목표
    • 관점 (viewPoint): 개별 뷰를 개발할때 토대가 되는 패턴,양식
    • 뷰 : 전체시스템 표현
    • 근거(rationale) : 아키텍쳐 결정 근거
    • 목표(mission) : 시스템 사용,운영 목적
    • 환경 : 시스템 영향을 주는 요인
    • 시스템 : 구현체


소프트웨어 아키텍처 4+1 뷰

  • 유스케이스 뷰 : 유스케이스 또는 아키텍처 도출,설계,검증
    • 사용자,설계자,개발자,테스트 관점
  • 논리 뷰 (Logical view) : 기능적인 요구사항이 어떻게 제공되는지 설명
    • 설계자 개발자 관점
  • 프로세스 뷰 : 자원의 효율적인 사용, 병행실행, 비동기 이벤트 처리 표현
    • 개발자, 시스템 통합자 관점
  • 구현 뷰(implemetation view): 정적인 소프트웨어 모듈의 구성 보여주는 뷰
  • 배포 뷰(deployment view) : 어떻게 배치되는지 매핑해서 보여주는 뷰


소프트웨어 아키텍처 패턴

  • 소프트웨어 설계할 때 참조할 수 있는 전형적인 해결방식
    • 계층화 패턴(layerd pattern) : 시스템을 계층으로 구분하여 구성
    • 클라이언트 서버 패턴 : 하나의 서버와 다수의 클라이언트로 구성하는 패턴
    • 파이프-필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템에서 사용가능, 서브 시스템이 입력데이터를 받아 처리
    • 브로커 패턴 : 컴포넌트 들로 이루어진 분산 시스템에서 사용, 브로커 컴포넌트는 컴포넌트간의 통신을 조정하는 역할 수행
    • 모델 뷰 컨트롤러 ; MVC패턴


소프트웨어 아키텍쳐 비용 평가모델

  • SAAM : 경험이 없는 조직에서 활용가능
  • ATAM : 아키텍처 품질 속성을 만족시키는지 평가
  • CBAM : ATAM 바탕의 시스템 아키텍어 분석 중심
  • ADR : 소프트웨어 아키텍처 구성요소간의 응집도 평가모델
  • ARID : 특정 부분에 대한 품질요소 집중하는 비용평가 모델


디자인 패턴

  • 생성 : 클래스 정의, 객체 생성 방식 구조화
  • 구조 : 클래스, 객체 조합
  • 행위 : 상호 작용 방법


생성 패턴

  • Builder : 복합 객체 생성
  • Prototype : 일반적인 원형 만듬
  • FatoryMethod : 상위 클래스에서 객체 생성하는 인터페이스 정의, 하위 클래서에서 인스턴스 생성
  • Abstract Fatory : 동일한 주제의 다른 팩토리 묶음
  • Singleton : 한 클래스에 한 객체만 존재


구조 패턴

  • Bridge : 계층 연결
  • Decorage : 기능을 추가해 나감
  • Facade : 단순한 인터페이스
  • Flyweight : 클래스의 경량화
  • Proxy : 실체 객체에 대한 대리 객체, 정보은닉
  • Composite : 부분-전체계층 표현,단일 객체와,복합객체 동일하게
  • Adapter : 맞춰주는 역할


행위 패턴

  • Mediator : 중간에서 통제
  • Interpreter : 해석
  • Iterator : 접근방법
  • TemplateMethod : 일부분을 서브클래스로 캡슐화
  • Observer : 한 객체의 상태가 바꾸면 그 객체에 의존하는 객체들에게 연락이감
  • State : 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조
  • Visitor : 클래스의 메서드가 각 클래스를 돌아다님
  • Command : 요구사항을 캡슐화
  • Strategy : 행위객체를 클래스로 캡슐화
  • Memento : undo기능, 작업취소
  • Chain of Responsibility : 하드코딩 되어있을때


DBMS : 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리


미들웨어 : 분산 컴퓨팅 환경에서 응용프로그램과, 프로그램이 운영되는 환경 간 원만한 통신이 이루어지도록 제어하는 소프트웨어


1-3 요구사항 확인

요구공학(Requirements Engineering)

  • 사용자의 요구가 반영된 시스템을 개발하기 위해 도출,분석,명세,확인 검증 하는 활동


인터뷰 : 이해관계자와 직접적인 대화


브레인스토밍 : 말을 꺼내기 쉬운 분위기로 만들어 하는 회의


델파이 기법 : 전문가의 경험적 지식을 통한 문제해결


롤 플레잉 : 역할 연기


워크숍 : 단기간의 집중적인 노력을 통해 정보 공유


설문조사 : 설문지, 여론조사


비정형 명세 기법 : 자연어 기반


정형 명세 기법 : 수학적인 원리와 표기기법 사용


동료 검토 : 2~3명이 진행하는 리뷰형태


워크 스루 : 회의 전 자료를 배포해 희의 진행


인스펙션 : 저작자 외의 다른 팀이 검사


감사(Audit) : 계획 절차를 지키고 있는지 독립적으로 평가


기술리뷰(Technical Review) : 정의된 계획 명세 준수하는지 검토


관리 리뷰(management review) : 프로젝트 진행사항 검토


1-4 분석 모델 확인하기

분석 모델 검증

  • 요구사항 도출 기법을 활용하여 업무 분석가가 제시한 분석보델에 대해 확인하는 활동


유스케이스 모델 검증 : 액터,유스케이스 명세서 점검

카테고리:

업데이트:

댓글남기기