You are on page 1of 46

LINQ Interview Questions and Answers <span class="Apple-style-span" style="font-family: Arial; fontsize: !

p"; w#ite-space: pre; -we$%it-$order-#orizontalspacin&: 'p"; -we$%it-$order-vertical-spacin&: 'p"; "()#at is Lan&ua&e Inte&rated Query *LINQ+, Answer :: Lan&ua&e Inte&rated Query *LINQ+ adds t#e a$ility to -uery o$.ects usin& /N01 lan&ua&es/ 1#e LINQ to 2QL o$.ect3relational mappin& *4356+ framewor% provides t#e followin& $asic features: 1ools to create classes *usually called entities+ mapped to data$ase ta$les 7ompati$ility wit# LINQ8rs-uo;s standard -uery operations 1#e 9ata7onte"t class: wit# features suc# as entity record monitorin&: automatic 2QL statement &eneration: record concurrency detection: and muc# more //// 5ead 6ore )#at are t#e main difference $etween LINQ and 2tored ;rocedures, Answer :: 1#ere are couple of advanta&e of LINQ over stored procedures/ / 9e$u&&in& - It is really very #ard to de$u& t#e 2tored procedure $ut as LINQ is part of /N01: you can use visual studio<s de$u&&er to de$u& t#e -ueries/ '/ 9eployment - )it# stored procedures: we need to provide an additional script for stored procedures $ut wit# LINQ everyt#in& &ets complied into sin&le 9LL #ence deployment $ecomes easy/ !/ 1ype 2afety - LINQ is type safe: so -ueries errors are type c#ec%ed at compile time/ It is really &ood to encounter an error w#en compilin& rat#er t#an runtime e"ception= //// 5ead 6ore <div class="post-te"t"( )#at are t#e pros and cons of LINQ *Lan&ua&e-Inte&rated Query+, )#at are t#e $est and worst cases in w#ic# to use LINQ, >ow #ave you $enefitted or not $enefitted from usin& LINQ, )#ic# data sources $enefit t#e least and t#e most from LINQ, Answer :: ;ros: 9eclarative approac# ma%es -ueries easier to understand and more compact

0"tensi$ility and e"pression trees allow mostly consistent -ueryin& of multiple sources 0ven in-process -ueries can $e implemented in ways ot#er t#an LINQ to 4$.ects - e/&/ ;arallel LINQ and my own ;us# LINQ framewor%/ ?ery fle"i$le/ @a$ulously useful for in-process -ueries: w#ere it<s easiest to understand Areat to $e a$le to avoid 2QL in strin&s etc )ide ran&e of operators provided $y default: and ot#ers can easily $e added for LINQ to 4$.ects Lan&ua&e features introduced primarily for LINQ are widely applica$le elsew#ere *yay for lam$das+ 7ons: Query e"pressions aren<t understood well enou&#: and are overused/ 4ften simple met#od invocation is s#orter and simpler/ Inevita$le inconsistencies $etween provider - impedance mismatc# is still present: w#ic# is reasona$le $ut needs to $e understood 1#ere will always $e some t#in&s you can do in 2QL $ut not in LINQ )it#out understandin& w#at<s &oin& on: it<s easy to write very inefficient code It<s #ard to write a LINQ provider/ 1#is may well $e inevita$le: $ut more &uidance from 6icrosoft would $e appreciated/ It<s a new way of t#in%in& a$out data access for most developers: and will need time for understandin& to percolate Not specifically LINQ $ut related to it - t#e way e"tension met#ods are discovered in 7B isn<t &ranular enou&# 2ome operators are "missin&": particularly t#e e-uivalents of <code(4rderCy<3code( for t#in&s ot#er t#an orderin& - e/&/ findin& t#e item wit# t#e ma"imum value of a property 9eferred e"ecution and streamin& are poorly understood *$ut improvin&+ 9e$u&&in& can $e very tric%y due to deferred e"ecution and streamin& I find it<s $est w#en dealin& wit# in-process -ueries/ 1#ey<re easy to predict: understand and e"tend/

7omplementary tec#nolo&ies li%e LINQ to D6L and ;arallel LINQ are &reat/ LINQ to 4$.ects can $e used almost anyw#ere/ LINQ to 2QL etc are really nice w#ere t#ey<re appropriate: $ut t#ey<re #arder to understand and need more e"pertise/ 1#ey<re also only applica$le in certain areas of your code/ //// 5ead 6ore 7an you tell me a$out t#e disadvanta&es of LINQ over 2tored ;rocedures, Answer :: Networ% traffic: sprocs need only serialize sproc-name and ar&ument data over t#e wire w#ile LINQ sends t#e entire -uery/ 1#is can &et really $ad if t#e -ueries are very comple"/ >owever: LINQ<s a$straction allows 6icrosoft to improve t#is over time/ Less fle"i$le: 2procs can ta%e full advanta&e of a data$ase<s featureset/ LINQ tends to $e more &eneric in it<s support/ 1#is is common in any %ind of lan&ua&e a$straction *e/&/ 7B vs assem$ler+/ 5ecompilin&: If you need to ma%e c#an&es to t#e way you do data access: you need to recompile: version: and redeploy your assem$ly/ 2procs can sometimes allow a 9CA to tune t#e data access routine wit#out a need to redeploy anyt#in&/ //// 5ead 6ore 7an you tell me some advanta&es of LINQ over 2tored ;rocedures, Answer :: @or $asic data retrieval I would $e &oin& for Linwit#out #esitation/ <div class="post-te"t"( 2ince movin& to Lin- I<ve found t#e followin& advanta&es: 9e$u&&in& my 9AL #as never $een easier/ 7ompile time safety w#en your sc#ema c#an&es is priceless/ 9eployment is easier $ecause everyt#in& is compiled into 9LL<s/ No more mana&in& deployment scripts/ Cecause Lin- can support -ueryin& anyt#in& t#at implements t#e IQuerya$le interface: you will $e a$le to use t#e same synta" to -uery D6L: 4$.ects and any ot#er datasource wit#out #avin& to learn a new synta" //// 5ead 6ore I #ave t#e followin& code

usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/Lin-; usin& 2ystem/1e"t; namespace ;#one2tore E static class Ftils E static dou$le 7alculate2ales1a"*dou$le "+ E " = " G /HI'J; return y; K K K w#en i compile I &et t#e followin& error error 72HL'!: 7annot declare a varia$le of static type <;#one2tore/Ftils< I don<t understand w#at t#is means or #ow to correct it: any #elp would $e &reat t#an%s Answer :: 9on<t %now e"actly #ow to fi" it $ut in 7alculate2ales1a" s#ould it really $e "return y;" and not "return ";"/ ;er#aps t#at is t#e cause $ecause it t#in&s it needs to create y, //// 5ead 6ore i:m in dou$t to c#oose w#ic# one from /net .ava/ i need perfect definition a$out .'se : .'ee: .'me: .sp: .d$c : cB: asp/net: ado/net : lin- and t#eir differences/ would u #elp me in t#is dilemma, i realy need t#is/ $y t#e way i can pro&ram $y cMM and v$/t#an% u/ Answer :: Nou s#ould use Oava/ /net only wor%s on 6icrosoft mac#ines: Oava is platform independent/ ;lus: it is very similar to 7MM/ //// 5ead 6ore tryin& to call paint met#od #ere is t#e code I #ave so far usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/7omponent6odel; usin& 2ystem/9ata;

usin& 2ystem/9rawin&; usin& 2ystem/Lin-; usin& 2ystem/1e"t; usin& 2ystem/)indows/@orms; pu$lic partial class @orm : @orm E pu$lic class 2na%e E static void 6ain*+ E K K 33somew#at of a coordinate system for t#e &ame $oolP:Q point = new $oolPJ : J Q; 33sets t#e direction t#at t#e sna%e is supposed to move: :up: ':down: !:left: R:ri&#t: int direction = R; pu$lic @orm *+ E Initialize7omponent*+; 331#is sets t#e startin& sna%e pointPH: HQ = true; K private void Initialize7omponent*+ E t#row new NotImplemented0"ception*+; K 331#is met#od is necessary $ecause Initialize7omponent*+ calls it 33t#is/Load M= new 2ystem/0vent>andler*t#is/@orm SLoad+; private void @orm SLoad*o$.ect sender: 0ventAr&s e+ E K private void @orm S;aint*o$.ect sender: ;aint0ventAr&s e+ E 33accordin& to t#e array point t#is displays t#e $loc%s of t#e sna%e and fruit Arap#ics & = e/Arap#ics; int " = H; int y = H; w#ile *y 8lt; J + E $ool s%ip = false; if *pointP": yQ == true+ E &/@ill5ectan&le*Crus#es/AreenNellow: " G H: y G H: H: H+; K

