top of page

Software Engineering

  • 작성자 사진: 서영 조
    서영 조
  • 2022년 10월 19일
  • 2분 분량

Software Engineering의 궁극적인 목표

"품질 좋은 소프트웨어를 최적의 비용으로 계획된 일정에 따라 개발하는 것"

=품질과 생산성의 동시 추구


Program과 Software

Program: 프로그래밍 언어로 작성된 명령어 집합

Software: 프로그램+프로그램을 실행하기 위한 데이터+그에 따른 산출물들

*2가지 종류의 Software Product

1.Generic: 패키지화된 소프트웨어, COTS(제품화된 소프트웨어)

예: MS-Office, Game, Windows

2. Beskpoke: 사용자의 요구에 따라 개발된 소프트웨어

예: DKU 도서관 시스템, DKU 수강신청 시스템


Software의 개발단계

소프트웨어는 보통 5~6개의 단계를 거쳐서 개발된다.

1.S/W 요구사항 정의

  • 시스템의 기능적 요구사항을 도출한다.

  • 고객의 요구사항을 이끌어내는 단계

  • 고객의 요구사항을 고객이 이해할 수 있는 수준으로 문서화한다.

2. S/W 요구사항 분석

  • 시스템을 구성하는 논리적 구성요소 도출

3.설계

  • 시스템의 논리적 구성요소로서의 컴포넌트들을 정의하고 설계한다.

* 아키텍쳐 설계

논리적 구성요소들을 모듈화

* 상세 설계

각 모듈별로 알고리즘 level까지 설계


4.구현[개발+테스팅]

  • 설계를 기반으로 코드를 구현하고, 테스팅 한다.

5.S/W 유지보수

  • 소프트웨어를 배포한 이유 지속적인 유지보수가 필요하다.

  • 소프트웨어는 하드웨어와 달리 고정된 형태가 아니라 지속적으로 개선되어야 하는 특성을 가진다.

*완전적 유지보수(약 60.3%): 새로운 요구사항을 시스템에 적용하기 위한 유지보수

*적응적 유지보수(약 18.2%): 시스템을 새 환경에 적응시키기 위한 유지보수

*수정적 유지보수(약 17.4%): 잘못된 점을 고치기 위한 유지보수


소프트웨어 개발의 각 단계에서 UML 다이어그램을 이용할 수 있다.



소프트웨어의 특징

  • 소프트웨어는 변경이 가능하다.(변경이 가능하다≠변경이 쉽다.)

  • 소프트웨어는 모듈화되어야 한다.

  • 소프트웨어는 폐기의 단계도 거친다. 유지보수 비용이 과도하게 늘어나면 폐기를 한다.

  • 예상되는 문제를 최소화하기 위해서 test-case를 잘 만들어야 한다.


소프트웨어 분류

[System Software]다른 시스템의 실행을 도와주는 소프트웨어

예:compiler, editor

[Business application software]비즈니스를 도와주는 소프트웨어

예:MIS, ERP

[Engineering&Scientific software]

예:수치해석

[Real-time Software]

온라인 시스템과 실시간 시스템은 다르다. 온라인 시스템은 요청을 즉시 처리한다는 특징이 있지만, 실시간 시스템은 요청을 즉시 처리한다는 특징과 함께 요청이 적정시간 내에 처리된다는 특징이 있다.

예:무기시스템

[Embedded Software]

[AI Software]

[Entertainment Software]


소프트웨어 위기(문제)

  • 기간 지연

  • 비용 초과

  • 명세와 불일치

  • 비신뢰성

  • 엄청난 유지보수비용


SW에 대한 오해

1.개발자를 더 투입하면 스케줄을 맞출 수 있지 않을까?→새로운 사람들에게 지금까지 작업했던 내용을 공유하고 그것을 익히는 시간이 추가적으로 필요하게 된다.

2.앞에서 시작할 때 대충하면, 시간이 지난후 이를 해결하기 위해서 훨씬 더 큰 노력을 필요로 한다.

3.프로그램을 작성하는 것은 전체 과정의 매우 작은 일부분일 뿐이다.

4.프로그램이 실행되기 전까지는, 프로그램이 제대로 실행되는지 알 수 있는 길이 없다.

5.소프트웨어 지침만 믿고 그대로 따른다고 좋은 소프트웨어가 개발되는 것이다.→하나의 보편적 지침일 뿐, 이것을 따른다고 반드시 좋은 소프트웨어가 개발되는 것은 아니다.

6.소프트웨어를 바꿀 수 있도록 쉽게 모듈화 시켜야한다. 고객이 원하는 것의 일부분을 먼저 만들어 시제품을 만들어 고객에게 검토를 받고 개발을 진행해야한다.

7.“나만 잘하면 되지”의 접근 방식은 옳지 않다.→전체적으로 문제가 된다.

소프트웨어는 엔지니어적인 관점으로 개발되어야 한다. 초고층 건물을 지을 때와 공법을 체계적으로 해야 건물이 지어지듯이 소프트웨어도 체계적으로 만들기 위해서는 소프트웨어공학이 필요하다.

 
 
 

최근 게시물

전체 보기
DevOps와 CI/CD

오늘날 소프트웨어는 기존의 비즈니스를 지원하는 기능에서 그치지 않고 나아가 새로운 비즈니스를 창출하고 기존의 비즈니스를 주도하는 핵심으로 성장하고 있다. 기존 개발 체계에서는 개발팀이 개발하고 QA가 검증(테스팅)한 후 운영팀에 이관하는...

 
 
 

Comments


  • Facebook
  • Twitter
  • LinkedIn

©2022 by Seoyoung Cho. Proudly created with Wix.com

bottom of page