0% found this document useful (0 votes)
39 views75 pages

Software Engineering

Software engineering Notes

Uploaded by

bgmi82123
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views75 pages

Software Engineering

Software engineering Notes

Uploaded by

bgmi82123
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 75

SOFTWARE

ENGINEERING
By
NEHA BHANDARE
Chapter 1
INTRODUCTION TO SYSTEM
ENGINEERING
SYSTEM DEFINITION
• A system is a collection of interrelated components that function together to
achieve some outcome (goal or objective). Systems are created to solve problems.
One can think of the systems approach as an organized way of
dealing with a problem.
• A computer system consists of hardware components that have been carefully
chosen so that they work well together and software components or programs that
run in the computer
• The main software component is itself an operating system that manages and
provides services to other programs that can be run in the computer
BASIC COMPONENTS OF SYSTEM
• A system has three basic elements input, processing and output. The other elements
include control, feedback, boundaries, environment and interfaces.
1. Input: Input is what data the system receives to produce a certain output.
2. Output: What goes out from the system after being processed is known as
Output.
3. Processing: The process involved to transform input into output is known as
Processing.
4. Control: In order to get the desired results it is essential to monitor and control
the input Processing and the output of the system. This job is done by the control.
5. Feedback: The Output is checked with the desired standards of the output set and the
necessary steps are taken for achieving the output as per the standards, this process is called
as Feedback. It helps to achieve a much better control in the system.

6. Boundaries: The boundaries are nothing but the limit of the system. Setting up
boundaries helps for better concentration of the activities carried in the system.

7. Environment: The things outside the boundary of the system are known as environment.
Change in the environment affects the working of the system.

8. Interfaces: The interconnections and the interactions between the sub-systems is known
as the Interfaces. They may be inputs and outputs of the systems
ELEMENTS OF THE SYSTEM
1. Every system has a purpose within a larger system:- For example, the
purpose of the R&D department in organization is to generate new
product ideas and features for the organization.
2. All of a system's parts must be present for the system to carry out its
purpose optimally:- For example, the R&D system in organization
consists of people, equipment, and processes. If any one of these
components is removed, this system could no longer function.
3. A system's parts must be arranged in a specific way for the system to carry out
its purpose: For example, if you rearranged the reporting relationships in your R&D
department so that the head of new-product development reported to the entry-level lab
technician, the department would likely have trouble carrying out its purpose.

4. Systems change in response to feedback: The word feedback plays a central role in
systems thinking. Feedback is information that returns to its original transmitter such that it
influences that transmitter's subsequent actions.

5. Systems maintain their stability by making adjustments based on feedback: For


example, the body temperature generally hovers around 98.6 degrees Fahrenheit. If you get
too hot, your body produces sweat, which cools you back down.
TYPES OF SYSTEM
1. Conceptual (abstract) and Physical Systems:-
The conceptual system is also known as abstract or analytical system. It is non- non-
physical system .
Abstract Systems are represented conceptually (i.e. not existing) non-physical systems
are called abstract system. These system are prepared for studying the physical system.
For example, the computer itself is a physical system and its block diagram is called as
abstract system.These systems may be formulas, representation or model of real
system.
The Physical Systems are tangible (countable entities) and could be static or dynamic in
nature. Static means which do not change as for working or life of the system is concerned.
On the other hand, the term dynamic means, system can be change due to processing of the
system.
For example, in computer system the hardware parts are static but the data which changes
due to processing is dynamic.
2. Deterministic and Probabilistic Systems
A deterministic system works in predictable manner.
A Deterministic system is one in which the occurrence of all events is perfectly predictable. If we get the
description of the system state at a particular time, the next state can be easily predicted.
An example of a deterministic system is the common entrance examination for entry into IIM. All the entities in
the system and their interrelationships are well known and given an input the output can be determined with
certainty.
For example, in computer systems, outputs are deterministic.

