소프트웨어 공학 동향 - Software Engineering -.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
일반 요구 사항 비즈니스 요구사항 고객/정보/위치/상태 탐색방법 제품/서비스 홍보 및 광고 방법
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
뇌를 자극하는 Windows Server 2012 R2
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Power Java 제2장 자바 개발 도구.
소프트웨어 공학 (Software Engineering)
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
FTP 프로그램 채계화 박재은 박수민.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
HDFS와 대용량 데이터 처리 콘텐츠서비스연구팀 최완.
Power Java 제14장 배치 관리자.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
제 1장. 멀티미디어 시스템 개요.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
Method & library.
2장. JSP 프로그래밍을 위한 환경구성 제2장.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
영상처리 실습 인공지능연구실.
RMI Messenger 지도 : 김정배 교수님 조봉진.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
웹디자인
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
Chapter 03. 관계 데이터베이스 설계.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
BIC 사례 1 연관규칙과 분류모형을 결합한 상품 추천 시스템: G 인터넷 쇼핑몰 사례
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
컴포넌트 다이어그램 컴포넌트 정의 컴포넌트 다이어그램의 UML 표기법 컴포넌트와 클래스 컴포넌트 다이어그램의 간단한 예
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
소프트웨어 공학 Lecture #10: 유지보수
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
Level 0 Level 1 Level 2 Level 3 공모전 후기 모음 웹 서비스 1. 웹 페이지 설계 2. 웹 서버 구현
클러스터 시스템에서 효과적인 미디어 트랜스코딩 부하분산 정책
뇌를 자극하는 Solaris bible.
멀티미디어시스템 제 4 장. 멀티미디어 데이터베이스 정보환경 IT응용시스템공학과 김 형 진 교수.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
웹 사이트 분석과 설계 [디자인 리서치] 학번: 이름 : 홍지애.
발표자 : 이지연 Programming Systems Lab.
다자간 채팅프로그램 김형도 허영민
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Power Java 제14장 배치 관리자.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
 6장. SQL 쿼리.
JAVA 프로그래밍 16장 JNLP.
VAULT BASIC / VAULT PROFESSIOAL
Presentation transcript:

소프트웨어 공학 동향 - Software Engineering -

학습 내용 소프트웨어 공학의 역사 CASE 사용자 인터페이스 관리 시스템 컴포넌트 기반 소프트웨어 개발 웹 엔지니어링 소프트웨어 재사용 소프트웨어 리엔지니어링 실시간 소프트웨어 설계 (C) Eun Man Choi, 2002

소프트웨어 공학 방법론 도 구 소프트웨어 개발 과정에서 사용되는 여러 가지 방법에 대한 연구 모형화 방법, 설계 방법, 코딩 , 테스트 방법 프로세스 중심 방법론 자료 중심 방법론 객체 지향 방법론 도 구 개발 방법을 자동화 한 것 요구 분석 도구 CASE(Computer Aided Software Engineering) Upper CASE Lower CASE 소프트웨어 개발 환경

소프트웨어 공학 프로세스 소프트웨어 생명 주기에서 방법과 도구가 적용되어야 할 순서를 정의한 것 개발 작업, 결과물, 절차, 작업 사이의 선후 관계 프로젝트 관리 기술

소프트웨어 공학의 발전 1970년대 초: 구조적 프로그래밍 1970년대 중: 설계 방법론 1970년대 말: 분석 방법론 구조적 코딩 하향식 프로그래밍 정보 은닉(Parnas) 추상화(Dijkstra) 단계적 세분화(Wirth) 1970년대 중: 설계 방법론 구조적 설계(Yourdon과 Constantine) JSP 설계 방법(Jackson) Warnier-Orr 설계 방법 1970년대 말: 분석 방법론 구조적 분석(Demarco, Gane과 Sarson) SADT(SofTech)

소프트웨어 공학의 발전 1980년대 초: 자동화 도구 및 객체지향 프로그래밍 1980년대 말: 컴퓨터 응용 소프트웨어 공학 PSL/PSA 코드 자동 생성 소프트웨어 공학 도구 객체지향 프로그래밍(Smalltalk, C++) 1980년대 말: 컴퓨터 응용 소프트웨어 공학 분석을 위한 대화식 그래픽 도구 분석, 설계 지원 도구 프로그래밍 환경 통합 소프트웨어 공학 환경 사용자 인터페이스 관리 시스템

