INTRODUCTION TO SOFTWARE
ENGINEERING
BY :
Ahmed Elshahat Mohamed
Agenda
Software Definition.
 Attributes of good software.
Software Engineering :
• Software Engineering Definition.
• Software Development Life Cycle.
 Waterfall Model.
 V-Model.
 Agile Scrum.
Introduction to software engineeringBy : Ahmed Elshahat Mohamed
What is software ?
 Software is a set of instructions used to acquire inputs and to
manipulate them to produce the desired output in terms of
functions and performance as determined by the user of the
software.
software
Source
Code
Documents
System
Manuals
ProcessInputs Outputs
Types of software
 Custom :
 For a specific customer
 Generic :
 Specifications are produced by the marketing
department of the product company .They reflect
what they think
 Embedded Software :
 Software with principal role , specialized for
particular hardware that runs on and has time and
memory constraints .
Importance of software
 It is embedded in all kinds of systems, such as
transportation, medical, telecommunications, military,
industrial processes, entertainment, office products, etc.
 It is important as it affects nearly every aspect of our lives
and has become pervasive in our commerce, our culture,
and our everyday activities.
Software quality attributes:
The software should deliver the required functionality and performance to user
and should be maintainable, reliable and acceptable.
Software quality attributes
• Reliability
Ability of Software to perform its intended functions and
operations in a system's environment, without experiencing
failure (system crash) always exist.
• Efficiency
Software should make the best use of the system resources.
And satisfy the required response time.
• Usability
Software must be usable by the users for which it was designed.
This means it must be understandable, usable and compatible
with other systems.
Software quality attributes
• Portability
Characteristics related to the ability to transfer the software from
one organization or hardware or software environment to another.
• Maintainability
Software must evolve to meet changing needs.
Software Cost
 Software engineering is concerned with cost-efficient software
development.
 The costs of software are often higher than the hardware cost.
 Software costs more to be maintained than it does to be developed
For systems with long life,
maintenance cost may be several times
development cost.
 About US$250 billions spent per year
 in the US on application development.
 Out of this, about US$140 billions wasted
due to the projects getting abandoned or reworked.
Software crisis
 31% of projects get cancelled before they are completed .
 53% over-run their cost estimates by an average 189% .
 For every 100 projects , there are 94 projects restart .
Why !
• Schedule and cost estimates are often grossly inaccurate.
• Lack in productivity of software people .
• The quality of software sometimes less than expected .
• Communication between customer and developer is often poor.
• Software maintenance tasks devour the majority of funds.
Software crisis
 The launched rocket by the European Space Agency , 1996 .
 Software crisis led to software Engineering
Software crisis
What is software Engineering?
 It is a systematic approach to
analysis, design, implementation,
test, maintenance
and reengineering of software,
so that it is of higher quality,
more affordable, maintainable,
cost efficient and faster to build.
Software development life cycle
 Also known as software process.
 Software Development Life Cycle (or SDLC) is the process
which is followed to develop a software product. It is a
structured way of building software applications. Most
organizations have a process in place for developing software.
 The software-development life-cycle is used to facilitate the
development of a large software product in a systematic, well-
defined, cost-effective and fast way.
 A set of activities whose goal is the development or evolution
of software.
Software development life cycle
Requirements
Design
codingTesting
Deployment
Maintenance
Requirements
 What the system should do and its development constraints, This
phase is the main focus of the project managers and stake holders
.
 Meetings with managers, stake holders and users are held in order
to determine the requirements like , Who is going to use the
system? How will they use the system ? What data should be input
into the system ? What data should be output by the system ?
These are general questions that get answered during a
requirements gathering phase.
• Functional Requirements: specify what actually the system
does.
•Non-functional Requirements: specify system limits and
constrains example: memory size, power consumption and
aspects concerning maintainability, portability, and usability.
Requirement types
Functional
Requirements
Non-functional
Requirements
Requirements analysis
 The purpose of a requirements
analysis is to identify the qualities
required of the application,
in terms of functionality,
performance, ease of use,
portability, interfaces, security.
 The requirements describe
the “what” of a system, not the “how” .
 The o/p of this step is An SRS .
Software Requirement Specification Document
An SRS document is generated as the output of requirements
analysis.
 Requirements analysis involves obtaining a clear and thorough
understanding of the product to be developed. Thus, the SRS
should be a consistent, correct, unambiguous, and complete
document.
 An SRS document must contain the following:
 Detailed statement of problem.
 Possible alternative solution to problem.
 Functional requirements of the software system.
 Constraints on the software system.
