[SE] 소프트웨어 공학 기본개념

Updated:

소프트웨어 공학

  • 기본적인 소프트웨어 공학개발 과정
    1. 요구사항분석 -> 요구사양서

    2. 설계 -> 기본 설계서 , 상세 설계서

    3. 구현 -> 프로그램

    4. 테스팅 / 검증 -> 프로그램 동작

    5. 유지보수

분할통치

  • 다루기 어려운 대규모 문제를 여러 소규모 문제로 분할
  • 각각의 소규모 문제들에 대한 답을 구함
  • 각각의 문제에 답을 모아서 원래의 문제에 대한 정답을 구함.

    구조화

  • 대규모 문제를 여러 개의 작은 요소들로 분할한 후에, 각각의 요소들 사이의 관계를 이해하여 쉽게 정리하는 행위
  • 여러 함수로 클래스를 작성하는 수준의 프로그래밍 개념

    추상화 와 모델링

  • 추상화
    • 대상물로부터 본질적이지 않은 부분은 제거하고 공통적인 부분을 추출하는 것. (주택을 예로 들자면, 많은 주택은 공통적으로 현관, 벽, 창문 지붕이 있다. )
  • 모델
    • 추출한 부분을 표현(가시화, 도식화)한 것.
  • 모델링
    • 모델을 작성하는 작업
    • 모델링을 통해 대규모 복잡한 시스템에 대하여 복잡함에 얽메이지 않고 모델을 토대로 수월하게 비교/검토작업을 진행할 수 있다.
  • EX - 어떤 SW를 개발해야 하는가? , 어떻게 SW를 개발해야 하는가? , 이용자가 어떻게 이용할 수 있도록 해야하는가?

    요구사항 분석

  • 개발하려는 시스템에 어떤 제약사항이 있는지, 어떤 서비스를 제공해야 하는지를 규정한 것.
  • 개발전에 요구사항을 상세하겍 기술하는것은 힘든 일임.
    • 시스템의 제약사항/서비스를 찾아내서 분석하고 문 서화하여 검토하는 긴밀하고 체계적인 작업 필요
  • 요구사항을 통해 무엇을 만드는지 (기본기능) , 어떤 구조로 할 것인지 (기본구조) , 어떻게 사용할지 (기본조작) 을 정해야함.

추적 가능성

  • 일관성있게 시스템을 개발하기 위 하여, “어떤 판단을 내렸나?”, “왜 그 런 방식을 선택했나?” 등을 명확한 문서로 남겨서, 나중에 추적가능하 도록

경험의 축적과 재이용

  • 대부분의 업무들은 메뉴얼화 되어있기 때문에 후에 비슷한 구조의 개발을 한다면 이전에 생성된 메뉴얼을 활용할 수 있다.

체계적인 평가와 관리

  • 대규모 SW에 대한 체계적/효율적인 오류 경감 방법과 기법 필요
  • 개발에 필요한 비용 산정, 세밀한 계획 수립 필요 프로젝트 관리기술 필요 -> 프로젝트 진행상황 조사/평가/대책 수립/시행

Leave a comment