if *" 8&t;= JH+ E " = H; yMM; s%ip = true; K if *" 8lt; JH s%ip == false+ E "MM; K K K private void timer *o$.ect sender: 0ventAr&s e+ E try E int " = H; int y = H; w#ile *y 8lt; J + E $ool s%ip = false; if *direction == R+ E if *pointP": yQ == true+ E pointP": yQ = false; pointP" M : yQ = true; $rea%; K K if *direction == !+ E if *pointP": yQ == true+ E pointP": yQ = false; pointP" - : yQ = true; $rea%; K K if *direction == '+ E if *pointP": yQ == true+ E pointP": yQ = false; pointP": y M Q = true; $rea%; K K if *direction == + E if *pointP": yQ == true+ E pointP": yQ = false; pointP": y - Q = true; $rea%; K K if *" 8&t;= JH+ E " = H; yMM; s%ip = true; K if *" 8lt; JH s%ip == false+ E "MM; K K Invalidate*+; K catc# E 6essa&eCo"/2#ow*"Aame 4ver"+; K K private void @orm STey9own*o$.ect sender: Tey0ventAr&s e+ E 33 Invalidate t#e 0ater $efore movin& it strin& result = e/Tey9ata/1o2trin&*+; switc# *result+ E case "Left":

direction = !; $rea%; case "5i&#t": direction = R; $rea%; case "Fp": direction = ; $rea%; case "9own": direction = '; $rea%; K K K Answer :: Nou don<t really call paint; you can eit#er overload it or attac# to it/ 1#at way it<s automatically called w#en t#e paint event is fired/ 4verloadin&: put t#is in your sna%e class: protected override void 4n;aint*;aint0ventAr&s e+ E 33 7all t#e $ase 4n;aint event to ma%e sure t#e rest of t#e form &ets drawn/ $ase/4n;aint*e+; 33 9o your drawin& #ere/ K Attac#in& to t#e event: ;ut t#is in your initializer: t#is/;aint M= new 2ystem/)indows/@orms/;aint0vent>andler * Nour@unctionS;aint +; 1#en add your function t#at does t#e drawin& to t#e form: private void Nour@unctionS;aint*o$.ect sender: ;aint0ventAr&s e+ E 33 ;ut your drawin& code #ere K //// 5ead 6ore I am usin& t#e Fser/Identity/Name property to display my users name w#en t#ey comment on t#in&s on my site: t#e pro$lem is t#at Fser/Identity/Name wor%s usin& data t#ey entered at Lo&in: so t#eir names are #ardly ever capitalized as t#ey s#ould $e/ Now I #ad $een usin& an 2QL call to access t#eir proper names: $ut t#at is processor over#ead t#at I don<t want/ Is t#ere a way t#at I can do a sin&le 2QL call w#en t#ey lo& on *in code-$e#ind+ t#at would reset t#e Fser/Identity/Name to t#e proper caps *as entered in my d$+, I .ust need a code sample or somet#in&/

I am usin& 62 2QL and I don<t want to mess wit# LINQ: I am too far into t#e development cycle/ Answer :: Nou can simply store t#e retrieved value in a 2ession varia$le and read from t#e 2ession varia$le/ @irst time you read t#e username *w#en a user lo&s in+: 2essionP"FserName"Q = Fser/Identity/Name; 33later w#en you want to retrieve t#e value you can use: strin& FserName; if*2essionP"FserName"Q == null+ E FserName = 2essionP"FserName"Q/1o2trin&*+; K >ope t#is #elps/ //// 5ead 6ore usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/7omponent6odel; usin& 2ystem/9ata; usin& 2ystem/9rawin&; usin& 2ystem/Lin-; usin& 2ystem/1e"t; usin& 2ystem/)indows/@orms; usin& 2ystem/9rawin&/9rawin&'9; namespace )indows@ormsApplication E pu$lic partial class @orm : @orm E pu$lic @orm *+ E Initialize7omponent*+; K private void on;aint*o$.ect sender: ;aint0ventAr&s e+ E Arap#ics & = e/Arap#ics; Crus# yel = new 2olidCrus#*7olor/Nellow+; Crus# &rn = new 2olidCrus#*7olor/Areen+; Crus# $lu = new 2olidCrus#*7olor/2%yClue+; 5ectan&le sun = new 5ectan&le*)idt#- HH: J : UH: UH+; 5ectan&le &rass = new 5ectan&le*H: !HH: )idt#: >ei&#t+; 5ectan&le s%y = new 5ectan&le*H: H: )idt#: >ei&#t+; &/@ill5ectan&le*$lu: s%y+; &/@ill5ectan&le*&rn: &rass+; &/@ill0llipse*yel: sun+;

Answer :: A simple way would $e to $rea% paint out into its own function *wit# a &rap#ics o$.ect as a parameter+ t#en call it wit# eit#er e/Arap#ics *from on;aint+ or wit# @orm /7reateArap#ics*+ *from w#atever function+/ //// 5ead 6ore I #ave t#is code completed so far $ut i cannot &et anyt#in& to pop up w#en i $uild solution/// I will include t#e code and if anyone can #elp me to &et output I would &reatly appreciate it/// @orm /cs usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/7omponent6odel; usin& 2ystem/9ata; usin& 2ystem/9rawin&; usin& 2ystem/1e"t; usin& 2ystem/)indows/@orms; namespace 2na%in E pu$lic partial class @orm : @orm E 33somew#at of a coordinate system for t#e &ame $oolP:Q point = new $oolPJ : J Q; 33sets t#e direction t#at t#e sna%e is supposed to move: :up: ':down: !:left: R:ri&#t: int direction = R; pu$lic @orm *+ E Initialize7omponent*+; 331#is sets t#e startin& sna%e pointPH: HQ = true; K private void @orm S;aint*o$.ect sender: ;aint0ventAr&s e+ E 33accordin& to t#e array point t#is displays t#e $loc%s of t#e sna%e and fruit Arap#ics & = e/Arap#ics; int " = H; int y = H; w#ile *y 8lt; J + E $ool s%ip = false; if *pointP": yQ == true+

E &/@ill5ectan&le*Crus#es/AreenNellow: " G H: y G H: H: H+; K if *" 8&t;= JH+ E " = H; yMM; s%ip = true; K if *" 8lt; JH s%ip == false+ E "MM; K K K private void @orm STey9own*o$.ect sender: Tey0ventAr&s e+ E 33 Invalidate t#e 0ater $efore movin& it strin& result = e/Tey9ata/1o2trin&*+; switc# *result+ E case "Left": direction = !; $rea%; case "5i&#t": direction = R; $rea%; case "Fp": direction = ; $rea%; case "9own": direction = '; $rea%; K K private void timer S1ic%S *o$.ect sender: 0ventAr&s e+ E try E int " = H; int y = H; w#ile *y 8lt; J + E $ool s%ip = false; if *direction == R+ E if *pointP": yQ == true+ E pointP": yQ = false; pointP" M : yQ = true; $rea%; K K if *direction == !+ E if *pointP": yQ == true+ E pointP": yQ = false; pointP" - : yQ = true; $rea%; K K if *direction == '+ E if *pointP": yQ == true+ E pointP": yQ = false; pointP": y M Q = true; $rea%; K K if *direction == + E if *pointP": yQ == true+ E pointP": yQ = false; pointP": y - Q = true; $rea%; K K

if *" 8&t;= JH+ E " = H; yMM; s%ip = true; K if *" 8lt; JH s%ip == false+ E "MM; K K Invalidate*+; K catc# E 6essa&eCo"/2#ow*"Aame 4ver"+; K K K K ;ro&ram/cs usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/Lin-; usin& 2ystem/)indows/@orms; namespace 2na%in E static class ;ro&ram E 333 8lt;summary8&t; 333 1#e main entry point for t#e application/ 333 8lt;3summary8&t; P21A1#readQ static void 6ain*+ E Application/0na$le?isual2tyles*+; Application/2et7ompati$le1e"t5enderin&9e/// Application/5un*new @orm *++; K K K Answer :: 1ry puttin& timer /2tart*+ at t#e end of t#e @orm constructor/ If t#at doesn<t fi" t#e pro$lem I need to see your @orm /9esi&ner/cs/ //// 5ead 6ore usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/7omponent6odel; usin& 2ystem/9ata; usin& 2ystem/9rawin&;