Software Requirement Specification Document
 Requirements documentation is the description of what a particular
software does or shall do.
 It is used throughout development to communicate how the
software functions or how it is intended to operate. It is also used
as an agreement or as the foundation for agreement on what the
software will do.
 Requirements are produced and consumed by everyone involved
in the production of software: end users, customers, product
managers, project managers , designers , developers, and testers.
Requirement Traceability
 The ability to describe and trace the life of a requirement
, is it covered by coding team and testing team (create test
cases) .
 Requirement traceability matrix is documented table to
trace the progress in the project
Requirement Traceability
Software Design
 Software design is the blueprint of the system, which once
completed can be provided to developers for code
development. Based on the components in design, they are
translated into software modules/functions/libraries, etc…
and these pieces together form a software system.
Software Design
High level design Low level design
Software Design
 High Level Design (HLD) : is the overall system design , It
describes the relation between various modules and functions of
the system.
 Low Level Design (LLD) : is like detailing the HLD. It defines the
actual logic for each and every component of the system.
Flow chart
 Flow chart is a type of diagram that describe the path of data , or
process step by step, showing the steps as boxes of various kinds
and their order by connecting with arrows.
 Flow charts are used in designing processes or programs to
make them simple to understand.
 The biggest advantage of a flow chart is that it gives an overall
view of the process at a single glance , to understand it better
 Commonly used shapes in flow charts
Flow Line
An arrow coming from one symbol
and ending at another symbol
represents that control passes to
the symbol the arrow points to.
Terminal
Represented as circles. They usually
contain the word "Start" or "End", or
another phrase signaling the start or
end of a process.
Process
Represented as rectangles. This
shape is used to show that
something is performed. Examples:
"Add 1 to X .
Decision
Represented as a diamond showing
where a decision is necessary,
commonly a Yes/No question or
True/False test.
 Generally , flowcharts flow from top to bottom and left to right.
 Flow chart Example
Pseudo-code
 using pseudo-code , the designer describes system
characteristics using short , concise English language
phrases that are structured by keywords , such as if-
Then-Else, while-do , and End.
 Its written in structured manner .
Software Architecture
 Decomposition of software into layers.
Software Architecture
 Why SW Layers ?
 Isolate Application from HW changes as
upper layers don’t affect by lower ones
(Portability).
 Reusability of the SW driver among different
applications.
 Easier in Testing.
 Simplifies isolation of software bugs
(detection and correction).
 Easier Software updates and upgrades
(Software maintainability).
Development(Coding)
 On receiving system design documents,
the work is divided in modules/units and actual coding is
started.
 Since, in this phase the code is produced so it is the main
focus for the developer.
 The output of this phase
is an implemented
and tested collection of modules.
Testing
 After the code is developed it is tested against the requirements to
make sure that the product is actually solving the needs addressed
and gathered during the requirements phase.
Testing levels
1.Unit testing : Test the software for defects and bugs .
2.Component testing :Test functionality of each module alone.
3.Integration testing : Test the interfaces and interactions between
integrated modules .
4.System testing : Checking the whole system in the intention of
finding defects and anomalies from both the design & the
requirements.
5.User Acceptance Testing : The acceptance test phase is the
phase used by the customer to determine whether to accept the
system or not. When the software passes those tests it has been
accepted by the client as meeting the requirements .
Test Levels
System
Integration
Testing
Testing Organisation
System
Testing
User
Acceptance
Testing
Component
Integration
Testing
Unit Testing
TestingProcess
test organisation businessSW dev.
Deployment
 Getting software out of the hands of the developers
into the hands of the users.
Maintenance
 It is an important part of the SDLC .it may consume
time more than that taken for development and cost
that range from 50% to 80% of the total development
cost .
Types of maintenance
Types of maintenance
1. Corrective maintenance : it is repairing processing
or performance failures or making changes because
of previously uncorrected problems .
2. Adaptive maintenance : changing the program
function . This is done to adapt to the external
environment change .
3. Perfective maintenance : enhancing the
performance or modifying the programs to respond to
the user’s additional or changing needs.
4. Preventive maintenance : it is the process by which
we prevent our system from being obsolete. It
involves the concept of re-engineering an old system
with an old technology using new technology
Software Development Methodology
 Plan driven:
 Agile:
Software Development Methodology
 Plan driven:
 Plan driven processes where all the process activities
are planed in advance .
 In this way, we can measure the progress of the
