0% found this document useful (0 votes)
24 views95 pages

01SP072023012390001

This document provides an overview of software engineering, detailing its definition, principles, objectives, advantages, and disadvantages. It emphasizes the importance of a systematic approach to software development, including modularity, abstraction, and maintainability, while also discussing the nature and characteristics of software. Additionally, it addresses common myths about software engineering and outlines a generic process framework for effective software development.

Uploaded by

mirzadsami2116
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)
24 views95 pages

01SP072023012390001

This document provides an overview of software engineering, detailing its definition, principles, objectives, advantages, and disadvantages. It emphasizes the importance of a systematic approach to software development, including modularity, abstraction, and maintainability, while also discussing the nature and characteristics of software. Additionally, it addresses common myths about software engineering and outlines a generic process framework for effective software development.

Uploaded by

mirzadsami2116
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/ 95

Unit 1: Introduction to Software

Engineering and Software


Process Models

Ms. Shraddha Pawar


(Assistant Professor)
What is Software Engineering?
• Software Engineering is the process of designing, developing, testing, and
maintaining software. It is a systematic and disciplined approach to
software development that aims to create high-quality, reliable, and
maintainable software.
1) Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and
maintenance.
2) It is a rapidly evolving field, and new tools and technologies are
constantly being developed to improve the software development
process.
3) By using principles of software engineering and using the appropriate
tools and methodologies, software developers can create high-quality,
reliable, and maintainable software that meets the needs of its users.
4) Software Engineering is mainly used for large projects based on
software systems rather than single programs or applications.
5) The main goal of Software Engineering is to develop software
applications for improving quality, budget, and time efficiency.
6) Software Engineering ensures that the software that has to be built
should be consistent, correct, also on budget, on time, and within the
required requirements.
Key Principles of Software Engineering
• Modularity: Breaking the software into smaller, reusable components
that can be developed and tested independently.
• Abstraction: Hiding the implementation details of a component and
exposing only the necessary functionality to other parts of the
software.
• Encapsulation: Wrapping up the data and functions of an object into
a single unit, and protecting the internal state of an object from
external modifications.
• Reusability: Creating components that can be used in multiple
projects, which can save time and resources.
Objectives of Software Engineering

• Maintainability: It should be feasible for the software to evolve to


meet changing requirements.
• Efficiency: The software should not make wasteful use of computing
devices such as memory, processor cycles, etc.
• Correctness: A software product is correct if the different
requirements specified in the SRS Document have been correctly
implemented.
• Reusability: A software product has good reusability if the different
modules of the product can easily be reused to develop new
products.
• Testability: Here software facilitates both the establishment of test
criteria and the evaluation of the software with respect to those
criteria.
• Reliability: It is an attribute of software quality. The extent to which a
program can be expected to perform its desired function, over an
arbitrary time period.
• Portability: In this case, the software can be transferred from one
computer system or environment to another.
• Adaptability: In this case, the software allows differing system
constraints and the user needs to be satisfied by making changes to
the software.
• Interoperability: Capability of 2 or more functional units to process
data cooperatively.
Advantages of Software Engineering
• Improved Quality: By established software engineering principles
and techniques, the software can be developed with fewer bugs and
higher reliability.
• Increased Productivity: Using modern tools and methodologies can
streamline the development process, allowing developers to be more
productive and complete projects faster.
• Better Maintainability: Software that is designed and developed
using sound software engineering practices is easier to maintain and
update over time.
• Reduced Costs: By identifying and addressing potential problems
early in the development process, software engineering can help to
reduce the cost of fixing bugs and adding new features later on.
• Increased Customer Satisfaction: By involving customers in the
development process and developing software that meets their
needs, software engineering can help to increase customer
satisfaction.
• Better Team Collaboration: By using Agile methodologies and
continuous integration, software engineering allows for better
collaboration among development teams.
• Better Scalability: By designing software with scalability in mind,
software engineering can help to ensure that software can handle an
increasing number of users and transactions.
• Better Security: By following the Software Development Life Cycle
(SDLC) and performing security testing, software engineering can help
to prevent security breaches and protect sensitive data.
Disadvantages of Software Engineering
• High upfront costs: Implementing a systematic and disciplined
approach to software development can be resource-intensive and
require a significant investment in tools and training.
• Limited flexibility: software engineering principles and
methodologies can be rigid and may limit the ability to quickly adapt
to changing requirements.
• Bureaucratic: Software Engineering can create an environment that is
bureaucratic, with a lot of processes and paperwork, which may slow
down the development process.
• Complexity: With the increase in the number of tools and
methodologies, software engineering can be complex and difficult to
navigate.
• Limited creativity: The focus on structure and process can stifle
creativity and innovation among developers.
• High learning curve: The development process can be complex, and it
requires a lot of learning and training, which can be challenging for
new developers.
• High dependence on tools: Software engineering heavily depends on
the tools, and if the tools are not properly configured or are not
compatible with the software, it can cause issues.
• High maintenance: The software engineering process requires regular
maintenance to ensure that the software is running efficiently, which
can be costly and time-consuming.
Nature of Software
Software is instructions (computer programs) that when executed
provide desired features, function, and performance; data structures
that enable the programs to adequately manipulate information, and
document that describes the operation and use of the programs
Characteristics of software