usin& 2ystem/Lin-; usin& 2ystem/1e"t; usin& 2ystem/)indows/@orms; usin& 2ystem/I4; namespace pipewor%s2lidin&;uzzle E pu$lic partial class main)indow : @orm E int rows: cols: $lan%: r: c; 2trin& pat# = "@:VVI1! 'VVpipewor%s2lidin&;uzzleVVpipe/// int inde" = H: count = H; Cutton $ ; $ool second7lic% = false; $ool s#ufflin&; int tile)idt#: tile>ei&#t; pu$lic main)indow*+ E Initialize7omponent*+; K private void @orm SLoad*o$.ect sender: 0ventAr&s e+ E Auto2ize = true; 2trin&PQ files = 9irectory/Aet@iles*pat#: "G/.p&"+; for *int r = H; r 8lt; rows; rMM+ E for *int c = H; c 8lt; cols; cMM+ E if *r == rows - c == cols - + E $rea%; K ;ictureCo" p$ = new ;ictureCo"*+; p$/2ize = new 2ize* HH: HH+; p$/2ize6ode = ;ictureCo"2ize6ode/2tretc#Ima&e; p$/6ar&in = new ;addin&*H+; p$/Corder2tyle = Corder2tyle/@i"ed2in&le; p$/Location = new ;oint*c G HH: r G HH+; p$/Ima&e = Ima&e/@rom@ile*filesPinde"Q+; p$/1a& = inde"; countMM; if *count=='+ E inde"MM; count = H; K 7ontrols/Add*p$+;

Cutton $ = new Cutton*+; $/Location = p$/Location; $/2ize = p$/2ize; $/1a& = p$; 7ontrols/Add*$+; $/Crin&1o@ront*+; $/7lic% M= new 0vent>andler*Cutton7lic%+; K K $lan% = rows G cols - ; K private void 2#uffle*+ E 33 s#uffle/// s#ufflin& = true; 5andom rnd = new 5andom*+; for *int i = H; i 8lt; HHH; iMM+ E int " = rnd/Ne"t*rows G cols - + M ; p$S7lic%*7ontrolsP"Q: null+; K s#ufflin& = false; 5efres#*+; K void p$S7lic%*o$.ect sender: 0ventAr&s e+ E int $row = $lan% 3 cols; int $col = $lan% W rows; ;ictureCo" p$ = *;ictureCo"+ sender; o$.ect o = p$/1a&; int tileInde" = *int+ o; int trow = tileInde" 3 cols; int tcol = tileInde" W rows; 33 down/// if *tcol == $col trow M == $row+ E if *s#ufflin&+ E p$/1op M= tile>ei&#t; K else E for *int i = H; i 8lt; tile>ei&#t; iMM+ E p$/1opMM; K K $lan% = tileInde"; tileInde" M= cols;

p$/1a& = tileInde"; if *is2olved*++ E 6essa&eCo"/2#ow*"nalpas==="+; K return; K 33 up/// if *tcol == $col trow - == $row+ E if *s#ufflin&+ E p$/1op -= tile>ei&#t; K else E for *int i = H; i 8lt; tile>ei&#t; iMM+ E p$/1op--; K K $lan% = tileInde"; tileInde" -= cols; p$/1a& = tileInde"; if *is2olved*++ E 6essa&eCo"/2#ow*"nalpas==="+; K return; K 33 left/// if *tcol - == $col trow == $row+ E if *s#ufflin&+ E p$/Left -= tile)idt#; K else E for *int i = H; i 8lt; tile>ei&#t; iMM+ E p$/Left--; K K $lan% = tileInde"; tileInde"--; p$/1a& = tileInde"; if *is2olved*++ E 6essa&eCo"/2#ow*"nalpas==="+; K return; K 33 ri&#t///

if *tcol M == $col trow == $row+ E if *s#ufflin&+ E p$/Left M= tile)idt#; K else E for *int i = H; i 8lt; tile>ei&#t; iMM+ E p$/LeftMM; K K $lan% = tileInde"; tileInde"MM; p$/1a& = tileInde"; if *is2olved*+ Answer :: 1#e synta" is wron&/ ;lease c#ec% t#e synta"/ //// 5ead 6ore >ello fellow pro&rammers= I ori&inally did a under&raduate in mat#ematics and t#e only <codin&< software development I did was in 6atla$: and ?CA *0"cel+ and to a smaller e"tent 7 - $ut purely from a procedural perspective/ I went out and wor%ed for a num$er of years as a Quantative Analyst for a @inancial 2oftware 9evelopment 1eam and decided to &o $ac% to uni to learn 2cientific 2oftware 9evelopment: w#ic# I love; $ut I<m findin& it really difficult c#oosin& a lan&ua&e t#at I want to specialise in: I #ave to admit on t#e surface Oava and 7B are appealin& as t#ey are so stron&ly typed: #owever I really en.oy t#e fle"i$ility and a$solute control t#at 7MM: @ortran and Ada offer $ut in terms of t#e wor% involved in application development I #ave noticed a severe increase in t#e amount of time re-uired/ Is 7MM wort# t#e e"tra wor%: or am I $etter off stic%in& wit# Oava and 7B , I plan on doin& alot of @orm application development involvin& LINQ and Access32QL 2erver communication Any &uidance would $e &reatly appreciated: 9avid Answer :: I t#in% t#at if you are doni& scientific wor%: wit# lar&e or lon& runnin& data sets: t#en 7MM is very useful/ 0ven wit# all t#e OI1 improvements: 7MM still runs faster and in less memory t#an Oava or even 7B/ >owever: for pro.ects t#at include a lot of FI wor%: 7B and Oava are $etter/ t#e li$raries are si&nificantly lar&er/

@or t#e form and data$ase wor%: 7B and Oava are si&nificantly $etter/ //// 5ead 6ore usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/Lin-; usin& 2ystem/1e"t; namespace 7onsoleApplication!H E class ;ro&ram E static void 6ain*strin&PQ ar&s+ E strin& userIn = "H"; w#ile *userIn == "e"+ E 7onsole/)riteLine*";lease 2elect an 4ption"+; 7onsole/)riteLine*+; 7onsole/)riteLine*"0nter n to display name and student num$er"+; 7onsole/)riteLine*"0nter t to enter t#e times ta$les/"+; 7onsole/)riteLine*"0nter e to e"it"+; userIn = 7onsole/5eadLine*+; if *userIn == "n"+ Name6et#*+; else if *userIn == "t"+ 1ime6et#*+; else if *userIn == "e"+ 7onsole/)riteLine *"0rror EHK is Invalid":userIn+; K K pu$lic static void Name6et#*+ E 7onsole/)riteLine*"Name:1#omas Anderson Vn2tudentB: !HHRXJIJI"+; K pu$lic static void 1ime6et#*+ E int "; int y;

int total; strin& userIn = "H"; 7onsole/)riteLine*";lease 0nter an Inte&er"+; userIn = 7onsole/5eadLine*+; y = 7onvert/1oInt!'*userIn+; for *" = ; " 8lt;= '; "MM+ E total = y G "; 7onsole/)riteLine*"EHK times E K is E'K": y: ": total+; K K I want to as% t#e user for t#e inter&er in t#e if statement and t#en pass it off to t#e met#od name 1ime6et# $ut i %eep &ettin& an error wit# t#e last else/ >ow do I do t#is, Answer :: I t#in% t#at t#e followin& does w#at you #ave in mind/ Always $e careful wit# your curly $races E and K/ If you write if *cond+ always start wit# E and K after t#e condition/ 1#e same for "else if *cond+": use E and K/ 2ame wit# w#ile *cond EK/ If you use t#e free ?isual 2tudio 0"press 'HHU from 6icrosoft: you will see t#e matc#in& parens or $races #i&#li&#ted/ 1#e code will also $e indented properly to reflect t#e lo&ic/ >ave fun wit# 7B= 33----------- $e&in namespace 7onsoleApplication!H E class ;ro&ram E static void 6ain*strin&PQ ar&s+ E strin& userIn = "H"; w#ile *userIn == "e"+ E 7onsole/)riteLine*";lease 2elect an 4ption"+; 7onsole/)riteLine*+; 7onsole/)riteLine*"0nter n to display name and student num$er"+; 7onsole/)riteLine*"0nter t to enter t#e times ta$les/"+; 7onsole/)riteLine*"0nter e to e"it"+; userIn = 7onsole/5eadLine*+; if *userIn == "n"+

