정보처리기사 필기 - 4과목 소프트웨어 공학


5장 S/W 공학의 발전적 추세


142 소프트웨어 재사용


① 재사용의 개요


소프트웨어 재사용(Software Reuse)은 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것


· 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법으로, 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용

· 클래스, 잭체 등의 소프트웨어 요소는 소프트웨어 재사용성을 크게 향상 시킴

· 소프트웨어 재사요에 가장 많이 이용되는 것은 소스 코드(Source Code)

· 재사용이 가능한 요소 : 전체 프로그램, 부분 코드, 응용 분야에 관한 지식, 논리적인 데이터 모형, 프로세스 구조, 시험 계획, 설계에 관한 결정, 시스템 구조에 관한 지식, 요구 분석 사항, 문서화, 전문적인 기술과 개발 경험, 품질 보증, 응용 분야 지식 등

· 소프트웨어 부품(모듈)의 크기가 작고 일반적인 설계일수록 재사용률이 높다


② 재사용의 이점


· 개발 시간과 비용 단축

· 소프트웨어 품질 향상

· 소프트웨어 개발의 생산성 향상

· 프로젝트 실패의 위험 감소

· 시스템 구축 방법에 대한 지식 공유

· 시스템 명세, 설계, 코드 등 문서를 공유


③ 재사용 도입이 문제점


· 어떤 것을 재사용할 것인지 선정해야함

· 시스템에 공통적으로 사용되는 요소들을 발견해야 함

· 프로그램의 표준화가 부족

· 새로운 개발 방법론을 도입하기 어려움

· 재사용을 위한 관리 및 지원이 부족함

· 기존 소프트웨어에 재사용 소프트웨어를 추가하기 어려움

· 프로그램 언어 종속적

· 소프트웨어 요소의 내부뿐만 아니라 인터페이스 요구사항의 이해 필요

· 라이브러리 안에 포함시킬 재사용 요소의 명확한 결정 기준 없음


④ 재사용 방법


 합성 중심

 (Composition-Based)

 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이락도 함

 생성 중심

 (Generation-Based)

 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 함



143 소프트웨어 재공학


① 재공학의 개요


소프트웨어 재공학(Software Reengineering)은 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 ㅜ가하여 소프트웨어 성능을 향상시키는 것


· 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어 기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시키려는 기술

· 유지보수 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법

· 기존 소프트웨어의 기능을 개조하거나 개선하므로, 예방 유지보수 측면에서 소프트웨어 위기를 해결하는 방법

· 소프트웨어 재공학도 자동화된 도구를 이용하여 소프트웨어를 분석하고 수정하는 과정을 포함

· 스프트웨어에서 발생할 수 있는 오류가 줄어 들고, 비용이 절감 됨


② 재공학의 등장 배경


· 기존 소프트웨어가 노후되어 새로운 소프트웨어로 대치해야할 경우 현재 시스템보다 훨씬 더 좋은 시스템을 만들 수 있다는 보장 없음

· 현재 소프트웨어 품질이 더 좋은 소프트웨어로 교체된다고 해도 사용상의 문제점이 없다고 장담할 수 없음

· 새로운 소프트웨어를 개발해도 기존 시스템과의 호환성이 100% 이루어질 수도 없을 뿐만 아니라, 사용자의 교육에도 많은 영향을 줄 수 있음


③ 재공학의 목표


소프트웨어 재공학은 유지보수성 및 기술 향상, 유지보수의 생산성 향상, 소프트웨어 수명 연장, 소프트웨어 요소들을 추출하여 정보 저장소에 저장하는 것을 주된 목적으로 하며, 다음과 같은 목표를 가지고 있음


· 복잡한 시스템을 다루는 방법 구현 : 시스템이 복잡해질수록 시스템을 다루는 방법이 필요하여 이를 위해 자동화 도구 사용 가능

· 다른 뷰의 생성 : 기존 시스템 개발에 대한 관점 외에 다른 방향의 관점 생성

· 잃어버린 정보의 복구 및 제거 : 시스템이 계속적인 개발을 거치면서 잃어버린 정보를 복구하거나 필요없는 정보 제거

· 부작용의 발견 : 의도되지 않았던 내용이 구현될 경우 이를 발견

· 고수준의 추상 : 추상화된 어려운 내요을 여러 형태로 추출하여 이해에 도움 줌

