Evolutionary Prototyping Process - Georgia Tech - Software Development Process

Udacity
23 Feb 201502:09

Summary

TLDREvolutionary prototyping is a software development process that involves iterative refinement of a system based on customer feedback. It begins with an initial concept, followed by the design and implementation of a prototype. This prototype is then continuously refined until it meets customer satisfaction, after which it is completed and released as the final product. This approach is particularly useful when requirements are not fully understood, as it allows for immediate feedback and risk minimization. However, it can be challenging to plan due to unpredictable iteration cycles and may lead to a 'cut and fix' mentality, potentially compromising product quality.

Takeaways

  • ๐ŸŒฑ **Evolutionary Prototyping Phases**: The process involves four main phases: initial concept, design and implementation of a prototype, refinement until acceptance, and final completion and release.
  • ๐Ÿ”„ **Continuous Refinement**: Systems developed through evolutionary prototyping are continually refined and rebuilt, making it suitable for situations where requirements are not fully understood.
  • ๐Ÿ› ๏ธ **Incremental Development**: Developers focus on building and refining parts of the system that are well-understood, rather than attempting to develop a complete system upfront.
  • ๐Ÿ” **Feedback-Driven Iterations**: Customer feedback is integral, guiding subsequent iterations where changes are made or new features are added to the prototype.
  • ๐Ÿ **Completion upon Customer Satisfaction**: Development concludes and the prototype is released as the final product once the customer is satisfied with its functionality.
  • ๐Ÿ“ข **Advantage: Immediate Feedback**: The main advantage is the immediate feedback loop, which minimizes the risk of developing a system that doesn't meet user needs.
  • ๐Ÿ“ˆ **Disadvantage: Planning Difficulty**: It's challenging to plan the development timeline due to the unpredictable number of iterations required.
  • โš’๏ธ **Risk of 'Cut and Fix' Approach**: There's a risk of adopting a subpar development approach where quick fixes are made based on feedback, potentially leading to a lower quality final product.
  • ๐Ÿค– **Variety in Prototyping**: Evolutionary prototyping is one of many prototyping approaches; others, like throwaway prototyping, exist for different purposes, such as gathering requirements only.
  • ๐Ÿ” **Partial System Demonstration**: The partial system is shown to the customer for feedback, highlighting an iterative and collaborative development process.

Q & A

  • What is the first phase of the evolutionary prototyping process?

    -The first phase of the evolutionary prototyping process is starting from an initial concept.

  • What is the main activity during the second phase of evolutionary prototyping?

    -During the second phase, developers design and implement a prototype based on the initial concept.

  • How does the refinement of the prototype occur in evolutionary prototyping?

    -The prototype is refined through continuous iteration, making changes or adding new features based on customer feedback until it is acceptable.

  • What is the final step in the evolutionary prototyping process?

    -The final step is to complete and release the prototype as the final product once the customer agrees it is good enough.

  • Why is evolutionary prototyping suitable when requirements are not well understood?

    -Evolutionary prototyping is suitable when requirements are not well understood because it allows developers to start with what they do understand and iteratively improve the system based on feedback.

  • What part of the system do developers typically start with in evolutionary prototyping?

    -Developers start by developing the parts of the system that they understand, rather than attempting to develop the entire system at once.

  • How does customer feedback influence the evolutionary prototyping process?

    -Customer feedback is used to drive the next iteration, guiding whether changes are made to current features or new features are added.

  • What is the main advantage of using evolutionary prototyping?

    -The main advantage is immediate feedback, which minimizes the risk of implementing the wrong system.

  • What are the difficulties associated with planning in evolutionary prototyping?

    -It is difficult to plan in advance how long the development will take because the number of iterations needed is unknown.

  • What is a potential negative outcome of the evolutionary prototyping process?

    -A potential negative outcome is that the process can lead to a 'cut and fix' approach, resulting in a final product that is functional but not of high quality.

  • How does throwaway prototyping differ from evolutionary prototyping?

    -In throwaway prototyping, the prototype is used only to gather requirements and is discarded after that, rather than being evolved into the final product as in evolutionary prototyping.

Outlines

00:00

๐Ÿ”ง Evolutionary Prototyping Process