• Reliability: The ability of the software to consistently perform its


intended tasks without unexpected failures or errors.
• Usability: How easily and effectively users can interact with and
navigate through the software.
• Efficiency: The optimal utilization of system resources to perform
tasks on time.
• Maintainability: How easily and cost-effectively software can be
modified, updated, or extended.
• Portability: The ability of software to run on different platforms or
environments without requiring significant modifications.
The Changing Nature Of Software
• Seven category of s/w which are very challenging
• System software- System software is a collection of programs written to service
other programs.(provide foundation) software: such as compilers, editors, file
management utilities.
• Application software: stand-alone programs for specific needs. This software are
used to controls business needs(tasks). Ex: Transaction processing.
• Embedded software – This software resides within a system or product and it is
used to implement and control features and functions from end user and system
itself. This software performs limited function like keypad control for microwave
oven.
• Artificial intelligence software- Artificial intelligence (AI) software makes use of
nonnumeric algorithms to solve complex problems. Application within this area
include robotics, pattern recognition, game playing
• Engineering and scientific software:Engineering and scientific
software have been characterized by "number crunching" algorithm.
• Product-line software : it is made to be used by many people for their
everyday tasks (word processing, graphics, database management) .
• WebApps (Web applications): network centric software. As web 2.0
emerges, more sophisticated computing environments (make the
internet more interactive)is supported integrated with remote
database and business applications
LEGACY SOFTWARE: CHARACTERISTICS
• Legacy software are older programs that are developed decades ago.
• The quality of legacy software is poor because it has inextensible
design, convoluted code, poor and nonexistent documentation, test
cases and results that are not achieved.
• As time passes legacy systems devolve due to following reasons:
-The software must be adapted to meet the needs of new computing
environment or technology.
-The software must be enhanced to implement new business
requirement(more feature)
SOFTWARE ENGINEERING
• The IEEE definition:
Software Engineering: The application of a systematic, disciplined,
quantifiable approach to the development, operation, and
maintenance of software; that is, the application of engineering to
software.
- Applying an orderly and well thought-out approach to everything
related to software.
Software engineering is the establishment and use of sound
engineering principles in order to obtain economically(cost) software
that is reliable and works efficiently on real machines.
A LAYERED TECHNOLOGY
• Software engineering is a fully layered technology.
• To develop a software, we need to go from one layer to another.
• All these layers are related to each other and each layer demands the
fulfillment of the previous layer.

Fig. Software Engineering Layer