A probabilistic System is one in which the occurrence of events cannot be perfectly predicated.
Though the behavior of such a system can be described in terms of probability, a certain degree of error is always
attached to the prediction of the behavior of the system.
For example, the Weather forecasting system is probabilistic.
3. Open and Closed System:- An open system does not provide for its control or
modification. It does not supervise itself so it needs to be supervised by people.
For example: If the high-speed printer used with computer systems did not have a switch to
sense whether the paper is in the printer, then a person would have to notice when the paper
runs out and signal the system (push a switch) to stop printing.

A closed system that does not interact with the outside environment is known as a closed
system i.e. it has no input or output.

For example, the Computer system is relatively closed. It does not disturb from outside the
system. A chemical reaction in the sealed tube also is an example of a closed system.
Chapter 2
INTRODUCTION TO SOFTWARE
ENGINEEING
INTRODUCTION
• Software: Software is more than just a program code. A program is an
executable code, which serves some computational purpose. Software is
considered to be collection of executable programming code, associated
libraries and documentations. Software when made for a specific requirement
is called software product. A software product has to perform certain
specific function/task required by users (customers).
• Engineering: Engineering is all about developing products, using well-
defined, scientific principles and methods.
DEFINITION OF SOFTWARE
• Software is defined as, "a set of instructions to acquire inputs and to manipulate (process)
them to produce the desired output in terms of functions and performance as determined
by the user of the software.“
OR
• A software is, "a set of instructions, (computer programs) that when executed provide
desired output, performance and function".
OR
• Software is defined as, "a data structure that enables the programmer to adequately
manipulate information".
• Software is logical rather than a physical system element.
CHARACTERISTICS OF SOFTWARE
1.Software is developed or engineered; it is not manufactured in
the classical sense:
1. Although some similarities exist between software development and
hardware manufacturing, few activities are fundamentally different.

2. In both activities, high quality is achieved through good design, but the
manufacturing phase for hardware can introduce quality problems than
software.
2. The software doesn’t “wear out.”:- Hardware components suffer from the growing
effects of many other environmental factors. Stated simply, the hardware begins to wear
out.

•Software is not susceptible to the environmental maladies that cause hardware to wear
out.

•When a hardware component wears out, it is replaced by a spare part.

•There are no software spare parts.

•Every software failure indicates an error in design or in the process through which the
design was translated into machine-executable code.

3. The software continues to be custom-built:- A software part should be planned and


carried out with the goal that it tends to be reused in various projects.
SOFTWARE APPLICATION DOMAINS
• A domain defines a set of common requirements terminology, functionality for any
software program constructed to solve a problem in the area of computer
programming environment.
1. System Software:- System software is a collection of programs written to service
other programs. Examples: Compilers, File Management Utilities, Device Drivers,
Editors and Operating Systems. These programs are heavily interacting with
hardware components.
2. Application Software:- Application software is a stand-alone program. It solves a
specific business requirement. It uses technical data which facilitates business
operations. Examples: Real-time manufacturing Process control, Payroll system
etc.
3. Engineering/Scientific Software:- Engineering/scientific software uses various number
crunching algorithms. Applications range from astronomy to volcanology, from
automotive stress analysis to space shuttle orbital dynamics etc. But new applications may
not base on the conventional numerical algorithms. Examples: System simulation,
Computer Aided Design (CAD), etc.
4. Embedded Software:- Embedded software resides within a system or product. It is used
to implement and control features and functions for the end-user for the system itself.
Embedded software can perform limited and esoteric functions. Examples: Key pad
control for refrigerator, Software in mobile phone, Software in Anti Lock Braking in car,
Software in microwave oven to control the cooking process.
5. Product Line Software:- Product Line software is developed/designed to provide a
specific capability for used by different customers. It can focus on limited and esoteric
market place like inventory control products. Examples: Spreadsheets, Software for
Entertainment, Business financial applications, Computer graphics, Multimedia, DBMS
etc.
6. Web Application:- Web application is also called 'Web Apps’. This network based
software having wide array of applications. It can be more than a set of linked hypertext
files which presents information using text and limited graphics. Web Apps are evolving
into sophisticated computing environment that not only provide stand-alone features,
computing functions, and content to the end user but also are integrated with corporate
database and business applications. Examples: Web applications include online forms,
shopping carts, word processors, spreadsheets, video and photo editing, file conversion,
file scanning, and email programs such as Gmail, Yahoo and AOL.