소프트웨어 공학의 발전 1990년대 초: 객체지향 소프트웨어 공학 1990년대 중: 객체지향 분산처리 객체지향 분석, 설계(Booch, OMT, Shaller-Meller, Yourdon, Fusion, Jacobson, ......) 객체지향 분석, 설계 도구 소프트웨어 리엔지니어링 1990년대 중: 객체지향 분산처리 소프트웨어 재사용 설계 패턴 객체 분산 처리 구조(CORBA, OLE/COM, ...) 분산 객체 프로그래밍(JAVA)

CASE 목표 소프트웨어를 위한 CAD/CAM 여러 가지 원천 기술과 고성능 워크스테이션과의 결합으로 탄생 노동 집약적인 소프트웨어 개발 방식을 자동화 도구의 유기적인 통합 개발용 컴퓨터의 특성, 개발 방법론, 관리절차를 모두 고려한 도구 제공 소프트웨어를 위한 CAD/CAM 여러 가지 원천 기술과 고성능 워크스테이션과의 결합으로 탄생

CASE 원천 기술 구조적 기법 프로토 타이핑 기술 자동 프로그래밍 기술 정보 저장소 기술 분산 처리 기술 쉽게 이해할 수 있는 시스템 모델 하향식, 기능식 분해 방법 프로토 타이핑 기술 프로토타입 용 언어, 화면 레이아웃 설계, 보고서 설계 자동 프로그래밍 기술 4 세대 언어 자료 선언문, 질의어, 조작어, 데이타 처리 및 보고서 작성 기능 정보 저장소 기술 소프트웨어 요구 분석, 설계서 응용 문제에 관련된 영역 지식 프로세스 정의와 프로젝트 관리 정보 소프트웨어 메트릭 정보 분산 처리 기술 클라이언트/서버, 공동 작업 환경

소프트웨어 개발 환경 정의 언어 중심 환경 구문 중심 환경 “소프트웨어 생명주기 전체에 걸쳐 프로그래밍 지원 능력을 제공하는 도구의 통합된 집합이며 이는 하나의 명령어로 접근하도록 되어 있다. 환경은 일반적으로 설계, 편집, 컴파일, 로드, 테스트, 형상 관리, 프로젝트 관리를 위한 도구를 포함한다.” 언어 중심 환경 프로그래밍 단계 지원 Lisp, Smalltalk의 인터프리터 중심 개발 환경(코딩, 수행, 디버깅 환경) 설계나 프로젝트 관리를 위한 기능은 부족 구문 중심 환경 구문 중심 편집기 Cornell Program Synthesizer, Granada/Aloe, Mentor, Pecan 프로그래밍 정보의 보관: 추상 구문 트리(Abstract Syntax Tree) 구현 단계나 테스트 단계만을 지원

소프트웨어 개발 환경 툴킷 환경 코딩 도구(컴파일러, 편집기, 링커, 디버거)와 버전 제어 및 형상 관리를 위한 도구들의 모임 Unix Programmer’s Workbench 도구의 확장이 용이 공통의 사용자 인터페이스가 없음 방법 중심 환경 분석이나 설계 단계의 특정 방법을 지원 Teamwork, System Architect, Excellerator 다이어그래밍 기능, 자료 사전 정의, 일관성 검증 기능 단점 특정 방법에 고정 프로젝트 관리를 위한 기능 없음

상위 CASE 소프트웨어 개발 초기의 일을 지원 분석 및 설계 과정의 지원 지원 기능 사용자 인터페이스 설계 및 개발 도구 여러 가지 방법론을 지원하는 다이어그래밍 도구 모델의 정확성, 일관성을 확인하기 위한 오류 검증 기능 프로토타이핑을 지원하는 도구 설계 사전 분석 설계 결과의 오류, 일관성 검증 사용자 인터페이스 설계 및 개발 도구 화면 구성 요소의 레이아웃 프로그래밍과의 연결 사용자 인터페이스 관리 시스템 프로토타이핑 도구

상위 CASE의 이용 장점 단점 일관성 검증 높은 생산성 향상: 40% 분석, 설계 자료의 효율적인 관리 및 재사용 Learning curve 적합한 도구의 선택과 교육이 중요 일관성 검증 모든 그림 요소들이 제대로 연결되어 있는가? 각 프로세스의 출력이 적어도 하나씩 있는가? 자료흐름에 모두 이름이 붙어 있는가? 또한 자료사전에 있는가? 프로세스의 이름은 유일한 이름인가? 자료 흐름이 상위 프로세스와 균형을 이루고 있는가?

하위 CASE 프로그래밍 지원도구 비주얼 프로그래밍 도구 컴파일러, 링커, 로더, 디버거 구문 중심 편집기 테스트 도구 정적 분석기 동적 분석기(테스트 기준 분석기, 가설 검증기, 회귀 분석) 비주얼 프로그래밍 도구 Power Builder Visual Basic

