Software Design Strategies Software design is a process to conceptualize the software requirements into software implementation. Software design takes the user requirements as challenges and tries to find optimum solution. While the software is being conceptualized, a plan is chalked out to find the best possible design for implementing the intended solution. There are multiple variants of software design. Let us stud them briefl!
Structured Design Struct Stru ctur ured ed desi design gn is a co conc ncep eptu tual aliza izati tion on of prob proble lem m into into se seve vera rall well well"" organized elements of solution. #t is basicall concerned with the solution design. $enefit of structured design is, it gives better understanding of how the problem is being solved. Structured design also makes it simpler for designer to concentrate on the problem more accuratel. accuratel. Structured design is mostl based on %divide and conquer& strateg where a problem is broken into several small problems and each small problem is individuall solved until the whole problem is solved. The small pieces pieces of proble problem m are solved solved b means means of sol soluti ution on module modules. s. Structured design emphasis that these modules be well organized in order to achieve precise solution. These These module modules s are arrang arranged ed in hierar hierarch ch.. The The commun communica icate te with with each each other. ' good structured des design ign alwa lwas follows some rules for communication among multiple modules, namel " Cohesion " Cohesion " grouping of all functionall related elements. Coupling " Coupling " communication between different modules. ' good structured design has high cohesion and low coupling arrangements.
(unction )riented Design #n function"orient function"oriented ed design, the sstem sstem is comprised of man smaller sub" sstem sstems s known known as functi functions ons.. These These functi functions ons are capabl capable e of perfor performin ming g significant task in the sstem. The sstem is considered as top view of all functions. (uncti (unction on orient oriented ed design design inheri inherits ts some some proper propertie ties s of struct structure ured d design design where divide and conquer methodolog is used.
This design mechanism divides the whole sstem into smaller functions, which provides means of abstraction b concealing the information and their operation.. These functional modules can share information among themselves b means of information passing and using information available globall. 'nother characteristic of functions is that when a program calls a function, the function changes the state of the program, which sometimes is not acceptable b other modules. (unction oriented design works well where the sstem state does not matter and program*functions work on input rather than on a state.
Design +rocess •
The whole sstem is seen as how data flows in the sstem b means of data flow diagram.
•
D(D depicts how functions changes data and state of entire sstem.
•
The entire sstem is logicall broken down into smaller units known as functions on the basis of their operation in the sstem.
•
ach function is then described at large.
)b-ect )riented Design )b-ect oriented design works around the entities and their characteristics instead of functions involved in the software sstem. This design strategies focuses on entities and its characteristics. The whole concept of software solution revolves around the engaged entities. Let us see the important concepts of )b-ect )riented Design! •
Objects - 'll entities involved in the solution design are known as ob-ects. (or eample, person, banks,
compan and customers are treated as ob-ects. ver entit has some attributes associated to it and has some methods to perform on the attributes. •
Classes - ' class is a generalized description of an ob-ect. 'n ob-ect is an instance of a class. /lass
defines all the attributes, which an ob-ect can have and methods, which defines the functionalit of the ob-ect. #n the solution design, attributes are stored as variables and functionalities are defined b means of methods or procedures.
•
Encapsulation - #n ))D, the attributes 0data variables1 and methods 0operation on the data1 are
bundled together is called encapsulation. ncapsulation not onl bundles important information of an ob-ect together, but also restricts access of the data and methods from the outside world. This is called information hiding.
•
Inheritance - ))D allows similar classes to stack up in hierarchical manner where the lower or sub"
classes can import, implement and re"use allowed variables and methods from their immediate super classes. This propert of ))D is known as inheritance. This makes it easier to define specific class and to create generalized classes from specific ones.
•
Polymorphism - ))D languages provide a mechanism where methods performing similar tasks but var
in arguments, can be assigned same name. This is called polmorphism, which allows a single interface performing tasks for different tpes. Depending upon how the function is invoked, respective portion of the code gets eecuted.
Design +rocess Software design process can be perceived as series of well"defined steps. Though it varies according to design approach 0function oriented or ob-ect oriented, et #t ma have the following steps involved! •
' solution design is created from requirement or previous used sstem and*or sstem sequence diagram.
•
)b-ects are identified and grouped into classes on behalf of similarit in attribute characteristics.
•
/lass hierarch and relation among them is defined.
•
'pplication framework is defined.
Software Design 'pproaches 2ere are two generic approaches for software designing!
Top Down Design We know that a sstem is composed of more than one sub"sstems and it contains a number of components. (urther, these sub"sstems and components ma have their on set of sub"sstem and components and creates hierarchical structure in the sstem. Top"down design takes the whole software sstem as one entit and then decomposes it to achieve more than one sub"sstem or component based on some characteristics. ach sub"sstem or component is then treated as a sstem and decomposed further. This process keeps on running until the lowest level of sstem in the top"down hierarch is achieved. Top"down design starts with a generalized model of sstem and keeps on defining the more specific part of it. When all components are composed the whole sstem comes into eistence. Top"down design is more suitable when the software solution needs to be designed from scratch and specific details are unknown.
$ottom"up Design The bottom up design model starts with most specific and basic components. #t proceeds with composing higher level of components b using basic or lower level components. #t keeps creating higher level components until the desired sstem is not evolved as one single component. With each higher level, the amount of abstraction is increased. $ottom"up strateg is more suitable when a sstem needs to be created from some eisting sstem, where the basic primitives can be used in the newer sstem. $oth, top"down and bottom"up approaches are not practical individuall. #nstead, a good combination of both is used.
Software 3ser #nterface Design 3ser interface is the front"end application view to which user interacts in order to use the software. 3ser can manipulate and control the software as well as hardware b means of user interface. Toda, user interface is found at almost ever place where digital technolog eists, right from computers, mobile phones, cars, music plaers, airplanes, ships etc. 3ser interface is part of software and is designed such a wa that it is epected to provide the user insight of the software. 3# provides fundamental platform for human"computer interaction. 3# can be graphical, tet"based, audio"video based, depending upon the underling hardware and software combination. 3# can be hardware or software or a combination of both. The software becomes more popular if its user interface is! •
'ttractive
•
Simple to use
•
4esponsive in short time
•
/lear to understand
•
/onsistent on all interfacing screens
3# is broadl divided into two categories! •
/ommand Line #nterface
•
5raphical 3ser #nterface
/ommand Line #nterface 0/L#1 /L# has been a great tool of interaction with computers until the video displa monitors came into eistence. /L# is first choice of man technical users and programmers. /L# is minimum interface a software can provide to its users. /L# provides a command prompt, the place where the user tpes the command and feeds to the sstem. The user needs to remember the snta of command and its use. arlier /L# were not programmed to handle the user errors effectivel. ' command is a tet"based reference to set of instructions, which are epected to be eecuted b the sstem. There are methods like macros, scripts that make it eas for the user to operate.
DELPHI TECHNIQUE A STEP-BY-STEP GUIDE ~ By Duncan Haughey
As a proec! "anager# $! $s $"por!an! !o !h$n% a&ou! 'ha! (u!ure e)en!s "ay $"pac! your proec!s* These e)en!s "ay &e pos$!$)e or nega!$)e# so un+ers!an+$ng !he" a,,o's you !o prepare# an+ pu! p,ans $n p,ace !o +ea, '$!h !he"* Bu! ho' can you (orecas! !he (u!ure '$!h any +egree o( cer!a$n!y The De,ph$ Techn$.ue can he,p* The De,ph$ Techn$.ue $s a "e!ho+ use+ !o es!$"a!e !he ,$%e,$hoo+ an+ ou!co"e o( (u!ure e)en!s* A group o( e/per!s e/change )$e's# an+ each $n+epen+en!,y g$)es
es!$"a!es an+ assu"p!$ons !o a (ac$,$!a!or 'ho re)$e's !he +a!a an+ $ssues a su""ary repor!* The group "e"&ers +$scuss an+ re)$e' !he su""ary repor!# an+ g$)e up+a!e+ (orecas!s !o !he (ac$,$!a!or# 'ho aga$n re)$e's !he "a!er$a, an+ $ssues a secon+ repor!* Th$s process con!$nues un!$, a,, par!$c$pan!s reach a consensus* The e/per!s a! each roun+ ha)e a (u,, recor+ o( 'ha! (orecas!s o!her e/per!s ha)e "a+e# &u! !hey +o no! %no' 'ho "a+e 'h$ch (orecas!* Anony"$!y a,,o's !he e/per!s !o e/press !he$r op$n$ons (ree,y# encourages openness an+ a)o$+s a+"$!!$ng errors &y re)$s$ng ear,$er (orecas!s* Th$s ar!$c,e ,oo%s a! ho' !o run a De,ph$ sess$on* 0n co"p,e!$on o( !h$s gu$+e# you '$,, &e a&,e !o run a sess$on ena&,$ng you !o pre+$c! (u!ure e)en!s an+ !he$r ,$%e,y $"pac! on your proec!s* The !echn$.ue $s an $!era!$)e process# an+ 1rs! a$"s !o ge! a &roa+ range o( op$n$ons (ro" !he group o( e/per!s* The resu,!s o( !he 1rs! roun+ o( .ues!$ons# 'hen su""ar$se+# pro)$+e !he &as$s (or !he secon+ roun+ o( .ues!$ons* 2esu,!s (ro" !he secon+ roun+ o( .ues!$ons (ee+ $n!o !he !h$r+ an+ 1na, roun+* The a$" $s !o c,ar$(y an+ e/pan+ on $ssues# $+en!$(y areas o( agree"en! or +$sagree"en! an+ &eg$n !o 1n+ consensus*
S!ep 34 Choose a 5ac$,$!a!or The 1rs! s!ep $s !o choose your (ac$,$!a!or* You "ay '$sh !o !a%e on !h$s ro,e yourse,(# or 1n+ a neutral person '$!h$n your organ$sa!$on* I! $s use(u, !o ha)e so"eone !ha! $s (a"$,$ar '$!h research an+ +a!a co,,ec!$on*
S!ep 64 I+en!$(y Your E/per!s The De,ph$ !echn$.ue re,$es on a pane, o( e/per!s* Th$s pane, "ay &e your proec! !ea"# $nc,u+$ng !he cus!o"er# or o!her e/per!s (ro" '$!h$n your organ$sa!$on or $n+us!ry* An e/per! $s# any $n+$)$+ua, '$!h re,e)an! %no',e+ge an+ e/per$ence o( a par!$cu,ar !op$c* 7
S!ep 84 De1ne !he Pro&,e" 9ha! $s !he pro&,e" or $ssue you are see%$ng !o un+ers!an+ The e/per!s nee+ !o %no' 'ha! pro&,e" !hey are co""en!$ng on# so ensure you pro)$+e a prec$se an+ co"prehens$)e +e1n$!$on*
S!ep :4 2oun+ 0ne Ques!$ons As% genera, .ues!$ons !o ga$n a &roa+ un+ers!an+$ng o( !he e/per!s )$e' on (u!ure e)en!s* The .ues!$ons "ay go ou! $n !he (or" o( a .ues!$onna$re or sur)ey* Co,,a!e an+ su""ar$se !he responses# re"o)$ng any $rre,e)an! "a!er$a, an+ ,oo%$ng (or co""on )$e'po$n!s*
S!ep ;4 2oun+ T'o Ques!$ons Base+ on !he ans'ers !o !he 1rs! .ues!$ons# !he ne/! .ues!$ons shou,+ +e,)e +eeper $n!o !he !op$c !o c,ar$(y spec$1c $ssues* These .ues!$ons "ay a,so go ou! $n !he (or" o( a .ues!$onna$re or sur)ey* Aga$n# co,,a!e an+ su""ar$se !he resu,!s# re"o)$ng any $rre,e)an! "a!er$a, an+ ,oo% (or !he co""on groun+* 2e"e"&er# 'e are see%$ng !o &u$,+ consensus*
S!ep <4 2oun+ Three Ques!$ons The 1na, .ues!$onna$re a$"s !o (ocus on suppor!$ng +ec$s$on "a%$ng* Hone $n on !he areas o( agree"en!* 9ha! $s $! !he e/per!s are a,, agree+ upon You "ay '$sh !o ha)e "ore !han !hree roun+s o( .ues!$on$ng !o reach a c,oser consensus*
S!ep =4 Ac! on Your 5$n+$ngs A(!er !h$s roun+ o( .ues!$ons# your e/per!s '$,, ha)e# 'e hope# reache+ a consensus an+ you '$,, ha)e a )$e' o( (u!ure e)en!s* Ana,yse !he 1n+$ngs an+ pu! p,ans $n p,ace !o +ea, '$!h (u!ure r$s%s an+ oppor!un$!$es !o your proec!*
Conc,us$on Use !he De,ph$ Techn$.ue (or crea!$ng 9or% Brea%+o'n S!ruc!ures# $+en!$(y$ng r$s%s an+ oppor!un$!$es# co"p$,$ng ,essons ,earne+ an+ any!$"e you 'ou,+ usua,,y con+uc! a &ra$ns!or"$ng sess$on* Pre+$c!$ng !he (u!ure $s no! an e/ac! sc$ence# &u! !he De,ph$ Techn$.ue can he,p you un+ers!an+ !he ,$%e,$hoo+ o( (u!ure e)en!s an+ 'ha! $"pac! !hey "ay ha)e on your proec!*
Testing is the process of evaluating a sstem or its component0s1 with the intent to find whether it satisfies the specified requirements or not. #n simple words, testing is eecuting a sstem in order to identif an gaps, errors, or missing requirements in contrar to the actual requirements. 'ccording to '6S#*# 789: standard, Testing can be defined as " ' process of analzing a software item to detect the differences between eisting and required conditions 0that is defects*errors*bugs1 and to evaluate the features of the software item This section describes the different tpes of testing that ma be used to test a software during SDL/.
;anual Testing
;anual testing includes testing a software manuall, i.e., without using an automated tool or an script. #n this tpe, the tester takes over the role of an end"user and tests the software to identif an unepected behavior or bug. There are different stages for manual testing such as unit testing, integration testing, sstem testing, and user acceptance testing. Testers use test plans, test cases, or test scenarios to test a software to ensure the completeness of testing. ;anual testing also includes eplorator testing, as testers eplore the software to identif errors in it.
'utomation Testing 'utomation testing, which is also known as Test 'utomation, is when the tester writes scripts and uses another software to test the product. This process involves automation of a manual process. 'utomation Testing is used to re"run the test scenarios that were performed manuall, quickl, and repeatedl.
'part from regression testing, automation testing is also used to test the application from load, performance, and stress point of view. #t increases the test coverage, improves accurac, and saves time and mone in comparison to manual testing.
What is 'utomate< #t is not possible to automate everthing in a software. The areas at which a user can make transactions such as the login form or registration forms, an area where large number of users can access the software simultaneousl should be automated. (urthermore, all 53# items, connections with databases, field validations, etc. can be efficientl tested b automating the manual process.
When to 'utomate< Test 'utomation should be used b considering the following aspects of a software! •
Large and critical pro-ects
•
+ro-ects that require testing the same areas frequentl
•
4equirements not changing frequentl
•
'ccessing the application for load and performance with man virtual users
•
Stable software with respect to manual testing
•
'vailabilit of time
2ow to 'utomate< 'utomation is done b using a supportive computer language like =$ scripting and an automated software application. There are man tools available that can be used to write automation scripts. $efore mentioning the tools, let us identif the process that can be used to automate the testing process! •
#dentifing areas within a software for automation
•
Selection of appropriate tool for test automation
•
Writing test scripts
•
Development of test suits
•
ecution of scripts
•
/reate result reports
•
#dentif an potential bug or performance issues
Software Testing Tools The following tools can be used for automation testing! •
2+ >uick Test +rofessional
•
Selenium
•
#$; 4ational (unctional Tester
•
SilkTest
•
Test/omplete
•
Testing 'nwhere
•
Win4unner
•
Load4unner
•
=isual Studio Test +rofessional
•
W'T#4
Difference between ISO 9000 and CMM(ISO 9000 VS CMM) ISO 900(INTERNATIONAL STANDARD ORGANISATION) It applies to any type o in!"st#y $ ISO 9000 a!!#esses %o#po#ate "siness p#o%ess ISO 9000 spe%iies +ini+"+ #e,"i#e+ent$ ISO 9000 #est#i%ts itsel to 'at is #e,"i#e!$ ISO 9000 p#o&i!es pass o# ail %#ite#ia$ ISO 9000 as no le&els$
ISO 9000 !oes not spe%iies se,"en%e o steps #e,"i#e! to estalis te ,"ality syste+$ Ce#tain p#o%ess ele+ents tat a#e in ISO a#e not in%l"!e! in CMM lie. 1$ Cont#a%t +ana*e+ent 2$ 3"#%ase an! %"sto+e# s"pplie! %o+ponents 4$ 3e#sonal iss"e +ana*e+ent 5$ 3a%a*in* 6!eli&e#y6 an! installation
CMM (CABABILITY MATURITY MODEL) CMM is spe%ially !e&elope! o# sot'a#e in!"st#y CMM o%"ses on te sot'a#e En*inee#in* a%ti&ities$ CMM *ets nto te%ni%al aspe%t o sot'a#e en*inee#in*$ It s"**ests o' to "lill te #e,"i#e+ents$ It p#o&i!es *#a!e o# p#o%ess +at"#ity$ CMM as - le&els. Initial Repeatale Deine! Mana*e! Opti+i/ation
It #e%onne%ts te +e%anis+ o# step y step p#o*#ess t#o"* its s"%%essi&e +at"#ity le&els$ Si+ila#ly ote# p#o%ess in CMM a#e not in%l"!e! in ISO 9000 1$ 3#o7e%t t#a%in* 2$ 3#o%ess an! te%nolo*y %an*e +ana*e+ent 4$ Inte#*#o"p %oo#!inatin* to +eet %"sto+e#8s #e,"i#e+ents
+ana*e+ent
5$ O#*ani/ation le&el p#o%ess o%"s6 p#o%ess !e&elop+ent an! inte*#ate! +ana*e+ent$