정보처리기사/소프트웨어 설계

소프트웨어 개발 방법론 (1)

Yonggyu 2023. 7. 4. 19:35
반응형

1. 소프트웨어

반응형

1) 상용 소프트웨어

특징

- 상업적 목적이나 판매를 목적으로 개발되는 소프트웨어이다.

- 소프트웨어 개발에 사용된 소스코드는 배포하지 않는다.

- 다양한 형태의 라이선스를 이용하여 배포되며 기술 지원을 보증한다.

 

분류체계 : 상용 소프트웨어는 범용과 특화 소프트웨어로 나뉜다.

- 산업 범용 소프트웨어 : 시스템SW, 미들웨어, 응용SW 등

- 산업 특화 소프트웨어 : 자동차, 항공, 교육, 물류 등의 산업 전용

 

2) 응용 소프트웨어

특징

- 특정 업무를 처리하기 위한 목적으로 작성된 소프트웨어이다.

- 애플리케이션, 응용 솔루션 및 서비스 등 다양한 이름으로 불린다.

 

분류체계 : 크게 6가지로 나뉜다.

- 기업용 소프트웨어 : 오피스웨어, ERP, SCM, BI, CRM 등

- 영상 처리 소프트웨어 : 영상 인식, 스트리밍, 영상 편집 등

- CG/VR 소프트웨어 : 3D 스캐닝과 프린팅, 모델링, 가상현실, 홀로그램 등

- 콘텐츠 배포 소프트웨어 : 콘텐츠 보호, 관리, 유통 등

- 자연어 처리 소프트웨어 : 정보 검색과 질의응답, 의사 결정 지원, 언어 분석 등

- 음성 처리 소프트웨어 : 음성 인식, 합성, 처리 등

 

3)  시스템 소프트웨어

정의

- 사용자가 손쉽고 효율적으로 컴퓨터 시스템을 사용하도록 돕는 소프트웨어이다.

- 일반적으로 하드웨어 제작사에서 제공되며 운영체제와도 같은 의미를 가진다.

 

컴퓨터 시스템은 기능별로 수행할 장치들이 존재한다.

- 입력(Input) : 시스템 처리가 필요한 데이터, 제어 요소 등을 전달

- 처리(Process) : 입력된 값을 정해진 방식에 맞게 처리하여 결과를 도출

- 출력(Output) : 처리 결과를 출력 장치(모니터, 프린터 등) 및 저장장치로 전달

- 제어(Control) : 데이터 처리를 위해 각 장치들의 기능 수행을 제어

- 피드백(Feedback) : 기능 수행이 잘못된 경우 적절한 처리과정을 다시 반복

 

계산기로 생각하면쉽다. 버튼(입력) 화면(출력)에 숫자 출력(제어)되고, 더하기를 누르면 덧셈(처리)결과값이 출력된다. 더하기를 계속 눌러도 더하기는 한번만되게(피드백)이된다.

 

시스템의 성능평가 기준

- 처리 능력(Throughput) : 단위 시간 내 작업 처리량

- 반환 시간(Turnaround Time) : 작업 의뢰부터 처리까지의 시간

- 사용 가능도(Availability) : 필요할 때 즉시 사용 가능한 정도 (가용성)

- 신뢰도(Realability) : 주어진 문제를 정확하게 해결하는 정도

# 작업을 빠르고 완벽하게 처리하여 결과를 돌출하더라도 3시간뒤부터 작업이 가능하면 사용 가능도가 떨어진다.

 

플랫폼 

- 특정 시스템을 바탕으로 제공되는 운영체제 및 운영환경을 뜻한다.

- 무엇을 기준으로 설정하느냐에 따라 플랫폼의 범위가 달라진다.

 

플랫폼의 성능을 측정하는 기준

- 가용성 : 필요할 때 즉시 사용 가능한 정도 (사용 가능도)

- 응답시간 : 명령에 반응하는 시간 (처리 시간과 다름)

- 정확성 : 처리 결과가 기대한 값과 비교해서 정확한지 측정

- 사용률 : 데이터 처리에 시스템 자원을 사용하는 정도 

 

