IT개념/소프트웨어공학
[소프트웨어 공학]1-1. 소프트웨어 개념과 공학 소개
JongHyun99
2022. 3. 6. 12:53
728x90
소프트웨어의 정의 및 특징
소프트웨어가 사용되는 곳
- 컴퓨터를 작동시키는 프로그램으로 하드웨어의 동작을 제어하는 수많은 명령어로 구성
- 하드웨어를 이용해 데이터를 처리하고 정보를 제공하여 여러 응용분야의 업무를 자동화함
- 컴퓨터 외에도 다양한 장비와 장치에서 사용됨
소프트웨어(software)란?
- 프로그램 + 프로그램 개발, 운영, 보수에 필요한 정보 일체
- 프로그램, 자료구조, 문서를 총칭
프로그램 | 산술, 논리적인 계산을 신속하게 처리하기 위한 명령어들과 데이터들의 집합 |
---|---|
자료구조 | 자료의 형성 과정에서 컴퓨터 기억 장치 안에 자료 표현이나 처리 방법 등을 분석, 연구 등 데이터의 관계 처리 알고리즘 등 |
문서 | 각 단계마다 생산되는 문서, 메뉴얼, 계획서, 평가서, 분석서 등.. |
소프트웨어의 특징
- 논리성(비가시성): 보이지 않는 것의 표현, 디스크에 저장은 되지만 코드로 숨겨짐
- 개발성: 제조되거나 생산되지 않고 논리적으로 짜여짐
- 비마모성: 논리적이므로 사용에 의해 마모되거나 소멸되지 않음
- 유연성: 요구나 환경의 변화에 따라 적절히 변형될 수 있음, 문자로 구성된 프로그램이므로 쉽게 변경할 수 있고 개발 과정이 자주 변경됨
- 상품성: 개발되어 판매됨
- 견고성: 일부 수정은 전체 영향을 줄 수 있음
- 비정형적: 규칙적이고 정형적인 구조가 없음
소프트웨어의 분류
- 관리 소프트웨어: 자료를 받아들여 정보를 제공, 주로 DB를 통해 제공됨
(인터넷 뱅킹, 종합정보 시스템, 예약 시스템) - 제어 소프트웨어: 각종 센서를 이용하거나 기기들의 동작을 제어
(교통 신호 제어, 의료기기 제어, 공장장비 제어 등) - 임베디드 소프트웨어: 장비나 기기에 내장된 소프트웨어
(가전제품 내 소프트웨어, 공정제어 소프트웨어) - 패키지 소프트웨어: 패키지화 하여 상업적으로 판매되는 소프트웨어
(오피스, 주문 관리, 회계 관리) - 주문형 소프트웨어: 특정 기업, 고객의 요구를 위해 제작한 소프트웨어
(웹 사이트)
정보처리에 따른 분류
일괄 처리
- 자료를 일정 기간 모았다가 한번에 처리하는 방법
- 급여 계산, 통계 처리
온라인 처리
- 단말기와 원격 컴퓨터가 통신 회선을 통해 자료를 처리하는 방식
- 은행업무, 항공사좌석 예약관리 시스템, 백화점의 거래 처리 시스템
실시간 처리
- 처리 결과를 사용자 원하는 시간 내에 받아 볼 수 있는 방식
- 전화 교환 시스템, 공장 자동 제어 시스템, 은행 안전 감시 시스템, 항공 관제 시스템
위상에 따른 분류
응용 소프트웨어
- 사용자의 목적에 따라 개발된 소프트웨어
- 업무 관리, 급여 계산, 회원 관리
시스템 소프트웨어
- 응용 프로그램을 지원하기 위해 개발된 소프트웨어로 하드웨어 측면이 강함
- 운영체제, 유틸리티
기능에 따른 분류
- 계산 중심 기능
- 소프트웨어 기능이 수학, 통계적 처리에 중점으로 개발됨
- 엑셀, SPSS
- 정보처리 중심
- 데이터의 가공을 통해 정보를 얻기 위한 소프트웨어
- 업무용 소프트웨어, 워드프로세서, dBASE 등
- 절차 중심
- 일괄 처리, 실시간 처리 처럼 자료 가공보다는 사용자 문제 영역이 제한된 시간 내 처리되는것에 중점된 소프트웨어
- 인공지능
- 비 수치적인 알고리즘을 이용해 계산이나 분석이 용이하지 않는 지문 인식, 로봇 등 아직은 연구대상인 소프트웨어
개발 목적에 따른 분류
프로토 타입
- 개발된 소프트웨어의 일부를 미리 제작하여 사용자 요구를 받아들일 수 있도록 함
프로젝트
- 주문형 소프트웨어로 단일 사용자를 대상으로 개발
- 업무용, 급여관리, 직원관리 프로그램 등
프로덕트
- 상품형 소프트웨어로 다수를 위해 개발됨
- 엑셀, 오피스 등
소프트웨어 개발의 문제점
소프트웨어와 하드웨어의 비교
- 제조가 아닌 개발이다.
제조: 정해진 틀에 맞춰 일정하게 생산, 많은 인력이 필요하고 능력별 결과물 차이가 근소함
개발: 개인 능력별 결과물 차이가 매우 큼
- 소모가 아닌 품질 저하
H/W: 오래 사용하면 부품이 닳고 고장나며 기능이 떨어짐
S/W: 오래 사용해도 닳지 않음
하드웨어 실패 곡선
하드웨어 고장률 곡선 → 시간 흐름에 따른 하드웨어는 실패곡선
- 초기 실패율 높음
- 오류 해결
- 오랜 기간 동안 사용
- 주변 환경 문제 발생(먼지, 진동)
- 다시 실패율 증가
이상적인 소프트웨어 실패 곡선
- 하드웨어는 주변환경으로 고장이 잦음
- 소프트웨어는 시간에 따른 고장 빈도가 올라가지 않음
- 개발 완료 후 변경 사항과 환경 변화가 없어야 함 (오래 사용 가능)
- 초기 실패율 높음
- 오류 해결
- 오랜 기간 동안 사용
- ~게속 사용
실제 소프트웨어 실패 곡선
- 시작단계부터 사용자 요구가 계속 발생
- 운영체제 등 설치 환경이 달라질 수 있음
- 사용자의 요구를 모아 시스템에 반영
- 초기 실패율 높음
- 오류 해결
- 실패율 낮아짐
- 변경 발생
- 부작용
- 실패율 증가
- 4번으로 환류
품질 좋은 소프트웨어
관점에 따라 다름
- 고객: 비즈니스 관련된 문제를 적절한 비용과 자원으로 해결함
- 개발자: 설계 및 유지보수, 재사용이 쉬움
- 사용자: 사용하기 쉬움, 효율적으로 사용가능, 업무기능 향상
- 개발 관리자: 매출 신장, 개발과 유지보수 작업 비용을 줄여 소비자를 비싸게 함
구비조건
- 사용자 요구가 정확히 반영되어야 함
- 적정한 개발 비용이 산정되어야 함
- 잠재적 오류가 최소화되어야 함
- 안전성이 있어야 함
- 효율성이 있어야함
- 문서화가 되어야 함
- 사용이 용히해야함 (전문가, 초보자 등 사용자에 맞게 적합하게 개발)
- 객관성이 있어야 함(누구나 알아볼 수 있게)
소프트웨어 개발의 문제점
소프트웨어 개발의 느린 발전 속도
- H/W의 발전: PC 및 스마트폰의 발전 속도
- S/W 발전 속도: DOS ~ Window10
- 하드웨어의 속도를 따라가지 못해 사용자 요구사항을 감당할 수 없음
새로운 소프트웨어에 대한 사용자 요구 증가
- S/W 속도가 못따라감
- H/W와 S/W 개발 방법의 근본적인 차이 때문
- H/W: 검증받은 부품을 조립하는 형태의 생산
- S/W: 처음부터 만들어가는 개발 형태
- 해결 방안: CBD개발 방법론
관리 기술의 부분적 활용
- S/W 개발에도 관리가 필요: 비용 관리, 일정 관리, 개발자 관리
- PMBOK(프로젝트 관리지식체계)를 활용한 프로젝트 관리 기술 필요
결론
- 소프트웨어 규모가 커지며 복잡해짐 → 개발비용 증대
- 유지 보수 비용 증대
- 개발 인력 부재로 인건비 상승
- 개발 기간 지연 및 하드웨어 가격을 초과하는 소프트웨어 개발 비용 증가
소프트웨어 개발 규모에 따른 어려움
- 개발 과정이 복잡함
- 참여 인력이 많다. (의사소통에 문제가 많음)
- 개발 기간이 길다
소프트웨어 개발 작업
- 명세화: 기능, 원가, 위험, 일정, 제약사항 포함
- 설계: 명세를 여건에 맞계 설계
- 코딩: 언어로 변환
- 검증: 고객 의도와 일치하는지 확인
- 유지보수: 결함이 있다면 수정, 요구 변화에 수정
소프트웨어 개발 작업의 어려움
- 명세화의 어려움 (사용 전까지 필요한 것을 정의하기 어려움)
- 재사용의 어려움 (미리 사용할 부품을 만들기 어려움)
- 예측의 어려움
- 유지보수의 어려움 (타인이 만든 것을 이해하기 어렵고 고치기 힘듬)
- 고품질의 어려움