컴퓨터 개론 - 소프트웨어 개발 방법론과 응용 소프트웨어
1. 소프트웨어 개발 방법론
- 모델하우스에 가보면 아파트의 구조와 재료가 서로 다른 모델이 있는 것과 같음
- 소프트웨어 개발 방법도 여러가지가 있음
1) 소프트웨어 공학
- 공햑 분야에서 시스템을 설계하고 제작할 때 이미 존재하는 부품(“off-the-shelf” component)를
가져와서 제작
- 그러나 이러한 방법이 소프트웨어에는 잘 적용되지 않음(커스터 마이징이 필요)
(1) 소프트웨어는 개발보다 유지보수에 많은 비용
(1-1) CASE(Computer-Aided Software Engineering)도구
- 프로젝트 기획, 관리, 프로토타입 개발 및 시물레이션, 인터페이스 설계 및 프로그램 설계에 지원
(1-2) 통합개발환경 (IDE: Integrated Development Environment)
- 에디터, 컴파일러, 디버깅 도구 등의 개발 도구가 통합된 형태로 제공
2) 소프트웨어 개발 방법론
1) 소프트웨어 라이프 사이클 (Software Life Cycle)
(1-1) 폭포수 모델(Waterfall Model)
- 사용자 요구분석, 프로그램 설계(외부 사용자UI, 내부 상세설계), 프로그램의 구현, 테스팅 과정
(1-2) 점진적 모델(Incremental Model)
- 처음에는 간단한 시스템, 점진적으로 사용자들로부터 검증을 거친 후 현실에 맞게 새로운 기능 추가 및 증가
(1-3) 오픈소스 모델
- 무료 공개 소프트우에어 개발 방식
- 예) Linux는 초기 토발즈에 의해 커널 부분만 개발, 공개 후 많은 프로그래머들이 다향한 기능 추가로 버전 업
(1-4) 애자일 방법론(Agile Method)
- 시시각각으로 변화하는 비즈니스 환경과 상황을 소프트웨어 개발에 기민하게 반영
- 익스트림 프로그래밍 : 10여명 이하의 개발팀을 구성하여 서로 아이디어와 디자인을 상호 공유할 수 있는 환경제공
- 단시일 내에 SW을 개발한 후 매일 새로운 요규와 상황을 만족시키는 방향으로 발전
- 소프트웨어의 모듈화 : 프로시저, 클래스, 컴퍼넌트
3) 소프트웨어 개발 도구
- 소프트웨어 개발 사이클의 전 과정을 효율적으로 진행하고, 개발 과정을 최대한 자동화
(1) CASE 도구
- 절차적 프로그래밍과 객체지향 프로그래밍에 따라 다르게 적용
(2) 데이터 흐름 다이어그램, 데이터 사전
(2-1) 데이터 흐름 다이어그램(DFD : Data Flow Diagram)
- 주로 절차적 프로그램의 개발
- 데이터가 어떤 방향으로 흘러가는지, 데이터 발생 지점이 어디인지에 초점
(2-2) 데이터 사전 (Data Dicitionary)
- 소프트웨어의 식별자(Identifier)가 어디에 정의되어 있고, 어떤 모듈에서 사용되며
데이터 아이템이 어디에 저장되어 있는지
(3) 통합 모델링 언어(UML)
- Unified Modeling Language
- 객체지향 소프트웨어 개발에서 주료 사용
(3-1) 목적에 따라 사용되는 많은 그래픽 다이어그램
- 사용자 관점(User View) : 유스케이스
- 구조적 관점(Structure View) : 클래스
- 행위적 관점(Behavioral View) : 액티비티, 스퀀스
- 구현 관점(Implementation View) : 콜레버레이션
4) 소프트웨어 테스팅
(1) 소프트웨어 품질 보장 (Quality Assurance)
(1-1) 유리박스 테스팅
- 가장 중요하고 문제의 소지가 있는 모듈을 중심으로 테스팅 (내부 구조를 잘 이해할 때 사용)
- ‘파레토법칙(Pareto’s Rule) : “80~20 법칙”
- 기본경로 테스팅 : 모든 가능한 실행 루트를 적어도 한번 이상 실행해서 검증
(1-2) 블랙박스 테스팅
- 소프트웨어의 내부를 이해하지 못해도 가능한 모든 데이터 세트를 사용하여 소프트웨어의 작동을 검증
- 경계 값 분석 (Boudary Value Analysis)
- 내부 개발팀 중심의 알파 테스팅(Alpha Testing) 및 외부 사용자 중심의 베타 테스팅(Beta Testing)
2. 응용 소프트웨어
- 우리가 사용하는 스마트폰의 바탕화면의 대부분 앱도 응용 소프웨어이다.
1) 응용 소프트웨어의 활용 분야와 특징
(1) 응용 소프트웨어의 활용 분야
(2) 응용 소프트웨어 배포 방식
(2-1) 번들 소프트웨어
- PC출현 이전인 1970년대까지, 운영체제나 문서 작성기등이 내장되어 하드웨어와 함께 제공
(2-2) 패키지 소프트웨어
- PC출현 이후 패키지로 포장하여 판매 (표계산용 비지칼크, 오피스 프로그램)
(2-3) 웹 다운로드 방식
- 웹 다운로드 소프트웨어 배포 방식, 업그레이드 버전에 유리
- 최근에는 임대해서 비용을 줄임 : SaaS(Software as a Service)
(2-4) 맞춤형 방식
- ERP, SCM, MIS와 같은 정보시스템의 경우 기본 기능을 포함하는 공통 부분을 미리 개발하고
고객에 알맞은 부분을 추가하여 제공
(3) 응용 소프트웨어의 소유권/저작권에 따른 분류
(3-1) 상용 소프트웨어
(3-2) 쉐어에어(Shareware)
(3-3) 프리웨어(Freeware)
- 무료로 사용, 판매를 목적으로 재배포 금지
- 국내에서는 공개판
(3-4) 공개 소프트웨어(Public Domain)
- 누구나 무료로 사용, 아무런 제약 없이 복제하여 영리 목적으로 배포 가능
댓글남기기