7. Artificial Intelligence (AI) Software:- Al software uses the non-numerical algorithms to


solve complex problems. Examples: The applications includes in Al are robotics, expert
systems, pattern recognition, artificial neural networks, games playing, theorem proving
etc.
DEFINITION OF SOFTWARE
ENGINEERING
• Software engineering is, "the technological and managerial discipline
concerned with systematic production and maintenance of software
products which all developed and modified on time within the cost
estimates".
OR
• Software engineering defined as, "the application of a systematic, disciplined
quantifiable approach to the development, operation and maintenance of
software, i.e., the application of engineering to software
LAYERED TECHNOLOGY OF
SOFTWARE ENGINEERING
1. A Quality Process Layer: An engineering approach must have a focus on quality
which provides a continuous process improvement culture. The software product
should fulfill the customer quality requirements (i.e efficiency, reliability, etc)
developer quality requirements (maintainability, reusability, etc), users (usability,
efficiency etc)

2. Process Layer: Foundation for Software Engineering is the Process Layer.


Software Engineering process holds all the technology layers together and enables
the timely development of computer software. It forms the base for management
control of software project
3. Methods Layer: It provides technical knowledge for developing software. The
method layer covers a broad array of tasks which include requirements analysis,
design, coding, testing and maintenance phases of the software development.

4. Tools Layer: It provides automated or semi-automated support for the


Process and Method layer. These tools are used to bring automation in software
development process Sometimes, tools are integrated in such a way that other
tools can use information created by one tool i.e., Computer-Aided Software
Engineering (CASE).
NEED FOR SOFTWARE ENGINEERING
• Handling Big Projects: A corporation must use a software engineering methodology in order to
handle large projects without any issues.

• To manage the cost: Software engineering programmers plan everything and reduce all those things
that are not required.

• To decrease time: It will save a lot of time if you are developing software using a software
engineering technique.

• Reliable software: It is the company’s responsibility to deliver software products on schedule and to
address any defects that may exist..
•Effectiveness: Effectiveness results from things being created in accordance with the
standards.

•Reduces complexity: Large challenges are broken down into smaller ones and solved
one at a time in software engineering. Individual solutions are found for each of these
issues.

•Productivity: Because it contains testing systems at every level, proper care is done to
maintain software productivity
MCCALL’S QUALITY FACTOR
• Quality factor refers to the characteristics of a product or service which
define its ability to satisfy user requirements.
• In software engineering, software quality depends on various characteristics
such as correctness, reliability and efficiency. These characteristics are used as
a checklist to implement quality in software and ensure that the software
meets all the quality standards and specifications.
Product Operation

Product Operation includes five software quality factors, which are related to the
requirements that directly affect the operation of the software such as operational
performance, convenience, ease of usage, and correctness. These factors help in
providing a better user experience.
•Correctness: The extent to which software meets its requirements specification.

•Efficiency: The number of hardware resources and code the software, needs to perform
a function.

•Integrity: The extent to which the software can control an unauthorized person from
accessing the data or software.

•Reliability: The extent to which software performs its intended functions without failure.

•Usability: The extent of effort required to learn, operate, and understand the functions
of the software.
Product Revision

Product Revision includes three software quality factors, which are required for
testing and maintenance of the software. They provide ease of maintenance,
flexibility, and testing efforts to support the software to be functional according
to the needs and requirements of the user in the future.
•Maintainability: The effort required to detect and correct an error during
maintenance.

•Flexibility: The effort needed to improve an operational software program.

•Testability: The effort required to verify software to ensure that it meets the
specified requirements.
Product Transition

Product Transition includes three software quality factors, that allow the
software to adapt to the change of environments in the new platform or
technology from the previous.
•Portability: The effort required to transfer a program from one platform to
another.
•Re-usability: The extent to which the program’s code can be reused in other
applications.