4)  소프트웨어 공학

정의

- 최소의 비용과 개발 기간을 통해 높은 품질의 소프트웨어를 도출하기 위한 모든 수단과 도구들의 총징이다.

- 소프트웨어 개발의 품질과 생산성의 향상을 목표로 연구하는 학문이다.

- 얼마나 효율(시간, 인력 비용)적으로 소프트웨어를 개발하는가

 

목적

- 소프트웨어 개발에 필요한 비용과 기간의 예측

- 하드웨어에 대한 소프트웨어의 상대적 비용 절감

- 급속하게 발전하는 하드웨어, 소프트웨어 기술 반영

 

기본원칙

- 현대적인 프로그래밍 기술을 지속적으로 적용한다.

- 소프트웨어 품질에 대해 지속적인 검증을 시행한다.

- 소프트웨어 개발 단계별 산출물에 대한 명확한 기록을 유지한다.

 

4)  소프트웨어 개발 프레임워크

모듈 (Module)

- 프로그램을 기능별로 분할하여 재사용이 가능하게끔 부품화한 것이다.

- 개발자가 프로그램의 기본 틀을 제공하고, 모듈을 활용하여 기능을 구체화한다.

 

라이브러리 (Library)

- 툴킷이라고도 하며, 관련 있는 모듈들을 모아놓은 것이다.

- 라이브러리에 존재하는 각 모듈이 반드시 독립적인 것은 아니다.

  표준 라이브러리 : 프로그래밍 언어에 내장

  외부 라이브러리 : 별도의 설치를 통해 사용 가능

 

디자인 패턴 (Design Pattern)

- 특정 기능에 대한 문제해결을 위한 추상적인 가이드라인을 제시한 것이다.

- 프로그램의 세부적인 구현 방안을 위해 참조하는 해결 방식을 제시한 것이다.

 

중요*

소프트웨어 개발 프레임워크 (FrameWork)

- 디자인 패턴에 모듈의 장점 및 기능을 결합하여 실제적인 개발의 틀(Frame)을 제공한다.

- 프레임워크가 프로그램의 기본 튼을 제공하고, 개발자가 기능을 구체화하는 제어의 역 흐름이 발생한다.

* 제어의 역흐름은 모듈과 개발자가 하는일을 프레임워크가 반대로 하게만든다.

- 프로그램의 기반, 구조를 잡아주는 코드의 모임이며 자연스럽게 특정 디자인패턴을 유도한다.

- 이미 검증된 프레임워크를 사용하므로써 품질, 예산, 유지보수에 이점이 있다.

- 프로그램 구성의 복잡도가 감소하여 상호 운용성과 개발 및 변경이 용이해진다.

 

5) 소프트웨어 아키텍처

- 다수의 프레임워크를 체계적으로 구성, 설명하는 구조체이다.

- 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙을 제공한다.

 

5) 컴포넌트

- 모듈의 형태로 재사용 가능한 확장된 소프트웨어 블록이다.

- 일반적인 코딩을 벗어나 마치 레고(블럭)을 쌓아 올리듯이 개발하는 기법이다.

- 프레임워크 및 아키텍처가 적용되어 있어 안정적이다.

 

6) 재사용 가능한 소프트웨어 요소

- 소프트웨어의 부분 또는 전체 영역을 모두 재사용 요소로 볼 수 있다.

- 부분적인 코드 뿐만아니라 응용된 지식과 데이터 구조도 재사용 가능한 요소에 포함된다.

- 개발 이후의 테스트 계획, 문서화 방법 및 절차 등도 재사용 가능 요소이다.

 

7) 소프트웨어 재사용 방법

- 소프트웨어 재사용 방법은 합성 중심과 생성 중심 방식으로 나뉜다.

합성 중심 : 모듈(블록)을 조립하여 소프트웨어를 완성시키는 블록 구성 방식

생성 중심 : 추상적인 명세를 구체화하여 소프트웨어를 완성 시키는 패턴 구성 방식

 

 

다음글 참고

https://yonggyu-memo.tistory.com/13

 

728x90
반응형