The layered technology consists of:
1. Quality focus :The characteristics of good quality software are:
- Correctness of the functions required to be performed by the software.(task handle
properly)
- Integrity i.e. providing security so that the unauthorized user cannot access information
or data.
- Usability i.e. the efforts required to use or operate the software. (easily operate)
2. Process:
- It is the base layer or foundation layer for the software engineering. It covers all activities,
actions and tasks required to be carried out for software development.
3. Methods :
- It provides the technical way to implement the software. It includes collection of tasks
starting from communication, requirement analysis, analysis and design modelling,
program construction, testing and support.
4. Tools:
- The software engineering tool is an automated support for the software development.
The tools are integrated i.e the information created by one tool can be used by the other
tool.(one tool creates the info and another tool can use this info without any problem)
SOFTWARE ENGINEERING PRACTICES
• The Essence of Practice (set of rules , methods, concepts, principle,tools used by SE regularly)
1.Understand the problem :
-Who has a stake in the solution to the problem?
-What are the unknowns?
-Can the problem be compartmentalized? (breaking prob in smaller part)
-Can the problem be represented graphically?(flowchart, diagram, graphs and charts)

2. Plan a solution:
Have you seen similar problems before?
Has a similar problem been solved? If so, are elements of the solution reusable?
Can subproblems be defined? If so, are solutions readily apparent for the subproblems?
Can you represent a solution in a manner that leads to effective implementation? Can a design
model be created?(creating proper plan to solve the prob)
3. Carry out the plan:
-Does the solution conform to the plan? Is source code traceable to the
design model?
- Is each component part of the solution provably correct? Has the
design and code been reviewed, or better, have correctness proofs
been applied to algorithm?

4. Examine the result for accuracy:


-Is it possible to test each component part of the solution? Has a
reasonable testing strategy been implemented?
-Does the solution produce results that conform to the data, functions,
and features that are required? Has the software been validated
against all stakeholder requirements?
Software Engineering Principles:
Guidelines
• The Reason It All Exists
• Keep It Simple, Stupid!(clear, everything it need to do properly,
doesn’t features discarded)
• Maintain the Vision(essential to the success of a s/w project)
• What You Produce, Others Will Consume(login page)
• Be Open to the Future(adapt to new things)
• Plan Ahead for Reuse
• Think!
SOFTWARE MYTHS
-Misleading attributes that leads to serious problem called myths
-It's like trying to correct old misunderstandings about software, even
though some of those mistaken beliefs still linger.

1)Management myths
2)Customer myths
3)Practitioner myths
1. Management myths
• Myth 1
Myth: We already have a book that’s full of standards and procedures for
building software. Won’t that provide my people with everything they need
to know?
Reality:
- The book of standards may very well exist, but is it used?
- Are software practitioners aware of its existence?
- Does it reflect modern software engineering practice? (modern tool
,techniques)
- Is it complete? Is it adaptable? In many cases, the answer to all of these
questions is “no.”
Myth 2:
Myth: we have the newest computers and tools that is sufficient to
built the s/w.

Reality:
- It takes much more time for understanding than the latest model
mainframe.
- CASE tools are more important than hardware for achieving good
quality and productivity.
- Majority of s/w developers still do not use tools effectively.
Myth 3: We can add more programmers and catch up the schedule

Reality:
-Software development is not a mechanistic process like manufacturing
- As new people are added, people who were working must spend time
educating the newcomers thereby reduce the amount of time spent
on productive development effort
- People can be added but only in a planned and well-coordinated
manner.
2. Customer myths
Myth 1: A general statement of objectives is sufficient to begin writing
programs—we can fill in the details later

Reality: Although a comprehensive and stable statement of


requirements is not always possible, Unambiguous requirements
(usually derived iteratively) are developed only through effective and
continuous communication between customer and developer.
Myth 2: Software requirements continually change, but change can be
easily accommodated because software is flexible.

Reality: It is true that software requirements change, but the impact of


change varies with the time at which it is introduced. When
requirements changes are requested early (before design or code has
been started),
- the cost impact is relatively small. However, as time passes, the cost
impact grows rapidly resources have been committed, a design
framework has been established, and change can cause upheaval that
requires additional resources and major design modification
3. Practitioner’s(Developer) myths
Myth 1: Once we write the program and get it to work, our job is done.