process against this plan.
 Agile:
 In Agile processes planning is incremental and it is
easier to change the plan and the software to reflect
changing customer requirements .
 As activities can be changed, so the progress of
development process is not measured exactly.
Waterfall model
Waterfall model
 The waterfall model is a very common software development
process model.
 The waterfall model was popularized in the 1970s and
permeates most current software-engineering textbooks and
standard industrial practices.
 As the figure shows, the process is structured as a cascade of
phases, where the output of one phase constitutes the input to
the next one. Each phase, in turn, is structured as a set of
activities that might be executed by different people concurrently.
 Because of the cascade from one phase to another, this model is
known as the waterfall model.
Waterfall model
 Advantages of Waterfall Model
1.it is a simple one. Easy to understand, easy to use.
2.Easy to manage due to the rigidity of the model –each phase has
specific deliverables and a review process.
3.Phases are processed and completed one at a time.
4.Works well for smaller projects where requirements are very well
understood.
Waterfall model
 Disadvantages of Waterfall Model
1.This model is not suitable for accommodating any change. So this
model is Not suitable for the projects where requirements are at a
moderate to high risk of changing.
2.We can not go backward in the SDLC. Once an application is in
the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage
3.It does not scale up well to large and complex projects.
4.Poor model for long and ongoing projects.
5.No working software is produced until late during the life cycle.
Waterfall model
 When to use the waterfall model
1.Requirements are very well known, clear and fixed.
2.Product definition is stable.
4.There are no ambiguous requirements
5.The project is short
Developers life cycle V-Model Tester life cycle
Requirements
specification
High level Design
Low level Design
coding
Software code
Unit testing
Component testing
Integration Testing
System testing
V-model
 The V-model represents a software development , which may be
considered an extension of the waterfall model. Instead of moving
down in a linear way, the process steps are bent upwards after the
coding phase, to form the typical V shape. The V-Model
demonstrates the relationships between each phase of the
development life cycle and its associated phase of testing.
 Requirements like SRS document begin the life cycle model just
like the waterfall model. But, in this model before development is
started, a system test plan is created. The test plan focuses on
meeting the functionality specified in the requirements gathering.
V-model
 The high-level design (HLD) or Architecture Design phase
focuses on system architecture and design. It provide overview of
solution, platform, system, product and service/process. An
integration test plan is created in this phase as well in order to
test the pieces of the software systems ability to work together.
 The low-level design(LLD) or Detailed Design Phase or
Module Design Phase is where the actual software components
are designed. It defines the actual logic for each and every
component(Module) of the system. Component tests or Module
Tests are created in this phase as well.
V-model
 The implementation(Coding) phase is where all coding takes
place. Unit Testing is created in this phase in order to test the
software for defects and bugs . Then is performed on the code
once coding is complete . The path of execution continues up the
right side of the V where the test plans developed earlier are now
put to use. This is at the bottom of the V-Shape model. Module
design is converted into code by developers.
V-model
 Advantages of V-model
1.Simple and easy to use.
2.Testing is a full life-cycle activity ,this saves a lot of time. Hence
higher chance of success over the waterfall model.
3.Proactive defect tracking –that is defects are found at early stage.
V-model
 Disadvantages of V-model
1.Software is developed during the implementation phase, so no
early prototypes of the software are produced.
2.If any changes happen in midway, then the test documents along
with requirement documents has to be updated.
3.Heavy weight documentation.
4.It needs lot of resources . It can be implemented by only some big
companies
Waterfall Limitations
Waterfall
limitations
Sequential in nature,
complete a stage before
moving to next stage
No working version of the
system until late in the
process
Any changes customer mentions
in between may cause a lot of
rework
Doesn't account for the
fact that requirements
constantly change
Agile Scrum
 Many projects fail to deliver value in either a timely fashion or at all
For both technical and non-technical reasons. So agile allows us to
focus on delivering the highest business value in the shortest time.
 For progress in project , software is developed and delivered in
small iterations (Sprints).
 It helps the business to see the work , or want to receive product
benefit earlier or help in later changes .
Agile principles
 Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software .
 Welcome changing requirements , even late in development.
 Deliver working software (customer value ) with a preference to
the shorter time scale.
 Simplicity .
Agile Scrum
 The Agile Scrum life cycle :
 Every sprint :
Project endSprint 3Sprint 2Sprint 1
Project
start
Detailed
requirements
Design
develop
test
Characteristics of Agile Scrum
 Scrum projects make progress in a series of “sprints”.
 Typical duration is 2–4 weeks or a calendar month at most.
 Product feature is designed, coded, and tested during the sprint.
 Teams are co-located , or simulate being together.
 Face to face communication is preferred over documentation