The paragraph introduces the evolutionary prototyping process model, which is divided into four main phases: starting from an initial concept, designing and implementing a prototype, refining the prototype until it is acceptable, and finally completing and releasing the prototype. This model is ideal for situations where not all requirements are well understood. Developers begin by developing parts of the system they understand, then iteratively improve or extend the prototype based on customer feedback. The process continues until the customer is satisfied, at which point the developers complete the remaining work and release the final product. The main advantage of this approach is immediate feedback, which minimizes the risk of implementing the wrong system. However, it is challenging to plan due to the unpredictable number of iterations required, and it can lead to a 'cut and fix' approach, potentially resulting in a product of lower quality. The paragraph also mentions that there are various types of prototyping, with evolutionary prototyping being just one of them, in contrast to throwaway prototyping where the prototype is discarded after requirements gathering.

Mindmap

Keywords

๐Ÿ’กEvolutionary Prototyping

Evolutionary prototyping is a software development process model that involves iterative refinement of a prototype based on user feedback. It is particularly useful when the full requirements of the system are not well understood at the outset. In the context of the video, this model is described as starting with an initial concept, then designing and implementing a prototype, refining it until it meets customer satisfaction, and finally completing and releasing the prototype. This approach allows for continuous improvement and adaptation to changing requirements, making it a flexible method for software development.

๐Ÿ’กPrototype

A prototype in software development is an early, often incomplete version of a product used to demonstrate and test concepts and functionalities. In the video, the prototype is the initial version of the software that developers create based on their understanding of the requirements. It serves as a basis for gathering customer feedback, which is then used to guide further development. The prototype is iteratively refined until it meets the customer's needs, and eventually, it becomes the final product.

๐Ÿ’กRefinement

Refinement in the context of evolutionary prototyping refers to the process of improving the prototype by incorporating user feedback and making necessary changes. The video explains that developers refine the prototype until it is acceptable to the customer, which may involve making changes to current features or adding new ones. This iterative process helps in gradually shaping the software to better meet the user's expectations and requirements.

๐Ÿ’กCustomer Feedback

Customer feedback is a critical component of the evolutionary prototyping process, as it provides valuable insights into the user's needs and expectations. The video emphasizes that developers show the partial system to the customer and use their feedback to drive the next iteration of the prototype. This immediate feedback loop minimizes the risk of developing a system that does not meet the user's needs and ensures that the final product is aligned with the customer's vision.

๐Ÿ’กIteration

Iteration in software development refers to the process of repeating the development cycle with each cycle building on the previous one to add more features or improve existing ones. The video describes how, in evolutionary prototyping, the prototype is continually refined through multiple iterations based on customer feedback. Each iteration represents a step closer to the final product, with the aim of enhancing the system's functionality and usability.

๐Ÿ’กRisk Minimization

Risk minimization is the process of identifying potential risks and taking steps to reduce their impact. In the video, it is mentioned as a main advantage of evolutionary prototyping. By getting immediate feedback from the customer, developers can quickly identify and correct issues, thus minimizing the risk of implementing a system that does not meet the requirements. This approach helps in reducing the overall project risk and ensuring a successful outcome.

๐Ÿ’กPlanning Difficulty

Planning difficulty refers to the challenge of predicting the duration and resources needed for a project, especially when the development process is iterative and flexible. The video points out that one of the main disadvantages of evolutionary prototyping is the difficulty in planning because the number of iterations required is uncertain. This can lead to challenges in project management and resource allocation, as the development timeline may be less predictable than in more structured development models.

๐Ÿ’กCut and Fix

Cut and fix is a term used in the video to describe a development approach where a basic version of the software is quickly put together, and then main issues are fixed as feedback is received. This approach can lead to a final product that is functional but may not be of high quality. The video cautions against using evolutionary prototyping as an excuse to adopt a cut and fix methodology, which could result in a suboptimal final product.

๐Ÿ’กThrowaway Prototyping

Throwaway prototyping is a method where a prototype is created to understand and clarify requirements but is not used as the basis for the final product. Unlike evolutionary prototyping, where the prototype is refined and becomes the final product, in throwaway prototyping, the prototype is discarded after its purpose is served. The video mentions this as an alternative approach to highlight the different ways prototyping can be utilized in software development.

๐Ÿ’กRequirements Gathering

Requirements gathering is the process of collecting and documenting the specific needs and expectations of the end-users of a system. In the context of the video, throwaway prototyping is mentioned as a method used for requirements gathering, where the prototype serves to help clarify and understand the requirements before being discarded. This process is crucial for ensuring that the final product meets the user's needs and expectations.

