Software-Engineering-SW Process-part-1

Bomin Seo·2022년 7월 19일
0

The Software Process

Specification

  • 소프트웨어가 만족해야하는 기능과 요구사항에 대하여 정의하는 단계

Design and implementation

  • 소프트웨어 설계 및 구현 단계

Validation

  • 고객의 요구를 만족하는지 확인하는 단계

    varification vs. validation

    • verification
      • 프로그램이 요구사항에 부합되도록 구현되었는지 검증하는 단계 (시험)
    • validation
      • 구현하고자 한 기능을 제대로 구현하였는지 검증하는 단계 (검증)

Evolution

  • 사용자의 요구나 시장/사회의 변화, 새로운 기술의 출시에 맞추어 변화하는 단계

Software process descriptions

  • 데이터 모델의 구체적인 정보, user interface의 설계 등을 설명하며 소프트웨어 구현이 어떠한 순서로 이루어지는지에 대한 설명도 포함한다.
  • process의 결과물인 products(코드/실행파일/문서/그림 etc.)와 process에 참여한 팀 구성원의 역할을 반영한 Role에 대한 설명도 포함한다.
  • process 동작의 전후 상황인 pre & post condition에 대한 설명을 포함한다.

Plan-driven and agile processes

Plan-driven process

  • process의 모든 활동이 사전에 계획되어 있으며 단계가 엄격하게 구분되고 단계에 따라 평가되는 방법론
  • 전자제품이나 자동차와 같이 Hardware에 Software가 들어가 결과물을 생성하는 분야에서 많이 사용되는 방식 (Embedded system)
  • 원자력 발전소의 시스템이나 브레이크 시스템과 같이 기능이 많지 않아도 보안과 신뢰성이 굉장히 중요한 경우 사용된다.
  • 많은 인력이 투입되고 물리적으로 분산된 여러 곳에서 개발이 이루어지는 큰 규모의 프로젝트에 사용된다.

agile process

  • 중요도 순으로 단계적으로 개발하며 시장/사회 상황의 변화에 민감하게 반응한다.
  • business system, web services system 등 products의 전체를 구현하기보다 주요한 기능이 적합한 시점에 동작해야하는 system에서 사용된다.
  • 초기 버전을 출시하고 시장의 반응, 상황의 변화에 맞추어 보완 및 개발한다.(Incremental)

Software process models

Water-fall model

  • plan-driven model / 개발 프로세스의 단계를 개별적으로 구분해서 진행한다.
  • 진행 중인 프로세스 개발에 있어 변화에 대응하기 힘들며, 이후의 단계에서 실패할 때 이전의 단계로 돌아가는 것에 대한 막대한 인력 및 비용적 손실의 위험이 있다.
  • process에 대한 이해가 잘 되어 있으며 변화가 적은 process에 알맞은 방식

unit(module) test

  • 개발자들이 자신이 만든 소프트웨어를 스스로 테스트한다.

System testing

  • 전체적인 소프트웨어가 요구에 맞춰서 동작하는지에 대하여 테스트한다.
  • 검증팀 등 전담하는 부서에서 담당한다.

Incremental development

  • 명세/구현/개발/검증의 단계가 밀결합되어 있다.

  • agile방식이거나 버전별로 출시되는 plan-driven모델 방식으로 개발될 수 있다.

  • 초기 버전 출시 후 단계적으로 개발하며 시장의 반응에 민감하게 반응한다.

  • 장점

    • 고객의 요구사항 변화에 소요되는 비용이 줄어든다.
    • 고객의 피드백을 빠르게 받을 수 있으며 반영하기 쉽다.
    • water-fall 방식에 비해 빠른 출시와 운영이 가능하며 금전적 이득을 얻을 수 있다.
  • 단점

    • 개발되는 process가 명확하게 확인되지 않기에 관리가 힘들다.
    • 빠른 개발 주기로 인하여 모든 버전에 대한 문서를 남기지 않아 관리가 힘들다.
    • 사전에 계획되지 않은 상황에서 계속적인 기능의 추가는 확장성, 성능을 떨어트릴 수 있으며 코드의 복잡도가 올라가거나 추가적인 비용이 요구될 수 있다. 따라서 추후에 구현해야하는 주요한 기능을 구현하지 못할 수 있다.
    • 빠른 개발속도로 인하여 관리자가 관리해야할 규제 혹은 법규를 어길 가능성이 있다.

Integration and configuration

  • 이미 존재하는 소프트웨어들을 결합하거나 호출하여 재사용하는 방법
  • 개발이 분량이 매우 적으며 agile방식이거나 버전별로 출시되는 plan-driven모델일 수 있다.

    COTS (Commercial Off The Shelf)

    • 개발하지 않고 구매하여 사용하는 시스템
    • 환경설정만 수정하고 사용되는 software

Types of reusable software

  • Stand alone application(COTS)
  • .net / .J2EE와 같은 Component framework에 통합되는 패키지형식으로 개발된 객체의 모음(라이브러리) : 통합과정이 필요하며 일부분 개발이 필요하다.
  • Web-Service : local이 아닌 원격에서 호출하여 결과를 받는 software

Reuse-oriented software engineering

장점

  • 시작단계부터 개발하는 경우에 비하여 비용과 위험을 줄일 수 있다.
  • 빠른 출시와 운영이 가능하다.

단점

  • 필요한 요구사항에 부합하지 않을 수 있다.
  • software evolution 측면에서 제어하지 못할 수 있다.

The requirements engineering process

profile
KHU, SWCON

0개의 댓글