소프트웨어 공학과 개발 프로세스 – 1


소프트웨어 공학의 목표

사용자의 요구 사항을 충족시키는 품질 좋은 소프트웨어를 개발

  1. 개발 대상의 명확과
    • 이 소프트웨어의 요구 사항은 무엇인지 등
  2. 개발 과정의 체계화
    • 규모가 큰 소프트웨어는 여러명이 작업하기 때문에 체계화가 중요
  3. 개발 수명 주기 지원
    • 프로세스의 개발 부터 폐기 까지의 과정 중 필요할 때 적절한 지원을 해주는 것

소프트웨어 공학의 원리

  • 엄격성과 정형성
    • 소프트웨어는 개발자의 지적(창의적, 공학적)행위의 산출물
    • 소프트웨어 개발은 주어진 시간과 비용에서 명확하게 개발되어야 하는 엄격성

  • 관심사의 분할
    • 복잡한 문제를 단순한 여러 문제로 분할
    • 소프트웨어 개발 과정의 분할: 요구 사항 분석 > 설계 > 구현 > 테스팅
    • 소프트웨어 테스트 과정의 분할: 단위 테스트 > 통합 테스트 >시스템 테스트

  • 모듈화 (프로그램을 여러 모듈로 만드는 것)
    • 독립적인 기능을 갖는 프로그램의 조작
    • 높은 응집력과 낮은 결합력을 갖는 소프트웨어 구조 설계
      • 모듈은 하나의 목적을 위해 일해야 함
      • 모듈 간의 결합력은 낮으면 좋음 (다른 모듈의 영향을 최소화)
    • 이해도를 높이고(높은 응집력), 변경 영향을 최소화(낮은 결합력)하기 위한 공학적 원리

  • 추상화
    • 세부 사항은 감추고 대표적인 속성으로 대상물을 정의
    • INPUT OUTPUT이 어떤지 만 알면 사용하기 편한 것
      • Ex) 냉장고 새탁기
      • 함수 정의, 매크로 함수, 객체, HAL(Hardware Abstraction Layer) 등

  • 변경의 예측
    • 소프트웨어 개발에서 변경은 불가피
    • 이때 변경을 잘 관리하는 방법이 요구된다.
    • 변경이 발생할 것으로 예상되는 부분을 모듈화 구조로 분리
    • Tcp 헤더에서 Reserved같은 부분
TCP Header

  • 일반화
    • 다양한 플랫폼, 다양한 환경, 다양한 사용자가 사용할 수 있어야함
      • Ex) Java
    • 하드웨어 성능이나 사양에 의존적이지 않은 소프트웨어 개발 -> 앱

  • 점진성
    • 단계적이며 순차적으로 소프트웨어를 개발하고자 하는 공학적 원리
    • 작은 단위의 소프트웨어를 반복 개발하면서 전체 시스템을 완성
    • 단계적인 개발과 배포를 통한 사용자 피드백의 수집과 반영

  • 명세화
    • 소프트웨어 개발 과정 및 대상물에 대한 정보를 체계적으로 기술하는 원리
    • 팀 기반의 개발 활동을 지원하기 위한 정보의 공유 지원
    • 지속적으로 진화하는 소프트웨어에 대한 이력서

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다