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

12857 단어 CSpart1CS

소프트웨어 개발 환경

    운영체제 (OS: Operating System)
  • 운영체제의 정의
  • 운영체제의 5가지 종류와 특성
  • 운영체제 분석 시의 고려사항 5개
  • 운영체제 현황
    CPU (중앙 처리 장치)
  • CISC (Complex Instruction Set Computer) 설계 방식
  • RISC (Reduced Instruction Set Computer) 설계 방식
    DBMS (DataBase Management System)
  • DBMS 의 정의
  • DBMS 의 종류 7가지
  • DBMS 분식 시 고려사항 5가지
    미들웨어 (Middleware)
  • 미들웨어의 정의
  • 미들웨어의 종류 6가지
    WAS (Web Application Server)
  • WAS 의 개념
  • WAS 의 종류 7가지
  • WAS 분석 시 고려사항 4가지
    오픈소스 (Open Source)
  • 오픈소스의 정의
  • 오픈소스 분식 시 고려사항 3가지

1) 운영체제 (OS: Operating System)

① 운영체제의 정의

하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 시스템 소프트웨어

② 운영체제의 종류 5가지

  • Windows: 중소 규모 서버, 개인용 PC, Tablet PC, Embedded System 등에서 사용한다. 유지 및 관리 비용 측면에서는 Windows 기반 시스템이 강점을 가진다

  • UNIX: 대용량 처리, 안정성이 요구되는 Server, *NAS, *Wordstation 등에서 사용한다. 신뢰할 수 있는 대용량 처리를 위해서는 UNIX 기반 시스템이 선호되고 있다

  • Linux: 중대 규모 서버 등에서 사용한다. 일반적으로 Linux 기반 시스템이 하드웨어 및 소프트웨어 소요 비용이 가장 적게 소요된다

  • iOS: 애플의 운영체제로 스마트 폰, 태블릿 PC 등에서 사용한다

  • Android: 구글의 개방형 운영체제로 스마트 폰, 태블릿 PC 등에서 사용한다
  • NAS (Network Attached Storage)

    서버와 저장 장치를 네트워크로 연결하는 방식으로, 구성 설정이 간편하다

    Workstation

    개인이나 소수의 사람이 특수 분야에 사용하는 고성능의 컴퓨터

    ③ 운영체제 분석 시 고려사항

  • 신뢰도: 오랜 시간 시스템을 운영할 때 운영체제 고유의 장애 발생 가능성이 있는지 확인한다

  • 성능: 다수의 동시 사용자 요청 처리가 가능한지 확인한다. 대량 파일 작업 처리가 가능한지 확인한다

  • 기술 지원: 공급 *벤더(Vender)들의 안정적인 기술 지원이 있는지 확인한다

  • 주변 기기: 다수의 주변 기기 지원 여부를 확인한다

  • 구축 비용: 지원 가능한 하드웨어 비용, 설치할 애플리케이션의 라이선스 정책 및 비용이 어느 정도인지 확인한다. *TCO 를 확인한다
  • 벤더 (Vender)

    컴퓨터나 소프트웨어 제품을 판매하거나 공급하는 다품종 소량 도매업

    TCO (Total Cost of Ownership)

    컴퓨터 구입 비용, 업그레이드 비용, 유지보수 비용, 소프트웨어 비용 등 컴퓨터 시스템을 구축하고 사용하는 데 드는 모든 비용을 의미

    ④ 운영체제 현황

  • 32bit 운영체제에서는 4GB 메모리까지 액세스 가능(사용자 메모리는 2GB)하고, 64bit 운영체제에서는 4GB 이상의 메모리까지 액세스 가능하다

  • CISC 설계 방식이 적용된 인텔의 x86 아키텍처 기반 칩을 사용하고 있는 하드웨어는 Windows 나 Linux 를 운영체제로 설치할 수 있으며, RISC 설계 방식이 적용된 칩들은 UNIX 운영체제를 설치한다

  • HP 와 Intel 사가 협력해서 만든 (IA-64) 칩은 여러 운영체제를 지원한다

  • RISC 설계 방식이 적용된 ARM 칩은 스마트 폰이나 태블릿에 주로 채택되고 있으며, iOS, Android 등의 운영체제를 지원하고 있다
  • 2) CPU (중앙 처리 장치)

    ① CISC (Complex Instruction Set Computer)

  • 복잡하고 많은 종류의 *명령어와 *주소 지정 모드를 사용한다
  • 가변 길이 명령어 형식이다
  • 100~250개 정도의 많은 명령어를 가지고 있어 설계가 어렵다
  • 마이크로 프로그래밍(소프트웨어적) 제어 방식이다
  • 명령어가 소프트웨어적이므로 호환성이 좋다
  • 명령어를 해석한 후 명령어를 실행한다
  • *컴파일 과정이 쉽고, 호환성이 좋다는 장점이 있지만, 속도가 느리다는 단점이 있다
  • 인텔(Intel)사의 CPU에 주로 사용되었다
  • x86

    컴퓨터 하드웨어 제작 회사인 Intel 사에서 개발한 마이크로프로세서 모델 중의 하나

    IA (Itanium Architecture)

    아이테니엄 아키텍처

    명령어 (Instruction)

    CPU 성능을 좌우하는 것은 CPU 안에 내장된 명령어의 개수와 명령어 형식이다. CPU 의 성능을 나타내는 단위 중 1MIPS 는 1초당 100만 개 단위의 명령어를 연산하는 것을 의미

    주소 지정 모드

    CPU 가 주기억 장치와 각종 주변 장치를 접근하기 위하여 지정하는 위치(주소) 값의 형태

    컴파일 (Compile)

    고급화된 프로그램 언어를 컴퓨터가 인식할 수 있는 기계어로 변형하는 과정

    ② RISC (Reduce Instruction Set Computer)

  • 간단하고 적은 종류의 명령어와 적은 수의 주소 지정 모드를 사용
  • 고정 길이 명령어 형식
  • CISC 에 비해 명령어 수가 적다
  • 하드웨어(논리 회로를 이용한 하드웨어)적 제어 방식이다
  • 효율적인 파이프라이닝 구조를 사용
  • 명령어의 길이가 미리 정해져 있으므로 해석 속도가 빠르다
  • 작고 빠른 명령어 사용을 위해 많은 수의 범용 *레지스터가 사용되며, 처리 속도가 빠르고 하드웨어 구조가 간단해진다
  • 효율성이 떨어지고 전력 소모가 적다
  • 처리 비트 단위가 변하거나 *프로세서의 구조가 조금만 바뀌어도 하위 프로세서와의 호환성이 떨어진다
  • 고성능의 워크스테이션이나 그래픽용 컴퓨터에서 주로 사용된다
  • 레지스터 (Register)

    CPU 내에 존재하는 고속의 메모리

    프로세서 = CPU, 처리기

    3) DBMS (DataBase Management System)

    ① DBMS 의 정의

  • 대량의 데이터를 저장하고 있는 데이터베이스를 생성, 조회, 변경 등의 관리를 하는 프로그램
  • 사용자, 다른 애플리케이션, 데이터베이스와 상호 작용하여 데이터를 저장하고 분석하기 위한 애플리케이션
  • ② DBMS 의 종류 7가지

  • Oracle: 대규모 데이터 처리, 안정적인 처리가 된다

  • IBM DB2: 대규모 데이터 처리, 안정적인 처리가 된다

  • SQL Server: 중소 규모 데이터 처리, 안정적인 처리가 된다

  • MySQL: 오픈소스에서 주로 사용되는 RDBMS

  • SQLite: 스마트폰, 태블릿 PC 등의 Embedded 데이터베이스 용도로 사용

  • MongoDB: 오픈소스이며 *NoSQL DBMS

  • Redis: 오프소스이며 *키-값(Key-Value) DBMS
  • NoSQL DBMS

    기존의 DBMS가 정형화되고 규칙적인 데이터를 처리하는 DBMS 라면 NoSQL DBMS 는 새로운 형태의 처리 방식(단순성 추구, 속도 향상, 다양한 확장성 등)으로 기존 형태와는 다른 형태의 DBMS

    키-값(Key-Value) DBMS

    NoSQL DBMS 의 가장 대표적인 방식으로 이전에 사용했던 자료의 키(Key)를 캐시(Cache)에 보관하여 사용하므로 신속한 데이터 처리를 할 수 있다

    ③ DBMS 분석 시 고려사항 5개

  • 가용성: 오랜 시간 시스템을 운영할 때 장애 발생 가능성이 있는지 확인한다

  • 성능: 대규모 데이터를 처리할 만한 성능인지 확인한다. 다양한 튜닝 옵션을 지원하는지 확인한다

  • 기술 지원: 공급 벤더들의 안정적인 기술을 지원하는지 확인한다. 오픈소스 여부를 확인한다

  • 상호 호환성: 설치 가능한 운영체제 종류를 확인한다. 다양한 운영체제에서 지원되는 *JDBC, *ODBC 를 확인한다

  • 구축 비용: 라이선스 정책 및 비용을 확인한다. 유지 및 관리 비용을 확인한다. 총 소요 비용(TCO)을 확인한다
  • JDBC (Java DataBase Conectivity)

    Java 언어 안에서 데이터베이스를 연결해주는 프로그램. Java 에서 SQL을 실행하기 위한 Java API(Application Programming Interface)

    ODBC (Open DataBase Connectivity)

    Microsoft 에서 데이터베이스를 연결해주는 표준 프로그램. ODBC 에서 정해준 순서로 사용하면 어떠한 데이터베이스 관리 시스템을 사용하더라도 연결할 수 있다

    4) 미들웨어 (Middleware)

    ① 미들웨어의 정의

  • 운영체제와 소프트웨어 애플리케이션 사이에 위치하는 미들웨어는 소프트웨어 애플리케이션에게 운영체제가 제공하는 서비스를 추가 및 확장하여 제공하는 컴퓨터 소프트웨어
  • 클라이언트와 서버 간 통신을 담당하는 시스템 소프트웨어
  • 분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신 환경 등을 연결하여 응용 프로그램과 운영 환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어
  • ② 미들웨어의 종류 6가지

  • DBMS (DataBase Management System)
    - 데이터베이스 벤더에서 제공하는 클라이언트에서 데이터베이스와 연결하기 위한 미들웨어로, 이 제품을 사용하여 시스템을 구축하는 경우 보통 2-티어(Tier) 아키텍처라고 한다

  • RPC (Remote Procedure Call)
    - 애플리케이션의 프로시저를 사용하여 원격 프로시저를 마치 *로컬 프로시저처럼 호출하는 방식의 미들웨어

  • MOM (Message Oriented Middleware)
    - 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어로 이 기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용된다

  • TP-Monitor
    - 트랜잭션이 올바르게 처리되고 있는지 데이터를 감시하고 제어하는 프로그램
    - 온라인 트랜잭션 업무(은행 계정, 항공기/버스 예약 업무 등)에서 트랜잭션을 처리, 감시하는 미들웨어
    - 사용자 수가 증가하여도 빠른 응답 속도를 유지해야 하는 업무에 적합

  • ORB (Object Request Broker)
    - *객체 지향 미들웨어로 *코바(CORBA) 표준 스펙을 구현한 미들웨어
    - 최근에는 TP-Monitor 가 가지고 있는 장점(트랜잭션 처리, 모니터링 등)을 추가하여 구현하였다

  • WAS (Web Application Server)
    - 클라이언트 / 서버 환경보다는 웹 환경을 구현하기 위한 미들웨어
    - EJB 는 서버 컴퓨터에서 운영되는 Java 컴포넌트들을 설정하기 위한 아키텍처
  • 티어(Tier)

    -Layer(계층)는 기능 집단을 논리적으로 분리하는 것이고, Tier(티어)는 기능 집단을 물리적으로 분리한다
    
    -1-Tier: 3가지 기능(예를들어 데이터 관리, 통신 관리, 회사 업무 관리)을 한 클라이언트 서버 컴퓨터에 설치 및 운영하는 경우이다(종속적)
    
    -2-Tier: 클라이언트와 서버 컴퓨터를 분리하는 것으로 데이터베이스는 서버 컴퓨터에 나머지 2개는 클라이언트 컴퓨터에 분리하는 경우
    
    -3-Tier: 3개의 컴퓨터 시스템에 하나의 기능을 하나의 컴퓨터 시스템에 분리시켜 운영하는 경우(독립적)

    프로시저 (Procedure)

    부품화된 프로그램으로, 전체 프로그램은 프로시저와 같은 부품화된 프로그램들의 조합으로 이루어진다. 모듈, 함수, 서브루틴, 계층 등과 유사하게 사용된다

    객체 (Object)

    - 현실 세계에 존재하는 개체를 프로그램 형태의 모형으로 만든 추상적인 데이터 구조
    
    - 기존의 방식은 데이터만을 사용을 했지만, 객체에서는 기능까지도 포함하여 사용
    
    - 예를 들어 사람이 객체이면 성명, 주소, 나이 등을 변수 혹은 속성이라고 하고, 밥 먹기, 잠자기, 운동하기 등과 같은 무언가를 행할 수 있는 기능을 메소드라고 한다
    
    - 속성(변수)과 메소드(기능)를 묶어서 처리하는 단위를 객체라고 한다

    코바 (CORBA)

    - 여러 곳으로 흩어져있는 컴퓨터들을 통신 회선으로 연결하여, 각 컴퓨터에 설치된 기능이나 프로그램을 공통으로 사용할 수 있도록 지원하는 미들웨어
    
    - 분산 객체 환경에서 객체 간의 통신을 담당하는 분산 객체 기술의 표준

    5) WAS (Web Application Server)

    ① WAS 의 개념

  • 동적인 웹 사이트, 웹 애플리케이션, 웹 서비스의 개발을 지원하기 위하여 설계된 소프트뤠어로 데이터 접근 관리, *세션 관리, 트랜잭션 관리 등을 위한 라이브러리를 제공하고 있다

  • WAS 는 HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 필수적인 기업 업무까지 Java, *EJB 컴포넌트 기반으로 구현이 가능하다

  • 사용자가 웹 브라우저로 요청하면, 정적 데이터는 웹 서버가 직접 처리한다

  • 동적 데이터는 웹 서버에서 직접 처리하지 못하여 WAS 에서 지원받아 처리한다

  • 세션 (Session)

    세션은 인터넷에서 사용자 간 또는 컴퓨터 간의 대화를 위한 논리적 연결로 프로세스(실행 중인 프로그램)들 사이에 통신을 수행하기 위해서 패킷 교환을 통해 서로를 인식한 후부터 통신을 마칠 때 까지의 기간을 의미한다

    EJB (Enterprise JavaBean)

    서버 컴퓨터에서 운영되는 Java 컴포넌트들을 설정하기 위한 아키텍처이다

    정적 데이터

    이미지나 자바스크립트 코드 등

    동적 데이터

    데이터베이스와 접속, 외부 시스템과의 연동 등

    ② WAS 의 종류 7가지

  • GlassFish
    - GlassFish Community(애플리케이션 서버 개발을 위한 Java 공동체)에서 제공, NetBeans(Java 개발자 플랫폼) 개발 툴과 연동하여 사용
  • JBoss
    - Red Hat, JBoss(Java 기반으로 오픈소스 미들웨어의 총칭)에서 제공, 오픈소스 제품들을 이용하는 경우에 사용한다
  • Jetty
    - Eclipse Foundation(Eclipse 는 Java, C언어 등을 개발할 수 있는 통합 환경을 제공하는 프로그램으로 현재 가장 많이 사용)에서 제공, 빠른 처리 속도가 요구되는 경우에 사용
  • JEUS
    - TmaxSoft(국내 미들웨어 시장 1위 기업)에서 제공, 대량의 안정적인 거래처리가 요구되며 적시의 기술 지원이 필요한 경우에 사용
  • Resin
    - Caucho Technology(오픈소스 창시자, 웹 서버 소프트웨어 개발사)에서 제공, 빠른 처리 속도가 요구되는 경우에 사용
  • WebLogic
    - Oracle Corporation(매출 규모 상위권의 소프트웨어 회사, 오라클 DBMS는 세계 최고의 점유율)에서 제공, 대량의 안정적인 거래 처리가 요구되는 경우에 사용
  • WebSphere
    - IBM 에서 제공, 대량의 안정적인 거래 처리가 요구되는 경우에 사용
  • Web Server

    - 웹 서비스를 지원해주는 하드웨어나 소프트웨어
    
    - 하드웨어: 웹 서비스를 지원하는 컴퓨터 시스템
    
    - 소프트웨어: 클라이언트로부터 웹 페이지 요청(HTTP 요청)을 받아 정적인 콘텐츠(.html .jpeg .CSS 등)를 제공하는 컴퓨터 프로그램으로 Apache, Nginx, IIS 등이 있다

    Web Server 의 기능

    - 정적 기능: 정적인 콘텐츠는 WAS 를 거치지 않고 웹 페이지를 클라이언트에게 전달한다
    
    - 동적 기능: 동적인 콘텐츠는 웹 페이지 요청을 WAS 에게 전달하여 처리된 결과를 클라이언트에게 전달한다

    Web Container

    정적인 웹 페이지에 포함된 다양한 동적 프로그램들을 처리하여 Web Server 로 전달한다.
    동적 웹 페이지 처리 언어 (JSP, PHP, ASP), 데이터베이스 접속, SQL 수행, 트랜잭션 관리 기능, 업무를 처리하는 비즈니스 로직 등을 수행한다

    ③ WAS 분석 시 고려사항 4가지

  • 가용성
    - 오랜 시간 동안 시스템을 운영할 때 장애 발생 가능성이 있는지 확인한다
    - 안정적인 트랜잭션 처리가 가능한지 확인한다
    - 패치 설치를 위한 재기동이 되는지 확인한다
    - WAS *이중화를 지원하는지 확인한다

  • 성능
    - 대규모 거래 요청 시 처리 성능을 확인한다
    - 다양한 설정 옵션을 지원하는지 확인한다
    - *GC 의 다양한 옵션을 지원하는지 확인한다

  • 기술 지원
    - 공급 벤더들의 안정적인 기술 지원이 가능한지 확인한다
    - 다수의 사용자들 간의 정보를 공유할 수 있는지 확인한다
    - 오픈소스 여부를 확인한다

  • 구축 비용
    - 라이선스 정책 및 비용을 확인한다
    - 유지 및 관리 비용을 확인한다
    - 총 소요비용(TCO)를 확인한다
  • 이중화

    신뢰성을 높이기 위해 같은 기능을 가진 시스템을 두 개 준비하여 활용하는 것

    GC (Garbage Collection)

    - 하드 디스크의 단편화 조각을 정리해서 빠른 속도를 유지할 수 있게 한다
    - Windows 에서는 디스크 조각 모음의 기능으로 사용하지 않는 디스크 조각을 한 곳으로 모아 서 사용할 수 있는 공간의 크기를 확보한다

    6) 오픈소스 (Open Source)

    ① 오픈소스의 정의

    소스 코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈소스 라이선스를 만족하는 소프트웨어

    ② 오픈소스 분석 시 고려사항 3가지

  • 오픈소스를 사용하는 경우에는 라이선스의 종류, 사용자 수, 기술의 지속 가능성 등을 고려해야 한다
  • 라이선스의 종류 등 자세한 내용은 한국저작권위원회의 OLIS 사이트를 참조한다
  • 어떠한 오픈소스를 사용해야 라이선스에 문제가 없을지 판단이 어려운 경우에는 전자정부 표준 프레임워크에서 사용 중인 오픈소스 소프트웨어를 참조한다
  • 빈칸

    좋은 웹페이지 즐겨찾기