erect-mattel
1. What is software development?
Software development is the process of
developing software through
successive
phases in an orderly way. This process includes
not only the
actual writing of code but
also the preparation of requirements and
objectives,
the
design
of
what
is
to
be
coded,
and
confirmation
that
what
is developed has met
objectives.
Before systems
development methods came into being, the
development of
new
systems
or
products
was
often
carried
out
by
using
the
experienceand
intuition of
management and technical personnel. However, the
complexityof
modern
systems
and
computer
products
long
ago
made
the
need
clear
forsome kind of orderly development process.
Typical phases of software
development:
1)
Identification of required software
2)
Analysis of the software requirements
3) Detailed specification of the
software requirements
4) Software
design
5) Programming
6)
Testing
7) Maintenance
In general, the development of
commercial software is usually a result
of demand in the marketplace, while
enterprise software
developmentgenerally
arises
from
a
need
or
a
problem
within
the
enterprise
environment.
2. How is software development
guided?
The software
development process is almost invariably guided
bysome
systematic
software
development
method
(SDM).
Referred
to
by
a
numberof
terms, including
process models
,
development
guidelines
,and
systems
development life cycle
models
(SDLC), software development
methods
nevertheless generally include
the same development phases:
The
existing
system
is
evaluated
and
its
deficiencies
identified,
usually through
interviewing system users and support personnel.
?
The new system
requirements are defined. In particular, the
deficiencies
in
the
existing
system
must
be
addressed
with
specific
proposals for
improvement.
?
The
proposed
system
is
designed.
Plans
are
laid
out
concerning
the
physical construction, hardware,
operating systems, programming,
communications, and security issues.
?
The new system
is developed. The new components and programs must
be obtained and installed. Users of the
system must be trained in
its
use,
and
all
aspects
of
performance
must
be
tested.
If
necessary,
adjustments must
be made at this stage.
?
The system is put into use. This can be
done in various ways. The
new system
can phased in, according to application or
location,
andthe
old
system
gradually
replaced.
In
some
cases,
it
may
be
more
cost-
effective to shut down the old system and
implement the new
system all at once.
?
Once
the
new
system
is
up
and
running,
then
it
should
be
exhaustively
evaluated.
Maintenance must be kept up rigorously at all
of
the
system
should
be
kept
up-to-date
concerning
the
latest modificationsand procedures.
?
The systems
development life cycle model was developed as a
structured
approach to information
system development that guides all the
processesinvolved from an initial
feasibility study through to
maintenance of thefinished application.
SDLC models take a variety of
approaches to development.
Systems development life cycle models
include:
·
The
waterfall
model:
This
is
the
classic
SDLC
model,
with
a
linear
and
sequential
method
that
has
goals
for
each
developmentphase.
The
waterfall
model simplifies
task scheduling, because there areno iterative or
overlapping
steps.
One
drawback
of
the
waterfall
is
thatit
does
not
allow
for much revision.
·
Rapid
application
development
(RAD):
This
models
based
on
the
concept
that
better
products
can
be
developed
more
quicklyby:
using
workshops
or
focus
groups
to
gather
system
requirements;
prototyping
and
reiterative
testing of designs; rigid adherence to
schedule; and less formality of
team
communications such as reviews.
·
Joint application development
(JAD):
This modelinvolves the client
or
end
user
in
the
design
and
development
of
an
applicationthrough
a
series
of collaborative
workshops called
JAD
sessions
.
·
The
prototyping model:
In this model, a
prototype (an early
approximation of a
final system or product) is built, testedand then
reworked as necessary until an
acceptable prototype is finallyachieved
from which the complete system or
product can now be developed.
·
Synchronize-and-stabilize:
This model involves teams working in
parallel on individual application
modules, frequently synchronizing
their
code with that of other teams and stabilizing code
frequently
throughout the development
process.
· The spiral model:
This model of development combines the features of
the
prototyping
model
and
the
waterfall
model.
The
spiral
model
is
favored
for
large, expensive, and complicated projects.
3. How has the open source development
process influenced software
development
in general?
Open
source
software
is
developed
collaboratively;
source
code
is
freely
available
for
use
and
modification.
The
open
source
movement
arose
because
some developers came
to believe that competition amongst vendors leads
to inferior products and that the best
approach to development isa
collaborative one.
The OSI (Open Source Initiative) is an
industry body that certifies
products
as open source if they conform to a number of
rules:
· The software being distributed
must be redistributed to anyone else
without any restriction
·
The source code must be made available (so that
the receiving party
will be able to
improve or modify it)
· The license can
require improved versions
of the
software to carry a
different name or
version from the original software
Despite
its
emphasis
on
the
collaborative
process,
the
biggest
influence
that
open
source
has
had
on
software
development
in
general
may
be
through
competition:
by
competing
with
proprietary
software
products,
open
source
products
force
vendors
to
work
that
much
harder
to
hold
their
market
share
in the face of viable
open source alternatives.
4.
What
are
some
generally
accepted
best
practices
common
to
all
or
most
development models?
Here's a collection of some of the top
tips from a variety of industry
sources:
· Make sure that
you've chosen a systems development life cycle
model
that suits your project, because
every one of the processesinvolved
depends
on
the
model.
That
said,
however,
implementing
any
modelis
better
than
none
--
much
of
the
success
of
a
project
depends
upon
howscrupulously
the model is adhered to.
·
Reuse software components when it's appropriate,
but don't use code
that
doesn't
work
perfectly
for
its
intended
purpose
just
because
you
have
it on hand.
·
Be
very
thorough
in
gathering
requirements,
ensuring
that
all
parties
agree on what they
are -- and make sure you document them.
·
Don't
promise
the
moon,
if
you
can't
deliver
it.
Avoidletting
someone
who isn't fully
informed negotiate with the client.
·
Make sure that the architecture you've chosen is
appropriate for the
application
you're
building.
To
retain
perspective,
you
might
want
to
look
at the smaller picture
and plan the architecture incrementally.
·
Change is part of life,
including software development. You have to
accept
that
various
things --
requirements,
for
example --
are
likely
to
change
throughout
the
life
of
the
project.
Keep
control
of
them,
but
not
too
rigidly.
· Set up peer review
process
es for every element of the
project.
·
Design
thoroughly
and
with
care,
but
remember
the
KISSprinciple:
Keep
it simple.
·
In
your
project
plan,
split
big
projects
into
manageable
chunks,
with
concrete milestones and
deadlines.
· Ensure accountability:
make
sure that deadlines are clear and
that
people have to report on whether
they made them, and explain why not if
they don't.
· Implement
quality control procedures throughout the
project.
· Test exhaustively
-- there's no point in doing a cursory
run through
only to have an application
fail when you run it for the client.
·
After the project is completed, conduct a thorough
post
-mortem, with
everyone
involved. You'll see what worked well and what
should havebeen
differently, and your
future projects will benefit.
5. What
are some common mistakes in software
development?
According to a
Standish Group report, corporations in the United
States
spend
over
$$275
billion
every
year
on
software
development
projects,
many
of
which
are
doomed
to
failure.
Research
by
the
group
found
that
over
80%
of
projects
fail
for
various
reasons,
and
that
fully
30%
of
projectswere
cancelled prior
to completion because of poor execution.
David
B.
Stewart,
at
the
University
of
Maryland,
set
out
to
document
the
10
most
common
mistakes
of
software
development.
He
found,
however,that
the
sheer
number
of
errors
that
were
commonly
practiced
made
it
impossible
to
keep
the
number
to
ten.
He
ended
up
calling
his
article
Common
Mistakes
with
Real-Time
Software
Development.
Even
so,
afterthe
title had been established, he found
another five errors so common that
the
felt compelled to add them.
According
to Dr. Michael, the most common project problems
are due to
failure to manage project
elements successfully:
·
Requirement
s are not clearly and
accurately defined, and agreed upon
by
all concerned.
· Resources are not
adequately planned and allocated.
· Threats to project success are not
clearly detected, identified, and
protected against.
·
Critical path analysis is omitted,
or
poorly executed.
· The project's
progress is not tracked adequately.
·
Quality
management
is
not
carried
out
well
enough
throughout
the
life
of the
project.
·
Too
little
data
is
collected,
or
data
is
ignored
or
poorly
understood.
Correcting
flaws
identified
during
software
security
audits
is
expensive
and time
consuming. Worse, vast resources are spent on
containing and
recovering
from
exploits.
Fortunately,
providing
development
staff
with
the knowledge and tools
to avoid many of these pitfalls is easy and
inexpensive.
6.
Given
a
particular
process
model,
is
there
a
set
of
tools(a
development
environment) to support it?
In general, a process model usually
begins as a philosophy of
what
development
when
rather
than
a
rigid
methodology
complete
with
tools.
For
example,
rapid
application
development
(RAD)
is
an
approach
that
can
make
use
of
existing
development
tools.
In
general,
tools
for
supporting
all or part of a process model tend to
arrive later, if at all.
Historically,
development
tools
have
focused
on
the
code-building,
code
archive management, documentation,
testing, and packaging parts ofthe
process, sometimes offered as a suite.
Such a suite is generally known
as an
integrated development environment (IDE).
A set of tools for managing
or supporting a development project is
generally known as a computer-assisted
software environment (CASE). A
number
of companies offer products that support early
stages of
development
such
as
requirements
gathering,
design
prototyping,
and
data
modeling.
A
number
of
these
provide
tools
that
support
data
modeling
with
the
Unified
Modeling
Language.
Overall,
there
is
a
trend
toward
providing
all or most of the
tools for a development project in a single
product
or related set of products.
Today,
the
main
code-building
development
environments
or
program
suites
come from Microsoft with its Visual
Studio and Visual Studio .NET,
providing
support
for
Visual
Basic,
Visual
C#,
Visual
C++,
and
Visual
J#;
Sun Microsystems with
its Java 2 Enterprise Environment; and numerous
software vendors such as Borland who
repackage these environments with
some
value-added features. Recently, almost all
providers of software
development
environments
have
added
features
that
enable
the
software
to
be
used on the Web.
7. How
do
you
choose
the
programming
language
for
your
project?
For
most
projects,
the
right
language
is
easy
to
choose.
Your
company
may
have
standardized on a particular development
environment and language
(and you may
have been hired because you were already familiar
with the
language).
Or
you
may
be
updating
or
enhancing
an
existing
program;
it's
almost
always
best
to
use
the
same
language
the
existing
program
is
written
in.
In
some
cases,
however,
someone
will
need
to
select
the
best
(or,
since
the
best
may
be
somewhat
arguable,
at
least
an
appropriate
language).
In
somecases, you or your
team of developers may need to know several
languages fordifferent purposes.
General truisms about
programming languages are that:
erect-mattel
erect-mattel
erect-mattel
erect-mattel
erect-mattel
erect-mattel
erect-mattel
erect-mattel
-
上一篇:新产品设计与开发程序(中英文)
下一篇:英语校本课程开发方案计划