top of page

Software란

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

1. Software

Program과 Software

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

  • Software: Program과 data 그리고 그 산출물(문서 등)의 집합


Software의 종류

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

  • Beskpoke: 고객의 요구사항에 따른 소트웨어(예: 병원의 환자관리 시스템, 재고관리 시스템)


Software 개발단계

1.요구사항 정의

고객의 요구사항을 도출하고 이를 고객이 이해할 수 있는 문서의 형태로 기술하는 것

2.요구사항 분석

고객의 요구사항을 개발자가 이해할 수 있는 수준으로 분석하는 것

3.아키텍쳐 설계

소프트웨어를 모듈이라는 컴포넌트 단위로 분리하는 것

4.상세 설계

각 모듈별로 알고리즘 레벨까지 설계하는 것

5.구현 및 테스팅

설계대로 구현하고 테스팅하는 것

6.유지보수

환경에 변화, 새로운 요구사항의 등장, 문제의 발생에 대응하여 소프트웨어를 유지 및 보수하는 것

  • 완전 유지보수: 새로운 요구사항이 등장하여 소프트웨어를 유지보수 하는 것

  • 적응 유지보수: 새 환경에 적응하기 위해서 소프트웨어를 유지보수 하는 것

  • 수정 유지보수: 문제를 해결하기 위한 유지보수

  • 예방 유지보수: 미래를 대비하기 위한 유지보수


*유지보수 단계에 많은 비용이 드는 이유?

일반적으로 소프트웨어 개발단계 중 유지보수 단계에서 개발비용의 60~70%가 소모된다. 소프트웨어는 하드웨어와 달리 고정된 형태가 아닌 지속적으로 개선되어야 하는 특성을 가진다. 더불어 일단 구현이 시작되면 연관된 개발단계의 앞 부분, 모듈까지 수정해야 하므로 수정해야 할 부분이 많아진다. 따라서 이후 유지보수를 용이하게 하기 위해서 소프트웨어 설계시 적절한 모듈화를 시키는 것이 중요하다.


소프트웨어의 종류

1.System software

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

예: compiler, editor

2.Business application software

비즈니스를 도와주는 소프트웨어

예: ERP, MIS

3.Engineering & Scientific software

예: 수치해석

4.Real-time software

온라인≠Real-time

온라인: 바로바로 처리되는 것

Real-time: 온라인(바로바로 처리)+적정한 시간 내에 처리되는 것

예: 무기 관리 시스템

5.Embedded software

6.AI software

예: 신경망 등

7.Entertainment software

예: 게임


2. Software Crisis

  • 기간 지연

  • 비용 초과

  • 명세와 불일치

  • 비신뢰성

  • 엄청난 유지보수 비용

⇒SW적인 mind의 부족, 관리 부족, SE적 접근의 부족


Software Engineering(SE)의 목표

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

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


*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