Software Development Cycle

offbeatnothingSoftware and s/w Development

Dec 2, 2013 (3 years and 6 months ago)

59 views

CS3340: Software
Development

L. Grewe

A definition of the software
development:



The application of a systemic,
disciplined, quantifiable approach
to development, operation, and
maintenance of software
.



IEEE Standard Computer Dictionary, 610,
ISBN 1
-
55937
-
079
-
3


Software Engineering: A Practitioner's
Approach



Why study Software Development?


Understand


Development problems


Software Failures


Failure Impact


Develop better software


Software Engineering


is the application of a systematic,
disciplined, quantifiable approach to the
development, operation, and maintenance
of
software



Wikipedia



The discipline of software engineering encompasses
knowledge, tools, and methods for defining software
requirements
, and performing
software design
,
computer programming
,
user interface design
,
software testing
, and
software maintenance

tasks.

Who’s Involved

CUSTOMER

Sponsors system

development

USER

Uses

system

DEVELOPER

Builds

system

Contractual

obligation

$$$,

needs

Software system

Needs

Software Development Lifecycle
Steps


Planning



Analysis



Design



Development



Testing



Deployment



Maintenance

Planning
-

Lifecycle Step

establishing the plans for creating an information
system by



Defining the system to be developed


based on
the systems prioritized according to the
organization’s critical success factor (CSF), a
system must be identified and chosen


the project scope


a high level of system
requirements must be defined and put into a
project scope document


Developing the project plan
-



all details from
tasks to be completed, who completed them and
when they were completed must be formalized


Managing and monitoring the project plan


this
allows the organization to stay on track, creating
project milestones and feature creeps which allow
you to add to the initial plan

Analysis
-

Lifecycle Step


Developers with users collaborate to collect,
comprehend, and logistically formalize requirements
by


Collaboratively discuss which tasks to
undertake to make the system most
successful



Define Requirements


Prioritize requirements

Design
-

Lifecycle Step



this is where the technical blueprint of the
system is created by


Architecture: choosing design of
networking, hardware and other software


Presentation Layer: GUI screen design,


Data Layer: databases / data needs.


Business Layer: Process design.


Test: possibly write test conditions (work
with the end users to develop the test
scripts according to the system
requirements)

Development
-

Lifecycle Step


executing the design into a physical
system by


Actual implementation


Use good tools for layer/ component
of system implmenting.


Testing
-

Lifecycle Step


testing the developed system


(Q&A
-

quality and assurance) Test
the system using the established test
scripts


test conditions are
conducted by comparing expected
outcomes to actual outcomes. If
these differ, a bug is generated and a
backtrack to the development stage
must occur.


Deployment
-

Lifecycle Step


the systems are placed and used in the
actual workforce and


The user manual is created


Training provided

Maintenance
-

Lifecycle Step


keeping the system up to date


Help


Revisions



Classic Life Cycle Models


Linear sequential (Waterfall)


Prototyping


Rapid Application Development (RAD)


Incremental (Block Release)


Spiral


Component Assembly


Concurrent Development


Fourth Generation techniques

SO……TECHNIQUES?


A number of Lifecycle Models exist.

Waterfall Model

REQUIREMENTS

ANALYSIS

SYSTEM

DESIGN

PROGRAM

DESIGN

CODING

UNIT & INTE
-

GRATION TESTING

SYSTEM

TESTING

ACCEPTANCE

TESTING

OPERATION

& MAINTENANCE

Waterfall Model Described


ANALOGY: 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.




Once a phase of development is completed, the development proceeds to
the next phase and there is no turning back.




ADVANTAGE:


departmentalization and managerial control.


schedule can be set with deadlines for each stage of development and a
product can proceed step

by
-

step.


Each phase of development proceeds in strict order, without any
overlapping or iterative steps.


DISADVANTAGE:


Does not allow for much reflection or revision.

Prototyping


quickly put together a working model



illustrate ideas or features and gather early user feedback.



More prototypes are made iteratively and incrementally



When the prototype is sufficiently refined and meets the
functionality, robustness, manufacturability and other
design goals, the product is ready for production.



ADVANTAGES:

it is believed to reduce project risk and cost.



Prototyping Cycles

LIST OF

REVISIONS

LIST OF

REVISIONS

LIST OF

REVISIONS