· 재사용 용이 : 재사용이 가능한 모듈을 추출하여 재사용이 용이하도록 함


④ 소프트웨어 재공학의 주요 활동


 분석(Analysis)

 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고, 제공할 대상 선정

 개조(재구조, 재구성)

 · 개조(Restructuring)는 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 표현 형태로 바꾸는 것

 · 기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는 것으로 소프트웨어의 기능과 외적인 동작은 바뀌지 않음

 역공학(Reverse Engineering)

 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 작업

 · 정공학(일반적인 개발 단계)과는 반대 방향으로 기존 코드를 복구하는 방법

 · 대상 소프트웨어가 있어야 하므로 이로부터 작업 시작됨

 · 기존 소프트웨어의 구성 요소와 그 관계를 파악하여 설계도를 추출하거나, 구현과는 독립적인 추상화 표현 만듦

 · 코드 역공학 : 코드→흐름도→자료 구조도→자료 흐름도 순으로 재생

 · 데이터 역공학 : 코드→자료사전→개체 관계도 순으로 재생

 · 역공학의 가장 간단하고 오래된 형태 : 재문서화(같은 수준의 추상 표현을 새로이 만들거나 다시 제작)

 이식(Migration)

 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 작업




144 클라이언트/서버/ S/W 공학


① 클라이언트/서버 시스템의 개요


· 클라이언트/서버 시스템은 분산 시스템의 가장 대표적인 모델로, 정보를 제공하는 서버와 정보를 요구하는 클라이언트로 구성된 방식

· LAN을 통하여 클라이언트(워크스테이션, PC)와 서버가 하나의 작업을 분산, 협동 처리

· 중대형 컴퓨터보다 훨씬 적은 비용으로 지원 가능

· 처리햘 자료가 발생한 그 지역에서 처리 가능

· 고성능 워크스테이션에서 가능한 그래픽 사용자 인터페이스를 쉽게 지원

· 서버는 공유된 다양한 시스템 기능과 자원을 클라이언트에게 제공

· 서비스 기능에 따른 서버의 종류

 파일 서버(File Server)

 클라이언트가 요청한 파일 내의 레코드 제공

 데이터베이스 서버(Database Server)

 클라이언트가 요청한 SQL(질의어) 처리하여 결과 제공

 트랜잭션 서버(Transaction Server)

 클라이언트가 요청한 원격 프로시저 실행 후 결과 제공

 그룹웨어 서버(Groupware Server)

 서버가 클라이언트와 통신할 수 있도록 하는 응용 소프트웨어 집합을 제공 


② 클라이언트/서버 시스템의 소프트웨어 요소


· 애플리케이션(응용 프로그램) 요소 : 응용 프로그램에 의해 정의된 요구사항을 구현하는 것으로, 서버와 클라이언트에 위치 가능

· 데이터베이스 요소 : 응용 프로그램에서 요구하는 데이터 조작과 관리를 수행하는 것으로 서버에 위치

· 프레젠테이션/상호작용 요소 : 그래픽 사용자 인터페이스(GUI)와 관련된 모든 기능을 구현하는 것으로, 클라이언틍에 위치


③ 미들웨어


미들웨어(Middleware)는 클라이언트가 서버 측에 어떠한 처리를 요구하고, 또 서버가 그 처리한 결과를 클라이언트에게 돌려주는 과정을 효율적으로 수행하도록 도와주는 소프트웨어로 클라이언트와 서버 사이에 존재


· 미들웨어가 정상적으로 수행되기 위해서는 클라이언트와 서버에 각각의 미들웨어 있어야 함

· 클라이언트와 서버 간의 데이터 통로 제공, 작업 처리 서비스 검색, 프로그램 보안 및 감시 등의 기능 수행

· 미들웨어의 종류

 통신 미들웨어

 NOS(Network Operating System)

 데이터베이스 미들웨어

 ODBC

 분산 객체 미들웨어

 CORBA, DCOM


※ 객체 요청 브로커 / CORBA

· 객체 요청 브로커(ORB; Object Request Broker)

- 객체 요청 브로커는 분산 객체 미들웨어의 일종으로 기존의 미들웨어보다 기능이 강화되었으며 클라이언트의 객체가 서버 객체의 캡슐화된 메소드에게 메시지를 보낼 수 있게 하는 것

· CORBA(Common Object Request Broker Architecture)

