ĝi konas kiel programaro[1] al la equipamiento logika aŭ logika apogo de cifereca komputilo; ĝi komprenas la aron de la necesaj logikaj komponantoj kiu faras ebla la realigo de specifaj taskoj, en contraposición al la fizikaj komponantoj de la sistemo, nomita aparataro.
Tiaj logikaj komponantoj inkludas, inter multaj aliaj, komputikaj aplikoj —kiel la tekstoprilaborilo, kiu permesas al la uzanto realigi ĉiujn taskojn concernientes al la eldono de tekstoj— aŭ la programaro de sistemo —kiel la mastruma sistemo, kiu, esence, ĝi permesas al la resto de la programoj funkcii adekvate, havigante la interago kun la fizikaj komponantoj kaj la resto de la aplikoj, havigante ankaŭ interfaco por la uzanto—.
Enhavo |
Programaro (prononco AFI:[soft'ɣware])[2] estas devena vorto de la anglo (laŭvorte: mildaj aŭ molaj partoj), kiu en la hispana ne posedas taŭgan tradukadon al la kunteksto, por kiu uzas ŝin al li asiduamente sen traduki kaj tiel estis akceptita de la Reala Hispana Akademio (RAE).[3] Kvankam ne estas strikte lin sama, ĝi kutimas anstataŭi por esprimoj tiaj kiel programoj (komputikaj) aŭ aplikoj (komputikaj).[4]
Programaro estas kion nomas produkto en Inĝenierio de Programaro.[5]
Probable la plej formala difino de programaro estas la sekva:
Konsiderante ĉi tiu difino, la koncepto de programaro iras pli tie de la programoj de cómputo en liaj malsamaj statoj: kodo fonto, binara aŭ ejecutable; ankaŭ lia dokumentado, datumoj al procesi kaj informo de uzanto formas parton de la programaro: tio estas, ĝi ĉirkaŭprenas ĉiu lin intangible, ĉiu lin "ne fizikisto" rilatigita.
La termino «programaro» estis uzita por la unua fojo en ĉi tiu senso por John W. Tukey en 1957. En la sciencoj de la komputado kaj la inĝenierio de programaro, la programaro estas la tuta informo procesita de la komputikaj sistemoj: programoj kaj datumoj. La koncepto de legi malsamajn sekvencojn de instrukcioj de la memoro de mekanismo por kontroli la ŝtonojn estis enkondukita de Babilas Babbage kiel ĝi dividas de lia maŝino diferencial. La teorio kiu formas la bazon de la plej granda parto de la moderna programaro estis proponita de unua fojo por Alan Turing en lia provo de 1936, "La numeroj computables", kun apliko al la problemo de decido.
Se bone ĉi tiu distingo estas, en iu modo, arbitra, kaj kelkfoje malklara, al la oportunaj finoj povas klasifiki al la programaro en tri grandaj tipoj:
ĝi difinas kiel Procezo al la ordema aro de paŝoj al sekvi por alveni al la solvo de problemo aŭ obtención de produkto, en ĉi tiu aparta kazo, por sukcesi la obtención de produkto programaro kiu solvas problemon.
La procezo de kreo de programaro povas alveni al esti tre kompleksa, dependante de lia portas, karakterizaj kaj criticidad de la sama. Ekzemple la kreo de mastruma sistemo estas tasko kiu postulas projekton, demarŝo, multnombraj rimedoj kaj ĉiu la teamo disciplinado de laboro. En la alia ekstrema, se ĝi klopodas simplan programon (ekzemple, la rezolucio de ekvacio de dua ordo), ĉi tiu eblas realigita de sola programador (inkluzive ŝatanto) facile. Estas tuj kiam ili kutime dividas en tri kategorioj laŭ lia grandeco (linioj de kodo) aŭ kosto: de Malgranda, Meza kaj Granda portas. Ekzistas pluraj metodikoj por estimi ĝin, unu el la plej popularaj estas la sistemo COCOMO kiu havigas metodojn kaj programaron (programo) kiu kalkulas kaj ĝi havigas korinklinon de ĉiuj kostoj de produktado en projekto programaro" (rilato horoj/viro, mona kosto, kvanto de linioj fonto konsentite al uzita lingvo, ktp.).
Konsiderante la de granda portas, estas necese realigi tantas kaj tiel kompleksaj taskoj, tiel teknikaj, de gerenciamiento, forta demarŝo kaj diversaj analizo (inter aliaj) kiu ĉiu la inĝenierio faras mankon por lia studo kaj realigo: estas la Inĝenierio de Programaro.
Dum en la de meza portas, malgrandaj teamoj de laboro (inkluzive avezado analizisto-programador solitario) povas realigi la taskon. Kvankam, ĉiam en kazoj de meza kaj granda portas (kaj kelkfoje ankaŭ en iuj de malgranda portas, laŭ lia complejidad), ili devas sekvi iujn etapojn kiuj estas necesaj por la konstruo de la programaro. Tiaj etapoj, se bone devas ekzisti, estas malrigidaj en lia formo de apliko, konsentite al la metodiko aŭ Procezo de Disvolviĝo elektita kaj uzita de la teamo de disvolviĝo aŭ por la analizisto-programador solitario (se estus la kazo).
La "procezoj de disvolviĝo de programaro" posedas regulojn preestablecidas, kaj devas esti aplikitaj en la kreo de la programaro de meza kaj granda portas, pro tio ke en kontraŭa kazo lin pli sekura estas kiu la projekto aŭ ĝi ne sukcesas fini aŭ ĝi finas sen plenumi la objektivojn antaŭviditaj, kaj kun vario de neakcepteblaj misfunkciadoj (malsukcesas, en malmultaj vortoj). Inter tiaj "procezoj" ilin estas lertaj aŭ malpezaj (ekzemplo XP), pezaj kaj malrapidaj (ekzemplo RUP) kaj interaj variantoj; kaj ili kutime aplikas konsentite al la tipo, portu kaj tipología de la programaro al disvolvi, al kriterio de la ĉefo (se lin estas) de la teamo de disvolviĝo. Iuj de tiuj procezoj estas Extreme Programming (XP), Rational Unified Process (RUP), Feature Driven Development (FDD), ktp.
Ĉiu estu la "uzita" kaj aplikita procezo al la disvolviĝo de la programaro (RUP, FDD, ktp), kaj preskaŭ sendepende de li, ĝi ĉiam devas apliki Modelon de Ciklo de Vivo".[7]
ĝi estimas ke, de la tuta de projektoj grandaj programaro entreprenitaj, ĉirkaŭ 28% malsukcesas, ĉirkaŭ 46% falas en severajn modifojn kiu lin prokrastas kaj ĉirkaŭ 26% estas plene prosperaj. [8]
Kiam projekto malsukcesas, malofta fojo estas pro teknikaj faŭltoj, la ĉefa kaŭzas de misfunkciadoj kaj fiaskoj estas la manko de apliko de bona metodiko aŭ procezo de disvolviĝo. Inter aliaj, forta tendenco, de antaŭ malmultaj jardekoj, ĝi estas plibonigi la metodikojn aŭ procezoj de disvolviĝo, aŭ krei novaj kaj concientizar al la profesiaj en lia taŭga uzo. Kutime la specialistoj en la studo kaj disvolviĝo de ĉi tiuj areoj (metodikoj) kaj vi agordas (tiaj kiel modeloj kaj ĝis la sama demarŝo de la projektoj) estas la Inĝenieroj en Programaro, estas lia orientiĝo. La specialistoj en ajna alia areo de komputika disvolviĝo (analizisto, programador, Lic. En Komputika, Inĝeniero en Komputika, Inĝeniero de Sistemoj, ktp.) Kutime aplikas liajn konojn specialigitaj sed uzante modeloj, paradigmas kaj procezoj jam ellaboritaj.
Estas komuna por la disvolviĝo de programaro de meza portu ke la homaj teamoj implikitaj aplikas liajn proprajn metodikojn, kutime híbrido de la antaŭaj procezoj kaj kelkfoje kun propraj kriterioj.
La procezo de disvolviĝo povas impliki multnombraj kaj diversaj taskoj[7] , de lin administrativo, pasante por lin teknika kaj ĝis la demarŝo kaj la gerenciamiento. Sed preskaŭ strikte ĉiam plenumas iujn minimumajn etapojn; kiuj povas resumi kiel ĝi sekvas:
En la antaŭaj etapoj povas varii iomete liaj nomoj, aŭ esti pli sumaj, aŭ kontraŭe, esti pli rafinitaj; ekzemple indiki kiel sola fazo (al la finoj dokumenta filmoj kaj interpretativos) de "Analizo kaj Dezajno"; aŭ indiki kiel "Implementación" kio estas koncerna kiel "Kodigo"; sed en rigoreco, ĉiuj ekzistas kaj ili inkludas, esence, la samaj specifaj taskoj.
En la alineo 4 de la ĉeestanta artikolo tostas plej grandajn detalojn de ĉiu de la printitaj etapoj.
Por ĉiu de la fazoj aŭ printitaj etapoj en la ítem antaŭa, ekzistas sub-etapoj (aŭ taskoj). La modelo de procezo aŭ modelo de ciklo de vivo uzita por la disvolviĝo difinas la ordon por la taskoj aŭ aktivecoj implikitaj[7] ankaŭ difinas la kunordigon inter ili, ligo kaj realimentación inter la menciitaj etapoj. Inter la plej konitaj povas mencii: modelo en akvofalo aŭ secuencial, modelo espiral, modelo iterativo incremental. De la antedichos estas siavice iuj variantoj aŭ alternativaj, pli aŭ malpli allogaj laŭ estas la apliko postulita kaj liaj kondiĉoj.[8]
Oriento, kvankam estas pli komune konita kiel modelo en akvofalo estas ankaŭ nomita "klasika modelo", "tradicia modelo" aŭ "modelo lineal secuencial".
La modelo en pura akvofalo malfacile uzas tia kiu, ĉar ĉi tio implicus antaŭa kaj absoluta kono de la kondiĉoj, la ne volatilidad de la samaj (aŭ rigideco) kaj etapoj subsiguientes liberaj de eraroj; tio nur eblus aplicable al malabundaj kaj malgrandaj disvolviĝoj de sistemoj. En ĉi tiuj cirkonstancoj, la paŝo de etapo al alia de la menciitaj estus sen reveno, ekzemple pasi de la Dezajno al la Kodigo implicus ĝustan dezajnon kaj sen eraroj nek probabla modifo aŭ evoluado: "kodu lin desegnita ke ne estos tute ne variantoj nek eraroj". Ĉi tio estas utópico; pro tio ke intrínsecamente la programaro estas de karaktero evolutivo, cambiante kaj malfacile libera de eraroj, tiel dum lia disvolviĝo kiel dum lia vivo operativa.[7]
Iu ŝanĝo dum la ekzekuto de ĉiu de la etapoj en ĉi tiu modelo secuencial implicus rekomenci de la komenco la tuta kompleta ciklo, kiu redundaría en altaj kostoj de tempo kaj disvolviĝo. La figuro 2 specimeno ebla skemo de la modelo en demando.[7]
Tamen, la modelo akvofalo en iuj de liaj variantoj estas unu el la nuntempe pli uzitaj[10] , por lia efikeco kaj simpleco, pli ol nenio en programaro de malgranda kaj iuj de meza portas; sed neniam (aŭ tre malofta fojo) uzas lin al li en lia pura formo, kiel ĝi diris antaŭe. En loko de tio, ĝi ĉiam produktas iu realimentación inter etapoj, kiu ne estas tute predecible nek rigida; ĉi tio donas ŝancon al la disvolviĝo de produktoj programaro en kiuj estas iuj incertezas, ŝanĝoj aŭ evoluadoj dum la ciklo de vivo. Tiel ekzemple, fojo kaptitaj (elicitados) kaj specifitaj la kondiĉoj (unua etapo) povas pasi al la dezajno de la sistemo, sed dum ĉi tiu lasta fazo lin pli probabla estas kiu devas realigi ĝustigas en la kondiĉoj (kvankam estas minimumaj), jam estas por faŭltoj detektitaj, ambigüedades aŭ bone por kiu la propraj kondiĉoj ŝanĝis aŭ evoluita; kun kiu devas redoni al la unua aŭ antaŭa etapo, fari la adekvataj reajustes kaj poste daŭrigi denove kun la dezajno; ĉi tio lasta konas kiel realimentación. Lin normala en la modelo akvofalo estos tiam la apliko de la sama kun liaj etapoj realimentadas de iu formo, permesante posteniri de al la antaŭa (kaj inkluzive povi salti al pluraj antaŭaj) se estas postulita.
De ĉi tiu maniero akiras modelon akvofalo realimentado", kiu eblu esquematizado kiel ĝi ilustras al li la figuron 3.
Lin koncerna estas, al grandaj trajtoj, la formo kaj uzo de ĉi tiu modelo, unu el la plej uzitaj kaj popularaj.[7] La modelo Akvofalo Realimentado rezultas tre alloga, ĝis idealo, se la projekto prezentas alta rigidéz (malmultaj aŭ neniu ŝanĝo, ne evolutivo), la kondiĉoj estas tre klaraj kaj estas ĝuste specifitaj.[10]
Estas pli similaj variantoj al la modelo: mi rafinas de etapoj (pli etapoj, plej malgrandaj kaj pli specifaj) aŭ inkluzive montri malpli etapoj de la indikitaj, kvankam en tia kazo la faltante estos ene de iu alia. La ordo de tiuj fazoj indikitaj en la ítem antaŭa estas la logika kaj taŭga, sed avertu , kiel ĝi diris, kiu kutime estos realimentación al malantaŭen.
La modelo lineal aŭ en Akvofalo estas la paradigma pli malnova kaj vaste uzita, tamen la kritikoj lin (vidi malavantaĝojn) metis en dubon lia efikeco. Malgraŭ ĉiu havas tre gravan lokon en la Inĝenierio de programaro kaj daŭre estas la plej uzita; kaj ĉiam estas pli bona kiu enfokusigu al la hazardo.[10]
Malavantaĝoj de la modelo akvofalo:[7]
La programaro evoluas kun la tempo. La kondiĉoj de la uzanto kaj de la produkto kutimas ŝanĝi laŭigu disvolvas la sama. La datoj de merkato kaj la konkurado faras ke ne eblu atendi al meti en la merkato absolute kompleta produkto, tial ĝi devas enkonduki limigitan funkcian version de iu formo por malpezigi la konkurajn premojn.
En tiuj aŭ aliaj similaj situacioj la desarrolladores bezonas modelojn de progreso kiu estas desegnitaj por akomodi al evoluado temporal aŭ progresiva, kie la centraj kondiĉoj estas konitaj de antemano, kvankam ne estas bone difinitaj al nivelo detalo.
En la modelo Akvofalo kaj Akvofalo Realimentado ne konsideras la naturon evolutiva de la programaro, ĝi proponas kiel statika kun kondiĉoj bone konitaj kaj difinitaj de la komenco.[7]
La evolutivos estas modeloj iterativos, ili permesas disvolvi versiojn ĉiufoje pli kompletaj kaj kompleksaj, ĝis alveni al la objektiva fino dezirita; inkluzive evolui pli tie, dum la fazo de operacio.
La modeloj “Iterativo Incremental” kaj “Espiral” (inter aliaj) estas du de la plej konitaj kaj uzitaj de la tipo evolutivo.[10]
En ĝeneralaj terminoj, ni povas distingi, en la figuro 4, la ĝeneralaj paŝoj kiujn sekvas la procezo de disvolviĝo de produkto programaro. En la modelo de ciklo de vivo selektita, ili identigas klare koncernaj paŝoj. La Priskribo de la Sistemo estas esenca por specifi kaj fari la malsamajn pliigojn ĝis alveni al la suma Produkto kaj fino. La aktivecoj concurrentes (Especificación, Disvolviĝo kaj Validación) sintezas la detalan disvolviĝon de la pliigoj, kiu faros poste.
La diagramo 4 nin montras en formo tre esquemática, la funkciado de ciklo iterativo incremental, kiu permesas la transdonon de versioj parciales al mezuro kiu iras konstruante la produkto fino.[7] Tio estas, al mezuro kiu ĉiu pliigo difinita alvenas al lian etapon de operacio kaj bontenado. Ĉiu versio elsendita korpigas al la antaŭaj pliigoj la funcionalidades kaj kondiĉoj kiuj estis analizitaj kiel necesaj.
La incremental estas modelo de tipo evolutivo kiu estas bazita en pluraj cikloj Akvofalo realimentados aplikitaj ree, kun filozofio iterativa.[10] En la figuro 5 montras rafinas de la antaŭa diagramo, sub skemo temporal, por akiri fine la skemo de la Modelo de ciklo de vivo Iterativo Incremental, kun liaj aktivecoj genéricas asociitaj. Ĝi tie observas klare ĉiu ciklo akvofalo kiu estas aplikita por la obtención de pliigo; ĉi tiuj lastaj iras integrante por akiri la produkton kompleta fino. Ĉiu pliigo estas ciklo Akvofalo Realimentado, kvankam, por simpleco, en la figuro 5 montras kiel secuencial pura.
ĝi observas ke ekzistas aktivecoj de disvolviĝo (por ĉiu pliigo) kiu estas realigitaj en paralela aŭ concurrentemente, tiel ekzemple, en la figuro, dum ĝi realigas la dezajnon detalo de la unua pliigo jam realigas en analizo de la dua. La figuro 5 estas nur esquemática, pliigo ne nepre komencos dum la fazo de dezajno de la antaŭa, ĝi eblas posta (inkluzive antaŭe), en ajna tempo de la antaŭa etapo. Ĉiu pliigo finas kun la aktiveco de “Operacio kaj Bontenado” (indikita "Operacio" en la figuro), kiu estas kie produktas la transdonon de la produkto parcial al la kliento. La momento de komenco de ĉiu pliigo estas dependa de pluraj faktoroj: tipo de sistemo; sendependeco aŭ dependeco inter pliigoj (du de ili plene sendependaj eblas facile komencitaj al la sama tempo se ĝi disponas de sufiĉa dungitaro); kapablo kaj kvanto de profesiaj implikitaj en la disvolviĝo; ktp.
Sub ĉi tiu modelo transdonas programaron “por funkciaj partoj pli malgrandaj”, sed reutilizables, nomitaj pliigoj. Ĝenerale ĉiu pliigo konstruas sur tiu kiu jam estis transdonita.[7]
Kiel ĝi montras en la figuro 5, ili aplikas sekvencojn Akvofalo en gradigita formo, dum ĝi progresas la tempon kalendaro. Ĉiu sekvenco lineal aŭ Akvofalo produktas pliigon kaj ofte la unua pliigo estas baza sistemo, kun multaj suplementaj funkcioj (konitaj aŭ ne) sen transdoni.
La kliento uzas komence tiu baza sistemo intertanto, la rezulto de lia uzo kaj evaluación povas alporti al la plano por la disvolviĝo de la/la sekvaj pliigoj (aŭ versioj). Krome ankaŭ alportas al tiu plano aliaj faktoroj, kiel lin estas la priorización (plej granda aŭ plej malgranda urĝaĵo en la neceso de ĉiu pliigo) kaj la dependeco inter pliigoj (aŭ sendependeco).
Poste de ĉiu integriĝo transdonas produkton kun plej granda funcionalidad kiu la antaŭa. La procezo ripetas ĝis atingi la programaron kompleta fino.
Estante iterativo, kun la modelo incremental transdonas produkton parcial sed tute operacional en ĉiu pliigo, kaj ne parto kiu estu uzita por reajustar la asignoj (kvazaŭ ĝi okazas en la modelo de konstruo de prototipoj).[10]
La enfokusigu incremental rezultas tre utila kun malalta dotación de dungitaro por la disvolviĝo; ankaŭ se ne estas disponebla datas limon de la projekto por kion transdonas nekompletaj versioj sed kiu havigas al la uzanto funcionalidad baza (kaj ĉiufoje plej granda). Ankaŭ estas utila modelo al la finoj de evaluación.
Noto: ĝi Eblas konsiderita kaj utila, en ajna momento aŭ pliigo korpigi temporalmente la paradigma MCP kiel komplemento, havante tiel mixtura de modeloj kiuj plibonigas la skemon kaj ĝenerala disvolviĝo.
Ekzemplo:
Kiel ĝi diris, la Iterativo Incremental estas modelo de la tipo evolutivo, tio estas ili kie permesas kaj ili atendas probablajn ŝanĝojn en la kondiĉoj en tempo de disvolviĝo; ĝi akceptas iun randon por ke la programaro povu evolui. Aplicable kiam la kondiĉoj estas modere bone konitaj sed ne estas tute statikaj kaj difinitaj, demando tiu kiu se estas nemalhavebla por povi uzi modelon Akvofalo.
La modelo estas aconsejable por la disvolviĝo de programaro en kiu observas, en lia komenca etapo de analizo, kiu posedas areojn sufiĉe bone difinitaj al kovri, kun sufiĉa sendependeco kiel por esti disvolvitaj en pluaj etapoj. Tiaj areoj al kovri kutimas havi malsamajn gradojn de urĝas por kiu la samaj devas priorizar en antaŭa analizo, tio estas, difini kiu estos la unua, la dua, kaj tiel sinsekve; ĉi tio konas kiel “difino de la pliigoj” kun bazo en priorización. Ili povas ne ekzisti funkciaj prioritatoj fare de la kliento, sed la desarrollador devas fiksi ilin de ĉiuj modoj kaj kun iu kriterio, pro tio ke bazante en ili disvolvos kaj ili transdonos la malsamajn pliigojn.
La fakto kiun ekzistas funkciaj pliigoj de la programaro portas tuj al pensi en skemo de disvolviĝo modular, sekve ĉi tiu modelo havigas tia paradigma de dezajno.
En resumo, modelo incremental portas al pensi en disvolviĝo modular, kun transdonoj parciales de la produkto programaro nomitaj “pliigoj” de la sistemo, kiu estas elektitaj laŭ prioritatoj predefinidas de iu modo. La modelo permesas implementación kun pluaj rafinitecoj (pligrandigo aŭ pliboniĝo). Kun ĉiu pliigo aldonas nova funcionalidad aŭ ili kovras novajn kondiĉojn aŭ ĝi bone plibonigas la version antaŭe implementada de la produkto programaro.
Ĉi tiu modelo tostas iu flexibilidad por ke dum la disvolviĝo inkludas ŝanĝojn en la kondiĉoj fare de la uzanto, ŝanĝo de kondiĉoj proponita kaj aprobita povas analizi kaj implementarse kiel nova pliigo aŭ, eventuale, ĝi povos konstitui pliboniĝon/adecuación de oni jam planita. Kvankam se ĝi produktas ŝanĝon de kondiĉoj fare de la kliento kiu tuŝu antaŭajn pliigojn jam finitaj (detección/malfrua aliĝo) devas taksi la factibilidad kaj realigi interkonsenton kun la kliento, pro tio ke ĝi povas impactar forte en la kostoj.
La selektado de ĉi tiu modelo permesas realigi fruajn funkciajn transdonojn al la kliento (kiu estas beneficioso tiel por li kiel por la grupo de disvolviĝo). priorizan la transdonoj de tiuj moduloj aŭ pliigoj kiujn ŝprucas la neceso operativa de fari ĝin, ekzemple por antaŭaj ŝarĝoj de informo, nemalhavebla por la sekvaj pliigoj.[10]
La modelo iterativo incremental ne devigas al specifi kun precizeco kaj detalo absolute ĉiu kion la sistemo devas fari, (kaj kiel), antaŭ esti konstruita (kiel la kazo de la akvofalo, kun kondiĉoj frostigitaj). Ĝi nur faras en la evoluanta pliigo. Ĉi tio revenas pli regebla la procezo kaj ĝi reduktas la trafon en la kostoj. Ĉi tio estas tiel, ĉar en kazo de ŝanĝi aŭ refari la kondiĉojn, ĝi nur tuŝas parton de la sistemo. Kvankam, logike, ĉi tiu situacio pligravigas se ĝi prezentas en stato antaŭita, tio estas en la lastaj pliigoj. En definitiva, la modelo havigas la aliĝon de novaj kondiĉoj dum la disvolviĝo.
Kun paradigma incremental reduktas la tempon de komenca disvolviĝo, pro tio ke implementa funcionalidad parcial. Ĝi ankaŭ havigas trafon ventajoso fronte al la kliento, kiu estas la frua transdono de partoj operativas de la programaro.
La modelo havigas ĉiujn avantaĝojn de la modelo en akvofalo realimentado, reduktante liaj malavantaĝoj nur al la medio de ĉiu pliigo.
La modelo incremental ne estas rekomendinda por kazoj de sistemoj de reala tempo, de alta nivelo de sekureco, de procesorado distribuita, aŭ de alta indico de riskoj.
La modelo espiral estis proponita komence de Barry Boehm. Estas modelo evolutivo kiu konjugacias la naturon iterativa de la modelo MCP kun la kontrolitaj kaj sistemaj aspektoj de la Modelo Akvofalo. Ĝi havigas potencial por rapida disvolviĝo de versioj incrementales. En la modelo Espiral la programaro konstruas en serio de versioj incrementales. En la unuaj iteraciones la versio incremental eblus modelon en papero aŭ bone prototipo. En la lastaj iteraciones produktas versiojn ĉiufoje pli kompletaj de la sistemo desegnita.[7] [10]
La modelo dividas en numero de Aktivecoj de kadro de laboro, nomitaj "regionoj de taskoj". Ĝenerale ekzistas inter tri kaj ses regionoj de taskoj (estas variantoj de la modelo). En la figuro 6 montras la skemon de Modelo Espiral kun 6 regionoj. En ĉi tiu kazo klarigas varianton de la originala modelo de Boehm, elmontrita en lia klopodita 1988; en 1998 elmontris pli freŝan traktaton.
La regionoj difinitaj en la modelo de la figuro estas:
La aktivecoj formulitaj por la kadro de laboro estas ĝeneralaj kaj ili aplikas al ajna projekto, granda, meza aŭ malgranda, kompleksa aŭ ne. La regionoj kiuj difinas tiujn aktivecojn komprenas aron de taskoj" de la laboro: tiu aro jes devas adapti al la karakterizaĵoj de la projekto en aparta al entrepreni. Rimarku kiu lin printita en la ítems de 1 al 6 estas aroj de taskoj, iuj de la ili kutime dependas de la projekto aŭ disvolviĝo en se.
Malgrandaj projektoj postulas malaltan kvanton de taskoj kaj ankaŭ de formalidad. En plej grandaj projektoj aŭ kritikistoj ĉiu regiono de taskoj enhavas laborojn de pli alta nivelo de formalidad. En ajna kazo aplikas aktivecojn de protekto (ekzemple, demarŝo de agordo de la programaro, garantio de kvalito, ktp.).
Al la komenco de la ciklo, aŭ procezo evolutivo, la teamo de inĝenierio ĝiras ĉirkaŭ la espiral (metafóricamente parolante) komencante por la centro (markita kun ๑ en la figuro 6) kaj en la senso indikita; la unua cirkvito de la espiral povas produkti la disvolviĝon de especificación de la produkto; la sekvaj paŝoj povus generi prototipon kaj iom post iom versioj pli kompleksaj de la programaro.
Ĉiu paŝo por la regiono de planizado provokas ĝustigas en la plano de la projekto; la kosto kaj planizado realimentan en funkcio de la evaluación de la kliento. La peranto de projektoj devas ĝustigi la numeron de iteraciones postulitaj por kompletigi la disvolviĝon.
La modelo espiral povas iri adaptante kaj apliki laŭlonge de la tuta Ciklo de vivo de la programaro (en la klasika modelo, aŭ akvofalo, la procezo finas al la transdono de la programaro).
Alternativa vidado de la modelo povas observi ekzamenante la "akso de punkto de eniro de projektoj". Ĉiu de la circulitos (๏) fiksitaj laŭlonge de la akso reprezentas punktojn de ekkuro de la malsamaj projektoj (rilatigitaj); al scii:
Kiam la espiral karakterizas de ĉi tiu formo, estas operativa ĝis la programaro retiriĝas, eventuale povas esti senaga (la procezo), sed kiam produktas ŝanĝon la procezo eltiras denove en la punkto de eniro proprigita (ekzemple, en "Pliboniĝo de la Produkto").
La modelo espiral donas enfokusigas realisma, kiu evoluas egala kiu la programaro; ĝi adaptas tre bone por grandskala disvolviĝoj.
La Espiral uzas la MCP por redukti riskojn kaj ĝi permesas apliki ĝin en ajna etapo de la evoluado. Ĝi subtenas la enfokusigas klasika (akvofalo) sed korpigas kadron de laboro iterativo kiu reflektas pli bona la realaĵo.
Ĉi tiu modelo postulas konsideri teknikajn riskojn en ĉiuj etapoj de la projekto; aplikita adekvate devas redukti ilin antaŭ ol estas vera problemo.
La Modelo evolutivo kiel la Espiral estas aparte kapabla por la disvolviĝo de Mastrumaj sistemoj (kompleksaj); ankaŭ en sistemoj de altaj riskoj aŭ kritikistoj (Ej. Navegadores kaj controladores aeronáuticos) kaj en ĉiuj tiuj ke estu necesa forta demarŝo de la projekto kaj liaj riskoj, teknikistoj aŭ de demarŝo.
Gravaj malavantaĝoj:
Ĉi tiu modelo ne uzis tiel, kiel la Akvofalo (Incremental) aŭ MCP, tial ĝi ne havas bone mezurita lia efikeco, estas paradigma relative nova kaj malfacila de implementar kaj kontroli.
Interesa varianto de la Modelo Espiral antaŭe vidita (Fig. 6) Estas la "Modelo espiral Win-Win"[8] (Barry Boehm). La Modelo Espiral antaŭa (klasika) sugestas la konekton kun la kliento por fiksi la kondiĉojn, kiu simple demandas al la kliento kion ĝi bezonas kaj li havigas la informon por daŭrigi; sed ĉi tio estas en ideala kunteksto kiun malofta fojo okazas. Kutime kliento kaj desarrollador eniras en intertraktadon, ĝi negocas koston fronte al funcionalidad, rendimento, kvalito, ktp.
"Estas tuj kiam la obtención de kondiĉoj postulas intertraktadon, kiu sukcesas kiam ambaŭ partoj gajnas".
La pli bonaj intertraktadoj pelas en akiri "Venkon & Venko" (Win & Win), tio estas kiu la kliento gajnu akirante la produkto kiu lin kontentigas, kaj la desarrollador ankaŭ gajnas atingante buĝeto kaj dato de realisma transdono. Evidente, ĉi tiu modelo postulas fortajn kapablecojn de intertraktado.
La modelo Win-Win difinas aron de aktivecoj de intertraktado al la komenco de ĉiu paŝo ĉirkaŭ la espiral; ili difinas la sekvajn aktivecojn:
(*) Directivo: Kliento elektita kun rekta intereso en la produkto, kiu eblas premiita de la organizo se ĝi sukcesas aŭ kritikita se ne.
La modelo Win & Win faras emfazon en la komenca intertraktado, ĝi ankaŭ enkondukas 3 limŝtonoj en la nomita procezo "punktoj de fijación", kiu helpas al establi la completitud de ciklo de la espiral, kaj ili havigas limŝtonojn de decido antaŭ daŭrigi la projekton de disvolviĝo de la programaro.
Al la komenco de disvolviĝo (ne de projekto), ĉi tiu estas la unua fazo kiu realigas, kaj, laŭ la modelo de procezo adoptita, ĝi povas preskaŭ fini por pasi al la proksima etapo (kazo de Modelo Akvofalo Realimentado) aŭ ĝi povas fari parte por poste repreni ŝin (geedziĝas Modelon Iterativo Incremental aŭ aliaj de karaktero evolutivo).
En simplaj vortoj kaj esence, dum ĉi tiu fazo, ili akiras, ili kunvenas kaj ili specifas la funkciajn karakterizaĵojn kaj ne funkciaj ol devos plenumi la futuran programon aŭ sistemon al disvolvi.
La bonecoj de la karakterizaĵoj, tiel de la sistemo aŭ programo al disvolvi, kiel de lia medio, parametroj ne funkciaj kaj arkitekturo dependas ege de lin bone sukcesita ol estas ĉi tiu etapo. Ĉi tiu estas, probable, la de plej granda graveco kaj unu el la plej malfacilaj fazoj de sukcesi certe, ĉar ne estas automatizable, ne estas tre teknika kaj ĝi dependas en granda mezuro de la kapableco kaj sperto de la analizisto kiu ŝin realigas.
Ĝi implikas forte al la uzanto aŭ kliento de la sistemo, sekve ĝi havas nuancojn tre subjektivaj kaj estas malfacila de modelar kun certeco aŭ apliki teknika kiu estas "la plej proksima al la taŭga" (fakte ne ekzistas "la strikte taŭga"). Se ili bone konceptis plurajn metodikojn, inkluzive programaro de apogo, por preno, elicitación kaj registro de kondiĉoj, ne ekzistas formo infalible aŭ absolute confiable, kaj ili devas apliki kune bonaj kriterioj kaj tre komuna senso fare de la aŭ la analizistoj komisiitaj de la tasko; estas fundamenta ankaŭ sukcesi fluida kaj taŭga konekto kaj kompreno kun la uzanto fino aŭ kliento de la sistemo.
La plej grava artefakto rezulto de la kulmino de ĉi tiu etapo estas kio konas kiel especificación de kondiĉoj programaro aŭ simple dokumento ERS.
Kiel ĝi diris, la kapableco de la analizisto por interagi kun la kliento estas fundamenta; lin komuna estas kiu la kliento havas ĝeneralan objektivon aŭ problemon al solvi, ĝi ne konas tute ne la areo (komputika), nek lia ĵargono, ĝi eĉ ne scias kun precizeco kion devus fari la produkto programaro (kio kaj cuantas funkcioj) nek, multe malpli, ĝi kiel devas operacii. En aliaj malpli oftaj kazoj, la kliento "pensas ke" ĝi scias ĝuste kion la programaro devas fari, kaj ĝi ĝenerale trafas tre parte, sed lia empecinamiento entorpece la tasko de elicitación. La analizisto devas havi la kapablon por lidiar kun ĉi tiu tipo de problemoj, kiu inkludas homajn rilatojn; ĝi devas scii meti al la nivelo de la uzanto por permesi taŭgan konekton kaj komprenon.
Malabundaj estas la situacioj kiujn la kliento scias kun certeco kaj inkluzive kun completitud kio postulas de lia futura sistemo, oriento estas la plej simpla kazo por la analizisto.
La relativaj taskoj al preno, elicitación, modelado kaj registro de asignoj, krom esti ege grava, ĝi povas alveni al esti dificultosa de sukcesi acertadamente kaj porti sufiĉe relativa tempo al la tuta procezo de la disvolviĝo; al la procezo kaj metodikoj por efektivigi ĉi tiun aron de aktivecoj kutime supozas ilin al li propra parto de la Inĝenierio de Programaro, sed donita la antedicha complejidad, ĝi nuntempe parolas pri Inĝenierion en Kondiĉoj[11] , kvankam ŝi ankoraŭ ne ekzistas formale.
Estas grupoj de studo kaj esploro, en ĉiuj, kiu estas ekskluzive verŝitaj al la koncepti modelojn, teknikaj kaj procezoj por provi sukcesi la ĝentilan prenon, analizo kaj registro de asignoj. Ĉi tiuj grupoj estas kiuj kutime parolas pri la Inĝenierion en Kondiĉoj; tio estas ĝi proponas ĉi tiun kiel areo aŭ disciplino sed ne kiel kuro universitaria en se sama.
Iuj kondiĉoj ne bezonas la ĉeeston de la kliento, por esti kaptitaj aŭ analizitaj; en iuj kazoj al ili povas proponi la saman analiziston aŭ, inkluzive, adopti unuflanke decidoj kiujn ĝi konsideras taŭgaj (tiel en funkciaj asignoj kiel ne funkciaj). Por citi probablajn ekzemplojn: Iuj kondiĉoj sur la arkitekturo de la sistemo, kondiĉoj ne funkciaj tiaj kiel la relativaj al la rendimento, nivelo de apogo al eraroj operativos, platformoj de disvolviĝo, internaj rilatoj aŭ ligoj inter la informo (inter registroj aŭ tabuloj de datumoj) al stoki en kazo de bazoj aŭ datenbankoj de datumoj, ktp. Iuj funkciaj tiaj kiel malĉefaj ebloj aŭ de necesaj apogo por pli bona aŭ pli simpla operatividad; ktp.
La obtención de especificaciones de la kliento (aŭ aliaj aktoroj intervinientes) estas homa procezo tre interaga kaj iterativo; kutime al mezuro kiu kaptas la informon, ĝi analizas ŝin al li kaj realimenta kun la kliento, rafinante ŝin, polurante ŝin kaj korektante se estas necesa; ĉiu estu la metodo de ERS uzita. LA analizisto ĉiam devas alveni al koni la temática kaj la problemo al solvi, regi ĝin, ĝis iu punkto, ĝis la medio kiu la futura sistemo al disvolvi lin ĉirkaŭprenas. Por tio la analizisto devas havi altan kapablon por kompreni problemojn de tre diversaj areoj aŭ disciplinoj de laboro (kiu ne estas specife liaj); tiel ekzemple, se la sistemo al disvolvi estos por gestionar informo de asekuristino kaj liaj filioj remotas, la analizisto devas compenetrar en kiel ŝi laboras kaj ĝi manipulas lian informon, de niveloj tre malaltaj kaj inkluzive alvenante ĝis la gerenciales. Donita al granda diverseco de kampoj al kovri, la analizistoj kutimas esti ĉeestitaj de specialistoj, tio estas homo kiu konas profunde la areo por kiu disvolvos la programaron; evidente sola persono (la analizisto) ne povas ĉirkaŭpreni tiel vasta kvanto de areoj de la kono. En grandaj entreprenoj de disvolviĝo de produktoj programaro, estas komune havi analizistojn specialigitaj en iuj areoj de laboro.
Kontraŭe, ne estas problemo de la kliento, tio estas li ne havas kial scii nenion de programaro, nek de dezajnoj, nek aliaj aĵoj rilatigitaj; ĝi nur devas limigi al alporti objektivojn, datumoj kaj informo (de propra mano aŭ de liaj registroj, teamoj, oficistoj, ktp) al la analizisto, kaj gvidita de li, por ke, en unua petskribo, ĝi difinas la "Universon de Parolado", kaj kun posta laboro sukcesu fari la taŭgan dokumenton ERS.
Estas bone konita la premo kiun ili suferas la desarrolladores de komputikaj sistemoj por kompreni kaj elliberigi la necesojn de la klientoj/uzantoj. Kiom pli kompleksa estas la kunteksto de la plej malfacila problemo estas sukcesi ĝin, ĝi kelkfoje pelas al la desarrolladores al devi igi preskaŭ spertaj de la regadoj kiuj analizas.
Kiam ĉi tio ne okazas estas tre probabla ol generas aron de kondiĉoj[12] eraraj aŭ nekompletaj kaj sekve produkto de programaro kun alta grado de malaprobo fare de la klientoj/uzantoj kaj alta kosto de reingeniería kaj bontenado. Ĉiu tio kiu ne detektas, aŭ rezultu malbone komprenita en la komenca etapo provokos fortan negativan trafon en la kondiĉoj, propagante ĉi tiu fluo degradante laŭlonge de la tuta procezo de disvolviĝo kaj pliigante lia malutilo kiom pli malfrua estas lia detección (Bell kaj Thayer 1976)(Davis 1993).
Estante kiu la preno, elicitación kaj especificación de kondiĉoj, estas parto crucial en la procezo de disvolviĝo de programaro, pro tio ke de ĉi tiu etapo dependas la atingon de la objektivaj finoj antaŭviditaj, ili konceptis modelojn kaj diversaj metodikoj de laboro por ĉi tiuj finoj. Ankaŭ ekzistas iloj programaro kiun apogas la relativaj taskoj realigitaj de la inĝeniero en kondiĉoj.
La normo IEEE 830-1998 tostas normalización de la "Praktikoj Rekomenditaj por la Especificación de Kondiĉoj Programaro".[13]
Al mezuro kiun akiras la kondiĉoj, ĝi kutime iras ilin al li analizante, la rezulto de ĉi tiu analizo, kun aŭ sen la kliento, plasmo en dokumento, konita kiel ERS aŭ Especificación de Kondiĉoj Programaro, kies strukturo povas veni difinita de pluraj normoj, tiaj kiel CMM-1a.
Unua paŝo por realigi la relevamiento de informo estas la kono kaj difino trafita kio konas kiel "Universo de Parolado" de la problemo, kiu difinas kaj ĝi komprenas por:
Universo de Parolado (UdeD): estas la ĝenerala kunteksto en kiu la programaro devos esti evoluinta kaj ĝi devos operacii. La UdeD inkludas ĉiujn fontojn de informo kaj ĉiuj personoj rilatigitaj kun la programaro. Tiuj personoj estas konitaj ankaŭ kiel aktoroj de tiu universo. La UdeD estas la realaĵo circunstanciada por la aro de objektivoj difinitaj de kiuj demandaron la programaro.
De la eltiro kaj analizo de informo en lia medio akiras ĉiuj especificaciones necesaj kaj tipoj de kondiĉoj por la futura produkto programaro.
La objektivo de la Inĝenierio de Kondiĉoj (IRI) estas sistematizar la procezo de difino de kondiĉoj permesante elicitar, modelar kaj analizi la problemon, generante devontigo inter la Inĝenieroj de Kondiĉoj kaj la klientoj/uzantoj, pro tio ke ambaŭ partoprenas en la generacio kaj difino de la kondiĉoj de la sistemo. La IRI alportas aron de metodoj, teknikaj kaj iloj kiuj ĉeestas al la inĝenieroj de kondiĉoj (analizistoj) por akiri asignojn lin pli sekuraj, veraces, kompletaj kaj oportunaj eblaj, permesante esence:
Se bone ekzistas diversaj formoj, modeloj kaj metodikoj por elicitar, difini kaj dokumenti asignojn, ĝi ne povas diri ke iu de ili estas pli bona aŭ plej malbona kiu la alia, ili kutimas havi muchísimo en komuna, kaj ĉiuj plenumas la saman objektivon. Tamen, kio se ĝi povas diri sen duboj estas kiu estas nemalhaveble uzi iu de ili por dokumenti la especificaciones de la futura produkto programaro. Tiel ekzemple, estas grupo de argentina esploro kiu de faras plurajn jarojn proponis kaj ĝi studas la uzon de la LEL (Léxico Etendita de la Lingvo) kaj Scenejoj kiel metodiko, tie[14] prezentas unu el la tantas referencoj kaj bibliografio sur tio. Alia formo, pli ortodoksa, de kapti kaj dokumenti kondiĉojn povas akiri en detalo, ekzemple, en la laboro de la Universitato de Sevilo sur "Metodiko por la Analizo de Kondiĉoj de Sistemoj Programaro".[15]
En la Fig. 7 montras skemon, pli aŭ malpli strikta, kvankam ne detala, de la paŝoj kaj taskoj al sekvi por realigi la prenon, analizo kaj especificación de asignoj programaro. Ankaŭ tie observas kion artefakto aŭ dokumento akiras en ĉiu etapo de la procezo. En la diagramo ne explicita metodiko aŭ modelo al uzi, simple pautan la taskoj kiuj devas plenumi , de iu maniero.
ebla lerta, ĝenerala kaj ordinato, de taskoj rekomenditaj por akiri la difinon de kio devas realigi, la produktoj al akiri kaj la teknikoj al uzi dum la aktiveco de elicitación de kondiĉoj, en fazo de Especificación de Kondiĉoj Programaro estas:
Iuj bazaj komencoj al konsideri:
ili povas identigi du formojn de kondiĉoj:
Tio estas, ambaŭ estas lin sama, sed kun malsama nivelo de detalo.
Ekzemplo de kondiĉo de uzanto: La sistemo devas fari pruntojn Ekzemplo de kondiĉo de sistemo: Funkcio prunto: enirita kodo kompaniano, ekzempla kodo; eliro: ĝi datas redonon; ktp.
ili klasifikas en tri la tipoj de kondiĉoj de sistemo:
La funkciaj kondiĉoj priskribas:
La ne funkciaj kondiĉoj estas limigoj de la servoj aŭ funkcioj kiujn proponas la sistemo (ej. Cotas de tempo, procezo de disvolviĝo, rendimento, ktp.)
La kondiĉoj de la regado derivas de la regado de la apliko kaj ili reflektas karakterizaĵojn de koncerna regado.
Ili eblas funkciaj aŭ ne funkciaj.
Ej. La sistemo de biblioteko de la Universitato devas esti kapabla de eksporti datumojn per la Lingvo de Intercomunicación de Bibliotekoj de Hispanio (LIBE). Ej. La sistemo de biblioteko ne povos konsenti bibliotekojn kun materialo cenzurita.
Dum ĉi tiu la etapo realigas la taskojn kiuj komune konas kiel programado; kiu konsistas, esence, en porti al kodo fonto, en la lingvo de programado elektita, ĉiu lin desegnita en la antaŭa fazo. Ĉi tiu tasko ŝin realigas la programador, sekvante por kompleta la lineamientos postulitaj en la dezajno kaj en konsidero ĉiam al la funkciaj kondiĉoj kaj ne funkciaj (ERS) specifitaj en la unua etapo.
Estas komune pensi kiu la etapo de programado aŭ kodigo (iuj ŝin nomas implementación) estas kiu insume la plej granda parto de la laboro de disvolviĝo de la programaro; tamen, ĉi tio eblas relativa (kaj ĝenerale aplicable al sistemoj de malgranda portu) pro tio ke la antaŭaj etapoj estas cruciales, maltrankviligaj kaj ili povas porti sufiĉe pli tempo. ĝi kutimas fari korinklinojn de ĉirkaŭ 30% de la tuta tempo insumido en la programado, sed ĉi tiu cifero ne estas consistente pro tio ke ĝi dependas en granda mezuro de la karakterizaĵoj de la sistemo, lia criticidad kaj la lingvo de programado elektita.[8] Dum plej malgranda estas la nivelo de la plej granda lingvo estos la tempo de programado postulita, tiel ekzemple postrestus pli tempo en kodi algoritmon en lingvo ensamblador kiu la sama planita en lingvo C.
Dum ĝi planas la aplikon, sistemo, aŭ programaro ĝenerale, ili realigas ankaŭ taskoj de depuración, ĉi tio estas la laboro de iri liberigante al la kodo de la eraroj factibles de esti trovitaj en ĉi tiu fazo (de semántica, sintaksa kaj logika). Estas sorto de solapamiento kun la sekva fazo, pro tio ke por elpurigi la logikon estas necese realigi unuigajn provojn, kutime kun datumoj de provo; certe estas kiu ne ĉiuj eraroj estos trovitaj nur en la etapo de programado, estos aliaj kiu trovos dum la etapoj subsiguientes. La apero de iu funkcia eraro (malbona respondo al la asignoj) eventuale povas porti al redoni al la fazo de dezajno antaŭ daŭrigi la kodigon.
Dum la fazo de programado, la kodo povas adopti plurajn statojn, dependante de la formo de laboro kaj de la lingvo elektita, al scii:
Inter la diversaj provoj kiujn oni efektivigas lin al la programaro povas distingi ĉefe:
La provoj kutime efektivigas kun la nomitaj datumoj de provo, kiu estas aro selektita de tipaj datumoj al kiuj povas vidi submetita la sistemo, la moduloj aŭ la blokoj de kodo. Ili ankaŭ elektas: Datumoj kiuj portas al kondiĉoj limoj al la programaro sekve de provi lian toleron kaj robustez; datumoj de utileco por mezuradoj de rendimento; datumoj kiuj propocan apartaj aŭ eventualaj kondiĉoj malmulta komunaj kaj al kiuj la programaro kutime ne estos submetita sed povas okazi; ktp. La "datumoj de provo" ne nepre estas fikciaj aŭ "kreitaj", sed kutime se lin estas la de malmulta probablo de spritaĵo.
Ĝenerale, ekzistas fazo probatoria fino kaj kompleta de la programaro, nomita Beta Testo, dum kiu la sistemo instalita en normalaj kondiĉoj de operacio kaj laboro estas provita ĝisfunde sekve de trovi erarojn, nestabilecoj, eraraj respondoj, ktp. Kiu pasis la antaŭajn kontrolojn. Ĉi tiuj estas kutime realigitaj por adekvata dungitaro kontraktita aŭ tuŝita specife al tio. La eblaj trovitaj eraroj transdonas al la desarrolladores por lia depuración. En la kazo de programaro de disvolviĝo "al petita", la uzanto fino (kliento) estas kiu realigas la Beta Testo, havante por tio periodo de provo interkonsentita kun la desarrollador.
La instalado de la programaro estas la procezo por kiu la evoluintaj programoj estas transferidos taŭge al la komputilo destinas, inicializados, kaj, eventuale, agorditaj; ĉio tio kun la intenco de esti jam uzitaj por la uzanto fino. Ĝi konstituas la etapon fino en la propre koncerna disvolviĝo de la programaro. Poste de ĉi tiu la produkto eniros en la fazon de funkciado kaj produktado, por kiu estis desegnita.
La instalado, dependante de la evoluinta sistemo, ĝi povas konsisti en simpla kopio al la rigida disko destino (maloftaj kazoj nuntempe); aŭ bone, pli komune, kun unu el complejidad intera en kiu la malsamaj arkivoj komponantoj de la programaro (ejecutables, bibliotekoj, propraj datumoj, ktp.) Estas descomprimidos kaj kopiitaj al specifaj lokoj preestablecidos de la disko; ili inkluzive kreas interligojn kun aliaj produktoj, krom la propra mastruma sistemo. Ĉi tiu lasta kazo, komune estas sufiĉe aŭtomata procezo kiu estas kreita kaj gvidita kun heramientas specifaj programaro (pakita kaj dissendo, instaladores).
En produktoj de plej granda complejidad, la dua alternativa estas la uzita, sed estas realigita aŭ gvidita de specialistoj; ĝi povas inkluzive postuli la instaladon en pluraj kaj malsamaj computadores (instalado distribuita).
Ankaŭ, en programaro de meza kaj alta complejidad kutime estas postulita procezo de agordo kaj sankontrolo, por kiu atribuas taŭgajn parametrojn de funkciado kaj testea la operatividad funkcia de la produkto.
En produktoj de amasa vendo la kompletaj instaladoj, se estas relative simplaj, kutimas esti realigitaj de la propraj uzantoj finoj (tiaj kiel mastrumaj sistemoj, pakoj de oficejo, utilitarios, ktp.) Kun propraj iloj de instalado gvidita; inkluzive la agordo kutimas esti aŭtomata. En produktoj de specifa dezajno aŭ "al mezuro" la instalado restas restriktita, kutime, al personoj specialistoj implikitaj en la disvolviĝo de la programaro en demando.
Fojo realigita prospere la instalado de la programaro, la sama sekvinbero al la fazo de produktado (operatividad), dum kiu plenumas la funkciojn por kiuj estis evoluinta, tio estas, estas fine uzita por la (aŭ la) uzanto fino, produktante la rezultoj atenditaj.
La bontenado de programaro estas la procezo de kontrolo, pliboniĝo kaj optimización de la jam evoluinta kaj instalita programaro, kiu ankaŭ inkludas depuración de eraroj kaj difektoj kiuj povu esti filtrita de la fazo de provoj de kontrolo kaj beta testo. Ĉi tiu fazo estas la lasta (antaŭ iterar, laŭ la modelo uzita) kiu aplikas al la ciklo de vivo de la disvolviĝo de programaro. La fazo de bontenado estas kiu venas post kiam la programaro estas operativo kaj en produktado.
De bona dezajno kaj dokumentado de la disvolviĝo dependos kiel estos la fazo de bontenado, tiel en kosto temporal kiel mona. Modifoj realigitaj al programaro kiu estis ellaborita kun dokumentado indebida aŭ malriĉa kaj malbone dezajno povas alveni al esti tiel aŭ pli peniga ol disvolvi la programaron de la komenco. Por tio, estas de fundamenta graveco respekti laŭdeve ĉiuj taskoj de la fazoj de la disvolviĝo kaj subteni taŭga kaj ĝi kompletigas la dokumentadon.
La periodo de la fazo de bontenado estas kutime la plej granda en la tuta ciklo de vivo.[8] Ĉi tiu fazo implikas ankaŭ ĝisdatigoj kaj evoluadoj de la programaro; ne nepre implicas ke la sistemo havis erarojn. Oni aŭ pli ŝanĝoj en la programaro, ekzemple de adapto aŭ evolutivos, ĝi povas porti inkluzive al rever kaj adapti de parto de la unuaj fazoj de la komenca disvolviĝo, ŝanĝante ĉiuj aliaj; dependante de kiom profundaj estu la ŝanĝoj. La modelo komuna akvofalo estas aparte peniga en bontenado, pro tio ke lia rigideco implicas ke ajna ŝanĝo provokas revenon al fortaj kaj komenca fazo alteraciones en la aliaj fazoj de la ciklo de vivo.
Dum la periodo de bontenado, estas komuna kiu ŝprucas novajn reviziojn kaj versiojn de la produkto; kiu lin liberigas pli elpurigita, kun plej granda kaj pli bona funcionalidad, pli bona rendimento, ktp. Pluraj sono la facetoj kiuj eblas ŝanĝitaj por provoki ŝanĝojn deseables, evolutivos, adaptoj aŭ pligrandigoj kaj pliboniĝoj.
Ili esence havas la sekvajn tipojn de ŝanĝoj: