Definition: It is a systematic, disciplined, cost
effectiveness techniue for Software developent. Engineering appoach to
develop a Software.
Characteristics:
- Correctness
- Usability
- Reliability
- Efficiency
- Maintainability
- Portability
- Scalability
- Security
- Modularity
- Reusuability
- Testibility
SDLC:
planning -> analysis (SRS) -> design -> code -> testing -> deploy ->
planning
Waterfall model:
feasibility study -> requirement analysis and specifications -> design ->
coding and unit testing -> System testing and integration -> maintainance
Advantages:
i) Base model ii) simple and easy iii) small projects
Disadvantages:
i)No feedback ii) No experiment iii) no paralleism iv) High risk v) 60%
efforts in maintainance.
Iterative waterfall model:
sae as waterfall but after maintainance feedback will inclde in all part
except study.
V model in SDLC:
- Known as verification and validation model
- Extension of waterfall model
- testing is associated with every phase.
-
verification phase (Reqirement analysis, system design, architecture
design, module design)
-
Validation phase (unit testing, integration, system, acceptance testing)
Advantages:
- time saving
- Good understanding of project in the beginning
- every component must be feasible
- progress can be tracked easily
Disadvantages:
- no feedback so less scope of changes
- Risk analysis not done
- Not good for big or object oriented project.
Prototype model:
- Csutomer not clear with idea can understand a prototype
- Throwaway model
- Good for technical and reqiurement risks.
- Increase in cost of development.
Incremental model:
- module by module.
- Customer interaction maximum.
- large projects
- early release product demand
- fleible to demand
Evolutionary model
-
Evolutionary model is a cobination of Iterative and Incremental model of
SDLC.
-
Incremental model first implement a few basic features and deliver to
the Csutomer and then build the next part and do the sae and continue.
- Iterative odl ain Advantages is its feedback in every process
-
Also known as "design a little, bild a little, test a little, deploy a
little"
Advantages:
- Cstoer reuirement are clearly specified
- Risk analysis is better
- It suupports changing environent
- Initial operating tie is less
Disadvantages:
- Not siutable for saller projects
- cost
- highly skilled resorces reuired
Spiral model:
- objecive determination and identfy alternative solutions.
- identify and resolve risks
- develop next version of product.
- Review and plan for next phase.
- radis of spiral = cost
- anglar dimension = progress
Agile technology:
Big pojects breaks into smaller part.
Advantages:
- Freqent delivery
- Face to face communication
- changes
- time
Disadvantages
- less documentation
- maintainance problem
SCRUM model:
- One of the most popular agile methodology
- Scrum is lightweight, Iterative, and incremental framework.
-
Scrum breaks down the development phases into stages or cycles called
"sprints"
-
The developent time for each sprint is maximized and dedicated, thereby
managing only one sprint at a time.
- Scrum Team has scrum master and product owner with cons
-
Keywords: Backlog, Sprint, daily Scrum, scrum master, product owner
Advantages:
- Freedom & adaption
- high-quality, low-risk product.
- Reduce the development time up to 40%.
- Scrum customer satisfaction is very important
- reviweing the current sprint before moving to new one.
Disadvantages:
- More efficient for small team size.
- No changes in the sprint.
Software requirement
-
It is the description of features and functionalities of the target
system.
- It is the description of what the system should do.
-
requirement Engineering(RE) refers to the process of defining,
documentation, maintaining reqiurement in the Engineering design
process.
-
it is a four step process, which includes
- feasibility study
- Reqirement gathering
- Software reqiurement specifications
- Software reqiurement validation
Tool support for requirement Engg
- Observation Reports (user Observation)
- Question interviews, surveys and polls
- use case
- user stories
- Requirement workshops
- Mind mapping
- Role-playing
- Prototyping
Functional and non functional reqiurements
-
Reqirements which are related to functional/Working aspect pf Software
fall into this category.
-
Non-functional reqiurements are exprected characteristics of target
software. (security, storage, configuration, performance, cost,
interoperability, flexibility, disaster recovery)
SRS (Software Reqirement Specifications)
- SRS is a description of a software system to be developed.
-
it lays out functional and non-functional requirement to be develop.
-
It may include a set of use cases that describe user interactions that
the software must provide to the user for perfect interaction.
SRS structure
- Introduction
- Purpose
- Intended Audience
- Scope
- Definitions
- References
- Overall description
- User Interfaces
- Systemm Interfaces
- Constraints, assumptions and dependencies
- User characteristics
- system features and reqiurement
- Functional Reqirements
- use cases
- External Interface requirement
- Logical database reqiurement
- Non-functional reqiurement
- Deliver for approval
User requirement
- Easy and simple to operate
- Quick response
- effectively handling operational errors
- customer support
user requirement specifications
- It defines what the user expects the software to be able to do.
- It is a contractual aggrement.
Software design
- Interface design
- Architectural design
- Details design
Modularity
Breaks into smaller module and handle them.
Coupling: one module is dependent on another. low Coupling is best.
Coupling
- data
- stamp
- control
- external
- common
- content
Cohesion: it's a functional strength between module. High cohesion is best.
DFD (Data Flow Diagram)
-
A graphical tool useful for communicating with managers and other
personel.
- useful for analyzing existing as well as proposed systems.
-
Focus on the movement of data between external entities and processes,
and between processes and data store.
- A relatively simple technique to learn and use.
Why DFD?
- What data a system process
- What transformations are performed
- What data are stored
- What results are produced
-
Graphical nature makes it a good communications tool between -> i) user
and analyst ii) Analyst and system designer
**DFD elements
- Source/Sinks (external links)
- Data flows
- Processes
- Data Stores
External links
- A rectangle represents an external entity
- They either supply or receive data
- They do not process data
Source:Entity that supples data to the system.
Sink:Entity that receives data from the system.
**Rules of data flow
- Data can flow from
- External entity to process
- Process to external entity
- process to store and back
- process to process
- Data cannot flow from
- External entity to external entity
- External entity to store
- Store to external entity
- Store to store
Logocal and physical DFD
- DFDs considered so far are called logical DFDs
- A physical DFD is similar to a document flow diagram
- It specifies who does the operations specified by the logical DFDs.
- Physical DFD may depict physical movemments of goods.
- Physical DFDs can be drawn during fact gathering phase of a life cycle.
Software design approaches
- Function orient design
- System is designed from a functional viewpoint.
- Top-down decomposition
- Divide & conquer approach
- DFD is used
- Object Orient Design
- System is viewed as a collection of objects
- Bottom-up approach
- UML is used.
SPM (software project manager)
- Software project management is a art and science of planning and leading software projects.
- Main goal is to enable a group of developers to work effectively towards successful completion of project.
- Project manager is an administrative leader of the team.
- Various factors make this job very complex (complexity, uniqueness, possibility of multiple solutions)
Black box/validation and white box/verification testing
Software quality factor
can be divided into two categories: i) first, ii) second category
Charcateristics of quality assurance
- Standards
- Quality Attributes
- Continuous Improvement
- Metrics
- Training
- Documentation
Classic model of software quality factor
i) Product operation(Correctness, Reliability, Usability), ii) Product revision(Maintainability, flexibility), iii) product transition(Portability, Reusuability)
Capability Maturity Model
CMM is a strategy to improve the software process and generate quality software. The term "maturity" relates to the degree of formality and optimization of process.
5 levels are there
- lvl1(initial)
- lvl2(managed)
- lvl3(defined)
- lvl4(managed quality)
- lvl5(optimization)
Estimation model: Here we estimate about two things time and cost of developemnt.
Has four types:
- Post
- Base
- Decomposition
- Empirical
Post Estimation: In case of fiendly party or known technology we do not estimate either time or cost.
Base Estimation: we predict the cost and time of the entire project based on the experience.
Decomposition: used in large project where decomposition of the problem into smaller problem.
Two types: i) Direct extimation(white box), ii) Indirect Estimation(Black box).
Direct Estimation
- Effort = Size / Productivity
- cost = Effort * Pay
- Team Size = Effort / Duration
Indirect estimation
- 2D
- Unadjustable
- adjustable
- 3D
COCOMO (1981)Construction Cost Model
is widely used estimation technique. it is a regression-based model.
- organic
- Semidetached
- Embedded
Organic Relatively small group work in a familier environent to develop well understood program.
Semidetached project team consists of a mixture of experienced and inexperienced stuff. It is of medium size.
Embedded the s/w is strongly coupled to complex h/w, such as traffic control, ATM's or weapon system. The project team is large, a great deal of innovation required.
three types of COCOMO
- basic
- Intermediate
- Detailed
Basic COCOMO formula
- D E = a b KLOC b b
- D D = C b (D E) d b
- Team Size = D E / D D
Testing
- Unit
- Integration
- System
- Acceptance
Unit testing: first level of testing involves all individual components.
Integeration Testing: Indivisual modules are grouped together and tested as a group.
N.B (stub module):(top-bottom) stub module may be used to simulate the effect of lower level modules.
N.B (driver module):(bottom-up) driver module may be used to simulate the effect of higher level modules.
if we mix two approach then it is sandwich /hybrid approach.
System testing: here complete and integrated software is tested as a whole and compare with srs document.
User Acceptance testing: It involves all functional and non-functional requiremnt are successfully handled or not.