•Interoperability: The effort required to integrate two systems.


QUALITY CRITERIA
• A quality criteria is an attribute of a quality factor that is related to
software development. For example, modularity is an attribute of
the architecture of a software system.
THE SOFTWARE PROCESS
• Software development process is defined as, "a collection of procedures to develop the software
product according to certain goals or standards.“
• Generally, the following points are noted about the software process.
1. It includes guidelines which explain the objectives of each activity.
2. It includes various technical and managerial issues that are required to develop the software.
3. It uses resources subject to given constraints and produces intermediate and final products.
4. It is carried out with an entry and exit criteria that help in monitoring the beginning and
completion (ending) of the activity.
5. It is regarded as more than just a procedure, tools and techniques which are collectively used in
a structured manner to produce a product.
UMBRELLA ACTIVITIES
• Umbrella activities are a series of steps or procedures followed by a software
development team to maintain the progress, quality, changes, and risks of complete
development tasks.
1. Software Project Tracking and Control: This activity monitors the actual process so
that the management can take necessary steps if the software project move away from
the plans laid down. It involves tracking procedures and reviews to check whether the
software project is according to user requirements. It contains a documented plan used
as basis for tracking the software activities and for revising the plans.
2. Formal Technical Reviews (FTR): This activity consider the code, products and
documents of software engineering practices to detect and remove errors.
3. Software Quality Assurance (SQA): This activity assures that the software is
according to the user requirements. In addition, it is used to evaluate the
processes of developing and maintaining the quality of the software.
4. Reusability Management: This activity determines the criteria for product's re- use
and establishes mechanisms to achieve re-usable components.
5. Software Configuration Management (SCM): SCM manages the changes made in
the software processes throughout the life cycle of the software project. It also
controls changes made to the configuration and maintains the integrity of the
software.
6. Risk Management: This activity identifies, analyses, evaluates and eliminates the
possibility of unfavorable deviations from the expected results in a systematic
manner and then develops strategies to manage them
SOFTWARE ENGINEERING PRACTICE

• The framework activities and umbrella activities establish a skeleton


architecture for software engineering work.
• Software Engineering Practice is a collection of concepts, principles,
methods, and tools that a software engineer calls upon on a daily basis.
• This practice allows managers to manage software projects and software
engineers to build computer programs.
THE ESSENCE OF PRACTICE
• Essence is a standard that defines the smallest set of concepts that are
common to all software projects.
• Practice is a broad array of concepts, principles, methods, and tools that you
must consider as software is planned and developed.
1. Understand the Problem (Communication and Analysis):-
• It is always better to understand the problems or difficulties arrived in the system
development.
• For this thing, customers are the important entities. We can find the problems what they
are facing in the available or manual system.
2. Plan a Solution (Planning, modeling and software design):-
• It is taking case of design part. Consider that is there any such system available and a
system design is ready. If so, revise it with new specification else design a new system. If
an existing system is available whether it is effectively implemented.
3. Carry out the Plan (Construction; code generation):-
• The coding is done for the system to be developed.
• Check whether the source-code is traceable to the design model or not.
• Check the working components i.e., sub-modules.
4. Examine the Result (testing and quality assurance):-
• Check the solution with respect to perfection and accuracy.
• Test all the components and sub-systems.
• Check the result with the specifications given by customer.
GENERAL PRINCIPLES
• Principle# 1: Remember the reason that the software exists
• A software system exists for one reason to provide value to its users.
• The hardware platforms or development process, are should think for the real value
to the system.
• Principle# 2: Keep it simple
• The design should be simple so that system must be easily understood and easily to
maintained.
• Simple design does not mean that quick and dirty design.
• Principle# 3: Maintain the Vision of the project
• A clear vision is essential for the success of a software project.
• And it should be maintained.
• We should have an architect who can hold the vision and enforce compliance
helps ensure a better successful software project.

• Principle# 4: What you produce, other will consume