통합 CASE 장점 통합 수준 각 도구 사이에 각 단계 사이에 정보(모형, 프로그램, 문서, 자료)가 자유롭게 전이 형상관리, 품질 보증, 문서 생성 등을 위한 노력의 감소 프로젝트 관리의 향상 통합 수준 자료 교환: 자동 변환 장치에 의한 자료 변환 공통 도구: 동일한 사용자 인터페이스 자료 통합: 공통 자료 저장소 사용 완전 통합: 메타 자료 관리, 구동 장치

컴포넌트 기반 소프트웨어 개발 목적 컴포넌트 기반 개발 과정 개발 생산성 높임 빨리 좋은 품질의 소프트웨어 개발 가능 객체지향 기술 이용 이미 개발된 컴포넌트를 사용하여 시스템을 구성 언어, 방법, 도구, 관리 등의 여러 요소를 함께 적용 소프트웨어 개발에 사용하는 블록은 프로그래밍 언어에 제약을 받지 않아야 하며, 규모가 크고 캡슐화된 단위여야 한다.

컴포넌트란 무엇인가? 정의 밀접한 관계에 있는 소프트웨어의 패키지로서 독립적으로 개발되어 분배될 수 있는 단위이며 다른 컴포넌트와 조립될 수 있도록 제공하는 서비스와 사용하는 서비스를 인터페이스로 정의한 것[D’Souza,1999] 밀접한 관계에 있는 소프트웨어의 패키지 독립적으로 개발되어 분배될 수 있는 단위 제공하는 서비스에 대하여 명시적으로 잘 정의된 인터페이스가 있음 다른 것으로부터 제공되어야 할 서비스에 대하여 명시적으로 잘 정의된 인터페이스가 있어야 함 다른 컴포넌트와 조립될 수 있고 컴포넌트 자체를 수정하지 않고 컴포넌트의 성질을 맞게 고칠 수 있어야 함

컴포넌트의 특성 패키지의 단위 독립된 배포 단위 제공하는 인터페이스 리스트 요구되는 인터페이스 리스트 외부 명세 수행 코드 검증 코드 설계 독립된 배포 단위 쪼개어져 일부만 전달될 수 없음

컴포넌트의 특성 제공되는 인터페이스와 요구되는 인터페이스의 명세 인터페이스와 구현을 완전히 분리 컴포넌트 조립 컴포넌트 명세 클라이언트가 그 컴포넌트에 대하여 사용할 수 있는 모든 인터페이스와 그 컴포넌트가 조립될 환경에서 제공되어야 할 인터페이스를 나타낸다. 내부 충실적(selfcontained) 대칭적(symmetrical) 인터페이스와 구현을 완전히 분리 인터페이스 명세 컴포넌트가 무엇을 제공하고 사용될 때 무엇을 요구하는지 정의 컴포넌트 조립 조립될 수 있는 컴포넌트 선택 제공하는 인터페이스와 요구하는 인터페이스의 연결

컴포넌트의 특성 컴포넌트 조립

컴포넌트의 종류 Java 컴포넌트 JavaBeans 리플렉션 Java를 이용하여 컴포넌트를 구축하기 위한 컴포넌트 기술 리플렉션 API이다. 리플렉션을 이용하면 알려지지 않은 타입의 객체에 대하여 인터페이스 및 메소드를 호출하는 바인딩을 늦출 수 있다.

컴포넌트의 종류 Java 컴포넌트 기본 JavaBeans JavaBeans 컴포넌트 Jar 파일 패키징 리플렉션 API를 이용하여 Bean을 인스턴스화 한다. JavaBeans 컴포넌트 Jar 파일 패키징 패키지는 컴포넌트 서비스와 특성, 메소드, 이벤트를 명시한 추가 클래스 파일 및 기타 정보를 포함한다. Enterprise JavaBeans 비즈니스 로직을 서버로 옮기는 과정을 단순화한 서버 컴포넌트 모델 응용 프로그램을 규모나 성능, 신뢰성 측면에서 향상시킨다. 미들웨어를 복잡하게 하여 비용은 증가한다.

컴포넌트의 종류 Java 컴포넌트 Enterprise JavaBeans 구성요소 홈 인터페이스 리모트 인터페이스 EJB 클래스 배치 디스크립터 컨테이너 미들웨어 벤더에 의하여 구현된 컴포넌트로 서버 컴포넌트의 컨테이너 역할 클라이언트에게 리모트 접근, 분산 트랜젝션 관리, 보안, 자원 공동 사용, 병렬 서비스, 클러스터링 등의 서비스를 제공