PROTOTYPE

REQUIREMENTS

PROTOTYPE

DESIGN

PROTOTYPE

SYSTEM

TEST

DELIVERED

SYSTEM

SYSTEM

REQUIREMENTS

(sometimes informal

or incomplete)

revise

prototype

user/

customer

review

Rapid Application Development
(RAD)



Response to fact that non
-
agile
processes like waterfall TAKE LONG
TIME.


involves iterative development, and
the construction of prototypes.


involves compromises in usability,
features, and/or execution speed.


development cycle expedited ….thus,
products developed faster.

RAD….how is the rapid done?


CASE Tools:



use of Computer Aided Software
Engineering or CASE tools, which focus
on converting requirements to code as
quickly as possible


Time Boxing:


features are pushed out to future
releases in order to complete a feature
light version quickly.

RAD


ADVANTAGES:


Increased speed of development through methods
including rapid prototyping, virtualization of system
related routines, and other techniques.


Decreased

end
-
user functionality (arising from
narrower design focus), hence reduced complexity


Larger emphasis on simplicity and usability of GUI
design


DISADVANTAGES


Reduced Scalability, and reduced features when a RAD
developed application starts as a prototype and
evolves into a finished application


Reduced features occur when features are pushed to
later versions in order to finish a release in a short
amount of time


The data needed should already be existing


Spiral Model Described


combining elements of both design and
prototyping
-
in
-
stages, in an effort to
combine advantages of top
-
down and
bottom
-
up concepts.




combines the features of the prototyping
model and the waterfall model.



intended for large, expensive and
complicated projects.


Spiral Model

1.
System Requirements

2.
Preliminary Design

3.
First Prototype done

4.
Evaluations, redefining of requirements and
redesign

5.
2
nd

Prototype

6.
THE SPIRAL…..2
nd

evaluation, redesign and so
on until customer satisfied.

7.
The final system is thoroughly evaluated and
tested. Routine maintenance is carried out on a
continuing basis to prevent large
-
scale failures
and to minimize downtime.


Spiral Model

Start Axis

Customer
Communication

Planning

Risk
Analysis

Development

Integration

Customer
Evaluation

…..now some more models

Extreme Programming (XP)


Agile method


early 2000's, the most popular of which is
Extreme Programming.


Kent Beck wrote the first book on the
topic in 1999 and expanded it with a
second edition in 2005.


Extreme programming is a somewhat
controversial methodology:

1.
Deemphasizes formalized requirements
gathering

2.
Short development cycles

3.
Constant User feedback

Extreme Programming


The Core
Idea


prescribing a set of daily stakeholder
practices

that embody and encourage
particular
XP values
.


traditional software engineering practices
taken to so
-
called "extreme" levels


Hopes to be more responsive to customer
needs ("agile")



Wikipedia

Extreme Programming Values


Communication



Simplicity



Feedback



Courage



Respect



Extreme Programming


a
techniques (e.g. of controversy)


Pair programming



2 programmers work together at one keyboard.


1 types in code the 2nd reviews each line of code.





Reviewer also considers the strategic direction of
the work, coming up with ideas for improvements
and likely future problems to address.



This frees the coder to focus all of his or her
attention on the "tactical" aspects of completing
the current task, using the observer as a safety
net and guide.

…..now some more models

Multiple Builds

Development systems

Production systems

DEVELOPERS

USERS


Build Release 1


Use Release 1

Build Release 2


Use Release 2

Build Release 3


Use Release 3

Time

Waterfall with Prototyping

REQUIREMENTS

ANALYSIS

SYSTEM

DESIGN

PROGRAM

DESIGN

CODING

UNIT & INTE
-

GRATION TESTING

SYSTEM

TESTING

ACCEPTANCE

TESTING

OPERATION

& MAINTENANCE

PROTOTYPING

Verify

Validate

…..some things to consider about
stages

Stage 1:
Defining the problem


What Happens in this Stage:

To Identify and understand the problem you

must look at the:


Needs of
Users

and
System


Objectives that the solution is to meet


Boundaries of solution


Feasibility Study


Design Specifications

User Requirements

System Requirements

Modelling System


The
design specification

helps you form
the basis for the
planning

and
designing

the final solution.


You will use this specification
throughout the system development

to
help plan, build and test the final
solution.