• Always design, specify and implement knowing that someone else will later have
to understand and modify what you did.
• Someone may debug your code without asking you about the details of the code.
• Principle# 5: Be Open to the future
• A system which has long lifetime has more value.
• The lifetime of software is measured in months rather than years.
• All possible solutions must be available in the system of there is a change required in a
system.
• Principle# 6: Plan Ahead for software Reuse
• Reusability saves time and effort.
• The reuse of code and design is provide us major benefit of using object oriented
technology.
• Reuse reduces the cost and increases the value of both i.e. reusable components and the
system.
• Principle# 7: Think then Act
• Placing clear idea and complete thought before action will almost always produce better
results.
• Thinking again the knowledge about how to do things right.
• If we follow these Hook's seven principles, many of the difficulties in building complex
Chapter 3
SOFTWARE DEVELOPMENT LIFE
CYCLE
SDLC
• A software life cycle model is a particular abstraction that represents a
software life cycle. A software life cycle model is often called a Software
Development Life Cycle (SDLC).
Stage1: Planning and requirement analysis
Requirement Analysis is the most important and necessary stage in SDLC.
The senior members of the team perform it with inputs from all the stakeholders and domain experts or SMEs in
the industry.
Planning for the quality assurance requirements and identifications of the risks associated with the projects is
also done at this stage.
For Example, A client wants to have an application which concerns money transactions. In this method, the
requirement has to be precise like what kind of operations will be done, how it will be done, in which currency it
will be done, etc.

Stage2: Analysis/Defining Requirements


Once the requirement analysis is done, the next stage is to certainly represent and document the software
requirements and get them accepted from the project stakeholders.
This is accomplished through "SRS"- Software Requirement Specification document which contains all the
product requirements to be constructed and developed during the project life cycle.
Stage3: Designing the Software
The next phase is about to bring down all the knowledge of requirements, analysis, and design of the software
project. This phase is the product of the last two, like inputs from the customer and requirement gathering.

Stage4: Developing the project


In this phase of SDLC, the actual development begins, and the programming is built. The implementation of
design begins concerning writing code. Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters, debuggers, etc. are used to develop and
implement the code.

Stage5: Testing
After the code is generated, it is tested against the requirements to make sure that the products are solving the
needs addressed and gathered during the requirements stage.
During this stage, unit testing, integration testing, system testing, acceptance testing are done.
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is deployed.
Then based on the assessment, the software may be released as it is or with suggested enhancement in the
object segment.
After the software is deployed, then its maintenance begins.

