[소프트웨어공학] 소프트웨어 개요(Software Abstract)
2019. 11. 28. 14:58ㆍComputer Science/SoftWareEngineering
소프트웨어란?
프로그램과 프로그램 개발 운용 보수에 필요한 관련 정보 일체, 즉 고객의 문제를 해결해주기 위하여 대규모의 품질 좋은 소프트웨어 시스템을 정해진 시간과 비용으로 개발하거나 발전시키는 체계적인 프로세스임
고객의 문제를 해결
- 소공의 궁극정인 목표
- 문제를 파악하고 이해하기 위해 효과적으로 커뮤니케이션해야
- 불피요한 기능 추가는 도움이안됨
- 개발하지 않고 솔루션을 구매 할수도 있음
소프트웨어의 특징
- 손에 잡히지 않는 무형의 물체이고, 직관적으로 개발작업을 이해하기 어려우며, 구조 역시 파악하기 쉽지 않다.
- 대량 생산이 쉬움, 비용의 대부분이 개발과정에 소요되지만, 한번 만들면 찍어내는건 문제가 안됨.
- 자동화 하기 어렵고 사람이 노동으로 갈아넣어야됨
- 잘 훈련받지 않으면 제작하기 어려움
- 형태가 있는 물건과 달리 코드 몇줄의 바꾸면 바뀌듯 쉽게 변경이 가능함.
- 녹슬거나 쇄하여 닳아 없어지지 않고 영구적임, 그러나 설계 변경으로 인해 품질이 저하되거나 노후될수는 있음
소프트웨어의 종류
- 주문형 : 특정 고객의 수요를 만족하기위한 SW
- 패키지형 : 고개된 시장에서 판매되고 COTS 또는 Shrink-wrapped라고도 불림
- 임베디드 : 하드웨어에 탑재, 변경이 어려움
- 실시간 소프트웨어 : 제어, 모니터링이 주 목적이고 신속하게 반응해야됨, 안정성 확보가 중요
- 자료처리 소프트웨어 : 비니지스 업무처리에 사용, 자료의 정확성과 보안이 관건, 일괄처리
- 자료처리 소프트웨어 + 실시간 소프트웨어의 혼종도 있음
소프트웨어 종류별 차이
종류 | 주문형 | 패키지형(범용) | 임베디드 |
---|---|---|---|
사용되는 카피수 | 낮음 | 중간 | 높음 |
소프트웨어 수행에 필요한 하드웨어 성능 | 낮음 | 높음 | 중간 |
개발노력낮 | 높 | 중간 | 낮음 |
소프트웨어 공학 관련자
- 사용자 : 소프트웨어를 사용하는 사람들
- 고객 : 소프트웨어에 대해 비용을 지불하는 사람
- 소프트웨어 개발자: 요구본석가, 디비전문가, 기술 작성자, 프로그래머, QA 등등
- 개발 관리자: 플젝 관리, 비지니스 경영
소프트웨어 품질
- 사용 용의성: 빨리 배우고 작업을 쉽게 할수 있는 특서
- 효율성 : cpu시간과 메모리같은 하드웨어 자원을 효율적으로 사용할수 있는 특성
- 신뢰성 : 요구한 기능을 실패없이 수행할 수 있는 특성
- 유지보수성 : 유지보수를 쉽게 할수 있는 특성
- 재사용성 : 부품이 다른 플젝에서 사용될 수 있는 특성
서로 다른 품질 속성이 상충될 수 있음. (디자인 vs 성능) 품질 목표 설정은 중요한 작업, 목표 설정후 이에 맞게 설계해야댐. (과도한 자원낭비 ㄴㄴ ) 한정된 예산으로 최대한 효율/신뢰성 등을 위한 최적화도 필요함
단기/장기 품질
- 단기적 품질: 고객의 당면 문제/요구사항을 만족함?
- 장기적 품질: 유지 보수성, 고객의 미래요구,현재 처리할 자료의 분량을 효율적으러 처리 가능?
소프트웨어 플젝 유형
플젝 유형 | 특징 |
---|---|
새 시스템 개발 | 창조력 발휘, 작업에 많은 시간 소요, 소프트웨어 구조가 중요함 |
진화 유형 | 기존 시스템에 대한 깊은 이해 필요, 새로 추가하는 기능과 조화가 필요 |
컴포넌트 기반 | 프레임워크나 컴포넌트를 기초로 시작함, 조립과 커스텀마이징이 주된 작업 |
소프트웨어 프로젝트 작업 4가지
- 모델링 - 도메인이나 소프트웨어의 표현을 만들어 나가는 과정( 유스케이스/정적/동적/행위 모델링)
- 프로그래밍 ( 개발 )
- 품질 보증 - 리뷰,인스펙션,테스트
- 배포
- 프로세스 관리