라기의 IT's time

[SE-07강] 소프트웨어 공학의 발전적 주제 (에필로그)

 

 

[SE-07강]소프트웨어공학의발전적주제(에필로그).pdf
0.06MB

학습내용 ☞ 소프트웨어공학의 발전적 주제
학습목표 ☞ 소프트웨어공학의 재사용의 개념을 이해 할 수 있다. 소프트웨어공학의 역공학의 대한 개념을 이해 할 수 있다
CASE에 대해 정리 할 수 있다
학습내용
1. 소프트웨어 재사용
(1) 소프트웨어 재사용 (Software Reuse) 
1) 이미 개발된 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유
 지에 사용하는 것
2) 1990년대의 클래스, 객체 등의 소프트웨어 요소는 소프트웨어 재사용성을 크게 향상시킴
3) 소프트웨어 재사용에 가장 많이 이용되는 것은 프로그램, 즉 소스 코드(Source Code)임
(2) 소프트웨어를 재사용의 이점 
1) 개발시간과 비용을 단축
2) 소프트웨어 개발의 생산성을 높임
3) 프로젝트 실패의 위험을 줄여 줌
4) 소프트웨어의 품질을 향상
5) 시스템 구축 방법에 대한 지식을 공유하게 됨
6) 시스템 명세, 설계, 코드 등 문서를 공유하게 됨
(3) 재사용의 문제점
1) 재사용 대상의 선정 문제
2) 공통적 재사용 대상의 발견 어려움
3) 프로그램 표준화 부족
4) 프로그램 언어 종속적
5) 새로운 개발 방법 도입의 어려움
6) 재사용을 위한 관리 지원의 부재
7) 기존 시스템에 재사용 시스템 도입의 어려움
※ 많은 재사용 컴포넌트(Component) 선별의 어려움의 가장 주된 원인 분류(classification)의 문제

 

(4) 재사용 라이브러리가 가져야 할 속성 
1) 확장성
2) 재사용 요소들의 생성, 편집 등을 허용하는 연산
3) 편리한 접근, 탐색, 버전 관리, 제어 변경
2. 소프트웨어 재공학
(1) 소프트웨어 재공학 (Software Reengineering) 
1) 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기
 능을 추가하여 소프트웨어 성능을 향상 시키는 것
2) 소프트웨어의 위기를 개발의 생산성이 아닌 유지보수의 생산성으로 해결하려는 방법을 의미
3) 소프트웨어 재공학의 일반적인 개념은 데이터와 기능들의 개조 및 개선을 가해 유지보
 수 용이성을 향상시키자는 것임
4) 재공학은 유지보수에 대한 장기적인 전략적 고려와 많은 비용, 시간, 자원을 요구함
5) 재공학은 유지보수성, 생산성, 품질의 향상을 목적으로 함
6) 재공학은 형식의 변경과 재설계 과정을 포함
7) 소프트웨어 재공학도 자동화된 도구를 사용하여 소프트웨어를 분석하고 수정하는 과정을 포함
8) 소프트웨어 재공학의 활동은 분석, 개조(재구성), 역공학, 이식 등으로 구분할 수 있음
9) 유지보수의 문제로 인해 필요성이 대두됨
(2) 소프트웨어 재공학(Reengineering)의 목표 
1) 복잡한 시스템을 다루는 방법
2) 다른 뷰의 생성
3) 잃어버린 정보의 복구 및 제거
4) 부작용의 발견
5) 고수준의 추상
6) 재사용 용이
(3) 역공학 (Reverse Engineering) 
1) 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분
 석 및 설계 정보를 재발견하거나 다시 만들어 내는 작업
2) 현재 프로그램으로부터 데이터, 아키텍처, 그리고 절차에 관한 분석 및 설계 정보를 추출하는 과정
(4) 업무 재설계 (BPR, business process re-engineering) 
 획기적인 결과를 성취하기 위한 비즈니스 프로세스에 대한 연구, 비즈니스 프로세스 구현, 
 비즈니스 프로세스의 근본적인 변경을 말함
3. CASE
(1) CASE(Computer Aided Software Engineering)의 개념 
1) 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 
 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 작업
2) 소프트웨어 생명 주기의 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해 주는 기술
3) 소프트웨어 개발의 작업들을 자동화 하는 것
4) 소프트웨어 도구와 방법론의 결합
5) 통합 CASE는 소프트웨어 개발 주기 전체 과정을 지원함

 

(2) CASE(Computer Aided Software Engineering) 분류 
 CASE는 소프트웨어 생명 주기의 어느 부분을 지원하느냐에 따라 다음과 같이 분류할 수 있음
1)상위(Upper) CASE
① 소프트웨어 생명 주기의 전반부에서 사용되는 것
② 문제를 기술(Description)하고 계획하며 요구분석과 설계단계를 지원
③ 여러 가지 명세와 문서를 작성하는 데 사용
2)하위(Lower) CASE
① 소프트웨어 생명 주기의 하반부에서 사용되는 것
② 코드를 작성하고 테스트하며 문서화하는 과정을 지원
3)통합(Integrate) CASE
① 소프트웨어 생명 주기에 포함되는 전체 과정을 지원
② 공통의 정보 저장 장소와 통일된 사용자 인터페이스를 사용하여 도구들을 통합함
(3) CASE(Computer Aided Software Engineering) 사용의 이점 
1) 소프트웨어 개발 기간을 단축하고 개발 비용을 절감할 수 있음
2) 자동화된 기법을 통해 소프트웨어 품질이 향상
3) 소프트웨어의 유지보수를 간편하게 수행
4) 소프트웨어의 생산성이 향상되고 생산, 운용 활동을 효과적으로 관리ㆍ통제할 수 있음
5) 품질과 일관성을 효과적으로 제어
6) 소프트웨어 개발의 모든 단계에 걸친 표준을 확립
7) 소프트웨어 모듈의 재사용성이 향상
(4) 정보 저장소 (Repository) 
1) 소프트웨어를 개발하는 과정 동안에 모아진 정보를 보관하여 관리하는 곳
2) CASE 정보 저장소, CASE 데이터베이스, 요구사항 사전, 저장소라고도 함
3) 일반적으로 정보 저장소는 도구들과 생명 주기 활동, 사용자들, 응용 소프트웨어들 사이
 의 통신과 소프트웨어 시스템 정보의 공유를 향상시킴
4) 정보 저장소는 도구들의 통합, 소프트웨어 시스템의 표준화, 소프트웨어 시스템 정보의 
 공유, 소프트웨어 재사용성의 기본이 됨
5) 소프트웨어 시스템 구성 요소들과 시스템 정보가 정보 저장소에 의해 관리되므로 
 유지 보수성이 향상 됨
요점정리
1. 소프트웨어공학의 재사용의 개념을 정리합니다. 2. 소프트웨어공학의 역공학의 대한 개념을 정리합니다. 3. CASE에 대해 정리 합니다. 다음차시예고
수고하셨습니다. 다음 8주차에서는 “소프트웨어 공학 관련 기출문제 풀이”에 대해서 학습하도록 하겠습니다.

TOP