Stage7: Maintenance
Once when the client starts using the developed systems, then the real issues come up and requirements to be
solved from time to time.
This procedure where the care is taken for the developed product is known as maintenance.
Advantages of SDLC
• A formally defined method for software development in the form of the
SDLC achieves a number of benefits:
• A common vocabulary for each step.
• Defined communication channels between development teams and
stakeholders.
• Clear roles and responsibilities among developers, designers, business
analysts, and project managers.
• Clearly-defined inputs and outputs from one step to the next.
Difference between System analysis and system design
1. System design is the creation as the
1. System analysis is the process of
system which is the solution of the
examination of the problem.
problem.
2. It is related with identifying all the
2. It is related with the co-ordination of
constraints and influences.
the activities, job procedures and
3. It deals with data collection and a
equipment utilization in order to
detailed evaluation of current system.
4. It gives logical model of the system achieves system goals.
through Data Flow Diagrams (DFDs) 3. It deals with general and detailed
and Data Dictionary etc. design specification of input, output,
files and procedures. It also deals with
program development, testing and
user acceptance.
4. It provides technical specification and
reports with which the problem can
be tackled.
A Generic Process Model
• A software process is a set of activities and associated results, which produce
a software product. A software process model is an abstract representation
of a software process.
• A process model is defined as, "a model of a process system that describes
process organization, categorization, hierarchy, interrelationship, and
tailorability".
Activities of Generic Process Model
• The generic process Model includes following five main activities.
1. Communication: Involves communication among the customer and other stake holders;
includes requirements gathering.
2. Planning: Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule.
3. Modelling (Analyze, Design): Includes the creation of models to better under the
requirements and the design.
4. Construction (Code, Test): Combines code generation and testing to find errors.
5. Deployment: Involves delivery of software to the customer for evaluation and feedback.
Advantages of Process Model
1. Enables Effective Communication: It enhances understanding and provides a
specific basis for process execution.
2. Facilitates Process Reuse: Process development is a time consuming and expensive
activity. Thus, the software development team utilizes the existing processes for
different projects.
3. Effective: Since, process models can be used again and again; re-usable processes
provide an effective means for implementing processes for software development.
4. Facilitates Process Management: They provide a framework for defining process
status criteria and measures for software development.
Prescriptive Process Model
• A software process model presents a description of a process from some particular
perspective.
• A prescriptive process model defines a distinct set of activities, actions, tasks,
milestones, and work products that are required to engineer high-quality software.
• There are three types of prescriptive process models. They are:
• 1. Waterfall model.
• 2. Incremental process model.
• 3. Evolutionary process model.
Waterfall Model
• The waterfall model was first process model. It is also referred to as a linear-
sequential life cycle model or 'Classic life cycle model’.
• This model is very simple to understand and use. It is traditional software
lifecycle model and best understood by upper management.
• In waterfall model, a work flow is in a linear (sequential) fashion. The
waterfall model often used with well-defined adaptations or enhancements to
current software.
V And V Model
• A contemporary of traditional software development model is 'V-Model'. V-Model
also referred to as the Verification and Validation Model. This is an extension of the
Waterfall model.
• In this, each phase of SDLC must complete before the next phase starts. It follows
a sequential design process same as the waterfall model. Testing of the device is
planned in parallel with a corresponding stage of development.
• The crux of V model establishes an association between each phase of testing with
that of development. The phases of testing are categorized as "Validation Phase"
and that of development as "Verification Phase". Therefore for each phase of
development there's a corresponding test activity planned in advance.
Verification: It involves a static analysis method (review) done without executing
code. It is the process of evaluation of the product development process to find
whether specified requirements meet.

Validation: It involves dynamic analysis method (functional, non-functional),


testing is done by executing code. Validation is the process to classify the
software after the completion of the development process to determine whether
the software meets the customer expectations and requirements.
1.Business requirement analysis: This is the first step where product requirements understood from the
customer's side. This phase contains detailed communication to understand customer's expectations and exact
requirements.
2.System Design: In this stage system engineers analyze and interpret the business of the proposed system by
studying the user requirements document.
3.Architecture Design: The baseline in selecting the architecture is that it should understand all which typically
consists of the list of modules, brief functionality of each module, their interface relationships, dependencies,
database tables, architecture diagrams, technology detail, etc. The integration testing model is carried out in a
particular phase.
4.Module Design: In the module design phase, the system breaks down into small modules. The detailed design
of the modules is specified, which is known as Low-Level Design
5.Coding Phase: After designing, the coding phase is started. Based on the requirements, a suitable
programming language is decided. There are some guidelines and standards for coding. Before checking in the
repository, the final build is optimized for better performance, and the code goes through many code reviews
to check the performance.
1.Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module design phase. These
UTPs are executed to eliminate errors at code level or unit level. A unit is the smallest entity which can
independently exist, e.g., a program module. Unit testing verifies that the smallest entity can function correctly
when isolated from the rest of the codes/ units.
2.Integration Testing: Integration Test Plans are developed during the Architectural Design Phase. These tests
verify that groups created and tested independently can coexist and communicate among themselves.
3.System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit and Integration Test
Plans, System Tests Plans are composed by the client’s business team. System Test ensures that expectations
from an application developer are met.
4.Acceptance Testing: Acceptance testing is related to the business requirement analysis part. It includes testing
the software product in user atmosphere. Acceptance tests reveal the compatibility problems with the different
systems, which is available within the user atmosphere. It conjointly discovers the non-functional problems like
load and performance defects within the real user atmosphere.
Incremental Process Model
• The incremental model is defined as, "a model of software development
where the product is designed, implemented and tested incrementally (a little
more is added each time) until the product is finished”.
• In incremental model, Multiple development cycles take place that making
the software life cycle a multi-waterfall. In this model, cycles are divided up
into smaller, more easily managed modules.
Evolutionary Process Model
• Evolutionary model is useful for projects using new technology that is not
well understood. This is also used for complex projects where all
functionality must be delivered at one time, but the requirements are unstable
or not well understood at the beginning.
• It has basic two models i.e. Prototyping and Spiral Model.
Prototyping Model
• The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models).
• This model is used when the customers do not know the exact
project requirements beforehand. In this model, a prototype of the
end product is first developed, tested, and refined as per customer
feedback repeatedly till a final acceptable prototype is achieved
which forms the basis for developing the final product.
Phases Of Prototyping Model
1. Requirement gathering: In this approach product requirements are
gathered. Developer and customer meet and discuss overall objectives of
the software. Identify those requirements which are known. Detailed design
like performance and security are not discussed in this step.
2. Quick Design: Quick design system is created when requirements are
known. The quick design focuses on the representation of those aspects of
the software that are visible to the customer/user (e.g., input approaches
and output formats.) rather then detailed design plan. It helps to construct
a prototype.
3. Building Prototype: Information gathered in quick design leads to the construction of
a prototype. A prototype is constructed using several tools. Prototypes are prepared to
represent input screen and output formats.
4. User Evaluation: Evaluation of prototype recognizes its strengths and weaknesses like
what is to be added or removed. User gives comments and suggestions which in turn are
provided to the developer.
5. Refining prototype: If the user is not satisfied with the current prototype then it
improves according to the requirement and a new prototype is developed. New
prototype is evaluated like previous prototype and the process continues until all
requirements are met. When the user is satisfied with the developed prototype, a system
is developed on the basis of final prototype.
6. Engineer product: In this approach user accept the end prototype when all the
requirements are completely met. It evaluates the end system with its regular
maintenance for preventing its failures.
Types of Prototyping Models

