Software Engineering
Software Engineering
Software engineering:
It is a systematic, cost-effective technique for software development. Step by step systematic approach.
Stages of SDLC:
Planning
Deploy/ Defining/Analysis
Maintainance (SRS)
Testing Designing
Coding/
Implementation/
Building
Models of Software development life Cycle:
Classical waterfall model:
Useful for small projects and requirements are fixed bcz we don’t have feedback during developing
phase so we cannot change it during developing if passed to next phase. When one phase complete
then other phase starts.
Steps:
Feasibility study (achieveable or not)
Requirement analysis and specification
Designing Phase
Coding and unit testing
system testing and integration
Maintainance(60 % efforts bcz bugs did not removed during developing)
Advantages:
Base model, simple and easy, small projects
Disadvantages:
No feedback, NO Experiment, high risk, one team work at one time other wait for its phase.
Quick
Design
Customer
evaluation
Design
Iterative development with feedback
implement
Test
Maintain
Evolutionary model: incremental + iteration
Advantages:
Customer requirements are clearly described.
Better risk analysis and support changing environment
Better for long term projects
Disadvantage:
Cost, highly skill required, no suitable for small projects.
Important points:
Risk handeling, as these 4 task repeat the cost increase, it is also called meta model bcz it uses features of
all other model, use for large projects. It needs too much risk analysis which needs expert team.
Big bang model:
V-model:
Known as verification and validation model.
Verification means step by step, component by component check whether it is correct or not, in
validation we check the whole product.
It is the extension of waterfall. We do testing at every phase. Testing run parallel with each phase.
In design first we design the whole project in a big picture then we design the each module of
project. Then we design the sub modules.
System verification
Requirements
and validation
and architecture
Project
Defination
Integration,test Project testing and
and verification integration
Detailed
design
Implementation or
Coding
Time
Advantage:
Time saving, good project understand at beginning, every component is testable, progress tracked
easily, proactive test tracking (test before complete project)
Disadvantage:
No feedback, so less scope of changes, risk analysis not done, not good for big or object oriented
projects.
Agile Methodologies:
I. SCRUM:
It is a light weigth, iterative and incremental framework.
it breakdown the development phases into stages or cycles known as sprints.
Time is important bond, sprint is time ond
The development time for each sprint is maximized and dedicatd.(manage one sprint at a
time)
Scrum master communicate with customer on daily basis.
Backlock is project planning, daily scrum meeting with team and customer, scrum master
head of team that communicate with client
sprintBacklog:
project Backlog:
Advantages:
Freedom & Advantages, high quality, low risk, reduce development time, customer satisfaction is important, review
current sprint before moving to next one. Work with small teams. No hierarical system
Disadvantages:
More efficient for small team size, no change in sprint, can be change after review the product.
Kanban:
Lean:
Extreme programming (XP):
Team 1: business modeling => Data modeling => process modeling => Application modeling => Testing & turnover
Team 2: business modeling => Data modeling => process modeling => Application modeling => Testing & turnover
Team 1: business modeling => Data modeling => process modeling => Application modeling => Testing & turnover
business modeling => Data modeling => process modeling => Application modeling => Testing & turnover
Incremental Model:
We design module by module, divide whole project into different parts.1st complete one module
deliver to customer then go on further modules.
Then add all module to make final project. Feedback at every module and steps
Like LMS of school, teacher, student and administration have different modules, we bulid them one
by one then combine to make a final project.
Module 1
Dev and testing implement
design
Requirements Module 2
Dev and testing Implement
design
If there are external software or hardware with which the developed software has to interface, then what exactly would
the data interchange formats with the external system be?
The most important requirements problems that the analyst has to identify and eliminate are the problems of
anomalies, inconsistencies, and incompleteness. And these are resolved in SRS.
Software requirement specification (SRS): (IEEE 830 is the world srs documentation standard)
Description of software that we are going to develop before coding purpose. It includes functional and
non functional requirements of a software projects. It describe the use cases (situations) that describe user
interaction.
SRS Structure:
Introduction
Purpose
Intended audience
Scope
Definitions
Reference
Overall description:
User interfaces
System interfaces
Constraints, assumptions and dependencies
User Charactristics
System features and requirements:
Functional requirements
Use cases
External interface requirements
Logical database requirements
Non functional requirements
Deliver for approval of client:
User Requirements:
Easy and simple to operate
Quick response
Effectively handling operational errors
Customer support
Why dfd?
It provides an overview of
What data a system processes
What transformations are performed
What data are stored
What results are produced
Communication tool bw User and analyst
Communication tool bw Analyst and system designer
DFD Elements:
Source/Sinks (external entity) represent with rectangle
Data flow represent with arrow and data flow written on arrow
Process (fn) represent with circle
DataBase represent with two parallel lines in horizontal
Source: from which we receive data
Sink: to which we are giving data
Level 0: DFD means a whole big diagram of project, show less detail, only show full project working.
Example: user requesting admission, then it get admission as response from admin. It does not
describe how?
Level 1: Contains more detail of each module, as that module is further divided. In level 1 user and
response described in more detailed, in module vice.
Example:
User fill form that stored in db, then took test whose data also stored in DB, maintain student info &
data, generate report, admin check, admin send response, user get response from admin in the form
of accepted not not.
User P1 P2 User
P3
Level 2: now each module divide into sub module, test module will be elaborated in separate graph,
similarly other modules.
More detailed chat that explains each process by dividing it into several parts
Level 1:
Level 2:
Logical and physical DFD:
In logical we talk about what we are actually trying to do, in physical we talk about implementation
who is going to use that software
Logical DFD: concentrates on the system process and flow of data in the system. For example
in a Banking software system, how data is moved between different entities.
Physical DFD: shows how the data flow is actually implemented in the system. It is more
specific and close to the implementation.
Software Design:
after SRS we make SDD software design document.
Interface design:
Interaction between system and environment, internal system is ignored and we
focus just input of the system and the output of the system regardless what is
happening inside the software
Architecture design:
Components of system:
Their interfaces & responsibilities.
Interaction between them
Internal of components are ignored
Detailed design:
Focus on components internal design in details
Internal DSA of component
Estimation:
Project planning process:
Beore development
Focus on activities requirements for successful completion of the project
In this we do estimation of:
Size of project
Cost
Time/Duration
Effort
Cost estimation depends on:
Size of software
Hardwares we use
Tools and licences
Skilled personal
Travel & communication
Training & Support
Software Testing:
Use to find bugs/errors/faults in the software
With minimum resources, times and bugs we can identify maximum bugs.
Verification vs Validation:
Verification:
In verification we prevent errors during production
Phase by phase verification
Done by developer
Includes unit testing, integration testing and reviews
Static nature
Validations:
detect errors
do on final product
by testers
includes white box testing and black box testing
dynamic nature
Unit/Module testing:
Do testing of Each source
Integration testing:
incremental testing (top to down & bottom-up integrated test)
non-incremental testing (Big bang)=> combine all unit tested modules then test
whole project.
System Testing:
test of whole complete system
don’t focus on internal work
focus on input and output
black box testing
verify the overall functionality of the system
do alpha testing(test by developer), beta testing (other stack holders do testing)
we also do non-functional testing like: performance testing, load testing, stress
testing,scalability testing etc.
Risk mitigation:
Reduce the impact of risk event
Types of risk:
Budget
Time risk
Technical risk
Operational risk
Business risk
Risk control/mitigration strategy:
Risk avoidance
Risk transfer
Risk reduction
Risk monitoring
Risk assessment strategy:
1)Proactive: plan before any event to avoid risk
2)Reactive: make plan to face event if any bad event happen
Empericl estimation:
Common sense and educated guess
Prior experience of similar projects
Expert judgement techniques
Delphi cost estimation
Heuristic estimation
Cocomo model(constructive cost model)
Estimate on line on codes or number of functions
Three modes of cocomo model:
Organic
Small size project with experience team
Semi-detached: medium size project
Embedded: large project
When projet size is known the productivity level may be calculated as:
P= KLOC/E X KLOC/PM
Verification:
Question before or during the project, wether we are doing right or not
it is done by developer during development, unit testing
Validation:
after completion we question have we buit right thing according to requirements.
It is done by tester, system testing
Types of testing:
4 levels
i. Unit testing:
Testing during development, test of each unit or function or module
ii. Integration:
Test during integration of units after integration
a. Bang bang
b. Top-down
c. Bottom up
d. mixed
iii. System testing:
After developing whole system
Two categorized
a. Based on who is doing testing/ functional
Alpha => development team
Beta => friendly customers
Acceptance => user or customer do test
b. Performance/non functional:
we apply different loads
Volume
Load
Stress
Security
Configuration
Compatibility
Recovery
iv. Regression:
During maintainance phase
Error seeding: