[소프트웨어공학] 소프트웨어 개요(Software Abstract)

2019. 11. 28. 14:58Computer Science/SoftWareEngineering

소프트웨어란?

프로그램과 프로그램 개발 운용 보수에 필요한 관련 정보 일체, 즉 고객의 문제를 해결해주기 위하여 대규모의 품질 좋은 소프트웨어 시스템을 정해진 시간과 비용으로 개발하거나 발전시키는 체계적인 프로세스임

고객의 문제를 해결

  • 소공의 궁극정인 목표
  • 문제를 파악하고 이해하기 위해 효과적으로 커뮤니케이션해야
  • 불피요한 기능 추가는 도움이안됨
  • 개발하지 않고 솔루션을 구매 할수도 있음

소프트웨어의 특징

  • 손에 잡히지 않는 무형의 물체이고, 직관적으로 개발작업을 이해하기 어려우며, 구조 역시 파악하기 쉽지 않다.
  • 대량 생산이 쉬움, 비용의 대부분이 개발과정에 소요되지만, 한번 만들면 찍어내는건 문제가 안됨.
  • 자동화 하기 어렵고 사람이 노동으로 갈아넣어야됨
  • 잘 훈련받지 않으면 제작하기 어려움
  • 형태가 있는 물건과 달리 코드 몇줄의 바꾸면 바뀌듯 쉽게 변경이 가능함.
  • 녹슬거나 쇄하여 닳아 없어지지 않고 영구적임, 그러나 설계 변경으로 인해 품질이 저하되거나 노후될수는 있음

소프트웨어의 종류

  • 주문형 : 특정 고객의 수요를 만족하기위한 SW
  • 패키지형 : 고개된 시장에서 판매되고 COTS 또는 Shrink-wrapped라고도 불림
  • 임베디드 : 하드웨어에 탑재, 변경이 어려움
  • 실시간 소프트웨어 : 제어, 모니터링이 주 목적이고 신속하게 반응해야됨, 안정성 확보가 중요
  • 자료처리 소프트웨어 : 비니지스 업무처리에 사용, 자료의 정확성과 보안이 관건, 일괄처리
  • 자료처리 소프트웨어 + 실시간 소프트웨어의 혼종도 있음

소프트웨어 종류별 차이

종류 주문형 패키지형(범용) 임베디드
사용되는 카피수 낮음 중간 높음
소프트웨어 수행에 필요한 하드웨어 성능 낮음 높음 중간
개발노력낮 중간 낮음

소프트웨어 공학 관련자

  • 사용자 : 소프트웨어를 사용하는 사람들
  • 고객 : 소프트웨어에 대해 비용을 지불하는 사람
  • 소프트웨어 개발자: 요구본석가, 디비전문가, 기술 작성자, 프로그래머, QA 등등
  • 개발 관리자: 플젝 관리, 비지니스 경영

소프트웨어 품질

  • 사용 용의성: 빨리 배우고 작업을 쉽게 할수 있는 특서
  • 효율성 : cpu시간과 메모리같은 하드웨어 자원을 효율적으로 사용할수 있는 특성
  • 신뢰성 : 요구한 기능을 실패없이 수행할 수 있는 특성
  • 유지보수성 : 유지보수를 쉽게 할수 있는 특성
  • 재사용성 : 부품이 다른 플젝에서 사용될 수 있는 특성

서로 다른 품질 속성이 상충될 수 있음. (디자인 vs 성능) 품질 목표 설정은 중요한 작업, 목표 설정후 이에 맞게 설계해야댐. (과도한 자원낭비 ㄴㄴ ) 한정된 예산으로 최대한 효율/신뢰성 등을 위한 최적화도 필요함

단기/장기 품질

  • 단기적 품질: 고객의 당면 문제/요구사항을 만족함?
  • 장기적 품질: 유지 보수성, 고객의 미래요구,현재 처리할 자료의 분량을 효율적으러 처리 가능?

소프트웨어 플젝 유형

플젝 유형 특징
새 시스템 개발 창조력 발휘, 작업에 많은 시간 소요, 소프트웨어 구조가 중요함
진화 유형 기존 시스템에 대한 깊은 이해 필요, 새로 추가하는 기능과 조화가 필요
컴포넌트 기반 프레임워크나 컴포넌트를 기초로 시작함, 조립과 커스텀마이징이 주된 작업

소프트웨어 프로젝트 작업 4가지

  • 모델링 - 도메인이나 소프트웨어의 표현을 만들어 나가는 과정( 유스케이스/정적/동적/행위 모델링)
  • 프로그래밍 ( 개발 )
  • 품질 보증 - 리뷰,인스펙션,테스트
  • 배포
  • 프로세스 관리