Techniques in Developing
Ideal Software
What is Software Engineering?
systematic approach to the
analysis, design, implementation
and maintenance of software.
used to describe "building of
software systems which are so
large or so complex that they are
built by a team or teams of
engineers"
The Process of Analysis
Breaking the problem into pieces
PROBLEM
Sub problems
3
4
The Process of Synthesis
putting together of a large structure from small
building blocks
1
3
2
4
SOLUTION
To solve problems we need:
method or technique
tool
procedure
paradigm
Relationship Between Computer Science
and Software Engineering
COMPUTER SCIENCE
THEORIES
CUSTOMER
COMPUTER
FUNCTION
SOFTWARE
ENGINEERING
TOOLS & TECHNIQUES
to SOLVE PROBLEMS
PROBLEM
HUMAN ERROR- causes of
failure
?!
can lead to
Human error
can lead to
fault
failure
What is a good software?
Quality?
5 DIFFERENT PRESPECTIVES OF QUALITY
The transcendental view, where quality is
something we can recognize but not define
The user view, where quality is fitness for purpose
The manufacturing view, where quality is
conformance to specifications
The product view, where quality is tied to
inherent product characteristics
The value-based view, where quality depends on
the amount the customer is willing to pay it.
Who does software engineering?
CUSTOMER
Sponsors system
development
$$, needs
DEVELOPERS
USER
Contractual
Obligations
needs
Software system
Uses system
Builds the system
How system is being developed?
It includes the following activities:
1. Requirement Analysis and Definition
2. System Design
3. Program Design
4. Writing the programs (Program implementation)
5. Unit testing
6. Integration Testing
7. System Testing
8. System Delivery
9. Maintenance
Characteristics of Requirement
SHOULD ANSWER THE FOLLOWING QUESTIONS:
Are the requirements correct?
Are the requirements consistent?
Are the requirements complete?
Are the requirements realistic?
Are the requirements describe something
that is needed by a customer?
Are the requirements verifiable?
Are the requirements traceable?
Members of Development Team
1.
Requirement Analysis and Definition - System Analyst
2.
System Design
- Designer
3.
Program Design
- Programmer
4.
Writing the programs (Program implementation)
- Programmer
5.
Unit testing
- Tester
6.
Integration Testing
- Tester
7.
System Testing
- Tester
8.
System Delivery
- Trainer
9.
Maintenance
- Trainer
SDLC
Software Development Life Cycle
What is SDLC?
It consists of a detailed plan describing how to
develop, maintain, replace and alter or
enhance specific software.
is the process consisting of a series of planned
activities to develop or alter the software
products.
Software Development Life Cycle is a process
used by software industry to design, develop
and test high quality softwares
It is also called as Software development
process.
SDLC OBJECTIVES
1. to produce a high quality software that
meets or exceeds customer expectations.
2. reaches completion within times and cost
estimates.
Stages of a Typical SDLC.
Stage 1: Planning and Requirement Analysis
Requirement analysis is the most important and
fundamental stage in SDLC. It is performed by the
senior members of the team with inputs from the
customer, the sales department, market surveys and
domain experts in the industry. This information is
then used to plan the basic project approach and to
conduct product feasibility study in the economical,
operational, and technical areas.
Stage 2: Defining Requirements
Once the requirement analysis is done the next
step is to clearly define and document the
product requirements and get them approved
from the customer or the market analysts. This
is done through .SRS. . Software Requirement
Specification document which consists of all the
product requirements to be designed and
developed during the project life cycle.
Stage 3: Designing the product architecture
SRS is the reference for product architects to
come out with the best architecture for the
product to be developed. Based on the
requirements specified in SRS, usually more
than one design approach for the product
architecture is proposed and documented in a
DDS - Design Document Specification.
Stage 4: Building or Developing the Product
In this stage of SDLC the actual development starts and the
product is built. The programming code is generated as per
DDS during this stage. If the design is performed in a detailed
and organized manner, code generation can be accomplished
without much hassle.
Developers have to follow the coding guidelines defined by
their organization and programming tools like compilers,
interpreters, debuggers etc are used to generate the code.
Different high level programming languages such as C, C++,
Pascal, Java, and PHP are used for coding. The programming
language is chosen with respect to the type of software being
developed.
Stage 5: Testing the Product
This stage is usually a subset of all the stages as
in the modern SDLC models, the testing
activities are mostly involved in all the stages of
SDLC. However this stage refers to the testing
only stage of the product where products
defects are reported, tracked, fixed and
retested, until the product reaches the quality
standards defined in the SRS.
Stage 6: Deployment in the Market and
Maintenance
Once the product is tested and ready to be
deployed it is released formally in the appropriate
market. Sometime product deployment happens in
stages as per the organizations. business strategy.
The product may first be released in a limited
segment and tested in the real business
environment (UAT- User acceptance testing).
SDLC Models
There are various software development life
cycle models defined and designed which are
followed during software development
process. These models are also referred as
"Software Development Process Models". Each
process model follows a Series of steps unique
to its type, in order to ensure success in
process of software development.
The most important and popular SDLC models
followed in the industry:
1.
2.
3.
4.
5.
Waterfall Model
Iterative Model
Spiral Model
V-Model
Big Bang Model
The other related methodologies are Agile Model,
RAD Model, Rapid Application Development and
Prototyping Models.