You are on page 1of 3

Software development is the computer programming, documenting, testing, andbug fixing involved

in creating and maintaining applications and frameworksinvolved in a software release life cycle and
resulting in a software product. The term refers to a 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.[1] Therefore, software development may include research, new development,
prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in
software products.[2]
Software can be developed for a variety of purposes, the three most common being to meet specific
needs of a specific client/business (the case with custom software), to meet a perceived need of
some set of potential users (the case withcommercial and open source software), or for personal use
(e.g. a scientist may write software to automate a mundane task). Embedded software
development, that is, the development of embedded software such as used for controlling
consumer products, requires the development process to be integrated with the development of the
controlled physical product. System software underlies applications and the programming process
itself, and is often developed separately.
The need for better quality control of the software development process has given rise to the
discipline of software engineering, which aims to apply the systematic approach exemplified in
the engineering paradigm to the process of software development.
There are many approaches to software project management, known as software development life
cycle models, methodologies, processes, or models. Thewaterfall model is a traditional version,
contrasted with the more recent innovation of agile software development.

Deployment starts directly after the code is appropriately tested, approved for release, and sold or
otherwise distributed into a production environment. This may involve installation, customization
(such as by setting parameters to the customer's values), testing, and possibly an extended period
of evaluation.[citation needed]
Software training and support is important, as software is only effective if it is used correctly.[citation needed]
Maintaining and enhancing software to cope with newly discovered faults or requirements can take
substantial time and effort, as missed requirements may force redesign of the software. [citation needed]

Phases of Software Development


The software development phases shown next are common to all significant software
development projects.
How they fit into an overall process differs according to the process model used.
Requirements Analysis and Definition

See Software Engineering Values


System Design

High-level software architecture


Program Design

User-oriented: UML class and interaction diagrams


Implementation-oriented: internal structure and algorithm design
Program Implementation

Writing and compiling code for the individual software components and their test
software
Unit Testing

Testing individual units, for example, classes


Integration Testing

Testing collaboration of units within modules


System Testing

Testing all modules together


System Delivery

Package and deliver bundles of the software and its documentation to the purchaser

Maintenance/Evolution

Fix defects or adapt software to new needs

You might also like