E Name6et#*+; K else if *userIn == "t"+ E 1ime6et#*+; K else if *userIn == "e"+ E 7onsole/)riteLine*"0rror EHK is Invalid": userIn+; K K K pu$lic static void Name6et#*+ E 7onsole/)riteLine*"Name:1#omas Anderson Vn2tudentB: !HHRXJIJI"+; K pu$lic static void 1ime6et#*+ E int "; int y; int total; strin& userIn = "H"; 7onsole/)riteLine*";lease 0nter an Inte&er"+; userIn = 7onsole/5eadLine*+; y = 7onvert/1oInt!'*userIn+; for *" = ; " 8lt;= '; "MM+ E total = y G "; 7onsole/)riteLine*"EHK times E K is E'K": y: ": total+; K K K K 33----------------------- end //// 5ead 6ore I am tryin& to write a pro&ram t#at prompts J users to enter in t#eir names and a&es/ t#e names and a&es are t#en put into a set of arrays/ after t#e information #as $een entered/ t#e pro&ram displays t#e name of t#e oldest/

I realize t#at I could use -uite a $it of if t#en statements to &et my pro&ram to display t#e oldest persons name/ $ut t#ere #as to $e an easier way/ I %now I could use a met#od as well as a loop $ut I could not fi&ure it out #ow to do it/ please assist/ t#e code is listed///// usin& 2ystem; usin& 2ystem/7ollections/Aeneric; usin& 2ystem/Lin-; usin& 2ystem/1e"t; namespace 7onsoleApplication E class ;ro&ram E pu$lic static void 6ain*strin&PQ ar&s+ E intPQ a&enm$er = new intPJQ; strin&PQ a&et"t = new strin&PJQ; strin&PQ names.um$le = new strin&PJQ; 33information on t#e first person 7onsole/)riteLine*"F205 IN@456A1I4N"+; 7onsole/)riteLine*""+; 7onsole/)riteLine*"w#at is your name,"+; names.um$lePHQ = 7onsole/5eadLine*+; 7onsole/)riteLine*">ello EHK: w#at is your a&e,": names.um$lePHQ+; a&et"tPHQ = 7onsole/5eadLine*+; a&enm$erPHQ = 7onvert/1oInt!'*a&et"tPHQ+; 7onsole/)riteLine*"t#e first person to enter a name is EHK wit# an a&e of E K years": names.um$lePHQ: a&et"tPHQ+; 33 information for t#e second person 7onsole/)riteLine*""+; 7onsole/)riteLine*"F205 ' IN@456A1I4N"+; 7onsole/)riteLine*""+; 7onsole/)riteLine*"w#at is your name,"+; names.um$leP Q = 7onsole/5eadLine*+; 7onsole/)riteLine*">ello EHK: w#at is your a&e,": names.um$leP Q+; a&et"tP Q = 7onsole/5eadLine*+; a&enm$erP Q = 7onvert/1oInt!'*a&et"tP Q+;

7onsole/)riteLine*"t#e second person to enter a name is EHK wit# an a&e of E K years": names.um$leP Q: a&et"tP Q+; 33 information for t#e t#ird person 7onsole/)riteLine*""+; 7onsole/)riteLine*"F205 ! IN@456A1I4N"+; 7onsole/)riteLine*""+; 7onsole/)riteLine*"w#at is your name,"+; names.um$leP'Q = 7onsole/5eadLine*+; 7onsole/)riteLine*">ello EHK: w#at is your a&e,": names.um$leP'Q+; a&et"tP'Q = 7onsole/5eadLine*+; a&enm$erP'Q = 7onvert/1oInt!'*a&et"tP'Q+; 7onsole/)riteLine*"t#e t#ird person to enter a name is EHK wit# an a&e of E K years": names.um$leP'Q: a&et"tP'Q+; 33 information for t#e fourt# person 7onsole/)riteLine*""+; 7onsole/)riteLine*"F205 R IN@456A1I4N"+; 7onsole/)riteLine*""+; 7onsole/)riteLine*"w#at is your name,"+; names.um$leP!Q = 7onsole/5eadLine*+; 7onsole/)riteLine*">ello EHK: w#at is your a&e,": names.um$leP!Q+; a&et"tP!Q = 7onsole/5eadLine*+; a&enm$erP!Q = 7onvert/1oInt!'*a&et"tP!Q+; 7onsole/)riteLine*"t#e fourt# person to enter a name is EHK wit# an a&e of E K years": names.um$leP!Q: a&et"tP!Q+; 33 information for t#e fift# person 7onsole/)riteLine*""+; 7onsole/)riteLine*"F205 J IN@456A1I4N"+; 7onsole/)riteLine*""+; 7onsole/)riteLine*"w#at is your name,"+; names.um$lePRQ = 7onsole/5eadLine*+; 7onsole/)riteLine*">ello EHK: w#at is your a&e,": names.um$lePRQ+; a&et"tPRQ = 7onsole/5eadLine*+; a&enm$erPRQ = 7onvert/1oInt!'*a&et"tPRQ+; 7onsole/)riteLine*"t#e fift# person to enter a name is EHK wit# an a&e of E K years": names.um$lePRQ: a&et"tPRQ+; if *a&enm$erPHQ 8&t; a&enm$erP Q a&enm$erPHQ 8&t; a&enm$erP'Q a&enm$erPHQ 8&t; a&enm$erP!Q a&enm$erPHQ 8&t; a&enm$erPRQ+

E 7onsole/)riteLine*"EHK is t#e oldest": names.um$lePHQ+; K else if *a&enm$erP Q 8&t; a&enm$erPHQ a&enm$erP Q 8&t; a&enm$erP'Q a&enm$erP Q 8&t; a&enm$erP!Q a&enm$erP Q 8&t; a&enm$erPRQ+ E 7onsole/)riteLine*"EHK is t#e oldest": names.um$leP Q+; K else if *a&enm$erP'Q 8&t; a&enm$erP Q a&enm$erP'Q 8&t; a&enm$erPHQ a&enm$erP'Q 8&t; a&enm$erP!Q a&enm$erP'Q 8&t; a&enm$erPRQ+ E 7onsole/)riteLine*"EHK is t#e oldest": names.um$leP'Q+; K if *a&enm$erP!Q 8&t; a&enm$erP Q a&enm$erP!Q 8&t; a&enm$erP'Q a&enm$erP!Q 8&t; a&enm$erPHQ a&enm$erP!Q 8&t; a&enm$erPRQ+ E 7onsole/)riteLine*"EHK is t#e oldest": names.um$leP!Q+; K if *a&enm$erPRQ 8&t; a&enm$erP Q a&enm$erPRQ 8&t; a&enm$erP'Q a&enm$erPRQ 8&t; a&enm$erP!Q a&enm$erPRQ 8&t; a&enm$erPHQ+ E 7onsole/)riteLine*"EHK is t#e oldest": names.um$lePRQ+; K 7onsole/5eadLine*+; K Answer :: 6ore common and &eneric approac# would $e to write prompts and read input inside t#e loop/// loop *some condition+E incr7ounter*+; output*"0nter Fser EHK info///"+; readNourInput*+; K A&ain use t#e loop to &et your oldest user// loop *some condition+E incr7ounter*+; if *a&ePcounterQ 8&t; a&ePcounterM Q+E result = counter;

K K After t#is loop your result will contain an inde" of t#e oldest user in t#e array/// //// 5ead 6ore

29L7
TABLE OF CONTENTS INTRODUCTION .................................................................. ..................................... 4 1>0 29L7 )A105@ALL ////////////////////////////////////////////////////////////////////////// // R ALL4)09 ?A5IA1I4N2 ///////////////////////////////////////////////////////////////////////// ///// J 41>05 29L7 6490L2///////////////////////////////////////////////////////////////////////////// I 50@050N702 //////////////////////////////////////////////////////////////////////// /////////////////// L GENERIC STAGE ................................................................................. .................... 8 TI7T4@@ ;547022 ///////////////////////////////////////////////////////////////////////////// ////// U IN@456AL I105A1I4N ;547022 ///////////////////////////////////////////////////////////////// X @456AL I105A1I4N ;547022//////////////////////////////////////////////////////////////////// X IN-21AA0 A2202260N1 ;547022 /////////////////////////////////////////////////////////// H 21AA0 0DI1 ;547022 ////////////////////////////////////////////////////////////////////////////