Reality: Someone once said that “the sooner you begin ‘writing code,’
the longer it’ll take you to get done.”
Industry data indicate that between 60 and 80% of all effort expended
on software will be expended after it is delivered to the customer for
the first time.(unit testing)
Myth 2: I can not achieve quality until program is running.

Reality: One of the most effective software quality assurance


mechanisms can be applied from the inception of a project—the formal
technical review. (solution)
Software reviews are a “quality filter” that have been found to be more
effective than testing for finding certain classes of software defects.
• Myth 3: The only deliverable work product for a successful project is
the working program.

• Reality: A working program is only one part of a software


configuration that includes many elements.
• A variety of work products (e.g., models, documents, plans) provide a
foundation for successful engineering and, more important, guidance
for software support
Myth 4: Software engineering will make us create voluminous and
unnecessary documentation and will invariably slow us down.

Reality: Software engineering is not about creating documents. It is


about creating a quality product.
Better quality leads to reduced rework. And reduced rework results in
faster delivery times.
Software Process
-A process is a collection of activities, actions and tasks that are performed
when some work product is to be created.
-It is not a rigid prescription for how to build computer software.
-It is an adaptable approach that enables the people doing the work to pick
and choose the appropriate set of work actions and tasks.
-Purpose of process is to deliver software in a timely manner and with sufficient
quality to satisfy those who have sponsored its creation and those who will use
it.
-Establishing a process is a key starting point for every software development
project.
-A process organizes the work on a software product into distinct phases.
-A process provides a structure of expected activities and work,(gives plan)
-Tasks are the small,manageable units of work for the project. They are the
building blocks for completing an activity,finishing a phase,and ultimately
completing a process.
A GENERIC PROCESS MODEL: SOFTWARE PROCESS
FRAMEWORK

Fig. Software Process Framework


Software Process Framework
• Software Process Framework details the steps and chronological order of a
process.
• Since it serves as a foundation for them, it is utilized in most applications.
• Task sets, umbrella activities, and process framework activities all define
the characteristics of the software development process.
• Software Process includes:
Tasks: They focus on a small, specific objective.
Action: It is a set of tasks that produce a major work product.
Activities: Activities are groups of related tasks and actions for a major
objective.
Process Framework Activities
-The process framework is required for representing common process
activities.
-Five framework activities are described in a process framework for
software engineering. Communication, planning, modeling,
construction, and deployment are all examples of framework activities.
-Each engineering action defined by a framework activity comprises a
list of needed work outputs, project milestones, and software quality
assurance (SQA) points.
A GENERIC PROCESS FRAMEWORK ACTIVITIES

1) Communication
2) Planning
3) Modeling
-Analysis of requirements
-Design
4) Construction
-Code generation
-Testing
5) Deployment
• Communication: By communication, customer requirement gathering is done. Communication
with consumers and stakeholders to determine the system’s objectives and the software’s
requirements.
• Planning: Establish engineering work plan, describes technical risk, lists resources requirements,
work produced and defines work schedule.
• Modeling: Architectural models and design to better understand the problem and to work
towards the best solution. The software model is prepared by:
-Analysis of requirements
-Design
• Construction: Creating code, testing the system, fixing bugs, and confirming that all criteria are
met. The software design is mapped into a code by:
-Code generation
-Testing
• Deployment: In this activity, a complete or non-complete product or software is represented to
the customers to evaluate and give feedback. On the basis of their feedback, we modify the
product for the supply of better products.
Umbrella Activities
-Complement the five process framework activities and help team manage
and control progress,quality,change,and risk.
- activities are independent of any one framework activity and occur through-
out the process.
-The process framework encompasses a set of umbrella activities that are
applicable across the entire software process.
-Umbrella activities are applied throughout a software project.
It help a software team manage and control progress,quality,change,and
risk.
-Software project tracking and control: Compare the progress of the project with the
plan and take steps to maintain a palnned schedule
-Risk management: Analyze any potential risks that may have an impact on the software
products quality and outcome.
-Software quality assurance: These are activities required to maintain software quality.
-Technical reviews: Assessment of error and correction done at each stage of activity.
-Measurement: Defines and collects process, project, and product measures.
-Software configuration management: Managing of configuration process when any
change in the software occurs.
-Reusability management: Reusable work items should be backed up, and reusable
software components should be achieved.
-Work product preparation and production: This activity to create Models,
Documents, Logs, Forms and Lists are carried out
Framework Activities
• Consider Communication Activity for small project:
- Making a phone call with stakeholder
- Discuss requirement and note them own
- Organize requirements
- Mail Stakeholder for review and approval
• Consider Communication Activity for large project:
- Arrange live meeting
- Complete feasibility study
- Requirement analysis
- Specification documents
IDENTIFYING A TASK SETS

