lecture 2-1
lecture 2-1
Models
Prepared by
Mr Umer Tanveer
Computer Science Lecturer
Abdul Wali Khan University Mardan .
1
Outline of lecture 2:
• The Process, Methods & tools
• Introduction to s/w process models
• linear sequential model
• Prototyping model
• RAD Model
• Evolutionary Process Models
2
The Process, Methods & Tools
• Process
• The foundation for software engineering is the process layer. Software
engineering process is the glue that holds the technology layers
together and enables rational and timely development of computer
software.
• Process defines the framework for a set key process areas that must
be established for effective delivery of software engineering
technology.
3
The Process, Methods & Tools
Methods
• Software engineering methods provide the technical “how to’s” for
building software. Methods includes array of tasks that are,
requirements analysis, design, program construction, testing, and
maintenance.
Tools
• Software engineering tools provide automated or semi-automated
support for the process and the methods
4
Introduction to s/w process models
• Definition: Software processes encompass all the activities required to
design, implement, and test a software system effectively.
• Scope: These processes are not limited to coding but include planning,
requirements gathering, and quality assurance.
• Complexity: The software development process is inherently complex,
involving multiple phases, dependencies, and deliverables.
• Beyond Technical Knowledge: Successful software development
requires skills beyond technical expertise, such as project
management, communication, and problem-solving.
• Integration: These activities need to be well-integrated and managed
to ensure the delivery of a functional and reliable software system.
5
What is a software process model?
• Definition: A software process model is an abstraction that simplifies and
represents the software development process, focusing on its key
components and flow.
• Stages and Order: It specifies the distinct stages (e.g., requirements
gathering, design, implementation, testing) and the sequence in which
these stages are carried out.
• Representation: Think of it as a blueprint or roadmap that visually depicts
the activities involved and their interconnections throughout the
development process.
• Purpose: The model provides a structured approach to help teams
understand, plan, and coordinate tasks effectively, ensuring smooth
execution.
• Utility: By standardizing the sequence of activities, it reduces confusion,
enhances communication among team members, and ensures alignment
with project goals. 6
Goal of Software process model:
• Definition of Goal: The primary goal of a software process model is
to offer clear guidance for managing and organizing development
tasks effectively.
• Control: It helps in controlling various stages of the development
process, ensuring each phase aligns with the overall objectives.
• Coordination: The model facilitates coordination among team
members, enabling seamless communication and collaboration.
• End Product Focus: It ensures that all activities contribute toward
achieving the desired end product with high quality and within
constraints like time and budget.
• Efficiency: By streamlining tasks and minimizing inefficiencies, the
process model helps achieve project goals as effectively as possible.
7
Types of Process Model:
The most popular and important SDLC models are as follows:
• Linear or Waterfall model
• V model
• Incremental model
• RAD model
• Agile model
• Iterative model
• Prototype model
• Spiral model
8
Waterfall Model
• The waterfall model is a sequential, plan driven-process where you must
plan and schedule all your activities before starting the project. Each
activity in the waterfall model is represented as a separate phase arranged
in linear order.
• It has the following phases:
1. Requirements
2. Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance
9
Requirements
• Interviews: Direct conversations with stakeholders to gather insights.
• Surveys/Questionnaires: Distributing forms to collect data from a large group
of users.
• Workshops/Focus Groups: Collaborative sessions with stakeholders to define
needs.
• Document Analysis: Reviewing existing documentation for relevant
requirements.
• Observation: Watching users interact with current systems to identify needs.
• Prototyping: Creating mock-ups to validate requirements.
10
Design Techniques
System Architecture Design: Using patterns like MVC (Model-View-
Controller) or microservices.
• Data Modeling: Entity-Relationship Diagrams (ERDs) for database
design.
• Wireframing: Creating static layouts for user interfaces.
• Prototyping: Building interactive models for early feedback.
• Flowcharts: Visualizing the logical flow of processes.
• UML Diagrams: Class diagrams, Sequence diagrams, Activity
diagrams.
11
Implementation
• Agile Development: Iterative coding in sprints for continuous
improvement.
• Coding Standards: Following established rules for consistent and
readable code.
• Version Control: Tools like Git to manage code changes.
• Code Reviews: Peer reviews for quality assurance.
• Pair Programming: Two developers working together on the same
code.
12
Testing
• Unit Testing: Testing individual components or modules.
• Integration Testing: Ensuring components work together as intended.
• System Testing: Verifying the entire system meets requirements.
• Acceptance Testing: Validating the software with end users.
• Automated Testing: Using tools like Selenium or JUnit.
• Manual Testing: Step-by-step execution of test cases by testers.
13
Deployment
14
Maintenance
15
Waterfall Model
16
Waterfall Model:
• The waterfall model is easy to understand and follow. It doesn’t
require a lot of customer involvement after the specification is done.
Since it’s inflexible, it can’t adapt to changes. There is no way to see
or try the software until the last phase.
• The waterfall model has a rigid structure, so it should be used in cases
where the requirements are understood completely and unlikely to
radically change.
17
Advantages and Disadvantages of Waterfall Model:
Advantages: Disadvantages:
• Base model • No phase overlapping
• Simple and easily • Less customer interaction
• Small project • No intermediate delivery
• Feed backs • Rigid
18
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.
19
Steps in Prototyping Model:
• Step 1: Requirement Gathering and Analysis: This is the initial step in
designing a prototype model. In this phase, users are asked about
what they expect or what they want from the system.
• Step 2: Quick Design: This is the second step in Prototyping Model.
This model covers the basic design of the requirement through which
a quick overview can be easily described.
• Step 3: Build a Prototype: This step helps in building an actual
prototype from the knowledge gained from prototype design.
20
• Step 4: Initial User Evaluation: This step describes the preliminary
testing where the investigation of the performance model occurs, as
the customer will tell the strength and weaknesses of the design,
which was sent to the developer.
• Step 5: Refining Prototype: If any feedback is given by the user, then
improving the client’s response to feedback and suggestions, the final
system is approved.
• Step 6: Implement Product and Maintain: This is the final step in the
phase of the Prototyping Model where the final system is tested and
distributed to production, here program is run regularly to prevent
failures.
21
22
Advantage and disadvantage of prototyping model:
Advantage Disadvantage
• Reduce the risk of incorrect user • Difficult to know how long the project
requirement will last.
• Good where requirement are • Poor Documentation due to continuously
changing/uncommitted changing customer requirements.
• Regular visible process aids • Prototyping tools are expensive.
management • Special tools & techniques are
• Support early product marketing required to build a prototype.
• Reduce Maintenance cost. • It is a time-consuming process.
• Errors can be detected much earlier as
the system is made side by side.
23
V Model:
• The V model (Verification and Validation model) is an extension of
the waterfall model.
• All the requirements are gathered at the start and cannot be
changed.
• For every phase in the development cycle, there is an associated
testing phase.
• Verification phase( requirements analysis, system design,
architecture design, module design)
• Validation phase( unit testing, integration, system, acceptance
testing)
24
V Model:
25
So, V-Model contains Verification phases on one side of the
Validation phases on the other side. Verification and
Validation phases are joined by coding phase in V-shape. Thus
it is called V-Model.
26
V-Model Advantages and disadvantages
Advantages Disadvantages
• Time saving • No feedback so less scope of
• Good understanding of project changes
in the beginning • Risk analysis not done
• Every component must be • Not good for big or object-
testable. oriented projects
• Progress can be tracked easily
• Proactive defect tracking
27
Incremental Model
• The incremental model divides the system’s functionality into small
increments that are delivered one after the other in quick succession.
The most important functionality is implemented in the initial
increments.
• The subsequent increments expand on the previous ones until
everything has been updated and implemented.
• Incremental development is based on developing an initial
implementation, exposing it to user feedback, and evolving it through
new versions. The process’ activities are interwoven by feedback.
28
Incremental Model:
29
Iterative Model
• The iterative development model develops a system by building small
portions of all the features. This helps to meet the initial scope
quickly and release it for feedback.
• In the iterative model, you start off by implementing a small set of
software requirements. These are then enhanced iteratively in the
evolving versions until the system is completed. This process model
starts with part of the software, which is then implemented and
reviewed to identify further requirements.
30
Iterative Model:
• Like the incremental model, the iterative model allows you to see the
results at the early stages of development. This makes it easy to
identify and fix any functional or design flaws. It also makes it easier to
manage risk and change requirements.
• The deadline and budget may change throughout the development
process, especially for large complex projects. The iterative model is a
good choice for large software that can be easily broken down into
modules.
31
Iterative Model:
32
RAD Model
• The Rapid Application Development (RAD model) is based on iterative
development and prototyping with little planning involved. You
develop functional modules in parallel for faster product delivery. It
involves the following phases:
• Business modeling
• Data modeling
• Process modeling
• Application generation
• Testing and turnover
33
Continue….
• Business modeling. The information flow among business functions is modeled in a
way that answers the following questions: What information drives the business
process? What information is?
• Data modeling. The information flow defined as part of the business modeling
phase is refined into a set of data objects that are needed to support the business.
The characteristics (called attributes) of each object are identified and the
relationships between these objects defined.
• Process modeling. The data objects defined in the data modeling phase are
transformed to achieve the information flow necessary to implement a business
function. Processing descriptions are created for adding, modifying, deleting, or
retrieving a data object.
34
Continue…
• Application generation. RAD assumes the use of fourth generation techniques.
Rather than creating software using conventional third generation programming
languages the RAD process works to reuse existing program components (when
possible) or create reusable components (when necessary). In all cases,
automated tools are used to facilitate construction of the software.
• Testing and turnover. Since the RAD process emphasizes reuse, many of the
program components have already been tested. This reduces overall testing time.
However, new components must be tested and all interfaces must be fully
exercised.
• The RAD concept focuses on gathering requirements using focus groups and
workshops, reusing software components, and informal communication.
35
RAD Model
36
Evolutionary model:
• Evolutionary model is the combination of iterative and incremental
model of software development life cycle.
• Incremental model first implement a few basic features and deliver to
the customer. Then build the next part and deliver again and repeat
this step until the desired system is fully realized. No long-term plans
are made.
• Also known as “design a little, build a little, test a little, deploy a little
model”.
37
Evolutionary model:
38
Advantages and disadvantages of evolutionary model:
Advantages
• Customer requirements are Disadvantages
clearly specified. • Not suitable for small projects.
• Risk analysis is better. • Cost
• It support changing • Highly skilled resources are
environment. required.
• Initial operating time is less.
• Better suited for large mission-
critical projects.
39
Factors in choosing a software process
You need to keep the following factors in mind when selecting your software
process model:
• Project requirements
• Project size
• Project complexity
• Cost of delay
• Customer involvement
• Familiarity with technology
• Project resources
40
Project requirements
• Before you choose a model, take some time to go through the project
requirements and clarify them alongside your organization’s or team’s
expectations. Will the user need to specify requirements in detail
after each iterative session? Will the requirements change during the
development process?
Project size
• Consider the size of the project you will be working on. Larger
projects mean bigger teams, so you’ll need more extensive and
elaborate project management plans.
41
Project complexity
• Complex projects may not have clear requirements. The requirements
may change often, and the cost of delay is high. Ask yourself if the
project requires constant monitoring or feedback from the client.
Cost of delay
• Is the project highly time-bound with a huge cost of delay, or are the
timelines flexible?
Customer involvement
• Do you need to consult the customers during the process? Does the
user need to participate in all phases?
42
Familiarity with technology
• This involves the developers’ knowledge and experience with the
project domain, software tools, language, and methods needed for
development.
Project resources
• This involves the amount and availability of funds, staff, and other
resources.
43
THE END
44