[정보처리기사] Part01 소프트웨어 설계 - Section01

J·2022년 4월 5일
1

정보처리기사

목록 보기
1/2
post-thumbnail

[Section 01] 소프트웨어 분류 및 특성

01 상용 소프트웨어

1) 개념

  • 상업적, 판매 목적으로 생산
  • 오픈소스(홍보 목적의 무료 소프트웨어)도 이에 포함됨.
  • 원시코드(원시프로그램, 소스코드)는 제공하지 않으며, 실행코드(기계어로 된 파일)만 제공하므로 수정이나 추가 등이 불가능함.

2) 상용 소프트웨어의 구분

3) 상용 소프트웨어의 분류

① 상용 소프트웨어

  • 산업 범용 소프트웨어 : 시스템S/W, 미들웨어, 응용S/W
  • 산업 특화 소프트웨어 : 자동차, 항공, 패션 의류, 조선, 건설, 농업, 의료, 국방, 게임, 공공, 교육, 물류, 인터넷 서비스

② 산업 범용 소프트웨어

  • 시스템S/W : 운영체제, 데이터관리, 스토로지 소프트웨어, 소프트웨어 공학 도구, 가상화 소프트웨어, 시스템 보안
  • 미들웨어 : 분산 소프트웨어, IT 자원 관리, 서비스 플랫폼, 네트워크 보안
  • 응용S/W : 영상처리, CG/VR, 콘텐츠 배포, 자연언어 처리, 음성 처리, 기업용 소프트웨어

02 시스템 소프트웨어

1) 시스템(System)

① 시스템의 정의

  • 하나의 공통적인 목적을 가지고 있는 구성 요소들을 상호 결합해 놓은 유기적인 집합체이다.

② 시스템의 기본 요소

  • 입력(Input) : 처리 방법, 제어 조건, 처리할 데이터를 시스템에 투입하는 요소.
  • 출력(Output) : 처리된 결과를 시스템에서 출력하는 요소이다.
  • 처리(Process) : 입력된 자료를 처리 조건에 따라 변환가공하는 요소이다.
  • 제어(Control) : 시스템의 기본 요소들이 각 과정을 올바르게 행하는지 감독하는 요소이다.
  • 피드백(Feedback) : 처리된 결과를 측정, 파악하여 목표에 도달되었는가를 검사하며 만일 불충분할 경우 목표 달성을 위해 다시 입력하는 요소이다.

2) 시스템 소프트웨어의 개념

  • 응용 프로그램을 실행하기 위한 환경을 제공하고 컴퓨터 하드웨어를 동작시키고 관리하는 소프트웨어이다.
  • CPU 관리, 메모리 관리, 디스크 파일들을 관리하는 소프트웨어이다.
  • 컴퓨터 사용자가 하드웨어의 구조나 특성을 알지 못해도 컴퓨터를 이용할 수 있도록 지원해 준다.

03 플랫폼(Platform)

1) 플랫폼의 개념

  • 응용 프로그램들을 쉽고 편리하게 사용할 수 있도록 지원해주는 하드웨어나 소프트웨어 환경.
  • 응용 프로그램을 실행하기 위해 사용하는 하드웨어와 소프트웨어의 결합.
  • 플랫폼은 소프트웨어 개발과 운영을 편안하게 할 수 있도록 지원해 준다.
  • 동일한 플랫폼에서 개발된 소프트웨어는 언제, 어디서나 손쉽게 실행될 수 있다.
  • 현행 시스템을 분석하기 위해서는 현재 시스템의 구성 요소이 소프트웨어 및 하드웨어 플랫폼을 상세하게 분석해야 한다.

2) 플랫폼의 기능

  • 소프트웨어의 개발 및 운영비용을 절약.
  • 동일한 플랫폼 간의 공통그룹을 형성하여 네트워크의 효과를 최대화 함.
  • 소프트웨어 개발의 생산성을 향상시킴.

3) 플랫폼의 성능 특성 분석 항목