• Task set is the actual work to be done to achieve an objective of each


engineering module
• Consider communication activity task set:
- Prepare a list of stakeholder of the project
- Organize a meeting for stakeholder
- Discuss requirements
- Finalize requirements list
- Make a list of issues raised
process Patterns

• describes a process-related problem that is encountered during software


engineering work,
• identifies the environment in which the problem has been encountered,
and the issues that make the problem visible and may affect its solution
• suggests one or more proven solutions to the problem
• Patterns can be defined at any level of abstraction.
◦ Case 1:A pattern might be used to describe aproblem (and solution) associated with acomplete process
model (e.g.,prototyping).
◦ Case 2:Patterns can be used to describe aproblem (and solution) associated with a framework activity
(e.g., planning) or an action within a framework activity (e.g., project estimating).
◦ Phase pattern :definethe sequence of framework activities that occurs within the process
PROCESS ASSESSMENT AND IMPROVEMENT
⚫ Disciplined observation of the software processes.
⚫ Modifying the existing software system to improve its performance
⚫ Process patterns must be coupled with solid software engineering practice.(applying reliable
techniques)
⚫ The process itself can be assessed to ensure that it meets aset of basic process criteria that
have been shown to be essential for asuccessful software engineering.
⚫ A number of different approaches to software process assessment and improvement :
◦ Standard CMMI Assessment Method for Process
• Improvement (SCAMPI):
◦ CMM-BasedAppraisal for Internal Process Improvement (CBA IPI)
◦ SPICE (ISO/IEC15504)
◦ ISO 9001:2000 for Software
WHAT /WHO /WHY IS PROCESS MODELS?
• What: Go through a series of predictable steps- a road map that helps
you create a timely,high-quality results.
• Who: Software engineers and their managers,clients also.People adapt the
process to their needs and follow it.
• Why: Provides stability,control,and organization to an activity that can if left
uncontrolled,become quite chaotic.However,modern software
engineering approaches must be agile and demand ONLY those activities,
controls and work products that are appropriate.
• What Work products: Programs, documents,and data
PRESCRIPTIVE PROCESS MODELS
• Process model as an abstract representation of process.
• They define a prescribed set of process elements and a predictable
• process work flow (following some rules for correct usage.)
TheWaterfall Model
-Incremental Process Models
Incremental Model
RAD Model
-Evolutionary Process Models
Prototyping
Spiral
Concurrent Development
-The Unified Process Model
-Concurrent Models 1-57
PREDICTIVE vs ADAPTIVE
• Predictive: a pretty good understanding of the requirements of the
software or the product that you are building.
• client or the analyst or the customer have a very high confidence of
the requirements or what they're looking for, then the team goes through
this design implementation and testing phase, or the process that you have
learned.
• Get the product in one shot in the end.
• Adaptive models: The client or the customer generally has an idea of
what they want to build, but not quite there, right?
• They have an idea but they are not 100% sure what they want to build.
• The team that is working on it, they actually build something like a really
small version of it or like a low fidelity version of it.Then they build the
next version based on the feedback.
PROCESS MODELS
• Need:
-Systematic software product development
-Definiteness and discipline in overall process
-Transition of product in each phase is definite(Move from one step to
next)
-To monitor overall progress of software product
• Selection Criteria:
-The nature of the project and application.
-The methods and tools to be used.
-The controls (rules)and deliverables(documents, features) that are
required.
• Requirement Elicitation,Analysis, Specification(detailed plan)
• System Design
• Program Implementation
• Test

