 |
What is a Software Development Process? |
 |
| A software development process or life
cycle is a
structure imposed on the development of a software product. There are several
models for such processes, each describing approaches to a variety of
tasks or activities that take place during the process. Processes
More and more software development organizations implement process
methodologies. The
Capability Maturity Model (CMM) is one of the leading models.
Independent assessments can be used to grade organizations on how well
they create software according to how they define and execute their
processes. There are dozens of others, with other popular ones being
ISO 9000,
ISO 15504, and
Six Sigma. Process Activities/Steps
Software Engineering processes are composed of many activities,
notably the following:
 |
|
 |
| |
 |
Requirements Analysis |
 |
 |
|
|
Extracting the requirements of a desired software product is the first
task in creating it. While customers probably believe they know what the
software is to do, it may require skill and experience in software
engineering to recognize incomplete, ambiguous or contradictory
requirements. |
 |
 |
 |
Specification |
 |
 |
|
|
Specification is the task of precisely describing the software to be
written, in a mathematically rigorous way. In practice, most successful
specifications are written to understand and fine-tune applications that
were already well-developed, although safety-critical software systems are
often carefully specified prior to application development. Specifications
are most important for external interfaces that must remain stable. |
 |
 |
 |
Software architecture |
 |
 |
|
|
The architecture of a software system refers to
an abstract representation of that system. Architecture is
concerned with making sure the software system will meet the
requirements of the product, as well as ensuring that future
requirements can be addressed. |
 |
 |
 |
Implementation |
 |
 |
|
|
Reducing a design to code may be the most obvious part of the software
engineering job, but it is not necessarily the largest portion. |
 |
 |
 |
Testing |
 |
 |
|
|
Testing of parts of software, especially where code by two different
engineers must work together, falls to the software engineer. |
 |
 |
 |
Documentation |
 |
 |
| |
An important task is
documenting the internal design of software for the purpose of
future maintenance and enhancement. |
 |
 |
 |
Training and Support |
 |
 |
|
|
A large percentage of software projects fail because the developers fail
to realize that it doesn't matter how much time and planning a development
team puts into creating software if nobody in an organization ends up
using it. People are occasionally resistant to change and avoid venturing
into an unfamiliar area, so as a part of the deployment phase, its very
important to have training classes for the most enthusiastic software
users (build excitement and confidence), shifting the training towards the
neutral users intermixed with the avid supporters, and finally incorporate
the rest of the organization into adopting the new software. Users will
have lots of questions and software problems which leads to the next phase
of software. |
 |
 |
 |
Maintenance |
 |
 |
|
|
Maintaining and enhancing software to cope with newly discovered problems
or new requirements can take far more time than the initial development of
the software. Not only may it be necessary to add code that does not fit
the original design but just determining how software works at some point
after it is completed may require significant effort by a software
engineer. About 60% of all software engineering work is maintenance, but
this statistic can be misleading. A small part of that is fixing bugs.
Most maintenance is extending systems to do new things, which in many ways
can be considered new work. |
|
|
 |
|
 |
Process Models
A decades-long goal has been to find repeatable, predictable processes or
methodologies that improve productivity and quality. Some try to
systematize or formalize the seemingly unruly task of writing software.
Others apply project management techniques to writing software. Without
project management, software projects can easily be delivered late or over
budget. With large numbers of software projects not meeting their
expectations in terms of functionality, cost, or delivery schedule,
effective project management is proving difficult. Waterfall processes
The best-known and oldest process is the
waterfall model, where developers follow these steps in order. They state requirements, analyze
them, design a solution approach, architect a software framework for that
solution, develop code, test,
deploy, and maintain. After each step is finished, the process proceeds to
the next step. |
|
|
Iterative processes
Iterative development prescribes the construction of initially small but
ever larger portions of a software project to help all those involved to
uncover important issues early before problems or faulty assumptions can
lead to disaster. Iterative processes are preferred by commercial
developers because it allows a potential of reaching the design goals of a
customer who does not know how to define what he wants.
Agile software development processes are built on the foundation of
iterative development. To that foundation they add a lighter, more
people-centric viewpoint than traditional approaches. Agile processes use
feedback, rather than planning, as their primary control mechanism. The
feedback is driven by regular tests and releases of the evolving software.
Agile processes seem to be more efficient than older methodologies, using
less programmer time to produce more functional, higher quality software,
but have the drawback from a business perspective that they do not provide
long-term planning capability. In essence, they say that they will provide
the most bang for the buck, but won't say exactly when that bang will be.
Extreme Programming, XP, is the best-known agile process. In XP, the
phases are carried out in extremely small (or "continuous") steps compared
to the older, "batch" processes. The (intentionally incomplete) first pass
through the steps might take a day or a week, rather than the months or
years of each complete step in the Waterfall model. First, one writes
automated tests, to provide concrete goals for development. Next is coding
(by a pair of programmers), which is complete when all the tests pass, and
the programmers can't think of any more tests that are needed. Design and
architecture emerge out of refactoring, and come after coding. Design is
done by the same people who do the coding. The
incomplete but functional system is deployed or demonstrated for the users (at least one of which is on the development team).
At this point, the practitioners start again on writing tests for the next
most important part of the system.
While Iterative development approaches have their advantages, software
architects are still faced with the challenge of creating a reliable
foundation upon which to develop. Such a foundation often requires a fair
amount of upfront analysis and prototyping to build a development model.
The development model often relies upon specific design patterns and
entity relationship diagrams (ERD). Without this upfront foundation,
Iterative development can create long term challenges that are significant
in terms of cost and quality.
Critics of iterative development approaches point out that these processes
place what may be an unreasonable expectation upon the recipient of the
software: that they must possess the skills and experience of a seasoned
software developer. The approach can also be very expensive, akin to...
"If you don't know what kind of house you want, let me build you one and
see if you like it. If you don't, we'll tear it all down and start over."
A large pile of building-materials, which are now scrap, can be the final
result of such a lack of up-front discipline. The problem with this
criticism is that the whole point of iterative programming is that you
don't have to build the whole house before you get feedback from the
recipient. Indeed, in a sense conventional programming places more of this
burden on the recipient, as the requirements and planning phases take
place entirely before the development begins, and testing only occurs
after development is officially over.
The are many other methods to those listed above, and you can find out
more by visiting the websites below.
 |
Learn More |
 |
To find out more about how Select Business Solutions can help you
Contact Us today.
|
 |
|