Scrum framework
•Product owner
•ScrumMaster
•Team
Roles
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Ceremonies
•Product backlog
•Sprint backlog
Artifacts
Scrum framework
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Ceremonies
•Product owner
•ScrumMaster
•Team
Roles
•Product backlog
•Sprint backlog
Artifacts
Product owner
■ Define the features of the product (responsible for the
backlog and story) .
■ Decide on release date and content .
■ Prioritize features according to market value .
■ Accept or reject work results .
■ Helps define ‘done’ .
The Scrum Master
• Process facilitator .
• Represents management to the project .
• Helps builds self organizing teams .
• Removes impediments
• Ensure that the team is fully functional and productive .
• Enable close cooperation across all roles and functions .
• Shield the team from external interferences .
The team
• Typically 5-9 people
• Cross-functional
• Programmers, testers, designers, analyst , etc.
• Teams are self-organizing
• Accountable for delivery of result that meet the customer’s needs
and software quality
• Membership should change only between sprints
•Product owner
•ScrumMaster
•Team
Roles
Scrum framework
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Ceremonies
•Product backlog
•Sprint backlog
Artifacts
Product backlog
• The requirements
• A list of all desired work on the project
• Ideally expressed such that each item has value to the users or
customers of the product
• Prioritized by the product owner
• Reprioritized at the start of each sprint
This is the
product backlog
Sprint Backlog
 Team selects items from the product backlog they can
commit to completing.
 Sprint backlog is created
 Tasks are identified and each is estimated (1-16
hours)
 Collaboratively, not done alone by the Scrum
Master
•Product owner
•ScrumMaster
•Team
Roles
Scrum framework
•Sprint planning
•Daily scrum meeting
•Sprint review
•Sprint retrospective
Ceremonies
•Product backlog
•Sprint backlog
Artifacts
Sprint planning meeting
Sprint prioritization
• Analyze and evaluate product
backlog
• Select sprint goal
Sprint planning
• Decide how to achieve sprint
goal (design)
• Create sprint backlog (tasks)
from product backlog items
(user stories / features)
• Estimate sprint backlog in hours
Sprint
goal
Sprint
backlog
Business
conditions
Team
capacity
Product
backlog
Technology
Current
product
Sprint planning
The daily scrum
• Parameters
• Daily
• 15-minutes
• Stand-up
• Not for problem solving
• Whole world is invited
• Only team members, Scrum Master, product
owner, can talk
• Helps avoid other unnecessary meetings
Everyone answers 3 questions
What did you do yesterday?
1
What will you do today?
2
Is anything in your way?
3
The sprint review
• Team presents what it accomplished during the sprint
• Typically takes the form of a demo of new features Informal
• 2-hour prep time rule
• Whole team participates
• Invite the world
Sprint retrospective
■ Periodically take a look at what is and is not
working
■ Typically 15–30 minutes
■ Done after every sprint
■ Whole team participates
– Scrum Master
– Product owner
– Team
– Possibly customers
Parameters Agile Model Non-Agile Models
Approach of this methodology This methodology is very flexible and
adjustable and can adapt to the
project needs.
This methodology is not as flexible as
Agile model and it’s tough to
accommodate changes in the project.
Measurement of Success The success of the project in Agile
model is measured by the Business
value delivered.
In this methodology the success of
the project is measured by the
Conformation to plan.
Size of the Project The Project size is usually small in
Agile model. However larger projects
can also be handled using the Scaled
Agile Framework (SAFe).
The project size is Large in non- Agile
models.
Ability to adapt to change In Agile model the changes are
accepted and adapted as per the
project needs.
But in non-Agile models the changes
are not accepted easily in the later
stages of the development.
Difference between Agile model and Non-Agile models
Documentation required Less documentation is required in
Agile.
More documentation is required in
non-Agile models.
Importance of In Agile model more emphasis is given
to the people that means it’s People-
Oriented.
In non-Agile models the more
importance is given to the process
hence it’s Process- Oreinted.
Planning in Advance There is minimal upfront planning in
Agile methodology.
In Non-Agile models the planning
should be complete before the
development starts.
Revenue In Agile method the return on
investment is early in the project cycle.
In non-Agile methods the return on
investment is at the end of the project.
Size of the team The size of the team in Agile
methodology is usually small and
creative.
But in Non-Agile models the team size
is large.
Contact Details
Eng. Ahmed Elshahat Mohamed.
Mob: 01098745294
a.elshahat10@gmail.com
By : Ahmed Elshahat Mohammed Software testing Instructor

