소프트웨어 종류 및 개발 방법론 2

랑아·2023년 4월 12일
0
post-thumbnail

소프트웨어 개발 방법론

01. 소프트웨어 개발 환경

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

1. 운영체제의 정의

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

2. 운영체제의 종류

  • Windows : 중소 규모 서버, 개인용 PC, Tablet PC , Embedded System 등에서 사용하며, 유지 및 관리 비용 측면에서 Windows 시스템이 강점을 가짐
  • UNIX : 대용량 처리, 안정성이 요구되는 Server, NAS, Workstation 등에서 사용하며 신뢰할 수 있는 대용량 처리를 위해서는 UNIX 기반 시스템을 선호
    • NAS(Network Attached Storage)
      • 서버와 저장 장치를 네트워크로 연결하는 방식으로 구성 설정이 간편함
    • Workstation
      • 개인이나 소수의 사람이 특수 분야에 사용하는 고성능의 컴퓨터
  • Linux : 중대 규모 서버에서 사용하며 일반적으로 Linux 기반 시스템이 하드웨어 및 소프트웨어 소요 비용이 가장 적게 소요됨
  • iOS : 애플의 운영체제로 스마트폰, 태블핏 PC 등에서 사용
  • Android : 구글의 개방형 운영체제로 스마트폰, 태블릿 PC 등에서 사용

3. 운영체제 분석 시 고려사항

  • 신뢰도 : 오랜 시간 시스템을 운영할 때 운영체제 고유의 장애 발생 가능성이 있는지 확인
  • 성능 : 다수의 동시 사용자 요청 처리가 가능한지 확인하고, 대량 파일 작업 처리가 가능한지 확인
  • 기술 지원 : 공급 벤더(Vender)들의 안정적인 기술 지원이 있는지 확인
    • 벤더(Vender)
      • 컴퓨터나 소프트웨어 제품을 판매하거나 공급하는 다품종 소량 도매업
  • 주변 기기 : 다수의 주변 기기 지원 여부를 확인
  • 구축 비용 : 지원 가능한 하드웨어 비용, 설치할 애플리케이션의 라이선스 정책 및 비용이 어느정도인지 확인(TCO 확인)
    • TCO(Total Cost of Ownership)
      • 컴퓨터 구입 비용, 업그레이드 비용, 유지보수 비용, 소프트웨어 비용 등 컴퓨터 시스템을 구축하고 사용하는 데 드는 모든 비용을 의미

4. 운영체제 현황

  • 32bit 운영체제에서는 4GB 메모리까지 액세스 가능하고, 64bit 운영체제에서는 4GB 이상의 메모리까지 액세스 가능
  • CISC 설계 방식이 적용된 인텔의 x86 아키텍처 기반 칩을 사용하고 있는 하드웨어는 Window나 Linux를 운영체제로 설치할 수 있으며, RISC 설계 방식이 적용된 칩들은 UNIX 운영체제를 설치
  • HP와 Intel 사가 협력해서 만든 (IA -64) 칩은 여러 운영체제를 지원
  • RISC 설계 방식이 적용된 ARM 칩은 스마트폰이나 태블릿에 주로 채택되고 있으며, iOS, Android 등의 운영체제를 지원

2) CPU(중앙 처리 장치)

1. CISC(Complex Instruction Set Computer) 설계 방식

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

2. RISC(Reduced Instruction Set Computer) 설계 방식

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

3) DBMS(DataBase Management System)

1. DBMS의 정의

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

2. DBMS의 종류

  • Oracle : 대규모 데이터 처리, 안정적인 처리가 가능
  • IBM DB2 : 대규모 데이터 처리, 안정적인 처리가 가능
  • SQL Server : 중소 규모 데이터 처리, 안정적인 처리가 가능
  • MySQL : 오픈소스에서 주로 사용되는 RDBMS
  • SQLite : 스마트폰, 태플릿 PC 등의 Embedded 데이터베이스 용도로 사용
  • MongoDB : 오픈소스이며 NoSQL DBMS
  • Redis : 오픈소스이며 키-값(Key-Value) DBMS

