제2부 요구사항과 명세서 Chapter 8. Software Prototyping - Animating and demonstrating system requirements (시스템 요구사항을 동작시켜 보여주는 과정) Objectives To describe the use of prototypes in requirements validation (요구사항 검증 과정에서 시제품화 용법을 설명) To discuss evolutionary and throw-away prototyping (진화적 시제품화와 광고식 시제품화에 대한 논의) To introduce rapid prototyping techniques (신속 시제품화 기술 소개) To explain the need for user interface prototyping (사용자 인터페이스 시제품화에 대한 필요성 설명) Contents 8.1 Prototyping in the software process (소프트웨어 프로세서에서 시제품화) 8.2 Prototyping techniques (시제품 기술) 8.3 User interface prototyping (사용자 인터페이스 시제품) Chapter 8 - Slide 1
제2부 요구사항과 명세서 / 8장 S/W 시제품화 Uses of system prototypes (시스템시제품의 용도) The principal use is to help customers and developers understand the requirements for the system (원칙적인 용도는 고객과 개발 담당자가 시스템에 대한 요구사항들을 이해할 수 있도록 돕는 것이다.) The prototype may be used for user training before a final system is delivered (최종 시스템의 출하 전에 사용자 훈련을 위해 시제품이 사용된다) The prototype may be used for back-to-back testing (Back-to-back 시스템시험에시제품이사용될수 있다) Back-to-Back testing (동일한 시험 내용(test case)을 시제품과 피시험 시스템에 투입하여, 2개 결과가 같으면 오류가 없고, 틀리면 그 이유를 관찰하는 시험법) Chapter 8 - Slide 2
제2부 요구사항과 명세서 / 8장 S/W 시제품화 Prototyping benefits (시제품화의 장점) 1) Misunderstandings between software users and developers are exposed (S/W 사용자와 개발 담당자 간의 오해가 노출된다) 2) Missing services may be detected (누락된 서비스들이 검출된다) 3) Confusing services may be identified (혼동되는 서비스들이 식별된다) 4) A working system is available early in the process (처리과정 중에 작업용 시스템을 초기에 쓸 수 있게 한다) 5) The prototype may serve as a basis for deriving a system specification (시스템에서 도출을 위한 기초 자료로 시제품화가 기여할 수 있다) 6) 완벽하지 못하거나, 일관성 없는 요구사항을 발견할 수 있다. Chapter 8 - Slide 3
제2부 요구사항과 명세서 / 8장 S/W 시제품화 Prototyping process (시제품화 과정) Establish prototype objectives Define prototype functionality Develop prototype Evaluate prototype Prototyping plan Outline definition Executable prototype Evaluation report [그림 8.1] 시제품화 개발 과정 Chapter 8 - Slide 4
제2부 요구사항과 명세서 / 8장 S/W 시제품화 8.1 Prototyping in the software process The objective of evolutionary prototyping is to deliver a working system to end-users. (진화적 시제품화의 목적은 작업용 시스템을 말단 사용자에게 제공하는데 있다) The development starts with those requirements which are best understood. (시스템 개발은 요구사항에 대한 최상의 이해로부터 시작되어야 한다) The objective of throw-away prototyping is to validate or derive the system requirements. (광고형 시제품화의 목적은 시스템 요구사항들을 검증하고 유도해 내는데 있다) The prototyping process starts with those requirements which are poorly understood (시제품화의 과정은 명확하게 이해하지 못하는 요구사항들부터 시작한다) (S/W 과정에서의 시제품화) Chapter 8 - Slide 5
제2부 요구사항과 명세서 / 8장 S/W 시제품화 8.1 Prototyping objectives (cont') Outline Requirements Evolutionary prototyping Throw-away Prototyping Delivered system Executable Prototype + System Specification [그림 8.2] Approaches to prototyping (시제품화의 접근법) Chapter 8 - Slide 6
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.1 Evolutionary prototyping (진화적 시스템화) Must be used for systems where the specification cannot be developed in advance (e.g. AI systems and user interface systems) (미리 명세서를 개발할 수 없는 시스템에 사용되어야 한다. 예, 인공지능시스템, 사용자 인터페이스 시스템) Based on techniques which allow rapid system iterations (신속하게 시스템을 반복할 수 있는 기법에 기본을 둔다) Verification is impossible as there is no specification. (명세서가 없기 때문에 확인 작업은 불가능하다) Validation means demonstrating the adequacy of the system (검증 작업은 시스템의 적합성을 보여주는데 의미가 있다) Chapter 8 - Slide 7
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.1 Evolutionary prototyping (cont') Develop abstract specification Build prototype system Use prototype system N Deliver system YES System adequate? [그림 8.3] Evolutionary prototyping (진화적 시스템화) Chapter 8 - Slide 8
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.1 Evolutionary prototyping (cont') Evol. prototyping problems - 다음 3가지 문제점이 있으며, 특히 규모가 크고, 수면이 긴 시스템 개발에는 문제가 된다. 1) Existing management processes assume a waterfall model of development (기존의 관리 프로세스들은 폭포수 모델의 개발로 가정한다) 2) Continual change tends to corrupt system structure so long-term maintenance is expensive (계속되는 변경 사항들이 시스템 구조를 망치는 경향이 있어, 장기간 유지관리에는 고비용이다) 3) Specialist skills are required which may not be available in all development teams (전체 개발팀에 이용될 수 없는 특수 기술이 필요하다) 단점 Organizations must accept that the lifetime of systems developed this way will inevitably be short (이 방식으로 개발된 시스템의 수명이 필연적으로 짧을 수 밖에 없다는 점을 조직이 수용해야 한다) 장점 시스템을 신속하게 개발하고 인도할 수 있어 개발 비용이 감소한다. Chapter 8 - Slide 9
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.2 Throw-away prototyping (광고형 시제품화) Used to reduce requirements risk (요구사항의 위험을 줄이는데 사용) The prototype is developed from an initial specification, delivered for experiment then discarded (이 제품은 초기 명세서로 개발되어, 경험적으로 출하되어, 나중에는 폐기된다) The throw-away prototype should NOT be considered as a final system (광고형 시제품은 최종 시스템으로 간주되어서는 않 된다. 그 이유는) 1) Some system characteristics may have been left out (어떤 시스템의 특성들은 무시되었을 수도 있다) 2) There is no specification for long-term maintenance (장기 유지관리에 대한 명세가 없다) 3) The system will be poorly structured and difficult to maintain (시스템 구조화가 빈약하여, 유지보수가 어렵다) Chapter 8 - Slide 10
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.2 Throw-away prototyping (cont') Outline requirements Develop prototype Evaluate prototype Specify system Reusable components Develop software Validate system Delivered software system [그림 8.4] Throw-away prototyping (광고형 시제품화의 S/W 프로세스) Chapter 8 - Slide 11
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.2 Throw-away prototyping (cont') Prototypes as specifications (명세서에서의 시제품화) - 광고형 시제품화 기법에서의 문제점 1) Some parts of the requirements (e.g. safety-critical functions) may be impossible to prototype and so don't appear in the specification (요구사항 중 일부(예, 안전 조건 기능)는 시제품화가 불가능하여 명세서에 표현되지 않을 수 있다) 2) An implementation has no legal standing as a contract (구현 자체가 계약에서의 합법적 입장이 아니다) 3) Non-functional requirements cannot be adequately tested in a system prototype (비기능적 요구사항들을 시스템 시제품에서 적절하게 시험할 수 없다) 4) 시제품 사용법이 최종시스템 사용법과 일치하지 않을 수도 있다. Chapter 8 - Slide 12
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.3 Incremental development (점진적 개발) System is developed and delivered in increments after establishing an overall architecture (전체적인 시스템 구조를 설정한 뒤 시스템을 점진적으로 개발하여 인도한다) Users may experiment with delivered increments while others are being developed. (개발 담당자가 다른 부분을 개발하는 동안에, 사용자들은 점진적으로 인도된 부분을 경험할 수 있다) Therefore, these serve as a form of prototype system (그러므로, 이들 인도된 부분은 시제품 시스템 형식으로 기여한다) Intended to combine some of the advantages of prototyping but with a more manageable process and better system structure (좀더 관리적인 프로세스와 더 좋은 시스템 구조로 하기위해 몇 가지 시제품화의 장점들을 결합하는 경향이다) 문제점 요구사항 완성 전에 시스템 구조를 확립해야 하기 때문에, 확립된 구조가 요구사항을 제약하는 경향 S/W 개발 담당자를 위해 설정된 모델에는 부적합하다. Chapter 8 - Slide 13
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 1절 시제품화 8.1.3 Incremental development (cont') Define system deliverables Design system architectur e Specify system increment Build system increment Validate increment NO Deliver final system YES System complete? Validate system Integrate increment [그림 8.5] Incremental development process (점진적 개발 과정) Chapter 8 - Slide 14
제2부 요구사항과 명세서 / 8장 S/W 시제품화 8.2 Prototyping techniques (시제품화 기법) Executable specification languages (실행가능 명세언어) Very high-level languages (초고수준 언어) Application generators and 4GLs (응용 프로그램 생성기와 4세대 언어) Composition of reusable components (재사용 가능 부품의 합성) Chapter 8 - Slide 15
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 (실행가능 명세언어) 8.2.1 Executable specification languages The system is specified in a formal language (시스템 명세서를 형식적(수학적) 언어로 규정한다) This specification is processed and an executable system is automatically generated (이 시스템 명세서를 처리하여 실행가능 시스템이 자동 생성된다) At the end of the process, the specification may serve as a basis for a re-implementation of the system (처리 과정의 끝에서, 시스템 명세서는 시스템의 재구현을 위한 기준으로 삼을 수 있다) Chapter 8 - Slide 16
8.2.1 Executable specification languages (cont') Problems with this approach 1) Graphical user interfaces cannot be prototyped (GUI(그래픽 사용자 인터페이스)는 시제품화 될 수 없다) 2) Formal specification development is not a rapid process (형식적 명세서 개발은 신속 처리가 않 된다) 3) The executable system is usually slow and inefficient (실행가능 시스템은 통상 느리고 비효율적이다) 4) Executable specifications only allow functional requirements to be prototyped 장점 제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 (실행가능 명세서가 오직 시제품화 되는 기능적 요구사항만 허용한다.) 1) 형식적 명세서에서 시제품을 개발한다. 2) 명세서와 시제품을 결합시킴으로써, 명세서 작성 후 시제품 개발에 추가비용이 없다. Chapter 8 - Slide 17
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.2 Very high-level languages Languages which include powerful data management facilities (강력한 데이터 관리기능을 가진 프로그래밍 언어이다) Need a large run-time support system. (규모가 큰 실행시간 지원 시스템을 보통 사용하지 않는다) Not normally used for large system development ( 대형 시스템 개발을 위해서는 보통 사용하지 않는다.) Some languages offer excellent UI development facilities (어떤 언어는 탁월한 UI 개발 기능을 제공한다) Some languages have an integrated support environment whose facilities may be used in the prototype (어떤 언어는 그 기능이 시제품에서 이용될 수 있는 통합지원환경을 가진다) Chapter 8 - Slide 18
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.2 Very high-level languages (cont') Prototyping languages Language (언어) Type (유형) Application domain Smalltalk Object-oriented Interactive systems LOOPS Wide spectrum Interactive systems Prolog Logic Symbolic processing Lisp List-based Symbolic processing Miranda Functional Symbolic processing SETL Set-based Symbolic processing APL Mathematical Scientific systems 4GLs Database Business DP CASE tools Graphical Business DP [그림 8.6] 시제품화에 적합한 언어 Chapter 8 - Slide 19
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.2 Very high-level languages (cont') Smalltalk - Very powerful system for prototyping interactive systems (대화적 시스템의 시제품화에 매우 강력한 시스템) < 강력한 시제품화 언어의 이유> 1) Object-oriented language so systems are resilient to change (객체지향 언어이기 때문에 변화에 탄력적이다) 2) The Smalltalk environment objects are available to the prototype developer (Smalltalk 환경의 객체들은 시제품 개발 담당자에게 유용한 것들이다) 3) The system includes support software such as graphical user interface generation tools (시스템은 GUI(그래픽 사용자 인터페이스) 생성 도구와 같은 지원용 S/W가 들어 있다) Chapter 8 - Slide 20
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.2 Very high-level languages (cont') 혼합적인 언어 기법 시스템의 각 부분을 각기 다른 언어로 작성하고 이 부분들 사이에 인터페이스를 위한 구조 작성 장점 단점» 논리적인 한 부분에 대해 가장 적절한 언어 선택» 시제품 개발의 속도 향상» 여러 언어들 사이의 인터페이스를 위한 구조를 만들기 어려움 Chapter 8 - Slide 21
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.3 Fourth-generation languages (4세대 언어) Domain specific languages for business systems based around a database management system (데이터베이스 관리시스템(DBMS) 위에 기본을 둔 업무용 시스템을 위한 영역 명세 언어 이다) Normally include a database query language, a screen generator, a report generator and a spreadsheet (통상, 데이터베이스 질의어, 화면 생성기, 보고서 작성기, 스프레드 쉬트 기능을 갖고 있다) May be integrated with a CASE toolset (CASE 도구와 통합될 수도 있다) Cost-effective for small to medium sized business systems (비용대 효과면에서 중소규모 업무용 시스템을 위한 것이다) Chapter 8 - Slide 22
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.3 Fourth-generation languages (cont') DB query language Screen Generator Spreadsheet Report generator Database Management System Fourth-generation language [그림 8.7] 4GLs (4세대 언어) Chapter 8 - Slide 23
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 (재사용 부품의 합성) 8.2.4 Composition of re-useable Components The system is prototyped by gluing together existing components (기존 부품들을 서로 접착제로 붙여 시스템을 시제품화 한다) Likely to become more widely used as libraries of objects become available (좀더 광범위하게 이용될 수 있도록 활용할 수 있는 객체들의 라이브러리로 이용된다) Needs a composition language such as a Unix shell language (UNIX의 쉘 언어와 같이 합성용 언어가 필요하다) Visual Basic is largely based on this approach (Visual Basic은 이 기법에 크게 기본을 두고 있다) Chapter 8 - Slide 24
제2부 요구사항과 명세서 / 8장 S/W 시제품화 / 2절 시제품 기술 8.2.4 Prototyping with reuse (cont') Reusable component repository Component composition system Executable prototype Component catalogue System Specification [그림 8.8] Composition of Reusable component (재사용 가능 부품의 합성) Chapter 8 - Slide 25
제2부 요구사항과 명세서 / 8장 S/W 시제품화 8.3 User interface prototyping (사용자 인터페이스 시제품화) It is impossible to pre-specify the look and feel of a user interface in an effective way. (사용자 인터페이스를 효과적인 방법으로 보고, 느끼도록 사전-명세를 만드는 것은 불가능하다) prototyping is essential (따라서 시제품화는 필수적이다) UI development consumes an increasing part of overall system development costs (UI 개발비는 전반적인 시스템 개발 비용부를 증가시킨다) Prototyping may use very high level languages such as Smalltalk or Lisp (시제품화에는 Smalltalk나 Lisp 같은 고수준 언어를 쓸 수 있다) User interface generators may be used to draw the interface and simulate its functionality (UI 생성기는 UI를 만들어 보여주고, 그 기능을 모의실험 하는데 사용될 수 있다) UI 시제품을 시스템 명세서로 제공한다 Chapter 8 - Slide 26
제2부 요구사항과 명세서 / 8장 S/W 시제품화 8.3 User interface prototyping (cont') User commands User interface User interface display User interface management system Application commands Application User Display specification Application command specification [그림 8.9] User interface management system (UIMS) (사용자 인터페이스 관리 시스템) Chapter 8 - Slide 27
제2부 요구사항과 명세서 / 8장 S/W 시제품화 Key points A prototype can be used to give end-users a concrete impression of the system s capabilities (시제품은 사용자가 시스템의 기능을 구체적으로 느낄 수 있게 할 수 있다) Prototyping may be evolutionary prototyping or throw-away prototyping (점진적인 시제품화와 throw-away 시제품화의 방법이 있다) Rapid development is essential for prototype systems (시제품의 개발에는 빠른 개발이 필수적이다) Prototype structures become corrupted by constant change. Hence, long-term evolution is difficult (계속적인 변경으로 인해 세제품의 구조는 나빠진다. 따라서, 긴 기간의 진화는 어려워진다) Chapter 8 - Slide 28
제2부 요구사항과 명세서 / 8장 S/W 시제품화 Key points In a throw-away prototype start with the least well-understood parts; in an evolutionary prototype, start with the best understood parts (Throw-away 시제품화는 잘 이해되지 않은 부분에서 시작한다. 점진적인 시제품화는 가장 잘 이해된 부분에서 시작한다.) Prototyping methods include the use of executable specification languages, very high-level languages, fourth-generation languages and prototype construction from reusable components (시제품화 방법은 실행 가능한 명세언어, 고수준 언어, 4세대 언어, 재사용 부품의 결합 등을 이용한다) Prototyping is essential for parts of the system such as the user interface which cannot be effectively pre-specified (UI와 같이 효과적으로 기술화는 것이 불가능한 경우 시제품화는 필수적이다.) Chapter 8 - Slide 29