[SW Engineering] 0. 소프트웨어 공학이란?

이상윤·2024년 4월 18일
0

소프트웨어공학

목록 보기
1/11

소프트웨어 공학이란?

소프트웨어의 개발, 운영 및 유지관리에 대한 체계적이고, 규율되고, 정량화 가능한 접근법의 적용 - IEEE Standard Glossary of Software Engineering Terminology

소프트웨어 생산의 모든 측면과 관련된 엔지니어링 분야 - Ian Sommerville

다중 버전 소프트웨어의 다중 사용자 구성 - David Parnas


소프트웨어 공학이 필요한 이유

쉬운 시스템과 어려운 시스템을 구별하여, 어려운 시스템을 어떻게 체계적이고 정량적으로 개발할 것인지 배운다.


소프트웨어 공학의 관심사

  • 소프트웨어 개발 프로세스

    • 요구 사항 분석 및 사양
    • 소프트웨어 모델링
    • 소프트웨어 아키텍처 & 디자인
    • 소프트웨어 개발(코딩)
    • 소프트웨어 확인 및 검증
  • 프로젝트 관리

    • 조직화, 도구, 리스크 관리
    • 예측, 스케줄링, 계획
    • 퀄리티
  • 구성 관리

  • 소프트웨어 엔지니어링의 중요 관점

    • 어떻게 생산되었는가 VS 무엇을 생산하였는가

소프트웨어의 특징



(사람을 투입할수록 개발 기간이 더 늘어난다.)


소프트웨어 개발 프로세스

  • 소프트웨어 시스템을 개발하는 것이 목적인 프로젝트는 여러 활동으로 구성됨
    • e.g. 요구사항 분석, 설계, 구현, 테스트, etc.
  • 소프트웨어 개발 프로세스는 순서와 빈도를 표현하고 작업 결과물을 정의하여 활동 간의 상호 관계를 규정함

소프트웨어 모델링

  • 모델 = 시스템의 추상화
    • 불필요한 디테일들을 제거함으로써 복잡성을 처리하는 방법
  • UML: 모델링을 위한 사실상 표준

소프트웨어 아키텍처

  • 아키텍처 디자인
    • 설계 프로세스 초기 단계
    • 이후 변경이 어렵거나 불가능한 문제에 초점
      • e.g. 성능, 안정성, 확장성
    • aka 큰그림

소프트웨어 설계

  • 핵심 개념
    • 추상화
    • 정보 은닉, 인캡슐레이션
    • 관심사 분리
    • 인터페이스
    • 모듈화
  • 측정
    • Cohesion
    • Coupling
  • 원칙
    • SOLID 원칙 등

확인 및 검증

  • 테스트

    • 블랙박스 테스트
    • 화이트박스 테스트
  • V&V

    • 소프트웨어 시스템이 의도한 목적을 달성할 수 있도록 사양 및 요구 사항을 충족하는지 확인하는 프로세스
  • Verification: 제품을 올바르게 구축하고 있는지

  • Validation: 올바른 제품을 만들고 있는지

  • 테스트의 한계: 버그의 존재는 보여주지만, 버그가 없다는 것을 알려주진 못한다.


0개의 댓글

관련 채용 정보