• Phases and Output:


• Requirement Analysis: Software Requirement Specification,
Use Cases
• Design: Design Document, Design Classes (HLD,LLD)
• Implementation : Code
• Test :Test Reports, Change Request (Quality assured Docs)
THEWATERFALL MODEL

•Feasibility Study (Financial /Technical)


•RequirementAnalysis and Specification (SRS - Functional /Non- Functional,
Goals of Implementation)
•Design ( SoftwareArchitecture derived from SRS)
•Coding and UnitTesting (Modules or Units)
•Integration and SystemTesting (Alpha(α),Beta(β) andAcceptance)
•Maintenance( Corrective,Perfective,Adaptive
Waterfall Model
-It is the first approach used in software development process.
-It is also called as classical life cycle model or linear sequential model.
-In waterfall model any phase of development process begins only if previous
phase is completed.
1) Requirement Analysis
2) Design
3) Implementation
4) Verification/ Testing
5) maintenance
Advantages of Waterfall Model
- It is very simple to understand and easy to use.
- Phases of waterfall model do not overlap with each other.
- It is useful for small projects in which requirements are clear at the
beginning.
- Since development is linear it is easy to manage development
process.
Disadvantages of Waterfall Model
• It is not useful for large projects.
• Not suitable for projects in which requirement are not clear initially.
• Product is available only at the end of development process.
• It is very difficult to modify system requirement in the middle of
development process.
Incremental Process Model
-Incremental Model is a process of software development where requirements divided into
multiple standalone modules of the software development cycle.
- In this model, each module goes through the requirements, design, implementation and testing
phases.
- Every subsequent release of the module adds function to the previous release. The process
continues until the complete system achieved.
- The Incremental philosophy is also used in the agile process model.
When we use the Incremental Model?
• When the requirements are superior.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.
• Advantage of Incremental Model
-Errors are easy to be recognized.
-Easier to test and debug
-More flexible.
-Simple to manage risk because it handled during its iteration.
-The Client gets important functionality early.
• Disadvantage of Incremental Model
-Need for good planning
-Total Cost is high.
-Well defined module interfaces are needed.
EVOLUTIONARY PROCESS MODELS
• Evolutionary models areiterative and incremental model.
• According to the business need and changing nature of the market there are lot of improvements
required in the software product over a time.
• Due to this lot of improvement is required in the product hence this model is iterative in nature.
• In evolutionary model, the software requirement is first broken down into several
modules.
• That can be incrementally constructed means it take customer feedback of each
module.
• Delivered product module by module to the customer.
• There are two types
-Prototyping
-Spiral model
When to use evolutionary process model
• This is commonly used when the customer wants to starts using the
core features instead of waiting for the full software
• It is used in large projects because of step by step development
• Customer requirement are not fixed. But clear concept.
• Small changes required in separate modules.
• Useful in object oriented software development because all the
development is divided into different units.
Advantages of Evolutionary model
• It is useful for very large project.
• User has checked every stage during the development and it is helpful
in achieving customer confidence.
• User gets a chance to experiment with a partially developed software
much before the complete version of the system is released.
• It reduces the error because the core modules get tested thoroughly
• It reduces the cost of development
Disadvantages of Evolutionary model
• The delivery of full software can be late due to different changes by
customers during development.
• Constant and clear interaction between the development team
members is required.
Spiral model

• Initially proposed by Boehm in 1986.


• It is a risk driven software development model and prototyping
model.
• It is combination of waterfall model, Iterative model and prototyping
model.
• Software is developed in a series of incremental releases as per each
spiral.
• Example: Microsoft, gaming industry
• Also called as meta model.
1) Planning:(Requirement gathering and project head)
- Communication between customers and project head
- Collect all the requirements from customers.
- Analysis estimated cost, schedule and required resource.
2) Risk analysis:
- Identification of all the potentials risks.
- Risk mitigation strategy is planned for solving risks.
- Design a prototype of model.(replica of actual s/w development)
3) Engineering and Execution:
- Actual development start
- Designer design the product as per final prototype.
- Developer perform actual coding or implementation
- Tester perform all testing methods
- deploy product to the customer environment.