software engineering

  • 2.
  • 3.
    Agenda Software Definition.  Attributesof good software. Software Engineering : • Software Engineering Definition. • Software Development Life Cycle.  Waterfall Model.  V-Model.  Agile Scrum. Introduction to software engineeringBy : Ahmed Elshahat Mohamed
  • 4.
    What is software?  Software is a set of instructions used to acquire inputs and to manipulate them to produce the desired output in terms of functions and performance as determined by the user of the software. software Source Code Documents System Manuals ProcessInputs Outputs
  • 5.
    Types of software Custom :  For a specific customer  Generic :  Specifications are produced by the marketing department of the product company .They reflect what they think  Embedded Software :  Software with principal role , specialized for particular hardware that runs on and has time and memory constraints .
  • 6.
    Importance of software It is embedded in all kinds of systems, such as transportation, medical, telecommunications, military, industrial processes, entertainment, office products, etc.  It is important as it affects nearly every aspect of our lives and has become pervasive in our commerce, our culture, and our everyday activities.
  • 8.
    Software quality attributes: Thesoftware should deliver the required functionality and performance to user and should be maintainable, reliable and acceptable.
  • 9.
    Software quality attributes •Reliability Ability of Software to perform its intended functions and operations in a system's environment, without experiencing failure (system crash) always exist. • Efficiency Software should make the best use of the system resources. And satisfy the required response time. • Usability Software must be usable by the users for which it was designed. This means it must be understandable, usable and compatible with other systems.
  • 10.
    Software quality attributes •Portability Characteristics related to the ability to transfer the software from one organization or hardware or software environment to another. • Maintainability Software must evolve to meet changing needs.
  • 11.
    Software Cost  Softwareengineering is concerned with cost-efficient software development.  The costs of software are often higher than the hardware cost.  Software costs more to be maintained than it does to be developed For systems with long life, maintenance cost may be several times development cost.  About US$250 billions spent per year  in the US on application development.  Out of this, about US$140 billions wasted due to the projects getting abandoned or reworked.
  • 12.
    Software crisis  31%of projects get cancelled before they are completed .  53% over-run their cost estimates by an average 189% .  For every 100 projects , there are 94 projects restart . Why ! • Schedule and cost estimates are often grossly inaccurate. • Lack in productivity of software people . • The quality of software sometimes less than expected . • Communication between customer and developer is often poor. • Software maintenance tasks devour the majority of funds.
  • 13.
    Software crisis  Thelaunched rocket by the European Space Agency , 1996 .  Software crisis led to software Engineering
  • 14.
  • 15.
    What is softwareEngineering?  It is a systematic approach to analysis, design, implementation, test, maintenance and reengineering of software, so that it is of higher quality, more affordable, maintainable, cost efficient and faster to build.
  • 16.
    Software development lifecycle  Also known as software process.  Software Development Life Cycle (or SDLC) is the process which is followed to develop a software product. It is a structured way of building software applications. Most organizations have a process in place for developing software.  The software-development life-cycle is used to facilitate the development of a large software product in a systematic, well- defined, cost-effective and fast way.  A set of activities whose goal is the development or evolution of software.
  • 17.
    Software development lifecycle Requirements Design codingTesting Deployment Maintenance
  • 18.
    Requirements  What thesystem should do and its development constraints, This phase is the main focus of the project managers and stake holders .  Meetings with managers, stake holders and users are held in order to determine the requirements like , Who is going to use the system? How will they use the system ? What data should be input into the system ? What data should be output by the system ? These are general questions that get answered during a requirements gathering phase.
  • 19.
    • Functional Requirements:specify what actually the system does. •Non-functional Requirements: specify system limits and constrains example: memory size, power consumption and aspects concerning maintainability, portability, and usability. Requirement types Functional Requirements Non-functional Requirements
  • 20.
    Requirements analysis  Thepurpose of a requirements analysis is to identify the qualities required of the application, in terms of functionality, performance, ease of use, portability, interfaces, security.  The requirements describe the “what” of a system, not the “how” .  The o/p of this step is An SRS .
  • 24.
    Software Requirement SpecificationDocument An SRS document is generated as the output of requirements analysis.  Requirements analysis involves obtaining a clear and thorough understanding of the product to be developed. Thus, the SRS should be a consistent, correct, unambiguous, and complete document.  An SRS document must contain the following:  Detailed statement of problem.  Possible alternative solution to problem.  Functional requirements of the software system.  Constraints on the software system.
  • 25.
    Software Requirement SpecificationDocument  Requirements documentation is the description of what a particular software does or shall do.  It is used throughout development to communicate how the software functions or how it is intended to operate. It is also used as an agreement or as the foundation for agreement on what the software will do.  Requirements are produced and consumed by everyone involved in the production of software: end users, customers, product managers, project managers , designers , developers, and testers.
  • 26.
    Requirement Traceability  Theability to describe and trace the life of a requirement , is it covered by coding team and testing team (create test cases) .  Requirement traceability matrix is documented table to trace the progress in the project
  • 27.
  • 28.
    Software Design  Softwaredesign is the blueprint of the system, which once completed can be provided to developers for code development. Based on the components in design, they are translated into software modules/functions/libraries, etc… and these pieces together form a software system.
  • 29.
    Software Design High leveldesign Low level design
  • 30.
    Software Design  HighLevel Design (HLD) : is the overall system design , It describes the relation between various modules and functions of the system.  Low Level Design (LLD) : is like detailing the HLD. It defines the actual logic for each and every component of the system.
  • 31.
    Flow chart  Flowchart is a type of diagram that describe the path of data , or process step by step, showing the steps as boxes of various kinds and their order by connecting with arrows.  Flow charts are used in designing processes or programs to make them simple to understand.  The biggest advantage of a flow chart is that it gives an overall view of the process at a single glance , to understand it better
  • 32.
     Commonly usedshapes in flow charts Flow Line An arrow coming from one symbol and ending at another symbol represents that control passes to the symbol the arrow points to. Terminal Represented as circles. They usually contain the word "Start" or "End", or another phrase signaling the start or end of a process. Process Represented as rectangles. This shape is used to show that something is performed. Examples: "Add 1 to X . Decision Represented as a diamond showing where a decision is necessary, commonly a Yes/No question or True/False test.  Generally , flowcharts flow from top to bottom and left to right.
  • 33.
  • 34.
    Pseudo-code  using pseudo-code, the designer describes system characteristics using short , concise English language phrases that are structured by keywords , such as if- Then-Else, while-do , and End.  Its written in structured manner .
  • 35.
  • 36.
    Software Architecture  WhySW Layers ?  Isolate Application from HW changes as upper layers don’t affect by lower ones (Portability).  Reusability of the SW driver among different applications.  Easier in Testing.  Simplifies isolation of software bugs (detection and correction).  Easier Software updates and upgrades (Software maintainability).
  • 37.
    Development(Coding)  On receivingsystem design documents, the work is divided in modules/units and actual coding is started.  Since, in this phase the code is produced so it is the main focus for the developer.  The output of this phase is an implemented and tested collection of modules.
  • 38.
    Testing  After thecode is developed it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase.
  • 39.
  • 40.
    1.Unit testing :Test the software for defects and bugs . 2.Component testing :Test functionality of each module alone. 3.Integration testing : Test the interfaces and interactions between integrated modules . 4.System testing : Checking the whole system in the intention of finding defects and anomalies from both the design & the requirements. 5.User Acceptance Testing : The acceptance test phase is the phase used by the customer to determine whether to accept the system or not. When the software passes those tests it has been accepted by the client as meeting the requirements .
  • 41.
  • 42.
    Deployment  Getting softwareout of the hands of the developers into the hands of the users.
  • 43.
    Maintenance  It isan important part of the SDLC .it may consume time more than that taken for development and cost that range from 50% to 80% of the total development cost .
  • 44.
  • 45.
    Types of maintenance 1.Corrective maintenance : it is repairing processing or performance failures or making changes because of previously uncorrected problems . 2. Adaptive maintenance : changing the program function . This is done to adapt to the external environment change . 3. Perfective maintenance : enhancing the performance or modifying the programs to respond to the user’s additional or changing needs. 4. Preventive maintenance : it is the process by which we prevent our system from being obsolete. It involves the concept of re-engineering an old system with an old technology using new technology
  • 46.
    Software Development Methodology Plan driven:  Agile:
  • 47.
    Software Development Methodology Plan driven:  Plan driven processes where all the process activities are planed in advance .  In this way, we can measure the progress of the process against this plan.  Agile:  In Agile processes planning is incremental and it is easier to change the plan and the software to reflect changing customer requirements .  As activities can be changed, so the progress of development process is not measured exactly.
  • 48.
  • 49.
    Waterfall model  Thewaterfall model is a very common software development process model.  The waterfall model was popularized in the 1970s and permeates most current software-engineering textbooks and standard industrial practices.  As the figure shows, the process is structured as a cascade of phases, where the output of one phase constitutes the input to the next one. Each phase, in turn, is structured as a set of activities that might be executed by different people concurrently.  Because of the cascade from one phase to another, this model is known as the waterfall model.
  • 50.
    Waterfall model  Advantagesof Waterfall Model 1.it is a simple one. Easy to understand, easy to use. 2.Easy to manage due to the rigidity of the model –each phase has specific deliverables and a review process. 3.Phases are processed and completed one at a time. 4.Works well for smaller projects where requirements are very well understood.
  • 51.
    Waterfall model  Disadvantagesof Waterfall Model 1.This model is not suitable for accommodating any change. So this model is Not suitable for the projects where requirements are at a moderate to high risk of changing. 2.We can not go backward in the SDLC. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage 3.It does not scale up well to large and complex projects. 4.Poor model for long and ongoing projects. 5.No working software is produced until late during the life cycle.
  • 52.
    Waterfall model  Whento use the waterfall model 1.Requirements are very well known, clear and fixed. 2.Product definition is stable. 4.There are no ambiguous requirements 5.The project is short
  • 53.
    Developers life cycleV-Model Tester life cycle Requirements specification High level Design Low level Design coding Software code Unit testing Component testing Integration Testing System testing
  • 54.
    V-model  The V-modelrepresents a software development , which may be considered an extension of the waterfall model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing.  Requirements like SRS document begin the life cycle model just like the waterfall model. But, in this model before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering.
  • 55.
    V-model  The high-leveldesign (HLD) or Architecture Design phase focuses on system architecture and design. It provide overview of solution, platform, system, product and service/process. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together.  The low-level design(LLD) or Detailed Design Phase or Module Design Phase is where the actual software components are designed. It defines the actual logic for each and every component(Module) of the system. Component tests or Module Tests are created in this phase as well.
  • 56.
    V-model  The implementation(Coding)phase is where all coding takes place. Unit Testing is created in this phase in order to test the software for defects and bugs . Then is performed on the code once coding is complete . The path of execution continues up the right side of the V where the test plans developed earlier are now put to use. This is at the bottom of the V-Shape model. Module design is converted into code by developers.
  • 57.
    V-model  Advantages ofV-model 1.Simple and easy to use. 2.Testing is a full life-cycle activity ,this saves a lot of time. Hence higher chance of success over the waterfall model. 3.Proactive defect tracking –that is defects are found at early stage.
  • 58.
    V-model  Disadvantages ofV-model 1.Software is developed during the implementation phase, so no early prototypes of the software are produced. 2.If any changes happen in midway, then the test documents along with requirement documents has to be updated. 3.Heavy weight documentation. 4.It needs lot of resources . It can be implemented by only some big companies
  • 59.
    Waterfall Limitations Waterfall limitations Sequential innature, complete a stage before moving to next stage No working version of the system until late in the process Any changes customer mentions in between may cause a lot of rework Doesn't account for the fact that requirements constantly change
  • 60.
    Agile Scrum  Manyprojects fail to deliver value in either a timely fashion or at all For both technical and non-technical reasons. So agile allows us to focus on delivering the highest business value in the shortest time.  For progress in project , software is developed and delivered in small iterations (Sprints).  It helps the business to see the work , or want to receive product benefit earlier or help in later changes .
  • 61.
    Agile principles  Ourhighest priority is to satisfy the customer through early and continuous delivery of valuable software .  Welcome changing requirements , even late in development.  Deliver working software (customer value ) with a preference to the shorter time scale.  Simplicity .
  • 62.
    Agile Scrum  TheAgile Scrum life cycle :  Every sprint : Project endSprint 3Sprint 2Sprint 1 Project start Detailed requirements Design develop test
  • 63.
    Characteristics of AgileScrum  Scrum projects make progress in a series of “sprints”.  Typical duration is 2–4 weeks or a calendar month at most.  Product feature is designed, coded, and tested during the sprint.  Teams are co-located , or simulate being together.  Face to face communication is preferred over documentation
  • 64.
    Scrum framework •Product owner •ScrumMaster •Team Roles •Sprintplanning •Sprint review •Sprint retrospective •Daily scrum meeting Ceremonies •Product backlog •Sprint backlog Artifacts
  • 65.
    Scrum framework •Sprint planning •Sprintreview •Sprint retrospective •Daily scrum meeting Ceremonies •Product owner •ScrumMaster •Team Roles •Product backlog •Sprint backlog Artifacts
  • 66.
    Product owner ■ Definethe features of the product (responsible for the backlog and story) . ■ Decide on release date and content . ■ Prioritize features according to market value . ■ Accept or reject work results . ■ Helps define ‘done’ .
  • 67.
    The Scrum Master •Process facilitator . • Represents management to the project . • Helps builds self organizing teams . • Removes impediments • Ensure that the team is fully functional and productive . • Enable close cooperation across all roles and functions . • Shield the team from external interferences .
  • 68.
    The team • Typically5-9 people • Cross-functional • Programmers, testers, designers, analyst , etc. • Teams are self-organizing • Accountable for delivery of result that meet the customer’s needs and software quality • Membership should change only between sprints
  • 69.
    •Product owner •ScrumMaster •Team Roles Scrum framework •Sprintplanning •Sprint review •Sprint retrospective •Daily scrum meeting Ceremonies •Product backlog •Sprint backlog Artifacts
  • 70.
    Product backlog • Therequirements • A list of all desired work on the project • Ideally expressed such that each item has value to the users or customers of the product • Prioritized by the product owner • Reprioritized at the start of each sprint This is the product backlog
  • 71.
    Sprint Backlog  Teamselects items from the product backlog they can commit to completing.  Sprint backlog is created  Tasks are identified and each is estimated (1-16 hours)  Collaboratively, not done alone by the Scrum Master
  • 73.
    •Product owner •ScrumMaster •Team Roles Scrum framework •Sprintplanning •Daily scrum meeting •Sprint review •Sprint retrospective Ceremonies •Product backlog •Sprint backlog Artifacts
  • 75.
    Sprint planning meeting Sprintprioritization • Analyze and evaluate product backlog • Select sprint goal Sprint planning • Decide how to achieve sprint goal (design) • Create sprint backlog (tasks) from product backlog items (user stories / features) • Estimate sprint backlog in hours Sprint goal Sprint backlog Business conditions Team capacity Product backlog Technology Current product Sprint planning
  • 76.
    The daily scrum •Parameters • Daily • 15-minutes • Stand-up • Not for problem solving • Whole world is invited • Only team members, Scrum Master, product owner, can talk • Helps avoid other unnecessary meetings
  • 77.
    Everyone answers 3questions What did you do yesterday? 1 What will you do today? 2 Is anything in your way? 3
  • 78.
    The sprint review •Team presents what it accomplished during the sprint • Typically takes the form of a demo of new features Informal • 2-hour prep time rule • Whole team participates • Invite the world
  • 79.
    Sprint retrospective ■ Periodicallytake a look at what is and is not working ■ Typically 15–30 minutes ■ Done after every sprint ■ Whole team participates – Scrum Master – Product owner – Team – Possibly customers
  • 84.
    Parameters Agile ModelNon-Agile Models Approach of this methodology This methodology is very flexible and adjustable and can adapt to the project needs. This methodology is not as flexible as Agile model and it’s tough to accommodate changes in the project. Measurement of Success The success of the project in Agile model is measured by the Business value delivered. In this methodology the success of the project is measured by the Conformation to plan. Size of the Project The Project size is usually small in Agile model. However larger projects can also be handled using the Scaled Agile Framework (SAFe). The project size is Large in non- Agile models. Ability to adapt to change In Agile model the changes are accepted and adapted as per the project needs. But in non-Agile models the changes are not accepted easily in the later stages of the development. Difference between Agile model and Non-Agile models
  • 85.
    Documentation required Lessdocumentation is required in Agile. More documentation is required in non-Agile models. Importance of In Agile model more emphasis is given to the people that means it’s People- Oriented. In non-Agile models the more importance is given to the process hence it’s Process- Oreinted. Planning in Advance There is minimal upfront planning in Agile methodology. In Non-Agile models the planning should be complete before the development starts. Revenue In Agile method the return on investment is early in the project cycle. In non-Agile methods the return on investment is at the end of the project. Size of the team The size of the team in Agile methodology is usually small and creative. But in Non-Agile models the team size is large.
  • 87.
    Contact Details Eng. AhmedElshahat Mohamed. Mob: 01098745294 a.elshahat10@gmail.com
  • 88.
    By : AhmedElshahat Mohammed Software testing Instructor