3. DBMS 분석 시 고려사항

  • 가용성 : 오랜 기간 시스템을 운영할 때 장애 발생 가능성이 있는지 확인
  • 성능 : 대규모 데이터를 처리할 만한 성능인지 확인하며 다양한 튜닝 옵션을 지원하는지 확인
  • 기술 지원 : 공급 벤더들의 안정적인 기술을 지원하는지 확인하며 오픈소스 여부를 확인
  • 상호 호환성 : 설치 가능한 운영체제 종류를 확인하며 다양한 운영체제에서 지원되는 JDBC, ODBC를 확인
  • 구축 비용 : 라이선스 정책 및 비용을 확인하며 유지 및 관리 비용을 확인(TCO 확인)

4) 미들웨어(Middleware)

1. 미들웨어의 정의

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

2. 미들웨어의 종류

  • 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 컴포넌트들을 설정하기 위한 아키텍처

5) WAS(Web Application Server)

1. WAS의 개념

  • 동적인 웹 사이트, 웹 애플리케이션, 웹 서비스의 개발을 지원하기 위하여 설계된 소프트웨어로 데이터 접근 관리, 세션 관리, 트랜잭션 관리 등을 위한 라이브러리를 제공
  • WAS는 HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 필수적인 기업 업무까지 Java, EJB 컴포넌트 기반으로 구현이 가능
  • 사용자가 웹 브라우저로 요청하면, 정적 데이터는 웹 서버가 직접 처리
  • 동적 데이터는 웹 서버에서 직접 처리하지 못하여 WAS에서 지원받아 처리
  • 정적 데이터는 이미지나 자바스크립트 등이 있음
  • 동적 데이터는 데이터베이스와 접속, 외부 시스템과의 연동 등이 있음

2. WAS의 종류

  • GlassFish : GlassFish Community(애플리케이션 서버 개발을 위한 Java 공동체)에서 제공, NetBeans(Java 개발자 플랫폼) 개발 툴과 연동하여 사용
  • JBoss : Red Hat, JBoss(Java 기반으로 오픈소스 미들웨어의 총칭)에서 제공, 오픈소스 제품들을 이요하는 경우에 사용
  • Jetty : Eclipse Foundation에서 제공, 빠른 처리 속도가 요구되는 경우에 사용
  • JEUS : TmaxSoft에서 제공, 대량의 안정적인 거래 처리가 요구되며 적시에 기술 지원이 필요한 경우에 사용
  • Resin : Caucho Technology(오픈소스 창시자, 웹 서버 소프트웨어 개발사)에서 제공, 빠른 처리 속도가 요구되는 경우에 사용
  • WebLogic : Oracle Corporation에서 제공, 대량의 안정적인 거래 처리가 요구되는 경우에 사용
  • WebSphere : IBM에서 제공, 대량의 안정적인 거래 처리가 요구되는 경우에 사용

3. WAS 분석 시 고려사항

  • 가용성
    • 오랜 시간 동안 시스템을 운영할 때 장애 발생 가능성이 있는지 확인
    • 안정적인 트랜잭션 처리가 가능한지 확인
    • 패치 설치를 위한 재기동이 되는지 확인
    • WAS 이중화를 지원하는지 확인
  • 성능
    • 대규모 거래 요청 시 처리 성능을 확인
    • 다양한 설정 옵션을 지원하는지 확인
    • GC의 다양한 옵션을 지원하는지 확인
  • 기술 지원
    • 공급 벤더들의 안정적인 기술 지원이 가능한지 확인
    • 다수의 사용자들 간의 정보를 공유할 수 있는지 확인
    • 오픈 소스 여부를 확인
  • 구축 비용
    • 라이선스 정책 및 비용을 확인
    • 유지 및 관리 비용을 확인
    • 총 소요비용(TCO)을 확인

6) 오픈소스(Open Source)

1. 오픈소스의 정의

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

2. 오픈소스 분석 시 고려사항

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

0개의 댓글