4) Evaluation:
- take a feedback from customer
- if iteration want any changes,goes to next planning or next spiral
iteration
When to use Spiral model?
• When the project is large and high budget.
• When requirement are unclear and complex.
• When changes may require at any time
• When the software needs continuous risk evaluation.
Advantages of Spiral Model
• High amount of risk analysis.
• Risky part can be developed earlier which help in better rik
management.
• Useful for large and mission-critical project.
• Allows extensive use of prototype(solve all error in prototype).
• There is always a space for customer feedback.
• Changing the requirement can be accommodated.
• Development is fast
Disadvantages of Spiral Model
• Risk analysis needed highly particular expertise.
• Can be a costly model to use.
• Doesn’t work for smaller projects.
• Spiral process is complex sometimes because spiral may be infinitely.
• Large number of spiral stages required excessive documentation.
Prototyping Model
• Prototype is not a complete product it is just functional replica or toy
implementation of any idea, software or system.
• It is applied when customers do not know the exact project
requirements.
• It generates before actual development of software.
• It is an iterative ,trial and error method which take place between
developer and client,
Steps of Prototype Model
1.Requirement Gathering and Analyst
2.Quick Decision
3.Build a Prototype
4.Assessment or User Evaluation
5.Prototype Refinement
6.Engineer Product
Advantages of Prototyping Model
• Prototype model need not know the detailed input, output
,processes.
• Good where requirement are changing.
• Customer are actively involved in development.
• Prototype can be changed and even discarded.
• Errors can be detected much earlier as the system is made side by
side.
• Flexibility in design
• Helps team member to communicate effectively.
Disadvantages of Prototyping Model
• The client involvement is more and it is not always considered by the
developer.
• It is a slow process because it takes more time for development.
• Many changes can disturb the rhythm(flow) of the development
team.
• Documentation is poor as the requirements change frequently.
• It is a thrown away prototype when the users are confused with it.
• Costly with respect to time and money.
• Prototyping tools are expensive.
Example of Prototype VS Actual
Unified process model
• Inception Phase:
- You think about what kind of software you want to build and why. What are its main features
and goals?
- Communication and planning
- Identification of project scope
- Customer requirement identification
- Project plan, project goal, risk identification
• Elaboration Phase:
-Elaboration means describing something in more details
-here we go into more details of the 1st
-Now you start planning in more detail. You figure out how the software will work, what
technologies you'll use, and what the major components will be. It's like creating a detailed
blueprint for your house.
• Construction Phase:
- Here we develop and complete the projects based on the data we get from
previous stages.
- Coding of project is done here.
- All kind of testing are also done here
- This is where you actually start building. You take your plan and start writing
the actual code for the software.
• Transition Phase:
- Here finally project is transmit from development environment to production
- Here we also set the project on beta testing mode.
- Remove the bugs from project based on customer feedback.
• Production:
- This is final phase of the model
- Project is maintained here.
- Project is updated here accordingly.
Fig: Unified Process model
Concurrent Models
• It is type of evolutionary model.
• Concurrent development model is also known as concurrent
engineering.
• The term concurrent mean” done at the same time”.
• It is used in all software development process model.
• Transition from state to state for each of the software engineering
activities.
SDLC Activities: Communication, Design, Coding, Testing, Deployment

Inactive: No any activity/state performed