SDLC STAGES ............................................................................... ....................... 12 4?05?I0) /////////////////////////////////////////////////////////////////////////// ////////////////// ' ;LANNINA 21AA0 ///////////////////////////////////////////////////////////////////////////////// // ! 50QFI5060N12 90@INI1I4N 21AA0////////////////////////////////////////////////////////// R 902IAN 21AA0////////////////////////////////////////////////////////////////////////////////// ///// I 90?0L4;60N1 21AA0 //////////////////////////////////////////////////////////////////////////// L IN10A5A1I4N 8 1021 21AA0/////////////////////////////////////////////////////////////////// U IN21ALLA1I4N 8 A770;1AN70 21AA0////////////////////////////////////////////////////// X CONCLUSION....................................................................... .................................. 20 274;0 50215I71I4N /////////////////////////////////////////////////////////////////////// /////// 'H ;54A5022I?0 0N>AN7060N1///////////////////////////////////////////////////////////////// 'H ;50-90@IN09 215F71F50 ////////////////////////////////////////////////////////////////////// ' IN75060N1AL ;LANNINA///////////////////////////////////////////////////////////////////////// ' 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd R INTRODUCTION 1#is document descri$es t#e 2oftware 9evelopment Life7ycle *29L7+ for small to medium data$ase application development efforts/ 1#is c#apter presents an

overview of t#e 29L7: alternate lifecycle models: and associated references/ 1#e followin& c#apter descri$es t#e internal processes t#at are common across all sta&es of t#e 29L7: and t#e t#ird c#apter descri$es t#e inputs: outputs: and processes of eac# sta&e/ @inally: t#e conclusion descri$es t#e four core concepts t#at form t#e $asis of t#is 29L7/ THE SDLC WATERFALL 2mall to medium data$ase software pro.ects are &enerally $ro%en down into si" sta&es: ;ro.ect ;lannin& 5e-uirements 9efinition 9esi&n 9evelopment Inte&ration 8 1est Installation 8 Acceptance 1#e relations#ip of eac# sta&e to t#e ot#ers can $e rou&#ly descri$ed as a waterfall: w#ere t#e outputs from a specific sta&e serve as t#e initial inputs for t#e followin& sta&e/ 9urin& eac# sta&e: additional information is &at#ered or developed: com$ined wit# t#e inputs: and used to produce t#e sta&e delivera$les/ It is important to note t#at t#e additional information is restricted in scope; Ynew ideasZ t#at would ta%e 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd J t#e pro.ect in directions not anticipated $y t#e initial set of #i&#level re-uirements are not incorporated into t#e pro.ect/ 5at#er: ideas for new

capa$ilities or features t#at are out-of-scope are preserved for later consideration/ After t#e pro.ect is completed: t#e ;rimary 9eveloper 5epresentative *;95+ and ;rimary 0nd-Fser 5epresentative *;05+: in concert wit# ot#er customer and development team personnel develop a list of recommendations for en#ancement of t#e current software/ PROTOTYPES 1#e software development team: to clarify re-uirements and3or desi&n elements: may &enerate moc%ups and prototypes of screens: reports: and processes/ Alt#ou&# some of t#e prototypes may appear to $e very su$stantial: t#ey<re &enerally similar to a movie set: everyt#in& loo%s &ood from t#e front $ut t#ere<s not#in& in t#e $ac%/ )#en a prototype is &enerated: t#e developer produces t#e minimum amount of code necessary to clarify t#e re-uirements or desi&n elements under consideration/ No effort is made to comply wit# codin& standards: provide ro$ust error mana&ement: or inte&rate wit# ot#er data$ase ta$les or modules/ As a result: it is &enerally more e"pensive to retrofit a prototype wit# t#e necessary elements to produce a production module t#en it is to develop t#e module from scratc# usin& t#e final system desi&n document/ @or t#ese reasons: prototypes are never intended for $usiness use: and are &enerally crippled in one way or anot#er to prevent t#em from $ein& mista%enly used as production modules $y end-users/ ALLOWED VARIATIONS In some cases: additional information is made availa$le to t#e development team

t#at re-uires c#an&es in t#e outputs of previous sta&es/ In t#is case: t#e development effort is usually suspended until t#e c#an&es can $e reconciled wit# t#e current desi&n: and t#e new results are passed down t#e waterfall until t#e pro.ect reac#es t#e point w#ere it was suspended/ 1#e ;05 and ;95 may: at t#eir discretion: allow t#e development effort to continue w#ile previous sta&e delivera$les are updated in cases w#ere t#e impacts are minimal and strictly limited in scope/ In t#is case: t#e c#an&es must $e carefully trac%ed to ma%e sure all t#eir impacts are appropriately #andled/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd I OTHER SDLC MODELS 1#e waterfall model is one of t#e t#ree most commonly cited lifecycle models/ 4t#ers include t#e 2piral model and t#e 5apid Application 9evelopment *5A9+ model: often referred to as t#e ;rototypin& model/ SPIRAL LIFECYCLE 1#e spiral model starts wit# an initial pass t#rou&# a standard waterfall lifecycle: usin& a su$set of t#e total re-uirements to develop a ro$ust prototype/ After an evaluation period: t#e cycle is initiated a&ain: addin& new functionality and releasin& t#e ne"t prototype/ 1#is process continues: wit# t#e prototype $ecomin& lar&er and lar&er wit# eac# iteration/ >ence: t#e Yspiral/Z 1#e t#eory is t#at t#e set of re-uirements is #ierarc#ical in nature: wit# additional functionality $uildin& on t#e first efforts/ 1#is is a sound practice for systems w#ere t#e entire pro$lem is well defined from t#e start: suc# as modelin& and

simulatin& software/ Cusiness-oriented data$ase pro.ects do not en.oy t#is advanta&e/ 6ost of t#e functions in a data$ase solution are essentially independent of one anot#er: alt#ou&# t#ey may ma%e use of common data/ As a result: t#e prototype suffers from t#e same flaws as t#e prototypin& lifecycle descri$ed $elow/ @or t#is reason: t#e software development team #as decided a&ainst t#e use of t#e spiral lifecycle for data$ase pro.ects/ RAPID APPLICATION DEVELOPMENT (RAD) / PROTOTYPING LIFECYCLE 5A9 is: in essence: t#e Ytry $efore you $uyZ approac# to software development/ 1#e t#eory is t#at end users can produce $etter feed$ac% w#en e"aminin& a live system: as opposed to wor%in& strictly wit# documentation/ 5A9$ased development cycles #ave resulted in a lower level of re.ection w#en t#e application is placed into production: $ut t#is success most often comes at t#e e"pense of a dramatic overruns in pro.ect costs and sc#edule/ 1#e 5A9 approac# was made possi$le wit# si&nificant advances in software development environments to allow rapid &eneration and c#an&e of screens and ot#er user interface features/ 1#e end user is allowed to wor% wit# t#e screens online: as if in a production environment/ 1#is leaves little to t#e ima&ination: and a si&nificant num$er of errors are cau&#t usin& t#is process/ 1#e down side to 5A9 is t#e propensity of t#e end user to force scope creep into t#e development effort/ 2ince it seems so easy for t#e developer to produce t#e $asic screen: it must $e .ust as easy to add a wid&et or two/ In most 5A9 lifecycle failures: t#e end users and developers were cau&#t in an unendin& cycle of

