Vous êtes sur la page 1sur 12

In software engineering, a software development methodology (also known

as a system development methodology, software development life cycle,


software development process, software process) is a division of software
development work into distinct phases or activities with the intent of better
planning and management. It is often considered a subset of the systems
development life cycle. The methodology may include the pre-defnition of
specifc deliverables and artifacts that are created and completed by a
proect team to develop or maintain an application.!"#
$ommon methodologies include waterfall, prototyping, iterative and
incremental development, spiral development, rapid application
development, and e%treme programming. &ome people consider a life-cycle
'model' a more general term for a category of methodologies and a software
development 'process' a more specifc term to refer to a specifc process
chosen by a specifc organi(ation. )or e%ample, there are many specifc
software development processes that ft the spiral life-cycle model.* variety
of such frameworks have evolved over the years, each with its own
recogni(ed strengths and weaknesses. +ne software development
methodology framework is not necessarily suitable for use by all proects.
,ach of the available methodology frameworks are best suited to specifc
kinds of proects, based on various technical, organi(ational, proect and team
considerations.!"#
&oftware development organi(ations implement process methodologies to
ease the process of development. &ometimes, contractors may re-uire
methodologies employed, an e%ample is the ..&. defense industry, which
re-uires a rating based on process models to obtain contracts. The
international standard for describing the method of selecting, implementing
and monitoring the life cycle for software is I&+/I,$ "0012.
* decades-long goal has been to fnd repeatable, predictable processes that
improve productivity and -uality. &ome try to systemati(e or formali(e the
seemingly unruly task of designing software. +thers apply proect
management techni-ues to designing software. 3ithout e4ective proect
management, software proects can easily be delivered late or over budget.
3ith large numbers of software proects not meeting their e%pectations in
terms of functionality, cost, or delivery schedule, it is e4ective proect
management that appears to be lacking.
+rgani(ations may create a &oftware ,ngineering 5rocess 6roup (&,56),
which is the focal point for process improvement. $omposed of line
practitioners who have varied skills, the group is at the center of the
collaborative e4ort of everyone in the organi(ation who is involved with
software engineering process improvement.
* particular development team may also agree to programming environment
details, such as which integrated development environment is used, and one
or more dominant programming paradigms, programming style rules, or
choice of specifc software libraries or software frameworks. These details are
generally not dictated by the choice of model or general methodology.
7istory!edit#
The software development methodology (also known as &89) framework
didn:t emerge until the ";<1s. *ccording to ,lliott (011=) the systems
development life cycle (&8>$) can be considered to be the oldest formali(ed
methodology framework for building information systems. The main idea of
the &8>$ has been 'to pursue the development of information systems in a
very deliberate, structured and methodical way, re-uiring each stage of the
life cycle from inception of the idea to delivery of the fnal system, to be
carried out rigidly and se-uentially'!0# within the conte%t of the framework
being applied. The main target of this methodology framework in the ";<1s
was 'to develop large scale functional business systems in an age of large
scale business conglomerates. Information systems activities revolved around
heavy data processing and number crunching routines'.!0#
9ethodologies, processes, and frameworks range from specifc proscriptive
steps that can be used directly by an organi(ation in day-to-day work, to
?e%ible frameworks that an organi(ation uses to generate a custom set of
steps tailored to the needs of a specifc proect or group. In some cases a
'sponsor' or 'maintenance' organi(ation distributes an o@cial set of
documents that describe the process. &pecifc e%amples includeA
";21s
&tructured programming since ";<;
$ap 6emini &89, originally from 5*B8*T*, the frst ,nglish translation was
published in ";2=. &89 stands for &ystem 8evelopment 9ethodology
";C1s
&tructured systems analysis and design method (&&*89) from ";C1 onwards
Information De-uirement *nalysis/&oft systems methodology
";;1s
+bect-oriented programming (++5) developed in the early ";<1s, and
became a dominant programming approach during the mid-";;1s
Dapid application development (D*8), since ";;"
8ynamic systems development method (8&89), since ";;=
&crum, since ";;E
Team software process, since ";;C
Dational .nifed 5rocess (D.5), maintained by IF9 since ";;C
,%treme programming, since ";;;
0111s
*gile .nifed 5rocess (*.5) maintained since 011E by &cott *mbler
*pproaches!edit#
&everal software development approaches have been used since the origin of
information technology, in two main categories. Typically an approach or a
combination of approaches is chosen by management or a development
team.
'Traditional' methodologies such as waterfall that have distinct phases are
sometimes known as software development life cycle (&8>$) methodologies,
though this term could also be used more generally to refer to any
methodology. * 'life cycle' approach with distinct phases is in contrast to
*gile approaches which defne a process of iteration, but where design,
construction, and deployment of di4erent pieces can occur simultaneously.
3aterfall development!edit#
9ain articleA 3aterfall model
The activities of the software development process represented in the
waterfall model. There are several other models to represent this process.
The waterfall model is a se-uential development approach, in which
development is seen as ?owing steadily downwards (like a waterfall) through
several phases, typicallyA
De-uirements analysis resulting in a software re-uirements specifcation
&oftware design
Implementation
Testing
Integration, if there are multiple subsystems
8eployment (or Installation)
9aintenance
The frst formal description of the method is often cited as an article
published by 3inston 3. Doyce!G# in ";21 although Doyce did not use the
term 'waterfall' in this article. The basic principles areA!"#
5roect is divided into se-uential phases, with some overlap and splashback
acceptable between phases.
,mphasis is on planning, time schedules, target dates, budgets and
implementation of an entire system at one time.
Tight control is maintained over the life of the proect via e%tensive written
documentation, formal reviews, and approval/signo4 by the user and
information technology management occurring at the end of most phases
before beginning the ne%t phase.
The waterfall model is a traditional engineering approach applied to software
engineering. * strict waterfall approach discourages revisiting and revising
any prior phase once it is complete. This 'in?e%ibility' in a pure waterfall
model has been a source of criticism by supporters of other more '?e%ible'
models. It has been widely blamed for several large-scale government
proects running over budget, over time and sometimes failing to deliver on
re-uirements due to the Fig 8esign .p )ront approach. ,%cept when
contractually re-uired, the waterfall model has been largely superseded by
more ?e%ible and versatile methodologies developed specifcally for software
development. &ee $riticism of 3aterfall model.
The waterfall model is also commonly taught with the mnemonic * 8ance in
the 8ark ,very 9onday, representing *nalysis, 8esign, Implementation,
Testing, 8ocumentation and ,%ecution, and 9aintenance.!citation needed#
5rototyping!edit#
&oftware prototyping, is the development approach of activities during
software development, the creation of prototypes, i.e., incomplete versions of
the software program being developed.
The basic principles areA!"#
Bot a standalone, complete development methodology, but rather an
approach to handle selected parts of a larger, more traditional development
methodology (i.e. incremental, spiral, or rapid application development
(D*8)).
*ttempts to reduce inherent proect risk by breaking a proect into smaller
segments and providing more ease-of-change during the development
process.
.ser is involved throughout the development process, which increases the
likelihood of user acceptance of the fnal implementation.
&mall-scale mock-ups of the system are developed following an iterative
modifcation process until the prototype evolves to meet the usersH
re-uirements.
3hile most prototypes are developed with the e%pectation that they will be
discarded, it is possible in some cases to evolve from prototype to working
system.
* basic understanding of the fundamental business problem is necessary to
avoid solving the wrong problems.
Incremental development!edit#
Iarious methods are acceptable for combining linear and iterative systems
development methodologies, with the primary obective of each being to
reduce inherent proect risk by breaking a proect into smaller segments and
providing more ease-of-change during the development process.
The basic principles areA!"#
* series of mini-3aterfalls are performed, where all phases of the 3aterfall
are completed for a small part of a system, before proceeding to the ne%t
increment, or
+verall re-uirements are defned before proceeding to evolutionary, mini-
3aterfall development of individual increments of a system, or
The initial software concept, re-uirements analysis, and design of
architecture and system core are defned via 3aterfall, followed by iterative
5rototyping, which culminates in installing the fnal prototype, a working
system.
Iterative and incremental development!edit#
9ain articleA Iterative and incremental development
Iterative development!=# prescribes the construction of initially small but
ever-larger portions of a software proect to help all those involved to uncover
important issues early before problems or faulty assumptions can lead to
disaster.
&piral development!edit#
&piral model (Foehm, ";CC)
9ain articleA &piral model
In ";CC, Farry Foehm published a formal software system development
'spiral model,' which combines some key aspect of the waterfall model and
rapid prototyping methodologies, in an e4ort to combine advantages of top-
down and bottom-up concepts. It provided emphasis in a key area many felt
had been neglected by other methodologiesA deliberate iterative risk
analysis, particularly suited to large-scale comple% systems.
The basic principles areA!"#
)ocus is on risk assessment and on minimi(ing proect risk by breaking a
proect into smaller segments and providing more ease-of-change during the
development process, as well as providing the opportunity to evaluate risks
and weigh consideration of proect continuation throughout the life cycle.
',ach cycle involves a progression through the same se-uence of steps, for
each part of the product and for each of its levels of elaboration, from an
overall concept-of-operation document down to the coding of each individual
program.'!E#
,ach trip around the spiral traverses four basic -uadrantsA (") determine
obectives, alternatives, and constraints of the iterationJ (0) evaluate
alternativesJ Identify and resolve risksJ (G) develop and verify deliverables
from the iterationJ and (=) plan the ne%t iteration.!<#
Fegin each cycle with an identifcation of stakeholders and their 'win
conditions', and end each cycle with review and commitment.!2#
Dapid application development!edit#
Dapid *pplication 8evelopment (D*8) 9odel
Dapid application development (D*8) is a software development
methodology, which favors iterative development and the rapid construction
of prototypes instead of large amounts of up-front planning. The 'planning' of
software developed using D*8 is interleaved with writing the software itself.
The lack of e%tensive pre-planning generally allows software to be written
much faster, and makes it easier to change re-uirements.
The rapid development process starts with the development of preliminary
data models and business process models using structured techni-ues. In the
ne%t stage, re-uirements are verifed using prototyping, eventually to refne
the data and process models. These stages are repeated iterativelyJ further
development results in 'a combined business re-uirements and technical
design statement to be used for constructing new systems'.!C#
The term was frst used to describe a software development process
introduced by Kames 9artin in ";;". *ccording to 3hitten (011G), it is a
merger of various structured techni-ues, especially data-driven Information
,ngineering, with prototyping techni-ues to accelerate software systems
development.!C#
The basic principles of rapid application development areA!"#
Ley obective is for fast development and delivery of a high -uality system at
a relatively low investment cost.
*ttempts to reduce inherent proect risk by breaking a proect into smaller
segments and providing more ease-of-change during the development
process.
*ims to produce high -uality systems -uickly, primarily via iterative
5rototyping (at any stage of development), active user involvement, and
computeri(ed development tools. These tools may include 6raphical .ser
Interface (6.I) builders, $omputer *ided &oftware ,ngineering ($*&,) tools,
8atabase 9anagement &ystems (8F9&), fourth-generation programming
languages, code generators, and obect-oriented techni-ues.
Ley emphasis is on fulflling the business need, while technological or
engineering e%cellence is of lesser importance.
5roect control involves prioriti(ing development and defning delivery
deadlines or Mtimebo%esN. If the proect starts to slip, emphasis is on reducing
re-uirements to ft the timebo%, not in increasing the deadline.
6enerally includes oint application design (K*8), where users are intensely
involved in system design, via consensus building in either structured
workshops, or electronically facilitated interaction.
*ctive user involvement is imperative.
Iteratively produces production software, as opposed to a throwaway
prototype.
5roduces documentation necessary to facilitate future development and
maintenance.
&tandard systems analysis and design methods can be ftted into this
framework.
*gile development!edit#
9ain articleA *gile software development
'*gile software development' refers to a group of software development
methodologies based on iterative development, where re-uirements and
solutions evolve via collaboration between self-organi(ing cross-functional
teams. The term was coined in the year 011" when the *gile 9anifesto was
formulated.
*gile software development uses iterative development as a basis but
advocates a lighter and more people-centric viewpoint than traditional
approaches. *gile processes fundamentally incorporate iteration and the
continuous feedback that it provides to successively refne and deliver a
software system.
There are many variations of agile processesA
8ynamic systems development method (8&89)
Lanban
&crum
$ode and f%!edit#
9ain articleA $owboy coding
'$ode and f%' development is not so much a deliberate strategy as an
artifact of naOvetP and schedule pressure on software developers.!;# 3ithout
much of a design in the way, programmers immediately begin producing
code. *t some point, testing begins (often late in the development cycle), and
the unavoidable bugs must then be f%ed before the product can be shipped.
5rogramming without a planned-out design is also known as cowboy coding.
>ightweight methodologies!edit#
9ain articleA >ightweight methodology
* lightweight methodology has a small number of rules. &ome of these
methodologies are also considered 'agile'.
*daptive &oftware 8evelopment by Kim 7ighsmith, described in his ";;; book
*daptive &oftware 8evelopment
$rystal $lear family of methodologies with *listair $ockburn,
,%treme 5rogramming (Q5), promoted by people such as Lent Feck and
9artin )owler. In e%treme programming##, the phases are carried out in
e%tremely small (or 'continuous') steps compared to the older, 'batch'
processes. The (intentionally incomplete) frst pass through the steps might
take a day or a week, rather than the months or years of each complete step
in the 3aterfall model. )irst, one writes automated tests, to provide concrete
goals for development. Be%t is coding (by programmers working in pairs, a
techni-ue known as 'pair programming'), which is complete when all the
tests pass, and the programmers can:t think of any more tests that are
needed. 8esign and architecture emerge from refactoring, and come after
coding. The same people who do the coding do design. (+nly the last feature
R merging design and code R is common to all the other agile processes.)
The incomplete but functional system is deployed or demonstrated for (some
subset of) the users (at least one of which is on the development team). *t
this point, the practitioners start again on writing tests for the ne%t most
important part of the system.!"1#
)eature 8riven 8evelopment ()88) developed (";;;) by Ke4 8e >uca and
5eter $oad
I$+BIQ - .9>-based obect modeling with use cases, a lightweight precursor
to the Dational .nifed 5rocess
+ther!edit#
+ther high-level software proect methodologies includeA
$haos model - The main rule is always resolve the most important issue frst.
Incremental funding methodology - an iterative approach
&tructured systems analysis and design method - a specifc version of
waterfall
&low programming, as part of the larger &low 9ovement, emphasi(es careful
and gradual work without (or minimal) time pressures. &low programming
aims to avoid bugs and overly -uick release schedules.
I-9odel (software development) - an e%tension of the waterfall model
.nifed 5rocess (.5) is an iterative software development methodology
framework, based on .nifed 9odeling >anguage (.9>). .5 organi(es the
development of software into four phases, each consisting of one or more
e%ecutable iterations of the software at that stage of developmentA inception,
elaboration, construction, and guidelines. 9any tools and products e%ist to
facilitate .5 implementation. +ne of the more popular versions of .5 is the
Dational .nifed 5rocess (D.5).
5rocess meta-models!edit#
&ome 'process models' are abstract descriptions for evaluating, comparing,
and improving the specifc process adopted by an organi(ation.
I&+/I,$ "0012 is the international standard describing the method to select,
implement, and monitor the life cycle for software.
The $apability 9aturity 9odel Integration ($99I) is one of the leading models
and based on best practice. Independent assessments grade organi(ations on
how well they follow their defned processes, not on the -uality of those
processes or the software produced. $99I has replaced $99.
I&+ ;111 describes standards for a formally organi(ed process to
manufacture a product and the methods of managing and monitoring
progress. *lthough the standard was originally created for the manufacturing
sector, I&+ ;111 standards have been applied to software development as
well. >ike $99I, certifcation with I&+ ;111 does not guarantee the -uality of
the end result, only that formali(ed business processes have been followed.
I&+/I,$ "EE1= Information technology R 5rocess assessment also known as
&oftware 5rocess Improvement $apability 8etermination (&5I$,), is a
'framework for the assessment of software processes'. This standard is
aimed at setting out a clear model for process comparison. &5I$, is used
much like $99I. It models processes to manage, control, guide and monitor
software development. This model is then used to measure what a
development organi(ation or proect team actually does during software
development. This information is analy(ed to identify weaknesses and drive
improvement. It also identifes strengths that can be continued or integrated
into common practice for that organi(ation or team.
&oft systems methodology - a general method for improving management
processes
9ethod engineering - a general method for improving information system
processes
)ormal methods!edit#
)ormal methods are mathematical approaches to solving software (and
hardware) problems at the re-uirements, specifcation, and design levels.
)ormal methods are most likely to be applied to safety-critical or security-
critical software and systems, such as avionics software. &oftware safety
assurance standards, such as 8+-"2CF, 8+-"2C$, and $ommon $riteria
demand formal methods at the highest levels of categori(ation.
)or se-uential software, e%amples of formal methods include the F-9ethod,
the specifcation languages used in automated theorem proving, D*I&,, and
the S notation.
)ormali(ation of software development is creeping in, in other places, with
the application of +bect $onstraint >anguage (and speciali(ations such as
Kava 9odeling >anguage) and especially with model-driven architecture
allowing e%ecution of designs, if not specifcations.
)or concurrent software and systems, 5etri nets, process algebra, and fnite
state machines (which are based on automata theory - see also virtual fnite
state machine or event driven fnite state machine) allow e%ecutable software
specifcation and can be used to build up and validate application behavior.
*nother emerging trend in software development is to write a specifcation in
some form of logicRusually a variation of frst-order logic ()+>)Rand then to
directly e%ecute the logic as though it were a program. The +3> language,
based on 8escription >ogic (8>), is an e%ample. There is also work on
mapping some version of ,nglish (or another natural language) automatically
to and from logic, and e%ecuting the logic directly. ,%amples are *ttempto
$ontrolled ,nglish, and Internet Fusiness >ogic, which do not seek to control
the vocabulary or synta%. * feature of systems that support bidirectional
,nglish-logic mapping and direct e%ecution of the logic is that they can be
made to e%plain their results, in ,nglish, at the business or scientifc level.

Vous aimerez peut-être aussi