① 가용성(Availability) : 정보 시스템은 적절한 방법으로 정보를 요구하는 사용자에게 정보 서비스를 제공해야 한다.
② 응답 시간(Response Time) : 명령이 주어지고, 반응하기까지 걸린 시간으로 반응 시간이라고도 함.
③ 정확성(Accuracy) : 플랫폼에서 처리된 결과가 얼마나 올바른 값에 근접했는가를 측정하는 정도.
④ 사용률(Utilization) : 하드웨어 자원, 소프트웨어 자원, 네트워크 자원 등을 일정 시간 사용하는 정도를 말함.

04 프레임워크(Framework)

1) 프레임워크의 정의

  • 프레임워크는 Frame+Work 라는 두 단어가 합쳐진 것으로, '일정하게 짜여진 틀(뼈대)에서 일한다'라는 의미로 해석된다.
  • 프레임워크는 목적을 달성하기 위해 복잡하게 연결되어 있으며, 문제를 해결하기 위한 구조이자 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.

2) 소프트웨어 프레임워크

  • 응용 프로그램 개발이나 문제 해결을 수월하게 하기 위해 설계구현재사용이 가능한 형태로 제공하는 소프트웨어 환경을 말함.
  • 효율적인 정보 시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스, 설정 정보 등의 집합으로써 재사용이 가능하도록 소프트웨어 구성에 필요한 기본 뼈대를 제공한다.
  • 다양한 소프트웨어 개발을 가능하게 하는 여러 형태의 컴포넌트들을 말한다.
  • 완전한 제품이 아니며 개발자의 코드나 사용자 데이터가 필요하다.

3) 소프트웨어 프레임워크의 특징

① 모듈화(Modularity) : 전체 프로그램을 한 번에 설계하지 않고 단일 기능을 갖출 수 있도록 부분적으로 묶어서 처리하는 기술이다.
② 재사용성(Reusability) : 전체나 일부 소프트웨어가 다른 응용 목적으로 사용될 수 있는 정도이다.
③ 확장성(Extensibility) : 추가적인 설계 없이 확장이 얼마나 쉽고 가능한가에 대한 용이성이다.
④ 제어의 역 흐름(Inversion of Control) : 소프트웨어 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성(Polymorphism)을 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 소프트웨어 프레임워크부터 애플리케이션으로 거꾸로 흐르게 한다.

4) 프레임워크를 적용할 경우 기대 효과

① 개발 용이성 : 공통적으로 필요한 기능들을 미리 제공 받아 소프트웨어를 개발함으로서 빠른 시간에 개발할 수 있다.
② 품질 보증 : 오류 발생 가능성을 최소화할 수 있으므로 품질이 향상된다.
③ 변경 용이성 : 개발자가 새로운 기능을 추가하거나 변경하더라도 부담 없이 변경할 수 있도록 해준다.
④ 유지보수 용이성 : 프레임워크로 적용된 소프트웨어는 보다 체계적이고 안정적이여서 변경이 되더라도 위험 부담을 줄일 수 있다.
⑤ 재사용성 향상 : 프레임워크 기반으로 개발된 컴포넌트들을 타 사업에서 쉽게 사용할 수 있어 재사용성이 극대화될 수 있다(중복 예산 절감).
⑥ 표준화율 향상 : 정형화된 개발 기술과 방법을 제공함으로써 설계, 개발 등 시스템 구축 전반에 걸친 표준을 제시할 수 있다.
⑦ 상호 운용성 향상 : 전자 정부 표준 프레임워크 기반으로 개발된 시스템 간에 컴포넌트 연계가 용이하여 상호운용성이 극대화될 수 있다.

05 기업용 소프트웨어

1) 오피스웨어(OfficeWare)

  • 회사나 단체에서 업무에 사용되는 소프트웨어이다.
  • 워드프로세서, 프레젠테이션, 스프레드시트 등의 업무용 오피스 소프트웨어와 그룹웨어를 포함하는 기업용 소프트웨어이다.
  • 조직의 업무 활동을 지원한다.

2) ERP(Enterprise Resource Planning)

  • 신속한 의사 결정을 위한 소프트웨어이다.
  • 경영 활동 프로세스들을 통합적으로 연계해서 관리하는 소프트웨어이다.
  • 기업에서 발생하는 정보들을 서로 공유하고 새로운 정보의 생성과 신속한 의사 결정을 도와줌으로써 전사적(회사 전체 차원)으로 자원을 관리한다.

