0% found this document useful (0 votes)
207 views46 pages

LINQ Interview Questions and Answers

The document discusses LINQ (Language Integrated Query) interview questions and answers. It provides definitions of LINQ, compares LINQ to stored procedures, and discusses pros and cons of LINQ. It also addresses disadvantages of LINQ over stored procedures and advantages of LINQ over stored procedures. Specific questions are answered regarding LINQ, data sources, debugging LINQ queries, and capitalizing user names retrieved from the identity store.

Uploaded by

AnilKumar Devaki
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
207 views46 pages

LINQ Interview Questions and Answers

The document discusses LINQ (Language Integrated Query) interview questions and answers. It provides definitions of LINQ, compares LINQ to stored procedures, and discusses pros and cons of LINQ. It also addresses disadvantages of LINQ over stored procedures and advantages of LINQ over stored procedures. Specific questions are answered regarding LINQ, data sources, debugging LINQ queries, and capitalizing user names retrieved from the identity store.

Uploaded by

AnilKumar Devaki
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 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