Under Development: Any activity performed(comm. , design, coding)
Awaiting Changes: If customer want any changes
Under review: testing Activity Start
Under Revision: Do all required changes
Baselined: As per the SRS document
Done: Project completed and deployed
Advantages of Concurrent Model
• This model is applicable to all types of software development
processes.
• It is easy for understanding and use.
• It gives immediate feedback from testing.
• It displays each activity in state.
Disadvantages of Concurrent Model
• It needs better communication between the team members. This may
not be achieved all the time.
• It requires to remember the status of the different activities.
Agile Model
• Mostly used model in todays digital era.
• Agile means” The ability to respond to(continue) changes from
requirements, technology and people”
• It is an incremental and iterative process of software development.
Traditional VS Agile model working with
example
• For example:
Instagram social application:
Requirements are:
- Follow unfollow option
- Edit profile
- Search
- Messaging
- Post photos
- Upload story
- To make reels
- Go live
When to use the Agile Model?
• When Project size is large
• When frequent changes are required.
• When a highly qualified and experienced team is available.
• When a customer is ready to have a meeting with a software team all the
time.(every iteration)
• Projects with flexible timeline and budget.
Agile Principles
1. Highest priority is to satisfy the customers to early and continue
delivery of software.
2. Being flexible about changing requirement at any point of
development.
3. Working on frequent and short deliveries like couple of weeks or
months with preference.
4. Transparency between business people and developers and
requires them to work together.(all stakeholder work together)
5. By providing a better productive environment and providing them
with all the support and motivation it leads to better productivity.
6. Face to face communication as the most effective way to communicate
between customer and development team(feedback)
7. Continuous attention towards effective designing and technical
excellence through optimal code standard.
8. It promotes sustainable development (rapid delivery)by developers, users
and sponsors should work together.
9. Continuous attention to technical excellence and good design enhances
agility.
10. Simplicity is the art of maximum result and less hard work by removing
unnecessary tasks and prioritizing activities.(focus on design and coding, less
documentation)
11. The best architectures , requirements and designs emerge from self-
organizing and experience teams.
12. For development effective software, regular analysis and work on
improving the overall delivery or the development process.
Advantages of Agile model
• Support customer involvement and customer satisfaction
• Strong communication of the software team with the customer’
• Little planning require(more focus on design and development)
• Efficient design and fulfils the business requirement.
• Anytime changes are acceptable.
• Provides a very realistic(accurate) approach to software development
• Updated version of functioning software are released every week.
• it reduces total development time.
Disadvantages of Agile model
• Due to the lack of proper documentation (cant waste time on doc),
once the project completes and the developers allotted to another
project , maintenance of the finished project can become a difficult.
• Depends heavily on customer interaction, so if customer is not clear,
team can be driven in the wrong direction
Introduction To Agile Tool: Jira
- JIRA is a tool developed byAustralian CompanyAtlassian.
- It is used for bug tracking,issue tracking,and project management.
- The name "JIRA" is actually inherited from the Japaneseword "Gojira" which
means "Godzilla".
- The basic use of this tool is to track issue and bugs related to your software
and Mobile apps.
- JIRA is an incident management tool.
- JIRA is a platform independent tool;it can be used with any OS.
- JIRA is multi-lingual tool − English,French, German,Japanese,Spanish,etc.
- JIRA supports MySQL,Oracle,PostgreSQL and SQL server in the backend.
- JIRA can be integrated with many other tools − Subversion,GIT,Clear case,
Team Foundation Software,Mercury,Concurrent Version System and many
more
JIRA ISSUES
-A Project contains issues;a JIRA project can be called as a collection of
issues.
-An issue can be dependent on the organization and
requirements −
-Story of a project
-Task of a story
-Sub-task of a story
-A defect or bug can be an issue
-HelpdeskTicket can be logged as issue
-Leave Request
⚫ Open Issue − After creation,the issue is open and can be
• assigned to the assignee to start working on it.
⚫ In Progress Issue − The assignee has actively started to work on the issue.
⚫ Resolved Issue − All sub-tasks and works of that Issue are completed. Now, the issue is
waiting to be verified by the reporter. If verification is successful, it will be closed or re-
opened,if any further changes are required.
⚫ Reopened Issue − This issue was resolved previously,but the resolution was either
incorrect or missed a few things or some modifications are required.From Reopened
stage, issues are marked either as assigned or resolved.
⚫ Close Issue − The issue is considered as finished,resolution is correct as of now.Closed
issues can be re-opened later based on the requirement.
Thank You !!!

You might also like