Highlights

Evolutionary prototyping is a process model that works in four main phases: initial concept, design and implementation, refinement, and completion and release.

The system is continually refined and rebuilt in evolutionary prototyping, making it suitable for situations where requirements are not fully understood.

Developers start by developing parts of the system they understand, avoiding unclear areas.

Customer feedback is integral, driving the next iteration of the prototype.

The prototype can be improved or extended based on feedback, focusing on current features or adding new ones.

Development continues until the customer agrees the prototype meets their needs, after which the final product is completed and released.

Evolutionary prototyping offers immediate feedback, minimizing the risk of implementing the wrong system.

Planning is challenging in evolutionary prototyping due to the unpredictable number of iterations required.

There's a risk of adopting a 'cut and fix' approach, which can lead to a lower quality final product.

Evolutionary prototyping is just one of many prototyping methods, differing from others like throwaway prototyping.

Throwaway prototyping involves creating a prototype solely for gathering requirements, which is discarded after use.

The process model allows for iterative development, adapting to customer needs and feedback.

Evolutionary prototyping is ideal for dynamic environments where requirements may change over time.

The prototype serves as a communication tool, helping to clarify and confirm customer expectations.

The iterative nature of the model can lead to better alignment between the developed system and user needs.

The model supports incremental development, allowing for the gradual building up of system features.

Evolutionary prototyping can be more time-consuming due to the iterative refinement process.

It requires a collaborative approach between developers and customers for effective feedback loops.

The model may not be suitable for projects with strict deadlines or fixed scope requirements.

The final product is expected to be more user-centric due to the continuous involvement of the customer.

Transcripts

play00:00

The next process model I want to discuss is evolutionary

play00:02

prototyping, which works in four main phases. We start

play00:05

from an initial concept, then we design and implement

play00:08

a prototype based on this initial concept, refine the prototype

play00:11

until it is acceptable, and finally we complete and

play00:14

release the prototype. Therefore, when developing a system using

play00:17

evolutionary prototyping, the system is continually refined and rebuilt.

play00:22

So it is an ideal process when not all requirements

play00:25

are well understood. Which is a very common situation. So, looking

play00:28

at this in a little more details, what happens is that

play00:30

developers start by developing the parts of the system that they

play00:33

understand, instead of working on developing a whole system, including parts

play00:37

that might not be very clear at that stage. The partial

play00:40

system is then shown to the customer and the customer feedback

play00:43

is used to drive the next iteration, in which either changes

play00:47

are made to the current features or new features are added.

play00:50

So, either the current prototype is improved or the

play00:53

prototype is extended. And finally, when the customer agrees that

play00:56

the prototype is good enough, the developers will complete all

play00:58

the remaining work on the system and release the prototype

play01:01

as the final product. So let's discuss as we did

play01:03

for the previous process models, what are the main advantages

play01:06

and disadvantages of evolutionary prototyping. In this case, the main

play01:10

advantage is the immediate feedback. Developers get feedback immediately as

play01:15

soon as they produce a prototype and they show it to

play01:17

the customer and therefore, the risk of implementing the wrong system is

play01:21

minimized. The main negative is the fact that it's difficult to plan.

play01:25

When using evolutionary prototype it is difficult to plan in advance how

play01:29

long the development is going to take, because we don't know how

play01:31

many iterations will be needed. And another drawback is that it can

play01:34

easily become an excuse to do kind of do cut and fix

play01:37

kind of approaches in which we hack something together, fix the main

play01:40

issues when the customer gives us feedback, and then continue this

play01:43

way, until the final product is something that is kind of

play01:46

working, but it's not really a product of high quality. Something

play01:49

else I want to point out before we move to the next

play01:51

software process model is that there are many different kinds of

play01:54

prototyping, so evolutionary prototyping is just

play01:56

one of them. For example, throwaway

play01:58

prototyping is another kind of prototyping in which the prototype is

play02:02

just used to gather requirements, but is thrown away at the end

play02:05

of the requirements gathering, instead of being evolved as it happens here.

Rate This
โ˜…
โ˜…
โ˜…
โ˜…
โ˜…

5.0 / 5 (0 votes)

Related Tags
Evolutionary PrototypingSoftware DevelopmentFeedback LoopPrototype RefinementSystem DesignCustomer EngagementDevelopment PlanningQuality AssuranceRapid IterationAgile Methodology