소프트웨어 설계(1) 소프트웨어 분류 및 특성
소프트웨어 분류 및 특성
소프트웨어는 크게 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): 방법과 도구를 결합하여 (좀 더 향상된 프로그램)을 개발하기 위한 절차
Author And Source
이 문제에 관하여(소프트웨어 설계(1) 소프트웨어 분류 및 특성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@evencoding/소프트웨어-설계1-소프트웨어-분류-및-특성
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(소프트웨어 설계(1) 소프트웨어 분류 및 특성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@evencoding/소프트웨어-설계1-소프트웨어-분류-및-특성저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)