There are four types of Prototyping Models, which are described below:
1. Rapid Throwaway Prototyping
2. Evolutionary Prototyping
3. Incremental Prototyping
4. Extreme Prototyping
1. Rapid Throwaway Prototyping

• This technique offers a useful method of exploring ideas and getting


customer feedback for each of them.
• In this method, a developed prototype need not necessarily be a part of the
accepted prototype.
• Customer feedback helps prevent unnecessary design faults and hence, the
final prototype developed is of better quality.
2. Evolutionary Prototyping
• In this method, the prototype developed initially is incrementally refined
based on customer feedback till it finally gets accepted.
• In comparison to Rapid Throwaway Prototyping, it offers a better approach
that saves time as well as effort.
• This is because developing a prototype from scratch for every iteration of
the process can sometimes be very frustrating for the developers.
3. Incremental Prototyping
• In this type of prototype model, final product requirements are
break into smaller parts and each part is developed as a separate
prototype. In the end, all the parts (prototypes) are merged which
becomes a final product.
4. Extreme Prototyping:
• This type of prototyping model is mainly used for web applications. It is
divided into three phases:
• (i) First basic prototype with static pages is created, it consists of HTML
pages.
• (ii) Using a prototype service layer, data processing is simulated.
• (iii) In the last phase, services are implemented.
Spiral Model
• The Spiral Model is a Software Development Life Cycle (SDLC)
model that provides a systematic and iterative approach to
software development. In its diagrammatic representation, looks
like a spiral with many loops. The exact number of loops of the
spiral is unknown and can vary from project to project. Each loop of
the spiral is called a phase of the software development process.
Concurrent Model
• The concurrent development model is a model in software engineering
where more than one phase in a project is under development at any one
time instead of one phase at a time. This model supports the concept of
concurrency in that design, code, test and another related phase occur
simultaneously. They include minimizing development time, encouraging
effective interaction between development teams, and increasing the
versatility of the resulting product due to the possibility of feedback at
any step of the cycle. In their operation, each team is in harmony with the
other, reporting details in real-time thus making the processes much
more coherent and active.

You might also like