컴포넌트의 종류 COM+ 컴포넌트 컴포넌트 분야에서 Microsoft가 정의한 별도의 표준 모든 인터페이스는 QueryInterface라는 기능을 제공. 이를 통하여 다른 인터페이스에 대한 질의를 한다. COM 인터페이스는 IDL이라 불리는 인터페이스 정의 언어에 의하여 정의 COM은 OLE(COM인터페이스의 집합)이라 불리는 복합 도큐먼트를 위한 모델을 가지고 있다. COM+는 Microsoft의 최신 컴포넌트 기술로 Java 머쉰과 같은 컴포넌트에 대한 가상 기계 모델을 정의하고 있다.

컴포넌트의 종류 CORBA 컴포넌트 OMG(Object Managemnet Group)에서 다양한 플랫폼과 언어에서 객체 사이의 분산 통신을 지원하기 위해 설계 다른 기종 사이에 수행되기 위하여 CORBA는 바이너리보다는 원시코드 표준이 되었다. 컴포넌트 인터페이스는 CORBA IDL을 이용하여 모듈 안에서 정의 여러 가지 프로그래밍 언어에서 IDL과 바인딩하기 위한 표준이 정의되어 있다.

컴포넌트의 종류 CORBA 구조 CORBA 응용 CORBA 수직기능 CORBA 수평기능 CORBA 버스 CORBA 서비스

웹 엔지니어링 목적 고품질의 웹 기반 시스템을 성공적으로 개발하며 배치하고 유지 보수하기 위하여 엔지니어링 및 경영 관리 원리를 확립하고 사용하는 것 웹 기반 응용 시스템의 특성 네트워크 네트워크 상에 수행되며 다양한 클라이언트에 대하여 서비스 해야 함 컨텐트 중심 엔드유저에게 텍스트, 그래픽, 오비오, 비디오 컨텐트를 제공하는 것 계속적인 진화 시간 단위로 수정됨

웹 엔지니어링 웹 엔지니어링의 작업 분류 단순 정보 다운로드 커스텀 기능 인터액션 사용자 입력 트랜젝션 중심 서비스 중심 포탈 데이터 웨어하우스

웹 엔지니어링 프로세스 공식화 계획 분석 엔지니어링 웹 응용의 목표와 목적, 범위를 정함 비용 예측, 리스크를 파악하여 개발 일정 정의 분석 기술적인 요구 확립, 그래픽 디자인에 대한 요구도 정의 엔지니어링 컨텐트 설계, 프로덕션 구조 설계, 네비게이션 설계, 인터페이스 설계

웹 엔지니어링 프로세스 페이지 생성 및 테스트 고객 평가 자동화 도구를 이용하여 웹 페이지를 구축하는 작업 웹 엔지니어링 프로세스가 반복될 때마다 사용자의 평가가 필요 수용된 변경 요구는 다음 프로세스에 반영

웹 엔지니어링 프로세스 웹 엔지니어링 프로세스 모델 공식화1 계획1 분석1 고객 평가1 페이지 생성 및 테스트1 엔지니어링1 구조설계 네비게이션 설계 인터페이스 설계 컨텐트 설계 프로덕션 공식화2 계획2 분석2 고객 평가2 페이지 생성 및 테스트2 엔지니어링2

웹 구조 설계 선형 구조 그리드 구조 계층적 구조 네트워크 구조 보여지는 순서가 정해져 있음 웹 페이지의 내용이 이차원적으로 분류된 구조 계층적 구조 계층 구조의 수직적 분기를 따라 제어 흐름이 내려간다. 네트워크 구조 진정한 웹 구조. 웹 응용의 컴포넌트가 자유 자재로 제어를 넘겨서 네비게이션이 자유롭게 된다.

웹 구조 설계 선형 구조 그리드 구조

웹 구조 설계 계층 구조 네트워크 구조

소프트웨어 재사용 새로운 개념은 아님 정의 재사용 대상 함수 라이브러리(X Window, IMSL, 등) 원시코드가 주로 재사용 정의 “이미 개발한 시스템과 비슷한 새 시스템의 개발이나 유지보수에 드는 노력을 줄이기 위하여 여러 가지 경험과 지식을 재적용하는 것” 재사용 대상 응용 분야에 관한 지식 개발 경험 설계에 관한 결정 시스템의 구조에 관한 지식 요구 분석 사항, 설계, 문서

재사용 기술의 분류