en#ancements: wit# t#e users as%in& for more and more and t#e developers tryin& to satisfy t#em/ 1#e participants lost si&#t of t#e &oal of producin& a $asic: useful system in favor of t#e siren son& of &litterin& perfection/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd L @or t#is reason: t#e software development team does not use a pure 5A9 approac#: $ut instead $lends limited prototypin& in wit# re-uirements and desi&n development durin& a conventional waterfall lifecycle/ 1#e prototypes developed are specifically focused on a su$set of t#e application: and do not provide an inte&rated interface/ 1#e prototypes are used to validate re-uirements and desi&n elements: and t#e development of additional re-uirements or t#e addition of user interface options not readily supported $y t#e development environment is actively discoura&ed/ REFERENCES 1#e followin& standards were used as &uides to develop t#is 29L7 description/ 1#e standards were reviewed and tailored to fit t#e specific re-uirements of small data$ase pro.ects/ [ AN2I3I000 H'U: 2tandard for 2oftware 5eviews and Audits [ AN2I3I000 HJU/ : 2tandard for 2oftware ;ro.ect 6ana&ement ;lans [ AN2I3I000 HLR: 2tandard for 2oftware Lifecycle ;rocesses [ 20I3766: 2oftware ;ro.ect ;lannin& Tey ;rocess Area 1#is document ma%es e"tensive use of terminolo&y t#at is specific to software en&ineerin&/ A &lossary of standard software en&ineerin& terms is availa$le online at: [ #ttp:33www/elucidata/or&3refs3se&lossary/pdf 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H'

@or small to medium data$ase applications ?ersion /Hd U GENERIC STAGE 0ac# of t#e sta&es of t#e development lifecycle follow five standard internal processes/ 1#ese processes esta$lis# a pattern of communication and documentation intended to familiarize all participants wit# t#e current situation: and t#us minimize ris% to t#e current pro.ect plan/ 1#is &eneric sta&e description is provided to avoid repetitive descriptions of t#ese internal processes in eac# of t#e followin& software lifecycle sta&e descriptions/ 1#e five standard processes are Tic%off: Informal iteration: @ormal iteration: In-sta&e assessment: and 2ta&e e"it: !"#$%% P&$"'(( I)%$&*+, I-'&+-!$) F$&*+, I-'&+-!$) I).S-+/' A(('((*')S-+/' E0!29L7 2ta&e IC OFF PROCESS 0ac# sta&e is initiated $y a %ic%off meetin&: w#ic# can $e conducted eit#er in person: or $y )e$ teleconference/ 1#e purpose of t#e %ic%off meetin& is to review t#e output of t#e previous sta&e: &o over any additional inputs re-uired $y t#at particular sta&e: e"amine t#e anticipated activities and re-uired outputs of t#e current sta&e: review t#e current pro.ect sc#edule: and review any open issues/

1#e ;95 is responsi$le for preparin& t#e a&enda and materials to $e presented at t#is meetin&/ All pro.ect participants are invited to attend t#e %ic%off meetin& for eac# sta&e/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd X INFORMAL ITERATION PROCESS 6ost of t#e creative wor% for a sta&e occurs #ere/ ;articipants wor% to&et#er to &at#er additional information and refine sta&e inputs into draft delivera$les/ Activities of t#is sta&e may include interviews: meetin&s: t#e &eneration of prototypes: and electronic correspondence/ All of t#ese communications are deemed informal: and are not recorded as minutes: documents of record: controlled software: or official memoranda/ 1#e intent #ere is to encoura&e: rat#er t#an in#i$it t#e communication process/ 1#is process concludes w#en t#e ma.ority of participants a&ree t#at t#e wor% is su$stantially complete and it is time to &enerate draft delivera$les for formal review and comment/ FORMAL ITERATION PROCESS In t#is process: draft delivera$les are &enerated for formal review and comment/ 0ac# delivera$le was introduced durin& t#e %ic%off process: and is intended to satisfy one or more outputs for t#e current sta&e/ 0ac# draft delivera$le is &iven a version num$er and placed under confi&uration mana&ement control/ As participants review t#e draft delivera$les: t#ey are responsi$le for reportin& errors found and concerns t#ey may #ave to t#e ;95 via electronic mail/ 1#e

;95 in turn consolidates t#ese reports into a series of issues associated wit# a specific version of a delivera$le/ 1#e person in c#ar&e of developin& t#e delivera$le wor%s to resolve t#ese issues: t#en releases anot#er version of t#e delivera$le for review/ 1#is process iterates until all issues are resolved for eac# delivera$le/ 1#ere are no formal c#ec% off 3 si&nature forms for t#is part of t#e process/ 1#e intent #ere is to encoura&e review and feed$ac%/ At t#e discretion of t#e ;95 and ;05: certain issues may $e reserved for resolution in later sta&es of t#e development lifecycle/ 1#ese issues are disassociated from t#e specific delivera$le: and ta&&ed as "open issues/" 4pen issues are reviewed durin& t#e %ic%off meetin& for eac# su$se-uent sta&e/ 4nce all issues a&ainst a delivera$le #ave $een resolved or moved to open status: t#e final *release+ draft of t#e delivera$le is prepared and su$mitted to t#e ;95/ )#en final drafts of all re-uired sta&e outputs #ave $een received: t#e ;95 reviews t#e final suite of delivera$les: reviews t#e amount of la$or e"pended a&ainst t#is sta&e of t#e pro.ect: and uses t#is information to update t#e pro.ect plan/ 1#e pro.ect plan update includes a detailed list of tas%s: t#eir sc#edule and estimated level of effort for t#e ne"t sta&e/ 1#e sta&es followin& t#e ne"t sta&e 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd H *out sta&es+ in t#e pro.ect plan are updated to include a #i&# level estimate of sc#edule and level of effort: $ased on current pro.ect e"perience/

4ut sta&es are maintained at a #i&# level in t#e pro.ect plan: and are included primarily for informational purposes; direct e"perience #as s#own t#at it is very difficult to accurately plan detailed tas%s and activities for out sta&es in a software development lifecycle/ 1#e updated pro.ect plan and sc#edule is a standard delivera$le for eac# sta&e of t#e pro.ect/ 1#e ;95 t#en circulates t#e updated pro.ect plan and sc#edule for review and comment: and iterates t#ese documents until all issues #ave $een resolved or moved to open status/ 4nce t#e pro.ect plan and sc#edule #as $een finalized: all final delivera$les for t#e current sta&e are made availa$le to all pro.ect participants: and t#e ;95 initiates t#e ne"t process/ IN.STAGE ASSESSMENT PROCESS 1#is is t#e formal -uality assurance review process for eac# sta&e/ In a small software development pro.ect: t#e delivera$les for eac# sta&e are &enerally small enou&# t#at it is not cost effective to review t#em for compliance wit# -uality assurance standards $efore t#e delivera$les #ave $een fully developed/ As a result: only one in-sta&e assessment is sc#eduled for eac# sta&e/ 1#is process is initiated w#en t#e ;95 sc#edules an in-sta&e assessment wit# t#e independent Quality Assurance 5eviewer *QA5+: a selected 0nduser 5eviewer *usually a 2u$.ect 6atter 0"pert+: and a selected 1ec#nical 5eviewer/ 1#ese reviewers formally review eac# delivera$le to ma%e .ud&ments as to t#e -uality and validity of t#e wor% product: as well as its compliance wit# t#e standards defined for delivera$les of t#at class/ 9elivera$le class standards are

defined in t#e software -uality assurance section of t#e pro.ect plan/ 1#e 0nd-user 5eviewer is tas%ed wit# verifyin& t#e completeness and accuracy of t#e delivera$le in terms of desired software functionality/ 1#e 1ec#nical 5eviewer determines w#et#er t#e delivera$le contains complete and accurate tec#nical information/ 1#e QA 5eviewer is tas%ed solely wit# verifyin& t#e completeness and compliance of t#e delivera$le a&ainst t#e associated delivera$le class standard/ 1#e QA5 may ma%e recommendations: $ut cannot raise formal issues t#at do not relate to t#e delivera$le standard/ 0ac# reviewer follows a formal c#ec%list durin& t#eir review: indicatin& t#eir level of concurrence wit# eac# review item in t#e c#ec%list/ 5efer to t#e software -uality assurance plan for t#is pro.ect for delivera$le class standards and associated review c#ec%lists/ A delivera$le is considered to $e accepta$le w#en 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd eac# reviewer indicates su$stantial or unconditional concurrence wit# t#e content of t#e delivera$le and t#e review c#ec%list items/ Any issues raised $y t#e reviewers a&ainst a specific delivera$le will $e lo&&ed and relayed to t#e personnel responsi$le for &eneration of t#e delivera$le/ 1#e revised delivera$le will t#en $e released to pro.ect participants for anot#er formal review iteration/ 4nce all issues for t#e delivera$le #ave $een addressed: t#e delivera$le will $e resu$mitted to t#e reviewers for reassessment/ 4nce all t#ree