3) SCM(Supply Chain Management)

  • 부품 공급자를 지원하는 소프트웨어이다.
  • 부품업자로부터 생산자, 배포자, 고객에 이르는 물류의 흐름을 하나의 가치 사슬 관점에서 파악하고, 필요한 정보가 원활히 흐르도록 지원하는 기술이다.

4) BI(Buisness Intelligence)

  • 구성원에게 적시에 의사결정을 지원하는 소프트웨어이다.
  • 기업에서 데이터를 수집, 정리, 분석하고 활용하여 각 조직의 구성원에게 적시에 의사 결정을 할 수 있도록 지원하는 기술이다.

5) CRM(Customer Relationship Management)

  • 고객 특성에 기초한 마케팅 활동을 지원하는 소프트웨어이다.
  • 신규 고객을 획득하거나 기존 고객 유지 및 수익성 증대를 목적으로 고객 관련 자료를 분석하여 고객 특성에 기초한 마케팅 활동을 지원하는 기술이다.

06 컴포넌트(Component)

1) 컴포넌트의 개념

  • 부품화된 프로그램을 모듈(Module), 모듈들의 집합을 라이브러리(Library)라고 한다.
  • 라이브러리의 집단을 컴포넌트라고 하며 컴포너트는 라이브러리를 기능별로 분류하여 지원한다.
  • 컴포넌트는 독립적으로 사용될 수 있다.

2) 컴포넌트의 설계

  • 컴포넌트 설계 시 협약(Contract)에 의한 설계를 따를 경우에 다음의 조건들이 포함되어야 한다.
    • 컴포넌트의 오퍼레이션 사용 전에 참이 되어야 할 선행 조건
    • 사용 후 만족되어야 할 결과 조건
    • 오퍼레이션이 실행되는 동안 항상 만족되어야 할 불변 조건

3) CBD(Component Based Development)

  • CBD는 컴포넌트 제작 기법을 통해 재사용성을 향상시킨다.
  • 개발 기간 단축으로 생산성과 품질을 높일 수 있다.
  • 유지보수 비용을 최소화할 수 있다.
  • 시스템을 신속하게 구축, 새로운 기능 추가 및 확장을 용이하게 한다.
  • CBD는 독립적인 컴포넌트 단위의 관리로 복잡성을 최소화할 수 있다.

07 소프트웨어 공학(SE: Software Engineering)

1) 소프트웨어 공학의 개념

  • 최소의 비용으로 높은 품질의 소프트웨어를 개발하기 위한 모든 도구 및 방법론을 총칭한다.
  • 소프트웨어 위기를 극복하기 위해 품질과 생산성 향상을 목적으로 연구하는 학문이다.

2) 소프트웨어 공학의 기본 원칙

  • 현대적인 프로그래밍 기술을 적용한다.
  • 지속적인 검증을 시행한다.
  • 결과에 관한 명확한 기록을 유지한다.
  • 품질 높은 소프트웨어 상품을 개발한다.

3) 소프트웨어 공학의 등장 배경

  • 소프트웨어 개발에 필요한 시간과 비용 예측력이 부족해서
  • 개발된 소프트웨어의 품질 수준이 부족해서
  • 하드웨어에 대한 소프트웨어의 상대적 비용이 커져서
  • 유지보수의 역할이 증대되어서
  • 하드웨어 및 소프트웨어 기술의 급속한 발전 때문에
  • 크고 복잡한 소프트웨어에 대한 수요가 증가해서
  • 특정 개인에 의존한 시스템이 개발되어서

4) 소프트웨어 공학의 도입

  • 소프트웨어 개발 과정에 공학적인 접근을 시도하여 생산성과 신뢰성을 높이기 위한 기법과 원리를 다루기 위해 도입하게 된다.
  • 방법(Method) : 소프트웨어를 구축하기 위한 방법을 제공한다.
  • 도구(Tool) : 방법을 지원하기 위한 자동화된 도구를 지원한다.
  • 절차(Procedure) : 방법과 도구를 결합하여 좀 더 향상된 프로그램을 개발하기 위한 절차이다.

0개의 댓글