Lectures Software Engineering - Chapter 8: Software Prototypin

ppt 39 trang hoanguyen 3250
Bạn đang xem 20 trang mẫu của tài liệu "Lectures Software Engineering - Chapter 8: Software Prototypin", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptlectures_software_engineering_chapter_8_software_prototypin.ppt

Nội dung text: Lectures Software Engineering - Chapter 8: Software Prototypin

  1. Software Prototyping l Rapid software development to validate requirements ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1
  2. Objectives l To describe the use of prototypes in different types of development project l To discuss evolutionary and throw-away prototyping l To introduce three rapid prototyping techniques - high-level language development, database programming and component reuse l To explain the need for user interface prototyping ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 2
  3. Topics covered l Prototyping in the software process l Prototyping techniques l User interface prototyping ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 3
  4. System prototyping l Prototyping is the rapid development of a system l In the past, the developed system was normally thought of as inferior in some way to the required system so further development was required l Now, the boundary between prototyping and normal system development is blurred and many systems are developed using an evolutionary approach ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 4
  5. Uses of system prototypes l The principal use is to help customers and developers understand the requirements for the system • Requirements elicitation. Users can experiment with a prototype to see how the system supports their work • Requirements validation. The prototype can reveal errors and omissions in the requirements l Prototyping can be considered as a risk reduction activity which reduces requirements risks ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 5
  6. Prototyping benefits l Misunderstandings between software users and developers are exposed l Missing services may be detected and confusing services may be identified l A working system is available early in the process l The prototype may serve as a basis for deriving a system specification l The system can support user training and system testing ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 6
  7. Prototyping process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 7
  8. Prototyping benefits l Improved system usability l Closer match to the system needed l Improved design quality l Improved maintainability l Reduced overall development effort ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 8
  9. Prototyping in the software process l Evolutionary prototyping • An approach to system development where an initial prototype is produced and refined through a number of stages to the final system l Throw-away prototyping • A prototype which is usually a practical implementation of the system is produced to help discover requirements problems and then discarded. The system is then developed using some other development process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 9
  10. Prototyping objectives l The objective of evolutionary prototyping is to deliver a working system to end-users. The development starts with those requirements which are best understood. l 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 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 10
  11. Approaches to prototyping ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 11
  12. Evolutionary prototyping l Must be used for systems where the specification cannot be developed in advance e.g. AI systems and user interface systems l Based on techniques which allow rapid system iterations l Verification is impossible as there is no specification. Validation means demonstrating the adequacy of the system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 12
  13. Evolutionary prototyping ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 13
  14. Evolutionary prototyping advantages l Accelerated delivery of the system • Rapid delivery and deployment are sometimes more important than functionality or long-term software maintainability l User engagement with the system • Not only is the system more likely to meet user requirements, they are more likely to commit to the use of the system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 14
  15. Evolutionary prototyping l Specification, design and implementation are inter-twined l The system is developed as a series of increments that are delivered to the customer l Techniques for rapid system development are used such as CASE tools and 4GLs l User interfaces are usually developed using a GUI development toolkit ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 15
  16. Evolutionary prototyping problems l Management problems • Existing management processes assume a waterfall model of development • Specialist skills are required which may not be available in all development teams l Maintenance problems • Continual change tends to corrupt system structure so long-term maintenance is expensive l Contractual problems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 16
  17. Prototypes as specifications l Some parts of the requirements (e.g. safety- critical functions) may be impossible to prototype and so don’t appear in the specification l An implementation has no legal standing as a contract l Non-functional requirements cannot be adequately tested in a system prototype ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 17
  18. Incremental development l System is developed and delivered in increments after establishing an overall architecture l Requirements and specifications for each increment may be developed l Users may experiment with delivered increments while others are being developed. therefore, these serve as a form of prototype system l Intended to combine some of the advantages of prototyping but with a more manageable process and better system structure ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 18
  19. Incremental development process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 19
  20. Throw-away prototyping l Used to reduce requirements risk l The prototype is developed from an initial specification, delivered for experiment then discarded l The throw-away prototype should NOT be considered as a final system • Some system characteristics may have been left out • There is no specification for long-term maintenance • The system will be poorly structured and difficult to maintain ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 20
  21. Throw-away prototyping ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 21
  22. Prototype delivery l Developers may be pressurised to deliver a throw- away prototype as a final system l This is not recommended • It may be impossible to tune the prototype to meet non- functional requirements • The prototype is inevitably undocumented • The system structure will be degraded through changes made during development • Normal organisational quality standards may not have been applied ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 22
  23. Rapid prototyping techniques l Various techniques may be used for rapid development • Dynamic high-level language development • Database programming • Component and application assembly l These are not exclusive techniques - they are often used together l Visual programming is an inherent part of most prototype development systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 23
  24. Dynamic high-level languages l Languages which include powerful data management facilities l Need a large run-time support system. Not normally used for large system development l Some languages offer excellent UI development facilities l Some languages have an integrated support environment whose facilities may be used in the prototype ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 24
  25. Prototyping languages ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 25
  26. Choice of prototyping language l What is the application domain of the problem? l What user interaction is required? l What support environment comes with the language? l Different parts of the system may be programmed in different languages. However, there may be problems with language communications ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 26
  27. Database programming languages l Domain specific languages for business systems based around a database management system l Normally include a database query language, a screen generator, a report generator and a spreadsheet. l May be integrated with a CASE toolset l The language + environment is sometimes known as a fourth-generation language (4GL) l Cost-effective for small to medium sized business systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 27
  28. Database programming ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 28
  29. Component and application assembly l Prototypes can be created quickly from a set of reusable components plus some mechanism to ‘glue’ these component together l The composition mechanism must include control facilities and a mechanism for component communication l The system specification must take into account the availability and functionality of existing components ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 29
  30. Prototyping with reuse l Application level development • Entire application systems are integrated with the prototype so that their functionality can be shared • For example, if text preparation is required, a standard word processor can be used l Component level development • Individual components are integrated within a standard framework to implement the system • Frame work can be a scripting language or an integration framework such as CORBA ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 30
  31. Reusable component composition ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 31
  32. Compound documents l For some applications, a prototype can be created by developing a compound document l This is a document with active elements (such as a spreadsheet) that allow user computations l Each active element has an associated application which is invoked when that element is selected l The document itself is the integrator for the different applications ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 32
  33. Application linking in compound documents ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 33
  34. Visual programming l Scripting languages such as Visual Basic support visual programming where the prototype is developed by creating a user interface from standard items and associating components with these items l A large library of components exists to support this type of development l These may be tailored to suit the specific application requirements ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 34
  35. Visual programming with reuse ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 35
  36. Problems with visual development l Difficult to coordinate team-based development l No explicit system architecture l Complex dependencies between parts of the program can cause maintainability problems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 36
  37. User interface prototyping l It is impossible to pre-specify the look and feel of a user interface in an effective way. prototyping is essential l UI development consumes an increasing part of overall system development costs l User interface generators may be used to ‘draw’ the interface and simulate its functionality with components associated with interface entities l Web interfaces may be prototyped using a web site editor ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 37
  38. Key points l A prototype can be used to give end-users a concrete impression of the system’s capabilities l Prototyping is becoming increasingly used for system development where rapid development is essential l Throw-away prototyping is used to understand the system requirements l In evolutionary prototyping, the system is developed by evolving an initial version to the final version ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 38
  39. Key points l Rapid development of prototypes is essential. This may require leaving out functionality or relaxing non-functional constraints l Prototyping techniques include the use of very high-level languages, database programming and prototype construction from reusable components l Prototyping is essential for parts of the system such as the user interface which cannot be effectively pre-specified. Users must be involved in prototype evaluation ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 39