reviewers #ave indicated concurrence wit# t#e delivera$le: t#e ;95 will release a final in-sta&e assessment report and initiate t#e ne"t process/ STAGE E1IT PROCESS 1#e sta&e e"it is t#e ve#icle for securin& t#e concurrence of principal pro.ect participants to continue wit# t#e pro.ect and move forward into t#e ne"t sta&e of development/ 1#e purpose of a sta&e e"it is to allow all personnel involved wit# t#e pro.ect to review t#e current pro.ect plan and sta&e delivera$les: provide a forum to raise issues and concerns: and to ensure an accepta$le action plan e"ists for all open issues/ 1#e process $e&ins w#en t#e ;95 notifies all pro.ect participants t#at all delivera$les for t#e current sta&e #ave $een finalized and approved via t#e In2ta&e Assessment report/ 1#e ;95 t#en sc#edules a sta&e e"it review wit# t#e pro.ect e"ecutive sponsor and t#e ;05 as a minimum/ All interested participants are free to attend t#e review as well/ 1#is meetin& may $e conducted in person or via )e$ teleconference/ 1#e sta&e e"it process ends wit# t#e receipt of concurrence from t#e desi&nated approvers to proceed to t#e ne"t sta&e/ 1#is is &enerally accomplis#ed $y enterin& t#e minutes of t#e e"it review as a formal document of record: wit# eit#er p#ysical or di&ital si&natures of t#e pro.ect e"ecutive sponsor: t#e ;05: and t#e ;95/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd ' SDLC STAGES OVERVIEW

1#e si" sta&es of t#e 29L7 are desi&ned to $uild on one anot#er: ta%in& t#e outputs from t#e previous sta&e: addin& additional effort: and producin& results t#at levera&e t#e previous effort and are directly tracea$le to t#e previous sta&es/ 1#is top-down approac# is intended to result in a -uality product t#at satisfies t#e ori&inal intentions of t#e customer/ ;ro.ect ;lannin& 5e-uirements 9efinition 9esi&n 9evelopment Inte&ration 8 1est Installation 8 Acceptance 1oo many software development efforts &o awry w#en t#e development team and customer personnel &et cau&#t up in t#e possi$ilities of automation/ Instead of focusin& on #i&# priority features: t#e team can $ecome mired in a sea of Ynice to #aveZ features t#at are not essential to solve t#e pro$lem: $ut in t#emselves are #i&#ly attractive/ 1#is is t#e root cause of a lar&e percenta&e of failed and3or a$andoned development efforts: and is t#e primary reason t#e development team utilizes t#e )aterfall 29L7/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd ! PLANNING STAGE 1#e plannin& sta&e esta$lis#es a $ird<s eye view of t#e intended software product: and uses t#is to esta$lis# t#e $asic pro.ect structure: evaluate feasi$ility and ris%s

associated wit# t#e pro.ect: and descri$e appropriate mana&ement and tec#nical approac#es/ Application Aoals ;lannin& 2ta&e ;ro.ect ;lan 8 2c#edule 2oftware Quality Assurance ;lan 2oftware 7onfi&uration 6ana&ement ;lan Lifecycle 6odel 1#e most critical section of t#e pro.ect plan is a listin& of #i&#level product re-uirements: also referred to as &oals/ All of t#e software product re-uirements to $e developed durin& t#e re-uirements definition sta&e flow from one or more of t#ese &oals/ 1#e minimum information for eac# &oal consists of a title and te"tual description: alt#ou&# additional information and references to e"ternal documents may $e included/ 1#e outputs of t#e pro.ect plannin& sta&e are t#e confi&uration mana&ement plan: t#e -uality assurance plan: and t#e pro.ect plan and sc#edule: wit# a detailed listin& of sc#eduled activities for t#e upcomin& 5e-uirements sta&e: and #i&#level estimates of effort for t#e out sta&es/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd R RE2UIREMENTS DEFINITION STAGE 1#e re-uirements &at#erin& process ta%es as its input t#e &oals identified in t#e

#i&#-level re-uirements section of t#e pro.ect plan/ 0ac# &oal will $e refined into a set of one or more re-uirements/ 1#ese re-uirements define t#e ma.or functions of t#e intended application: define operational data areas and reference data areas: and define t#e initial data entities/ 6a.or functions include critical processes to $e mana&ed: as well as mission critical inputs: outputs and reports/ A user class #ierarc#y is developed and associated wit# t#ese ma.or functions: data areas: and data entities/ 0ac# of t#ese definitions is termed a 5e-uirement/ 5e-uirements are identified $y uni-ue re-uirement identifiers and: at minimum: contain a re-uirement title and te"tual description/ Fpdated ;ro.ect ;lan 8 2c#edule 5e-uirements 1racea$ility 6atri" 5e-uirements 9efinition 2ta&e 5e-uirements 9ocument >i&#-Level 5e-uirements *;ro.ect ;lan+ 1#ese re-uirements are fully descri$ed in t#e primary delivera$les for t#is sta&e: t#e 5e-uirements 9ocument and t#e 5e-uirements 1racea$ility 6atri" *516+/ t#e re-uirements document contains complete descriptions of eac# re-uirement: includin& dia&rams and references to e"ternal documents as necessary/ Note t#at

detailed listin&s of data$ase ta$les and fields are not included in t#e re-uirements document/ 1#e title of eac# re-uirement is also placed into t#e first version of t#e 516: alon& wit# t#e title of eac# &oal from t#e pro.ect plan/ 1#e purpose of t#e 516 is to s#ow t#at t#e product components developed durin& eac# sta&e of t#e software development lifecycle are formally connected to t#e components developed in prior sta&es/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd J In t#e re-uirements sta&e: t#e 516 consists of a list of #i&#-level re-uirements: or &oals: $y title: wit# a listin& of associated re-uirements for eac# &oal: listed $y re-uirement title/ In t#is #ierarc#ical listin&: t#e 516 s#ows t#at eac# re-uirement developed durin& t#is sta&e is formally lin%ed to a specific product &oal/ In t#is format: eac# re-uirement can $e traced to a specific product &oal: #ence t#e term requirements traceability/ 1#e outputs of t#e re-uirements definition sta&e include t#e re-uirements document: t#e 516: and an updated pro.ect plan/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd I DESIGN STAGE 1#e desi&n sta&e ta%es as its initial input t#e re-uirements identified in t#e approved re-uirements document/ @or eac# re-uirement: a set of one or more desi&n elements will $e produced as a result of interviews: wor%s#ops: and3or prototype efforts/

9esi&n elements descri$e t#e desired software features in detail: and &enerally include functional #ierarc#y dia&rams: screen layout dia&rams: ta$les of $usiness rules: $usiness process dia&rams: pseudocode: and a complete entity-relations#ip dia&ram wit# a full data dictionary/ 1#ese desi&n elements are intended to descri$e t#e software in sufficient detail t#at s%illed pro&rammers may develop t#e software wit# minimal additional input/ Fpdated ;ro.ect ;lan 8 2c#edule Fpdated 5e-uirements 1racea$ility 6atri" 9esi&n 2ta&e 5e-uirements 9ocument 9esi&n 9ocument )#en t#e desi&n document is finalized and accepted: t#e 516 is updated to s#ow t#at eac# desi&n element is formally associated wit# a specific re-uirement/ 1#e outputs of t#e desi&n sta&e are t#e desi&n document: an updated 516: and an updated pro.ect plan/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd L DEVELOPMENT STAGE 1#e development sta&e ta%es as its primary input t#e desi&n elements descri$ed in t#e approved desi&n document/ @or eac# desi&n element: a set of one or more software artifacts will $e produced/ 2oftware artifacts include $ut are not limited

to menus: dialo&s: data mana&ement forms: data reportin& formats: and specialized procedures and functions/ Appropriate test cases will $e developed for eac# set of functionally related software artifacts: and an online #elp system will $e developed to &uide users in t#eir interactions wit# t#e software/ Fpdated ;ro.ect ;lan 8 2c#edule Fpdated 5e-uirements 1racea$ility 6atri" 9evelopment 2ta&e 9esi&n 9ocument 4nline >elp Implementation 6ap 1est ;lan 2oftware 1#e 516 will $e updated to s#ow t#at eac# developed artifact is lin%ed to a specific desi&n element: and t#at eac# developed artifact #as one or more correspondin& test case items/ At t#is point: t#e 516 is in its final confi&uration/ 1#e outputs of t#e development sta&e include a fully functional set of software t#at satisfies t#e re-uirements and desi&n elements previously documented: an online #elp system t#at descri$es t#e operation of t#e software: an implementation map t#at identifies t#e primary code entry points for all ma.or system functions: a test plan t#at descri$es t#e test cases to $e used to validate t#e correctness and