재사용 방법 블록 구성 방법 생성 방법 Ada의 패키지 generic package Instance is new type A is generic ( , , ) type B is ... with functioin “ “ package 생성 방법 <Abstract program> <Conrete program> insert $e into $Q $Q.count <- $Q.count + 1; $Q.rear <- CreateQueueNumber($e, $Q.rear);

소프트웨어 부품 서브루틴 라이브러리 코드 블럭 모듈러 프로그래밍 Ada의 패키지 객체부품 GUI 라이브러리 함수 수치 계산 함수 코드 블럭 블랙 박스와 같은 재사용 코드 블럭 파라미터를 지정하여 인스턴스화 모듈러 프로그래밍 모듈: 자료와 오퍼레이션의 묶음 Ada의 패키지 객체부품 재사용과 확장이 용이

소프트웨어 리엔지니어링 역공학 목적 완제품으로부터 설계를 해독해 내는 작업 하드웨어의 역공학-> 복제 소프트웨어의 역공학 -> 유지보수, 기능 향상 목적 spagehtii program, cryptic program, redundant program -> goog program 소프트웨어 유지보수 비용을 줄임 노후 시스템(Legacy system)을 새롭게 변혁(renovation)

리엔지니어링과 추상화 수준 요구분석 (제약사항, 목적 등) 설 계 구 현 정공학 정공학 역공학 역공학 설계복구 설계복구 재공학(개선) 재공학(개선) 재구조화 재구조화 재구조화

리엔지니어링의 정의 역공학(Reverse Engineering) 재구성(Restructuring) 리엔지니어링 시스템을 이루는 부품을 찾아내고 관계를 파악하며 다른 형태로 표현하기 위하여 대상 시스템을 분석하는 과정 재구성(Restructuring) 대상 시스템의 기능은 변화 없이 같은 추상 수준에서 표현 형태를 바꾸는 작업 리엔지니어링 대상 시스템을 새로운 요구에 맞도록 개조(renovation)하는 작업

리엔지니어링의 목적 복잡한 시스템을 다루는 방법 다른 뷰의 생성 잃어버린 정보를 회복 부작용의 발견 고수준의 추상을 합성 역공학 도구: 코드에서 원하는 정보를 추출 다른 뷰의 생성 여러 가지 다양한 표현으로 원시코드를 이해 잃어버린 정보를 회복 잦은 변경에 의하여 잃어버린 정보를 복구 부작용의 발견 원래의 요구사항과 비교 검토 고수준의 추상을 합성 재사용이 용이

리엔지니어링 기술 리엔지니어링 기술의 접근 방법 리엔지니어링 기술의 특성 비용 절감 효과에 대한 예측 단순한 프로그램 제어의 재구조화 노후 시스템의 설계 사양을 복원 변경이 힘든 경우, 새로운 시스템의 부분 요소로 캡슐화 리엔지니어링 기술의 특성 논리적 모델링 슬라이싱 비용 절감 효과에 대한 예측

리엔지니어링 기술 데이터베이스 리엔지니어링 사용자 인터페이스 리엔지니어링 분산 시스템으로의 리엔지니어링 DB 패러다임의 변화, 서로 다른 DB 시스템간의 개발 사용자 인터페이스 리엔지니어링 그래픽 중심의 사용자 인터페이스로의 변환 분산 시스템으로의 리엔지니어링 메인 프레임에서 분산 클라이언트/서버 시스템으로의 전환 객체지향 시스템으로의 리엔지니어링 절차 중심의 노후 시스템을 객체 지향 시스템으로 변환

실시간 소프트웨어 설계 실시간 소프트웨어 실시간 시스템에서의 이슈 실시간 시스템 설계 기법 프로그램 설계에 있어서 시간과 순서의 개념이 매우 중요한 경우 Ex) 환자 감시 시스템, 공정 제어 등 실시간 시스템에서의 이슈 시간과 관련된 시스템의 성능 신뢰도, 오류에서의 회복 실시간 시스템 설계 기법 연속적으로 수집되거나 만들어지는 자료 흐름 시스템 안에서 전달되는 제어 정보와 관련된 제어 처리 멀티태스킹 환경에서 일어나는 변환의 인스턴스 시스템의 상태와 상태 천이 과정

실시간 소프트웨어 설계 Ward와 Meller의 방법 쌍 화살표를 이용하여 연속적인 자료 흐름을 표현 제어 흐름은 점선, 제어 처리 프로세스는 점선의 원으로 표현 제어 프로세서 <연속 적인 자료 흐름> 프로세서 제어 저장소 <제어 정보>

실시간 소프트웨어 설계 연속으로 입력되는 자료 흐름 연속 입력 측정 온도 온도 감시 및 보정 연속 출력 보정된 온도 유지 온도