소프트웨어 설계(1) 소프트웨어 분류 및 특성

14235 단어 CSpart1CS

소프트웨어 분류 및 특성

소프트웨어는 크게 7가지로 분류할 수 있다

  • 상용 소프트웨어
  • 시스템 소프트웨어
  • 플렛폼 (Platform)
  • 프레임워크 (Framwork)
  • 기업용 소프트웨어
  • 컴포넌트 (Component)
  • 소프트웨어 공학 (SE: Software Engineering)

  • 상용 소프트웨어

    상용 소프트웨어의 개념

  • (---)이나 (---)를 목적으로 생산, 유통된다
  • (---)를 위한 (---)도 포함될 수 있다
  • 대부분의 경우 (---)는 제공하지 않고, (---)만 제공하기 때문에 (---)이나 (---) 등이 불가능하다
  • 상용 소프트웨어의 구분

    산업 범용 소프트웨어

  • 시스템 소프트웨어: 운영체제, 데이터관리, 스토로지 소프트웨어, 소프트웨어 공학 도구, *가상화 소프트웨어, 시스템 보안
  • 미들웨어: 분산 소프트웨어, IT 자산 관리, 서비스 플렛폼, 네트워크 보안
  • 응용 소프트웨어: 영상처리, CG / VR, 콘텐츠 배포, 자연언어 처리, 음성 처리, 기업용 소프트웨어
  • *가상화: 물리적인 컴퓨터 자원의 상호 작용이나 운영 방식을 사용자에게 감추는 기술

    *원시코드: C언어나 Java 언어 같은 프로그램 언어로 작성된 프로그램. 대부분 영문으로 구성된 명령어의 집합으로, 컴퓨터가 이해할 수 있는 0과 1로 구성된 기계어로 변환되어야만 실행된다. 워드, 엑셀, 게임 프로그램은 기계어로 구성된 프로그램으로 제공되고 원시 코드는 제공되지 않는다


    시스템 소프트웨어

    시스템(System)의 정의

  • 하나의 (---)을 가지고 있는 구성 요소들을 (---)해 놓은 유기적인 집합체
  • 시스템 소프트웨어의 기본요소

  • 입력: (---), (---), (---)를 시스템에 투입하는 요소
  • 출력: (---)를 시스템에서 출력하는 요소
  • 처리: (---)를 (---)에 따라 변환 및 가공하는 요소
  • 제어: 시스템의 (---)들이 각 과정을 올바르게 행하는지 감독하는 요소
  • 피드백: (---)를 측정, 파악하여 목표에 도달되었는거를 검사하며 만일 불충분할 경우 (---)을 위해 다시 입력하는 요소
  • 피드백의 종류
    * 전수 피드백: 출력되는 신호를 전부 피드백하는 방법
    * 부분 피드백: 지정된 일부의 내용만 제한된 시간 내에 피드백하는 방법
    * 전략적 피드백: 핵심적인 단위의 내용만을 선택하여 지정된대로 피드백하는 방법
    * 기호 피드백: 기호가 붙어 있는 사항에 대해서만 피드백하는 방법

    시스템 소프트웨어의 개념

  • (---)을 실행하기 위한 (---)을 제공하고 컴퓨터 (---)를 동작시키고 (---)하는 소프트웨어
  • (---) 관리, (---) 관리, (---)들을 관리한다
  • 컴퓨터 사용자가 (---)나 (---)을 알지 못해도 (---) 지원해 준다

  • 플렛폼 (Platform)

    플렛폼의 개념

  • 많은 응용 프로그램들을 (---) 사용할 수 있도록 지원해주는 (---)
  • (---)을 실행하기 위해 사용하는 (---)와 (---)의 결합
  • (---)과 (---)을 편안하게 할 수 있도록 지원해 준다
  • 동일한 플렛폼에서 개발된 소프트웨어는 (---) 될 수 있다
  • 현행 시스템을 분석하기 위해서는 현재 시스템의 (---)인 (---) 및 (---)을 상세하게 분석해야 한다
  • 플렛폼의 기능

  • 소프트웨어의 (---) 및 (---)을 절약할 수 있다
  • (---) 간의 공통 그룹을 형성하여 (---)를 최대화할 수 있다
  • 소프트웨어 개발의 (---)을 향상 시킬 수 있다
  • 플렛폼의 성능 특성 분석 항목

  • (---): 정보 시스템은 적절한 방법으로 정보를 요구하는 사용자에게 정보 서비스를 제공해야 한다
  • (---): 명령이 주어지고, 반응하기까지 걸린 시간
  • (---): 올바른 값에 근접했는가를 측정하는 정도
  • (---): 하드웨어 자원, 소프르웨어 자원, 네트워크 자원등을 일정 시간 사용하는 정도

  • 프레임워크 (Framwork)

    프레임워크의 정의

  • Frame + Work 라는 두 단어가 합쳐진 것으로, '(---)'라는 의미
  • (---)하기 위해 복잡하게 연결되어 있으며, (---)하기 위한 구조이자 (---)에 있어 하나의 뼈대 역할을 한다
  • 소프트웨어 프레임워크

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

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

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

  • 기업용 소프트웨어

    기업용 소프트웨어의 종류

  • 오피스웨어 (Office Ware)
  • ERP (Enterprise Resource Planning)
  • SCM (Supply Chain Management)
  • BI (Business Intelligence)
  • CRM (Customer Relationship Management)
  • 오피스웨어 (Office Ware)

  • (---)에서 (---) 소프트웨어
  • 워드프로세서, 프레젠테이션, 스프레드시트 등의 업무용 (---)와 (---)를 포함하는 기업용 소프트웨어
  • (---)을 지원
  • ERP (Enterprise Resource Planning)

  • (---)한 (---)을 위한 소프트웨어
  • 경영 활동 프로세서들을 통합적으로 연계해서 관리하는 소프트웨어
  • 기업에서 발생하는 정보들을 서로 (---)하고 (---)의 생성과 (---)한 (---)을 도와줌으로써 (---)으로 자원을 관리
  • SCM (Supply Chain Management)

  • (---)를 지원하는 소프트웨어
  • 부품 업자로부터 (---), (---), (---)에 이르는 물류의 흐름을 하나의 가치 사슬 관점에서 파악하고, 필요한 정보가 원할히 흐르도록 지원하는 기술
  • BI (Business Intelligence)

  • 구성원에게 적시에 (---)을 지원하는 소프트웨어
  • 기업에서 데이터를 (---), (---), (---)하고 (---)하여 각 조직의 구성원에게 적시에 (---)을 할 수 있도록 지원하는 기술
  • CRM (Customer Relationship Management)

  • (---)의 특성에 기초한 마켓팅 활동을 지원하는 소프트웨어
  • 신규 고객을 (---)하거나 기존 고객 (---) 및 (---) 증대를 목적으로 고객 관련 자료를 분석하여 (---)의 특성에 기초한 마케팅 활동을 지원하는 기술

  • 컴포넌트 (Component)

    컴포넌트의 개념

  • 부품화된 프로그램을 (a), (a)들의 집합을 (b)
  • (b)의 집단을 컴포넌트라고 하며, 컴포넌트는 (b)를 기능별로 분류하여 지원한다
  • 컴포넌트는 (---)으로 사용될 수 있다
  • 컴포넌트의 설계

    컴포넌트 설계 시 (---)에 의한 설계를 따를 경우에 다음의 조건들이 포함되어야 한다
  • 컴포넌트의 (---) 사용 전에 참이 되어야 할 (---) 조건
  • 사용 후 만족되야하 할 (---) 조건
  • (---)이 실행되는 동안 항상 만족 되어야 할 (---) 조건
  • CBD (Component Based Development)

  • 컴포넌트 제작 기법을 통해 (---)을 향상시킨다
  • (---) 단축으로 (---)과 (---)을 높일 수 있다
  • (---)을 최소화 할 수 있다
  • (---)을 신속하게 구축, 새로운 기능 (---) 및 (---)을 용이하게 한다
  • 독립적인 컴포넌트 단위의 관리로 (---)을 최소화 할 수 있다
  • CBD 산출물 목록

  • 분석: 사용자 요구사항 정의서, 유스케이스 명세서, 요구사항 추적표
  • 설계: 클래스 설계서, 사용자 인터페이스 설계서, 컴포넌트 설계서, 인터페이스 설계서, 아키텍처 설계서, 총괄시험 계획서, 시스템 시험 시나리오, 엔티티 관계 모형 기술서, DB 설계서, 통합 시험 시나리오, 단위 시험 케이스, 데이터 전환 및 초기 데이터 설계서
  • 구현: 프로그램 코드, 단위 시험 결과서, DB 테이블
  • 시험: 통합 시험 결과서, 시스템 시험 결과서, 사용자 지침서, 운영자 지침서, 시스템 설치 결과서, 인수 시험 시나리오, 인수 시험 결과서

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

    소프트웨어 공학 정의 및 목표

  • 소프트웨어의 (---), (---), (---) 및 (---)에 대한 체계적인 접근 방법이다
  • 소프트웨어 제품의 (---)을 향상시키고 소프트웨어 (---)과 (---)를 증대시키는 것이 목적이다
  • 궁극적 목표는 (---)으로 계획된 일정보다 가능한 빠른 시일 내에 소프트웨어를 개발하는 것이다
  • (---)있는 소프트웨어를 (---)으로 획득하기 위해 공학적 원리를 정립하고 이를 이용하는 것이다
  • 소프트웨어 공학의 개념

  • (---)으로 (---)의 소프트웨어를 개발하기 위한 (---) 및 (---)
  • 소프트웨어 위기를 극복하기 위해 (---)과 (---)을 목적으로 연구하는 학문
  • 소프트웨어 공학의 기본 원칙

  • (---)을 적용한다
  • (---)을 시행한다
  • (---)을 유지한다
  • (---)을 개발한다
  • 소프트웨어 공학의 등장 배경

  • 소트프웨어 개발에 필요한 (---)과 (---), (---)이 부족해서
  • 개발된 소프트웨어의 (---)이 부족해서
  • (---)에 대한 소프트웨어의 (---)이 커져서
  • (---)의 역할이 증대되어서
  • (---)한 소프트웨어에 대한 수요가 증가해서
  • (---)에 의존한 시스템이 개발되어서
  • 소프트웨어 공학의 도입

  • 소프트웨어 개발 과정에 (---)을 시도하여 (---)과 (---)을 높이기 위한 기법과 원리를 다루기 위해
  • 방법(Method): (---)하기 위한 방법을 제공
  • 도구(Tool): 방법을 지원하기 위한 (---)를 지원
  • 절차(Procedure): 방법과 도구를 결합하여 (---)을 개발하기 위한 절차

  • 빈칸

    상용 소프트웨어의 개념

  • (상업용 목적)이나 (판매)를 목적으로 생산, 유통된다
  • (홍보)를 위한 (무료 소프트웨어)도 포함될 수 있다
  • 대부분의 경우 (원시코드)는 제공하지 않고, (실행코드(기계어로 된 파일))만 제공하기 때문에 (수정)이나 (추가) 등이 불가능하다

  • 시스템 소프트웨어의 기본요소

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

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

  • 플렛폼의 개념

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

  • 소프트웨어의 (개발) 및 (운영비용)을 절약할 수 있다
  • (동일한 플렛폼) 간의 공통 그룹을 형성하여 (네트워크의 효과)를 최대화할 수 있다
  • 소프트웨어 개발의 (생산성)을 향상 시킬 수 있다
  • 플렛폼의 성능 특성 분석 항목

  • (가용성(Availability)): 정보 시스템은 적절한 방법으로 정보를 요구하는 사용자에게 정보 서비스를 제공해야 한다
  • (응답시간(Response Time)): 명령이 주어지고, 반응하기까지 걸린 시간
  • (정확성(Accuracy)): 올바른 값에 근접했는가를 측정하는 정도
  • (사용률(Utilization)): 하드웨어 자원, 소프르웨어 자원, 네트워크 자원등을 일정 시간 사용하는 정도

  • 프레임워크의 정의

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

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

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

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

  • 오피스웨어 (Office Ware)

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

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

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

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

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

  • 컴포넌트의 개념

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

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

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

  • 소프트웨어 공학 정의 및 목표

  • 소프트웨어의 (개발), (운용), (유지보수) 및 (파기)에 대한 체계적인 접근 방법이다
  • 소프트웨어 제품의 (품질)을 향상시키고 소프트웨어 (생상선)과 (작업 만족도)를 증대시키는 것이 목적이다
  • 궁극적 목표는 (최소의 비용)으로 계획된 일정보다 가능한 빠른 시일 내에 소프트웨어를 개발하는 것이다
  • (신뢰성)있는 소프트웨어를 (경제적인 비용)으로 획득하기 위해 공학적 원리를 정립하고 이를 이용하는 것이다
  • 소프트웨어 공학의 개념

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

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

  • 소트프웨어 개발에 필요한 (시간)과 (비용), (예측력)이 부족해서
  • 개발된 소프트웨어의 (품질 수준)이 부족해서
  • (하드웨어)에 대한 소프트웨어의 (상대적 비용)이 커져서
  • (유지보수)의 역할이 증대되어서
  • (크고 복잡)한 소프트웨어에 대한 수요가 증가해서
  • (특정 개인)에 의존한 시스템이 개발되어서
  • 소프트웨어 공학의 도입

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