completeness of t#e software: an updated 516: and an updated pro.ect plan/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd U INTEGRATION 3 TEST STAGE 9urin& t#e inte&ration and test sta&e: t#e software artifacts: online #elp: and test data are mi&rated from t#e development environment to a separate test environment/ At t#is point: all test cases are run to verify t#e correctness and completeness of t#e software/ 2uccessful e"ecution of t#e test suite confirms a ro$ust and complete mi&ration capa$ility/ 9urin& t#is sta&e: reference data is finalized for production use and production users are identified and lin%ed to t#eir appropriate roles/ 1#e final reference data *or lin%s to reference data source files+ and production user list are compiled into t#e ;roduction Initiation ;lan/ Fpdated ;ro.ect ;lan 8 2c#edule Inte&rated 2oftware Inte&ration 8 1est 2ta&e 4nline >elp Implementation 2oftware 6ap 1est ;lan 4nline >elp ;roduction Initiation ;lan Acceptance ;lan Implementation 6ap

1#e outputs of t#e inte&ration and test sta&e include an inte&rated set of software: an online #elp system: an implementation map: a production initiation plan t#at descri$es reference data and production users: an acceptance plan w#ic# contains t#e final suite of test cases: and an updated pro.ect plan/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd X INSTALLATION 3 ACCEPTANCE STAGE 9urin& t#e installation and acceptance sta&e: t#e software artifacts: online #elp: and initial production data are loaded onto t#e production server/ At t#is point: all test cases are run to verify t#e correctness and completeness of t#e software/ 2uccessful e"ecution of t#e test suite is a prere-uisite to acceptance of t#e software $y t#e customer/ After customer personnel #ave verified t#at t#e initial production data load is correct and t#e test suite #as $een e"ecuted wit# satisfactory results: t#e customer formally accepts t#e delivery of t#e software/ Arc#ived ;ro.ect ;lan 8 2c#edule Inte&rated 2oftware Installation 8 Acceptance 2ta&e 4nline >elp ;roduction Initiation ;lan Acceptance ;lan Implementation 6ap

Arc#ived 2oftware Artifacts 7ompleted Acceptance 1est 7ustomer Acceptance 6emorandum ;roduction 2oftware 1#e primary outputs of t#e installation and acceptance sta&e include a production application: a completed acceptance test suite: and a memorandum of customer acceptance of t#e software/ @inally: t#e ;95 enters t#e last of t#e actual la$or data into t#e pro.ect sc#edule and loc%s t#e pro.ect as a permanent pro.ect record/ At t#is point t#e ;95 "loc%s" t#e pro.ect $y arc#ivin& all software items: t#e implementation map: t#e source code: and t#e documentation for future reference/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd 'H CONCLUSION 1#e structure imposed $y t#is 29L7 is specifically desi&ned to ma"imize t#e pro$a$ility of a successful software development effort/ 1o accomplis# t#is: t#e 29L7 relies on four primary concepts: [ 2cope 5estriction [ ;ro&ressive 0n#ancement [ ;re-defined 2tructure [ Incremental ;lannin& 1#ese four concepts com$ine to miti&ate t#e most common ris%s associated wit# software development efforts/ SCOPE RESTRICTION 1#e pro.ect scope is esta$lis#ed $y t#e contents of #i&#-level re-uirements: also

%nown as &oals: incorporated into t#e pro.ect plan/ 1#ese &oals are su$se-uently refined into re-uirements: t#en desi&n elements: t#en software artifacts/ 1#is #ierarc#y of &oals: re-uirements: elements: and artifacts is documented in a 5e-uirements 1racea$ility 6atri" *516+/ 1#e 516 serves as a control element to restrict t#e pro.ect to t#e ori&inally defined scope/ ;ro.ect participants are restricted to addressin& t#ose re-uirements: elements: and artifacts t#at are directly tracea$le to product &oals/ 1#is prevents t#e su$stantial occurrence of scope creep: w#ic# is t#e leadin& cause of software pro.ect failure/ PROGRESSIVE ENHANCEMENT 0ac# sta&e of t#e 29L7 ta%es t#e outputs of t#e previous sta&e as its initial inputs/ Additional information is t#en &at#ered: usin& met#ods specific to eac# sta&e/ As a result: t#e outputs of t#e previous sta&e are pro&ressively en#anced wit# additional information/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd ' Cy esta$lis#in& a pattern of en#ancin& prior wor%: t#e pro.ect precludes t#e insertion of additional re-uirements in later sta&es/ New re-uirements are formally set aside $y t#e development team for later reference: rat#er t#an &oin& t#rou&# t#e effort of $ac%in& t#e new re-uirements into prior sta&e outputs and reconcilin& t#e impacts of t#e additions/ As a result: t#e pro.ect participants maintain a ti&#ter focus on t#e ori&inal product &oals: minimize t#e potential for scope creep: and s#ow a preference for deferrin& out-of-scope en#ancements:

rat#er t#an attemptin& to incorporate t#em into t#e current effort/ PRE.DEFINED STRUCTURE 0ac# sta&e #as a pre-defined set of standard processes: suc# as Informal Iteration and In-sta&e Assessment/ 1#e pro.ect participants -uic%ly &row accustomed to t#is repetitive pattern of effort as t#ey pro&ress from sta&e to sta&e/ In essence: t#ese processes esta$lis# a common r#yt#m: or culture: for t#e pro.ect/ 1#is pre-defined structure for eac# sta&e allows t#e pro.ect participants to wor% in a familiar environment: w#ere t#ey %now w#at #appened in t#e past: w#at is #appenin& in t#e present: and #ave accurate e"pectations for w#at is comin& in t#e near future/ 1#is en&enders a #i&# comfort level: w#ic# in turn &enerates a #i&#er level of cooperation $etween participants/ ;articipants tend to provide needed information or feed$ac% in a more timely manner: and wit# fewer miscommunications/ 1#is timely response pattern and level of communications -uality $ecomes fairly predicta$le: en#ancin& t#e a$ility of t#e ;95 to forecast t#e level of effort for future sta&es/ INCREMENTAL PLANNING 1#e entire intent of incremental plannin& is to minimize surprises: increase accuracy: provide notification of si&nificant deviations from plan as early in t#e 29L7 as possi$le: and coordinate pro.ect forecasts wit# t#e most current availa$le information/ In t#is 29L7: t#e pro.ect plannin& effort is restricted to &at#erin& metrics on t#e current sta&e: plannin& t#e ne"t sta&e in detail: and restrictin& t#e plannin& of later sta&es: also %nown as 4ut 2ta&es: to a very #i&# level/ 1#e pro.ect plan is updated

as eac# sta&e is completed; current costs and sc#edule to date are com$ined wit# refined estimates for activities and level of effort for t#e ne"t sta&e/ 1#e activities and tas%s of t#e ne"t sta&e are defined only after t#e delivera$les for t#e current sta&e are complete and t#e current metrics are availa$le/ 1#is allows t#e planner to produce a #i&#ly accurate plan for t#e ne"t sta&e/ 9irect e"perience #as s#own t#at it is very difficult to develop more t#an a cursory estimate of anticipated structure and level of effort for out sta&es/ 1#e 2oftware 9evelopment Life 7ycle *29L7+ 50@-H-H' @or small to medium data$ase applications ?ersion /Hd '' 1#e estimates for out sta&es are included to allow a rou&# estimate of ultimate pro.ect cost and sc#edule/ 1#e estimates for out sta&es are reviewed and revised as eac# sta&e is e"ited/ As a result: t#e total pro.ect estimate $ecomes more and more accurate over time/ As eac# sta&e is e"ited: t#e updated pro.ect plan and sc#edule is presented to t#e customer/ 1#e customer is apprised of pro.ect pro&ress: cost and sc#edule: and t#e actual metrics are compared a&ainst t#e estimates/ 1#is &ives t#e customer t#e opportunity to confirm t#e pro.ect is on trac%: or ta%e corrective action as necessary/ 1#e customer is never left Yin t#e dar%Z a$out t#e pro&ress of t#e pro.ect/

You might also like