Software development (also known as application development

Download Report

Transcript Software development (also known as application development

Software Development
Software development (also known as application development,
software design, designing software, software application
development, enterprise application development, or platform
development) is the development of a software product. The term
"software development" may be used to refer to the activity of
computer programming, which is the process of writing and
maintaining the source code, but in a broader sense of the term it
includes all that is involved between the conception of the desired
software through to the final manifestation of the software, ideally in
a planned and structured process. Therefore, software
development may include research, new development, prototyping,
modification, reuse, re-engineering, maintenance, or any other
activities that result in software products.
Strategies for Engineering Quality Software

High-quality software system are easy to learn and
use because they perform quickly and efficiently
they meet their users’ needs; and they operate
safety and reliably so that system downtime is kept
to a minimum. Such software has long been
required to support the fields of air traffic control,
nuclear power, automobile safety, health care,
military and defense, and space exploration. Now
that computers and software have become integral
parts of almost every business, the demand for
high-quality software is increasing.
Software Defect

A software defect is assny error that, if
not removed, could cause a software
system to fail to meet its users, needs.
The impact of these defects can be
trivial; for example, a computerized
sensor in a refrigerator’s ice cube maker
might fail to recognize that the tray is full
and continue to make ice.
Software Quality

Software quality is the degree to which a
software product meets the needs of its users.
Quality management focuses on defining,
measuring, and refining the quality of the
development process and the product
development during its various stages. These
product including statements of requirements,
flow charts, and user documentation are
known as deliverables. The objectives of
quality management is to help developers
deliver high-quality system that meet the
needs of their users
Importance of Software quality

A business information system is a set of
interrelated components including hardware,
software, database, networks, people, and
procedures that collects and process data and
disseminates the output. A common type of
business system is one that captures and
records business transactions. For example, a
manufacturer’s order-processing system
captures order information, processes it to
update inventory and accounts receivable, and
ensures that the order is filled and shipped on
time to the customer
Software Product Liability

Software product litigation is certainly not new. One
lawsuit in the early 1990s involved a financial
institution that became insolvent because defects in
purchased software application caused errors in its
integrated general ledger system, customers’
passbooks, and loan statements. Dissatisfied
depositors responded by withdrawing more than $5
million. In another case from 1992, a Ford truck
stalled because of a software defect in the truck’s
fuel injector. In the ensuing accident, a young child
was killed. A state supreme court later affirmed an
award of $7.5 million in punitive damages against the
manufacturer.
Software Development Process

A Software development process, also known
as Software Development Life Cycle (SDLC),
is a structure imposed on the development of
a software product. Similar terms include
software life cycle and software process. It is
often considered a subset of systems
development cycle. There are several models
for such processes, each describing
approaches to a variety of task or activities
that take place during the process. Some
people consider a lifecycle model a more
general term and a software development
process a more specific term.
Software Development Process

Development information system software is not a
simple process; it requires completing many complex
activities, with many dependencies among the
various activities. System analysts, programmers,
architects database specialists, project managers
documentation specialists, trainers, and testers are
all involved in large software projects. Each of these
groups has a role to play, and has specific
responsibilities and tasks. In addition, each group
makes decisions that can affect the software’s quality
and the ability of an organization or an individual to
use if effectively.
Software Development Process
Model: Waterfall

The waterfall model- is a popular version of the
systems development life cycle model for software
engineering. Often considered the classic approach
to the systems development life cycle, the waterfall
model describes a development method that is linear
and sequential. Waterfall development has distinct
goals for each phase of development. Imagine a
waterfall on the cliff of a steep mountain. Once the
water has flowed over the edge of the cliff and has
begun its journey down the side of the mountain, it
cannot turn back. It is the same with waterfall
development. Once a phase of development is
completed, the development proceeds to the next
phase and there is no turning back.
Software Development Process
Model: Waterfall
Requirements
definition
System and
software design
Implementation
and unit testing
Integr ation and
system testing
Operation and
maintenance
Software Development Process
Model: Waterfall
Advantages:
Needless to mention, it is a linear model and of course,
linear models are the most simple to be implemented.
 The amount of resources required to implement this
model is minimal.
 One great advantage of the waterfall model is that
documentation is produced at every stage of the waterfall
model development. This makes the understanding of the
product designing procedure simpler.
 After every major stage of software coding, testing is done
to check the correct running of the code.

Software Development Process
Model: Waterfall
Disadvantages:
Ironically, the biggest disadvantage of the waterfall model is one
of its greatest advantage. You cannot go back, if the design
phase has gone wrong, things can get very complicated in the
implementation phase.
 Many times, it happens that the client is not very clear of what he
exactly wants from the software. Any changes that he mentions in
between may cause a lot of confusion.
 Small changes or errors that arise in the completed software may
cause a lot of problem.
 The greatest disadvantage of the waterfall model is that until the
final stage of the development cycle is complete, a working
model of the software does not lie in the hands of the client.

Software Development Process
Model: Spiral

The spiral model is a software development
process combining elements of both design and
prototyping-in-stages, in an effort to combine
advantages of top-down, bottom-up concepts. Also
known as the spiral lifecycle model (or spiral
development), it is a systems development method
(SDM) used in information technology(IT). This
model of development combines the features of
the prototyping and the waterfall model. The spiral
model is intended for large, expensive and
complicated projects.
Software Development Process
Model: Spiral
Software Development Process
Model: Spiral

Advantages:
•This model improves avoidance of risk
•This model is very useful to choose a methodology for a
software iteration
•This model can associate other methodologies like Waterfall,
Prototyping, and Incremental methodologies. Suppose a
project having a low risk of not meeting the user requirement
and on other side having high risk of missing budget would
follow waterfall approach
•In this model more functionality can be added in later
versions.
Software Development Process
Model: Spiral

Disadvantages:
•This model limiting reusability
•This model is quite complex
•Spiral model is very customized for every project
•To use this model an experienced and skilled team required
•There is no proper control to move from one cycle to
another cycle
Dynamic Software Testing

Software is developed in units called
subroutines or programs. These unit in
turn are combined to form large
systems. One approach to QA is to test
the code for a completed unit of
software by actually entering test data
and comparing the results to the
expected results. This is called
dynamic testing. There are two forms
of dynamic testing.
Black-box testing

Black-box testing involves viewing the
software unit as a device that has
expected input and output behaviors but
whose internal workings are unknown (a
black box). If the unit demonstrates the
expected behaviors for all the input data
in the test suite, it passes the test.
Whit-box testing

White-box testing treats the software unit
as a device that has expected input and
output behaviors but whose internal
workings, unlike the unit in black-box
testing, are known. White –box testing
involves testing all possible logic paths
through the software unit with thorough
knowledge of its logic. The test data must
be carefully constructed so that each
program statement executes at least once.
Other Types of Software Testing

Static testing – Special software
programs called static analyzers are run
against the new code. Rather than
reviewing input and output , the static
analyzers looks for suspicious patterns
in programs that might indicate a defect.



Integration testing – After successful unit
testing, the software units are combined into
an integrated subsystem that undergoes
rigorous testing to ensure that the linkages
among the various subsystems work
successful.
System testing – After successful integration
testing, the various subsystems are combined
to test the entire system as a complete entity.
User acceptance testing – Independent
testing performed by trained end users to
ensure that the system operates as they
exepect.
Capability Maturity Model
Integration

Capability Maturity Model Integration
(CMMI) developed by the Software
Engineering Institute at Carnegie Mellon is
a process improvement approach that
defines the essential elements of effectives
processes. The model is general enough to
be used to evaluate and improve almost
any process, and a specific application of
CMMI CMMI-Development (CMMI-DEV) is
frequently used to assess and improve
software development practices.
KEY ISSUES IN SOFTWARE DEVELOPMENT

Although defects in any system can cause
serious problems, the consequences of
software defects in certain systems can be
deadly. In these kinds of systems, the
stakes involved in creating quality software
are raised to the highest possible level.
The ethical decisions involving a trade-off-if
one must be considered between quality
and such factors as cost, ease of use, and
time to market requires extremely serious
examination.
Quality Management Standards

The International Organization for
Standardization (ISO), Founded in 1947, is
a worldwide federation of national
standards bodies from 161 countries. The
ISO issued its 9000 series of business
management standards in 1988. These
standards require organizations to develop
formal quality management systems that
focus on identifying and meeting the
needs, desires, and expectations of their
customers.

The ISO 900 standard serves as a guide to
quality products, services, and
management. Approximately 350,000
organizations in more than 150 countries
have ISO 9000 certification. Although
companies can use the standard as a
management guide for their own purposes
in achieving effective control, the priority for
many companies is having a qualified
external agency certify that the have
achieved ISO 9000 certified to win a
contract from them.
To obtain this coveted certificate, an
organization must submit to an
examination by an external assessor and
fulfill the following requirements:
Have written procedures for all
processes.
 Follow those procedures.
 Prove to an auditor that it has fulfilled
the first two requirements; this proof can
require observation of actual work
practices and interviews with customers,
suppliers, and employees.


Prove to an auditor that it has fulfilled
the first two requirements; this proof can
require observation of actual work
practices and interviews with customers,
suppliers, and employees.
The various ISO 9000 series of
standards address the following
software-related activities:





ISO 9001: Design, development,
production, installation, servicing
ISO 9002: Production, installation,
servicing
ISO 9003: Inspection and testing
ISO 9000-3: Development, supply, and
maintenance of software
ISO 9004: Quality management and quality
systems elements
Failure mode and effects
analysis(FMEA)

Failure mode and effects analysis
(FMEA) is an important technique used
to develop ISO 9000-compliant quality
systems by both evaluating reliability
and determining the effects of system
and equipment failures. Failures are
classified according to their impact on a
project’s success.