2022-09-12 소프트웨어공학_1

2022. 9. 12. 15:33학부 강의/소프트웨어공학

 

소프트웨어공학

 

소프트웨어 제품의 모든 측면과 관련된 공학적 규율

 


프레즈만의 정의 (Pressman)

 

  • 소프트웨어는 실행 시 원하는 기능과 성능을 제공하는 지시
  • 프로그램이 정보를 적절하게 조작할 수 있도록 해주는 자료구조
  • 프로그램 운명 및 사용을 기술하는 문서

 


소프트웨어 분류

 

가. 응용 소프트웨어 VS 시스템 소프트웨어

  • 응용 : 사용자의 목적에 맞게 개발. 워드, 엑셀, 브라우저 등
  • 시스템 : 하드웨어 및 응용 소프트웨어 관리 및 지원. 운영체제, 네트워크 관리, 파일 관리 프로그램 등

 

나. 프레즈만의 소프트웨어 분류

 

 

다. 분류 방법(3)

 

라. 분류 방법(4)

 

  • 일반 소프트웨어
    • 일반적으로 PC 및 대형 시스템상에서 수행되는 소프트웨어
    • 비기능적인 부분에 대한 고려가 많지 않음. (ex. 메모리 용량, 저장공간… 등 )
    • 규격화된 개발 환경 덕분에 소프트웨어 분야의 지식만으로 충분히 개발가능
  • 임베디드 소프트웨어
    • 특정한 기계와 시스템 상 특정한 목적을 위해서 수행되는 소프트웨어
    • 목적성이 뚜렷하고, 확장성이 적고, 비기능적인 부분을 충분히 고려해야 한다.
    • 개발자들은 해당 하드웨어, 도메인, 분야의 지식도 알고 있어야 한다.
    • 처리 기한과 외부 영향을 실시간으로 대응해야 한다.

 


소프트웨어 특징

 

  • 비가시성 : 소프트웨어의 구조는 코드 안에 있어 직관적으로 파악하기 힘들다.
  • 프레스만이 정의한 소프트웨어의 특징
    • 소프트웨어는 고적적 의미의 제조가 아닌 개발되는 것
    • 소프트웨어는 닳지 않지만 요구사항, 주변 환경의 변화에 따라 수정되고 진화한다

물리적인 형태가 없는 무형의 논리적 요소다.

 

개발 과정에 대해 정확하게 이해하기 어렵고 진행 상황을 파악하기도 어렵다.

 

최종 산출물을 개발 과정에서 확인할 수 없음.

 

오류를 발견하지 못하거나 해결책을 못 찾을 수 있음.

 

프로젝트의 지연 및 예상 범위 초과로 인한 프로젝트 실패 가능성이 존재한다.

 


소프트웨어 개발

 

개발 단계

  1. 요구사항 분석
  2. 설계
  3. 구현
  4. 테스팅 (블랙박스 테스트)

 

개발에 연관된 역할

 

  • 고객 (customer)
    • 개발 필요성 결정
    • 사업적 타당성을 판단하여 개발자에게 개발을 의뢰, 개발비 제공
  • 사용자 (user)
    • 개발자에게 소프트웨어 시스템에 대한 사용자 측면에서의 요구사항 제공
    • 개발자에게 요구사항을 제공
    • 고객이 사용자의 역할을 할 수도 있음
    • 사용자의 직업을 이해하고 요구사항을 이끌어내는 것이 매우 중요
  • 개발자 (developer)
    • 고객과의 계약대로 주어진 시간과 비용 내에서 사용자들의 요구사항을 기반으로 소프트웨어 시스템 개발
    • 한 명 또는 팀을 구성하여 작업

 


과거의 소프트웨어 개발

 

예술의 영역.

 

개발자의 개성이 반영되어 다양한 방식으로 구현.

 

체계적 방법의 부재.

 

정형화된 방법론이 없었다.

 

→ 비효율적인 개발, 대규모 프로젝트의 어려움 (의사소통 및 상호 협력의 어려움)

 


소프트웨어 공학의 탄생

 

소프트웨어 위기가 발생.

 

이를 해결하기 위해서 다른 분야에서 사용했던 공학 패러다임을 적용하기로 함.

 

68년 NATO Conference에서 소프트웨어 공학 제안했다.

 

개발, 운용, 유지보수 및 폐기에 대한 표준적인 접근 방식을 정의.

 

체계적이고 공학적인 방법으로 추정된 비용과 기간에 고객이 원하는 고품질 소프트웨어 개발을 목표로 한다.

 


 

소프트웨어 공학의 영역