Professional Documents
Culture Documents
Input/output of Requirements Engineering Process
Input/output of Requirements Engineering Process
Input/output of Requirements Engineering Process
The conventional purpose of a prototype is to allow users of the software to evaluate developers'
proposals for the design of the eventual product. Prototyping can also be used by end users to
describe and prove requirements that developers have not considered.
Advantages of prototyping
Improved and increased user involvement: Prototyping requires user involvement and allows
them to see and interact with a prototype allowing them to provide better and more complete
feedback and specifications
Reduced time and costs: Prototyping can improve the quality of requirements and specifications
provided to developers
Disadvantages of prototyping
Insufficient analysis: The focus on a limited prototype can distract developers from properly
analyzing the complete project
User confusion of prototype and finished system: Users can begin to think that a prototype,
intended to be thrown away, is actually a final system that merely needs to be finished or
polished.
Expense of implementing prototyping: the start up costs for building a development team
focused on prototyping may be high.
Developer misunderstanding of user objectives: Developers may assume that users share their
objectives without understanding wider commercial issues.
Types of prototyping
1. Throwaway prototyping
2. Evolutionary prototyping
3. Incremental prototyping
1. Throwaway prototyping
Throwaway or Rapid Prototyping refers to the creation of a model that will eventually be
discarded rather than becoming part of the final delivered software. After preliminary
requirements gathering is accomplished, a simple working model of the system is constructed to
visually show the users what their requirements may look like when they are implemented into a
finished system.
Rapid Prototyping involved creating a working model of various parts of the system at a very
early stage, after a relatively short investigation. The method used in building it is usually quite
informal, the most important factor being the speed with which the model is provided. The model
then becomes the starting point from which users can re-examine their expectations and clarify
their requirements. When this has been achieved, the prototype model is 'thrown away', and the
system is formally developed based on the identified requirements
Reusable
components
Delivered
Develop Validate software
software system system
Reason for using Throwaway Prototyping is that it can be done quickly. And it has the ability to construct
interfaces that the users can test.
Key points—
The prototype is developed from an initial specification, delivered for experiment then discarded
2. Evolutionary Prototyping
The main goal when using Evolutionary Prototyping is to build a very robust prototype in a
structured manner and constantly refine it. "The reason for this is that the Evolutionary prototype,
when built, forms the heart of the new system, and the improvements and further requirements
will be built.
When developing a system using Evolutionary Prototyping, the system is continually refined and
rebuilt. A product is never "done;" it is always maturing as the usage environment changes…we
often try to define a system using our most familiar frame of reference---where we are now. We
make assumptions about the way business will be conducted and the technology base on which
the business will be implemented. A plan is enacted to develop the capability, and, sooner or later,
something resembling the envisioned system is delivered.
Accelerated delivery of the system--Rapid delivery and deployment are sometimes more
important than functionality or long-term software maintainability
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
3. Incremental prototyping
The final product is built as separate prototypes. At the end the separate prototypes are merged in
an overall design.
Users may experiment with delivered increments while others are being developed
NO
Formal specification
A formal specification is a mathematical description of software or hardware that may be used
to develop an implementation. It describes what the system should do, not (necessarily) how the
system should do it. A design (or implementation) cannot ever be declared “correct” in isolation,
but only “correct with respect to a given specification”.
Eg; Z notation, VDM-SL
Formal specification is part of a more general collection of techniques that are known as ‘formal
methods’. These are all based on mathematical representation and analysis of software. Formal
methods include
• Formal specification;
• Specification analysis and proof;
• Transformational development;
• Program verification.
System
Formal
requirements
specification
specification
User High-level
requirements design
definition
System Architectural
modelling design
Specification techniques
Interface specification
Large systems are decomposed into subsystems with well-defined interfaces between
these subsystems. Specification of subsystem interfaces allows independent
development of the different subsystems. Interfaces may be defined as abstract data
types or object classes. The algebraic approach to formal specification is particularly
well-suited to interface specification as it is focused on the defined operations in an
object
Interface
objects
Sub-system Sub-system
A B
Specification components
Eg; Consider an air traffic control system where aircraft fly through managed sectors of
airspace. Each sector may include a number of aircraft but, for safety reasons, these
must be separated. In this example, a simple vertical separation of 300m is proposed.
The system should warn the controller if aircraft are instructed to move so that the
separation rule is breaked.