- 가장 많이 사용되는 객체 요청 브로커의 표준이며, OMG(Object Management Group)라는 개발자 연합에서 인기했음

- CORBA가 클라이언트/서버 시스템에서 구현될 때 클라이언트와 서버 간에 정보를 송·수신하는 데 필요한 인터페이스 언어는 IDL(Interface Description Language)



145 CASE


① CASE의 개요


CASE(Computer Aided Software Engineering)는 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것


· 소프트웨어 생명 주기의 전체 단계를 연결해주고 자동화해주는 통합된 도구를 제공해주는 기술

· 소프트웨어 개발 도구와 방법론이 결합된 것으로, 정형화된 구조 및 방법(메커니즘)을 소프트웨어 개발에 적용하여 생산성 향상을 구현하는 공학 기법

· 소프트웨어 개바르이 모든 단계에 걸쳐 일관된 방법론을 제공하는 자동화 도구(CASE Tool)들을 지원하고, 개발자들은 이 도구를 사용하겨 소프트웨어 개발의 표준화를 지향하며, 자동화의 이점을 얻을 수 있게 해줌

· CASE의 주요 기능 : 소프트웨어 생명주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원 등


② CASE 사용의 이점


· 소프트웨어 개발 기간을 단축하고 개발 비용 절감 가능

· 자동화된 기법을 통해 소프트웨어 품질 향상

· 소프트웨어의 유지보수를 간편하게 수행 가능

· 소프트웨어의 생산성이 향상되고 생산, 운용 활동을 효과적으로 관리·통제 가능

· 품질과 일관성을 효과적으로 제어 가능

· 소프트웨어 개발의 모든 단계에 걸친 표준 확립 가능

· 소프트웨어 모듈의 재사용성 향상됨

· 소프트웨어의 개발 기법을 실용화할 수 있고, 문서화를 쉽게 작성 가능


③ CASE 분류


CASE는 소프트웨어 생명 주기의 어느 부분을 지원하느냐에 다라 다음과 같이 분류 가능


상위(Upper) CASE

· 소프트웨어 생명 주기의 전반부에서 사용되는 것으로, 문제를 기술하고 계획하며 요구 분석과 설계 단계를 지원하는 CASE

· 여러 가지 명세와 문서를 작성하는 데 사용됨

· 상위 CASE 도구에는 SREM, PSL/PSA, SERA, FOUNDATION


하위(Lower) CASE

· 소프트웨어 생명 주기의 하반부에서 사용되는 것으로 코드의 작성과 테스트, 문서화하는 과정을 지원하는 CASE

· 하위 CASE 도구에는 구문 중심 편집기, 코드 생성기


통합(Integrate) CASE

· 소프트웨어 생명 주기에 포함되는 전체 과정을 지원하기 위한 CASE로, 공통의 정보 저장 장소와 통일된 사용자 인터페이스를 사용하여 도구들을 통합

· 통합 CASE 도구에는 IEF, POWERTOOLS, TAGS/IORL, TEAMWORK


④ 정보 저장소


정보 저장소의 개요

정보 저장소는 소프트웨어를 개발하는 과정 동안에 모아진 정보를 보관하여 관리하는 곳으로 CASE 정보 저장소, CASE 데이터베이스, 요구사항 사전, 저장소

· 초기의 소프트 개발 환경에서는 사람이 정보 저장소 역할을 했지만 오늘날에는 데이터베이스가 정보 저장소 역할 담당

· 도구들의 통합, 소프트웨어 시스템의 표준화, 소프트웨어 시스템 정보의 공유, 소프트웨어 재사용성의 기본이 됨


정보 저장소 사용의 이점

· 도구들과 생명 주기 활동, 사용자들, 응용 소프트웨어들 사이의 통신과 소프트웨어 시스템의 정보 공유 향상

· 소프트웨어 시스템 구성 요소들과 시스템 정보 저장소에 의해 관리되므로 유지 보수성 향상됨

· CASE 도구들 간에 정보를 쉽게 교환하고, 사용자가 쉽게 새로운 도구를 추가 가능하도록 해줌

· CASE 도구들을 통합하여 통합 CASE 도구 사용 가능

· 중복된 공통 정보를 통합하며 불필요한 정보 제거

· 생명 주기 정보를 재사용할 수 있도록 함

· 소프트웨어 시스템의 이식과 변환을 용이하게 함



출처 : 2017 시나공 정보처리기사 필기

+ Recent posts