The Design specifications give a
workable framework to aid development
of the system (and further
understanding of the system).



Stage 1:

Design specification



A quote on the problem of ill
-
defined
system requirements:


"the creation of software requirements is
reminiscent of hiking in a fog that is
gradually lifting”


Software Productivity Research Inc (1996)

Stage 1:

Stage 1:

Design specifications



You need to consider the specification for
the USER and the System (Developer's)
point of view.


Developer:

Overall design specifications


User:

Interface design specifications

Stage 1:

Activity:



Developer's perspective


Algorithms,


Variables


Software design approach


Modelling the system


Documentation


User's perspective


Screen design


Ergonomic issues


Appropriate icons


Appropriate screen messages


Social and ethical issues


Relevant data formats for display





Stage 1:

System Documentation:

Modelling different aspects of the System




Modelling tools are part of the documentation to
be interpreted by developers, maintainers and
users, and are used to represent a system.


They use diagrammatic methods and include:





Input Process Output (IPO) diagrams




System Flowcharts




Storyboards




Screen designs




Dataflow diagrams




Prototype




Stage 1:

Questions:


Q 1: What are the aims of the first stage of
the development cycle?


Q 2: Why is the problem specification so
important in this stage?


Q 3: Why are modelling tools used in this
stage?



Stage 2:

Planning and Design of


Software Solution


Documentation and Models developed in
previous stage are used to give an
overall
view of system design

and help in the
development of data structures and logic

necessary to fully develop each module.

Stage 2:

Planning and Design of


Software Solution

What Happens in this Stage:

The Planning stage consists of designing a solution.
So in this stage you need to:

1: Identify all inputs, outputs and processes

2: Select and describe relevant Data Structures

3: Create the Algorithm for final solution.

Stage 2 :


Use structured programming techniques of
writing programs.


You need to define your system's Data
Structures and files


You need to be able to recognize the logic in
Standard Algorithms


You need to test your algorithm


Documentation tools used to represent the
overall software solution in diagrammatic form


Chose your programming language wisely

Stage 2
: Questions:



Q 1:

Which Documentation tools in the above table are
used in "stage one" of the SDC to help you
understand
and "model" the new system
.


Q 2:

Which Documentation tools in the above table are
used in "stage two" of the SDC to help you
Represent a
Solution to the problem
.


Q 3:

What is the different between customised and
standard algorithms?


Q 4:

What information does a data dictionary hold?


Q 5:
What is the term used for the ‘computer software’
that the development team uses to help with analysis
documentation and development?


Q 6:
Say the Planning stage is complete and the
Programmer is about to start to code. Select any two of
the Representation Tools below and describe how they
both can complement each other to give the programmer
a better description of the system


Data dictionary, structure diagram, algorithm, IPO chart


Stage 3
:

Implementation of Software
Solution


What happens in this stage:


Source code written and tested., Ensure effective
user interface

Stage 3
:


Use
tools

and
techniques

that will help correct
and detect errors.


Understand the Type of errors :



Syntax, Logic, Run
-
time


Consider the Hardware and software requirement
of new software.

Stage 3:

Questions


Q 1: State one documentation prepared in this
stage and describe why it is important AND who
is it important for?



Stage 4:

Testing and Evaluation of


Software Solution

What happens in this stage:


Verify program solution using test data both at
program and system level.


Testing and Evaluation is integral to all stages.


Test that the Systems original “System
Requirements and Objectives” are being met.


Are we doing the “RIGHT JOB?”


Are we doing the “JOB RIGHT?”


Stage 4:

Testing and Evaluation of


Software Solution



To ensure a quality product testing and
evaluation is done.



Quote:
“definitions of software testing, however,
boil down to essentially the same thing: software
testing is the process of executing software in a
controlled manner, in order to answer the
question ”Does the software behave as
specified?” .”

Stage 4:

Questions


Q 1: What is the result from stage one of the
SDC that is used in this stage to help rest the
solution?


Stage 5:

Maintenance of Software Solution


What happens in this stage:


On
-
going process of corrections and refinement.


Modifications to code, macro, and scripts are often
required. These modifications do not need to be made by
original developers.


In these situations, the original documentation is very
important.


You need to keep in mind the ethical issues associated with
assessing and modifying the code of others.


For all Changes:





Test changes





Document changes


Modify present documentation