Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas Relatrio de Projeto Parcial Aluno : Camila San Martin Ayres Professor Orientador: Rafel Jeffman Semestre: 2011/5 Porto Alegre, 10 de un!o de 2011" Relatrio de Projeto Parcial Sum#rio $"1"%itulo do Proeto""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""5 $"2"Professor Orientador""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""5 $"$"A&resenta'(o )eral do Proeto""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""5 $"*"+efini'(o do Pro,lema""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""- $"5"O,eti.os""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/ $"5"1"O,eti.o )eral"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/ $"5"2"O,eti.os 0s&e12fi1os""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/ *"1"C33""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 *"2"5de.elo& *"$""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 *"$"S67 8Su,.ersion9""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 *"*":t""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 *"5"+o;ygate""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 *"<":t%est=i,s""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 *"-"S>uis! Community 0dition ? @+0 *"1"0?S7APSAO% """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""4 -"1"+iagrama de Classes""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1$ -"1"1"Antes""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1$ -"1"2"+e&ois""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1$ -"2"+iagrama de Se>uBn1ia""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1* /"1"Cun1ionalidades a serem im&lementadas 8%CC @ e %CC @@9""""""""""""""""""""""""""""""""""1< /"2"ProtDti&o 8%CC @9"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""1< 4"1"0stratEgia""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""20 Relatrio de Projeto Parcial 1. Identificao IDENTIFICA! D! A"#N! A=F7O: Camila San Martin Ayres 07+0R0GO R0S@+07C@A=:Rua Ria1!uelo 425/*0$ HA@RRO: Centro C0P: 40010?2-0 C@+A+0: Porto Alegre FC: RS %0=0CO708S9: 8519 41*$*-41 / $22<?<4/- 0?MA@=8S9: smayresIgmail"1om IDENTIFICA! D! !RIENTAD!R PROC0SSOR: Rafael Jeffman 0?MA@=8S9: rafael"effmanIgmail"1om Relatrio de Projeto Parcial 2. Histrico de Verses $ers%o Autor Descri&%o Data 1 Camila Ayres Ras1un!o do RelatDrio 01/0</2011 2 Camila Ayres Mel!orias 0*/0</2011 $ Camila Ayres ProtDti&o %CC@ 0-/0</2011 * Camila Ayres +iagramas 0//0</2011 5 Camila Ayres Re.is(o Cinal de %e;to 04/0</2011 Relatrio de Projeto Parcial 3. Projeto 3.1. Titulo do Projeto Refatorao e Testes: adaptando o Umbrello para QGraphicsView. 3.2. Professor Orientador Rafael Jeffman 3.3. Apresentao eral do Projeto SoftJare =i,re, SoftJare =i.re e O&en Sour1e 8C=OSS K Cree =i,re O&en Sour1e SoftJare9 des1re.em o 1on1eito de softJare 1om li1en'a copyleft 1 " Com&arado aos Co&yrig!t, 1o&yleft d# a >uem re1e,e o softJare direitos adi1ionais 2 " 0ste tra,al!o far# uso do termo LSoftJare =i.reL &ara a,ranger todos os as&e1tos de C=OSS >ue enfatiMam a filosofia e os as&e1tos do desen.ol.imento 1ola,orati.o, ,em 1omo o as&e1to legal e &r#ti1o $ " A li1en'a 1o&yleft ,em 1omo a )7F Pu,li1 =i1ense garantem &rin1i&almente >ue: NA li,erdade de redistri,uir 1D&ias de.e in1luir formas ,in#rias ou e;e1ut#.eis do &rograma, ,em 1omo 1Ddigo?fonte, &ara am,as as .ersOes modifi1adas"N 8)7F, 20109 O 1Ddigo?fonte, uma .eM &u,li1ado so, a li1en'a )7F Pu,li1 =i1ense, estar# sem&re dis&on2.el so, essa li1en'a, in1luindo >ual>uer altera'(o realiMada nesse" 0m,ora as raMOes &or tr#s da 1ria'(o de li1en'as 1omo 1o&yleft e a )P= tBm sido &rin1i&almente ideolDgi1a 8S%A==MA7, 20109, o termo mais 1omer1ial * O&en Sour1e tem im&ulsionado a )P= e li1en'as similares a tornarem?se dominante no mundo da %@ 8%e1nologia da @nforma'(o9" A filosofia do SoftJare =i.re, tem tido um im&a1to muito alEm do mundo da %@ em si" SoftJare =i.re &ode ser .isto 1omo um e;em&lo de Crowd Sourcing 5 ? um &ro1esso de &rodu'(o a,erto a 1ola,ora'(o dos usu#rios e o &P,li1o interessado em geral ? mas E muito mais antigo >ue esse 1on1eito" Sites 1omo QiRi&edia, m2dias so1iais e 1ola,orati.as 1omo Facebook, Youtube e Flickr
tBm forte liga'(o 1om a 1ultura e o modo de &ensar do mo.imento do SoftJare =i.re" 1 !tt&://JJJ"gnu"org/1o&yleft/ 2 !tt&://JJJ"gnu"org/&!iloso&!y/free?sJ"!tml $ !tt&://JJJ"gnu"org/&!iloso&!y/o&en?sour1e?misses?t!e?&oint"!tml * !tt&://JJJ"gnu"org/&!iloso&!y/o&en?sour1e?misses?t!e?&oint"!tml e !tt&://JJJ"o&ensour1e"org/osd"!tml 5 !tt&://1roJdsour1ing"ty&e&ad"1om Relatrio de Projeto Parcial O desen.ol.imento de SoftJare =i.re foi e;&li1ado &or =inus %or.alds em uma entre.ista &ara a re.ista Forbes em Mar'o de 200<: LSe .o1B E um 1ientista lou1o, .o1B &ode usar softJare so, li1en'a )P=.2 1om os seus &lanos malignos de dominar o mundo 8L%u,arOes 1om lasers na 1a,e'a SST9, e a )P=.2 a&enas diM >ue .o1B tem >ue de.ol.er o 1Ddigo fonte" 0 &or mim est# tudo ,em" 0u gosto de tu,arOes 1om lasers" 0u sD >uero >ue os 1ientistas lou1os do mundo me &aguem de .olta do mesmo eito >ue eu 1ola,orei" CiM o 1Ddigo fonte dis&on2.el &ara eles, ent(o eles tBm >ue dis&oni,iliMar as altera'Oes &ara mim" +e&ois disso, &odem fritar?me 1om os lasers de tu,ar(o 1omo todos eles >uerem"L 8=UO7S, 20059" =inus %or.ald desen.ol.eu o Rernel do =inu; seguindo essa lDgi1a: &ode?se usar e alterar li.remente o 1Ddigo 1om a res&onsa,ilidade de dis&oni,iliMar essas 1ontri,ui'Oes a >uem ti.er interesse" Haseadas nessa filosofia, surgiram as 1omunidades de softJare li.re" O 5+0 < E uma 1omunidade de SoftJare =i.re >ue tem desen.ol.ido e entregue SoftJare =i.re e Open Source !# mais de 15 anos" O 5+0 E, de a1ordo 1om a maioria das mEtri1as, a segunda maior 1omunidade no mundo, a&enas atr#s da 1omunidade do 5ernel do =inu;" 0ntre os seus &rodutos est(o uma .ariedade de a&li1a'Oes, &ara a 1om&uta'(o mD.el, desktops e uma &lataforma de desen.ol.imento onde os a&li1ati.os s(o &roetados e desen.ol.idos" 5+0 desen.ol.e softJare &rin1i&almente &ara =inu;, mas seus &rodutos tam,Em est(o dis&on2.eis &ara QindoJs, Ma1 OS V e um nPmero 1res1ente de dis&ositi.os mD.eis" A 1omunidade E atualmente 1onstitu2da &or 1er1a de /00 a 1000 desen.ol.edores ati.os - e um nPmero semel!ante de 1ontri,uidores &ara arte gr#fi1a, tradu'(o, desen.ol.imento de sites e outras tarefas dentro do &roeto" Os a&li1ati.os desen.ol.idos &elo 5+0 s(o es1ritos em C33, linguagem de &rograma'(o &roetada e im&lementada &or Harne Stroustru& / , utiliMam :t 4 , um frameJorR multi&latforma so, a li1en'a =)P= 8esser !eneral Public icense9W e 5+0?=i,s, ,i,liote1as de softJare em C33/:t >ue 1om&Oem o "#$ #e%eloper < !tt&://Rde"org - !tt&://JJJ"Rde"org/announ1ements/*"$ / !tt&://JJJ2"resear1!"att"1om/X,s 4 !tt&://>t"noRia"1om Relatrio de Projeto Parcial Platfor& ou 5+0 S+5, e;igida &or todos os a&li1ati.os do 5+0 Software Co&pilation 85+0 SC9" O Fm,rello E a ferramenta de modelagem FM= 8'nified (odeling anguage9 distri,u2da 1om as ferramentas de desen.ol.imento do 5+0" O Fm,rello foi es1rito ini1ialmente em C33 &ara sistemas Fni; &elo estudante uni.ersit#rio Paul Aensgen 10 " 0m 2002, Jonat!an Riddell 11 assumiu o &roeto refatorando o 1Ddigo e in1luindo no.as fun1ionalidades" 7o mesmo ano, o Fm,rello foi integrado as a&li1a'Oes do 5+0 utiliMando o frameJorR :t" 0m 200/, )o&ala 5ris!na 12 , 1ome'ou a ada&ta'(o do limitado CrameJorR :Can.as do :t $ &ara o :)ra&!i1s6ieJ do :t *" Aoe o Fm,rello tem uma .ers(o &ara o 5+0 *"<, mas a .ers(o 1om a ada&ta'(o ini1iada &&or 5ris!na, est# inst#.el, 1omo 1onse>uBn1ia, n(o foi integrada a .ers(o atual do Fm,rello" O :t * al1an'ou um n2.el maior de esta,ilidade 1om mel!orias 1omo su&orte a ar>uitetura (odel)iew e um no.o build syste& modular" O CrameJorR )ra&!i1s 6ieJ surgiu na .ers(o *"2 e forne1e re1ursos &ara manusear e interagir 1om elementos gr#fi1os 2+, e um Jidget &ara a .isualiMa'(o dos itens 1$ " 3.!. "efinio do Pro#le$a O Fm,rello E a Pni1a ferramenta de modelagem FM= &resente no 5+0 S+5 e am&lamente utiliMado &or alguns &roetos 1* do &rD&rio 5+0" Considerando a im&ortYn1ia da FM= &ara a 0ngen!aria de SoftJare 15 e o aumento do uso do SoftJare =i.re, .erifi1ado &rin1i&almente na edu1a'(o 1< e no go.erno 8)ROO%, 5Z)=0R, A+AMS e )OFS@OS 200<9, 1res1e a ne1essidade de uma ferramente 1omo o Fm,rello" 0m N*+e State of Open SourceT da em&resa de &es>uisas )arner &redisse: L0m 2012, mais de 40 &or 1ento das em&resas ir# usar 1Ddigo a,erto de forma direta ou in1or&orado,L 8JF+)0, 200/9" 10 !tt&://&!ensgen"users"sour1eforge"net/ 11 !tt&://riddell"org 12 !tt&://Rris!naggR",logs&ot"1om 1$ !tt&://do1">t"noRia"1om 1* !tt&://uml"sour1eforge"net/users"&!& 15 !tt&://JJJ"uml"org/uml[su11ess[stories/inde;"!tm 1< !tt&://one"la&to&"org/a,out/mission e !tt&://ndos"1ode≤"1om Relatrio de Projeto Parcial A em&resa de &es>uisa @+C, es1re.eu em Linu, in t+e -ew $cono&yL 820049: L@+C &roeta >ue o 1res1imento do softJare rela1ionados ao =inu; .ai liderar o setor durante o &er2odo 200/?201$ de re1u&era'(o &Ds?re1ess(o, 1om uma ta;a de 1res1imento anual 1om&osta 8CA)R9 de 2$,<\" 8"""9 0m 1om&ara'(o, o mer1ado glo,al est# &roetado &ara aumentar em 5\ 200/?201$ CA)R L" 8)@==07, 20049 Atualmente o Fm,rello utilliMa a 1lasse :$Can.as K a mesma 1lasse :Can.as, renomeada a&enas durante o &ro1esso de ada&ta'(o ? >ue faM &arte do :t$Su&&ort, ,i,liote1a >ue foi desen.ol.ida &ara fa1ilitar o &ort do :t $ &ara :t *, e >ue n(o de.em estar no 1Ddigo de &rodu'(o, mas a&enas no &ro1esso intermedi#rio, de.endo ser imediatamente su,stitu2tas &or uma 1lasse e>ui.alente do :t *" 7esse 1aso, o :Can.as de.e ser su,stitu2do &ara a 1lasse :)ra&!i1s6ieJ 1- " 3.%. O#jeti&os 3.%.1. O#jeti&o eral O o,eti.o do &roeto E realiMar uma ada&ta'(o 1onfi#.el do softJare utiliMando ferramentas de testes automatiMados >ue garantem a a&li1a'(o 1orreta dos 1on1eitos de refatora'(o" 3.%.2. O#jeti&os 'spec(ficos " 0liminar o uso do :Can.as no Fm,rello" " Mel!or su&orte a estereDti&os 1/ " " Com&letar su&orte a Fndo/Reddo" " Criar uma 1o,ertura de testes &ara as &rin1i&ais 1lasses" 1- !tt&://do1">t"noRia"1om/*"-/>$1an.as"!tml 1/ !tt&://JJJ"agilemodeling"1om/style/stereoty&e"!tm Relatrio de Projeto Parcial !. An)lise de Tecnolo*ias+,erra$entas As ferramentas foram sele1ionadas ,aseadas nas es&e1ifi1a'Oes do &roeto # e;istente" 0stas ferramentas s(o am&lamente usadas e testadas, o >ue ofere1e mais esta,ilidade" !.1. -.. Linguagem de programao em ue o Umbrello foi desen!ol!ido. !.2. /de&elop !.3 @+0 &ara C/C33 e outras linguagens de &rograma'(o" ] ,aseado no 5+0 #e%eloper Platfor&, no 5+0 e nas ,i,liote1as do :t" !.3. 0V1 20u#&ersion3 "istema de controle de !erso de software utili#ado pelos pro$etos do %&'. "endo usado desde o in(cio do pro$eto. !.!. 4t )ramewor* multiplataforma para +,,- base do %&' e tamb.m utili#ado pelo Umbrello. !.%. "o56*ate ] uma interfa1e &ara a ferramenta +o;ygen, utiliMada &ara gerar do1umenta'(o, es1rita em :t e utiliMada em &roetos do 5+0" Ser# utiliMado no final &ara gerar uma no.a do1umenta'(o &ara o Fm,rello" !.7. 4tTest8i#s CrameJorR &ara desen.ol.imento de testes unit#rios em :t" Os testes ser(o es1ritos na Pltima fase do &roeto" !.9. 0:uis; -o$$unit6 'dition < I"' !.1.=<01AP0HOT "oftware para testes automati#ados de interface da empresa )rologic. "er/ utili#ado a medida ue a refatorao resultar em um minimo de funcionalidades test/!eis. Relatrio de Projeto Parcial %. "escrio da 0oluo O Fm,rello utiliMa re1ursos gr#fi1os >ue &ermitem ao usu#rio desen!ar diagramas 2+, essa E a sua &rin1i&al fun'(o >uanto softJare &ara diagrama'(o FM=" =ogo, o &roeto &ro&Oe a ada&ta'(o dos re1ursos do :Can.as ? 1er1a de $0 1lasses s(o de&endentes desses re1ursos ? &ara o :)ra&!i1s6ieJ utiliMando tE1ni1as de refatora'(o de 1Ddigo untamente 1om ferramentas de an#lise est#ti1a e dinYmi1a, 1on1luindo o &roeto 1om ferramentas de testes &ara a garantir a 1ontinuidade das fun1ionalidade originais do softJare" O CrameJorR )ra&!i1s 6ieJ tem uma a,ordagem ,aseada na &rograma'(o model?.ieJ" 6arias .isualiMa'Oes 8:)ra&!i1s6ieJ9 &odem 1onter Pni1a 1ena 8:)ra&!i1sS1ene9, e a 1ena &ode 1onter itens 8:)ra&!i1s@tem9 de diferentes formas geomEtri1as" 0ssa ar>uitetura E ,astante similar a do :Can.as, mas o :)ra&!i1s@tem, e>ui.alente ao :$Can.as@tem E mais &oderoso e mais f#1il de usar" Por e;em&lo, o :)ra&!i1s6ieJ im&lementa o arrastar e soltar 8drag and drop9 de um item em uma 1ena, fun1ionalidade ine;istente no :1an.as: NFma das mais not#.eis mel!orias na no.a AP@ 8:)ra&!i1s6ieJ9 E o sistema de 1oordenadas" Agora &odemos usar 1oordenadas em nPmeros reais &ara +iagrama 1: )ra&!i1s6ieJ Relatrio de Projeto Parcial adi1ionais um n2.el ele.ado de &re1is(o a 1a&a1idade de .isualiMa'(o do :)ra&!i1s6ieJ, es&e1ialmente >uando utiliMamos os Moom em uma 1ena" @sso sim&lifi1a ao ter >ue lidar 1om dads de fontes e;ternas, 1omo to&ologia, >ue geralmente usam 1oordenadas reais"T 8AA7SS07, 200<9 7o :Can.as, a geometria dos items eram relati.a ao 1an.as, a 1ena onde os items s(o 1olo1ados, no :)ra&!i1s6ieJ E &oss2.el 1riar items 1om&ostos, items dentro de items e redimension#?los de forma inde&endente ou de a1ordo 1om o seu item &ai" As mel!orias &ro&ostas 1om o &ort &ara o Fm,rello s(o na sua maioria rela1ionadas a &erfoman1e e otimiMa'(o de 1Ddigo 8AA7SS07, 200<9, &ois o CrameJorR )ra&!i1s 6ieJ utiliMa os mel!ores re1ursos do :t* >ue a &artir da .ers(o *"2 utiliMa HSP tree 1. 8/inary Space Partitioning *ree9 1om um mEtodo de inde;a'(o >ue a1elera a ,us1a dos itens na 1ena" 8S=0%%A, 20109 Processo de Re'atora&%o e Testes (ro(osto como solu&%o (ara o Projeto) * Anlise) Pro1esso de an#lise do &ro,lema e desen.ol.imento de diagramas FM= 1onforme a ne1essidade &ara a audar na resolu'(o" ] nesse momento >ue de1ide?se &ela mel!or tE1ni1a de refatora'(o &ara determinada 1lasse e >uais os testes >ue de.em ser a&li1ados" * Desenvolvimento +Re'atora&%o,) Refatorar E uma tE1ni1a am&lamente utiliMada na engen!aria de softJare, >ue 1onsiste em alterar um 1Ddigo e;istente 1om o o,eti.o de o,ter um 1Ddigo leg2.el, de f#1il manuten'(o" Para garantir >ue o softJare manten!a o seu 1om&ortamento a&Ds as de.idas mel!orias na sua estrutura, a&li1a?se ent(o testes automatiMados" 8COQ=0R, 20029 *Testes de Funcionalidade) S(o os testes unit#rios K testes es&e12fi1os &ara 1ada 1ada fun1ionalidade do softJare e 1lasse do 1Ddigo ? e testes automatiMados K testes e;e1utados &or ferramentas desen.ol.idas &ara tal o,eti.o, >ue garantem o 1orreto fun1ionamento do softJare a&Ds a refatora'(o" * Bug Fixing: Corre'(o dos erros en1ontrados a&Ds os testes" 14 !tt&://Je,"1s"J&i"edu/Xmatt/1ourses/1s5<$/talRs/,s&/,s&"!tml Relatrio de Projeto Parcial 7. A#orda*e$ de "esen&ol&i$ento A metodologia adotada E uma .aria'(o do Scru& 01 , >ue 1ontar# 1om a organiMa'(o de sprints e &e>uenas entregas" +e a1ordo 1om a solu'(o &ro&osta, o 1i1lo do Scru& ser# da seguinte maneira: Ciclo Dias - . / 0 1 2 3 4 5 -6 -- -. -/ -0 -1 Tare'as An#lise +esen.ol.imento %estes /ug Fi,ing As altera'Oes feitas no &roeto estar(o sendo .ersionadas 1om o 1ontrolador de .ersOes S67, logo, todo o !istDri1o das altera'Oes estar# seguro e atualiMado em s.n3ss!://ayresIs.n"Rde"org/!ome/Rde/,ran1!es/JorR/so1?um,rello?2011/" O 5+0 fun1iona, 1omo muitos &roetos de SoftJare =i.re, de forma des1entraliMada, >ue E fre>^entemente 1!amada de /a2aar 8RAUMO7+, 20019, modelo de desen.ol.imento ao 1ontr#rio do mais tradi1ional Cat+edrall" 0m suma, no modelo Cat+edral, uma ou mais ar>uitetos &roetam o &roduto, en>uanto os desen.ol.edores, sem muita autonomia, e;e1utam seus &lanos" 0m 1ontraste, no estilo HaMaar, &e>uenas e>ui&es de tra,al!o semi?inde&endentes dos 1om&onentes de todo o &roeto e E ,astante fre>uente o desen.ol.imento de solu'Oes 1on1orrentes" :ualidade e 1a&a1idade de res&osta das e>ui&es de desen.ol.edores determina a 1om&osi'(o final do &roduto" A tomada de de1is(o E feito em &P,li1o atra.Es de uma 1om,ina'(o de dis1uss(o merito1r#ti1a e do desen.ol.imento de solu'Oes 1on1orrentes" Os desen.ol.edores 1om um longo !istDri1o na 1omunidade, muitas .eMes e;er1em uma influBn1ia 1onsider#.el e a maioria das a&li1a'Oes tem um mantenedor >ue toma de1isOes" 7o entanto, de.ido _ natureMa .olunt#ria, na maior &arte do tra,al!o 8mesmo os &agos &or em&resas 1ostumam agir muito inde&endente9, n(o E &oss2.el diMer _s &essoas o >ue faMer e a fun'(o da maioria dos tomadores de de1is(o se limita a manter &ort(o" =ogo, o Fm,rello tem uma e>ui&e res&ons#.el, atualmente &e>uena em 1om&ara'(o 1om outros &roetos do 5+0, 1om um mantenedor, Jonat!an Riddell" 20 !tt&://JJJ"s1rumallian1e"org/ Relatrio de Projeto Parcial 9. Ar:uitetura do 0iste$a 2>odela*e$3 9.1. "ia*ra$a de -lasses 9.1.1. Antes
9.1.2. "epois +iagrama 1: +iagrama Sim&lifi1ado de Classes antes da refatora'(o +iagrama 2: +iagrama de Classes Sim&lifi1ado a&Ds refatora'(o 9.2. "ia*ra$a de 0e:u?ncia +iagrama *: +iagrama de Se>uBn1ia Relatrio de Projeto Parcial O diagrama a1ima e;&li1a a ar>uitetura do :)ra&!i1s6ieJ, onde o FM=+o1 1ria um no.o o,eto FM=6ieJ 8:)ra&!i1s6ieJ9, >ue &or sua .eM alo1a a sua FM=S1ene 8:)ra&!i1sS1ene9" O mesmo FM=+o1 dis&ara o sinal sigO,e1tCreated >uando o usu#rio adi1iona um no.o Jidget na tela, tal sinal E re1e,ido &elo slot do +iagram, slotO,e1tCreated, >ue &or sua .eM 1ria um no.o FM=Qidget" O :t geren1ia a 1omuni1a'(o entre o,etos da a&li1a'(o atra.Es de signals e slots 01 3 Fm signal E emitido >uando determinado e.ento o1orre e E tratado &or um slot es&e1ifi1ado no 1Ddigo da a&li1a'(o" Fm slot nada mais E do >ue uma fun'(o >ue E 1!amada em res&osta a um sinal em &arti1ular" 21 !tt&://do1">t"noRia"1om/*"-/signalsandslots"!tml Conte @magem 1: !tt&://do1">t"noRia"1om/*"-/images/a,stra1t?1onne1tions"&ng @magem 1: Signals e slots: 1omuni1a'(o entre o,etos no :t Relatrio de Projeto Parcial @. Aspectos de I$ple$entao do Prottipo @.1. ,uncionalidades a sere$ i$ple$entadas 2T-- I e T-- II3 " 0liminar o uso do :Can.as no Fm,rello" " Mel!or su&orte a estereDti&os 22 " " Com&letar su&orte a Fndo/Reddo" " Criar uma 1o,ertura de testes &ara as &rin1i&ais 1lasses" @.2. Prottipo 2T-- I3 Funcionalidades +classes re'atoradas,) " FM=6ieJ " FM=6ieJCan.as " QidgetHase " FM=Qidget " FM=O,e1t TCCI) " Eliminar o uso do 7Canvas no #m8rello* O &rimeiro s&rint de desen.ol.imento foi ,asi1amente um teste em 1ima do 1ronograma &laneado" As &rimeiras altera'Oes foram um e;em&lo de 1omo n(o refatorar um softJare, &ois foi 1ontra ao >ue E &re.isto 1omo uma ,oa &r#ti1a de refatora'(o e testes, altera'Oes &e>uenas e de.idamente &laneadas &ara >ue sea &oss2.el en1ontrar os erros mais ra&idamente" NRefatorar siginifi1a alterar os &rogramas em &e>uenos &assos" Se .o1B 1ometer um erro, E f#1il de en1ontr#?lo"T 8COQ=0R, 20019 Ao 1ome'ar a ada&tar as &rimeiras 1lasses &laneadas, en1ontrou?se a &rimeira diferen'a entre :Can.as e :)ra&!i1s6ieJ: o sistema de 1oordenadas" 7o :Can.as as 1oordenadas s(o em nPmeros inteiros e no :)ra&!i1s6ieJ em nPmeros reais" Ao 1ome'ar as &rimeiras altera'Oes notou?se >ue seria ne1ess#rio alterar em mais mEtodos 22 !tt&://JJJ"agilemodeling"1om/style/stereoty&e"!tm Relatrio de Projeto Parcial do >ue o &laneado, o >ue gerou muitos erros, sem o de.ido 1ontrole do fun1ionamento do softJare e das 1lasses afetadas &ela altera'(o" Para o segundo s&rint, realiMou?se uma an#lise mel!or, de1idindo?se tratar das 1oordenadas em um &rD;imo s&rint, &ois E &oss2.el 1ontinuar usando as 1oordendas em ti&o inteiro" A mel!or maneira de tra,al!ar en1ontrada &ara realiMar as altera'Oes &or &artes foi manter as 1lasses antigas e 1riar as no.as 1lasses em 1onunto" Assim, in1luir as 1!amadas &ara os no.os mEtodos atra.Es direti.as de &rE?&ro1essamento em C33 nos ar>ui.os antigos mantendo o fun1ionamento dos dois e testando o fun1ionamento dos no.os mEtodos" +ireti.as de &rE?&ro1essamento 2$ s(o lin!as in1lu2das no 1Ddigo, &re1edidas &elo sinal `, logo n(o s(o 1onsideradas de1lara'Oes da linguagem de &rograma'(o" :uando o &rE?&ro1essador en1ontra essa direti.a, ele su,stitui >ual>uer o1orrBn1ia dessa de1lara'(o no resto do 1Ddigo" O &rE?&ro1essador E e;e1utado antes da 1om&ila'(o, assim essa su,stitui'(o E realiMada antes de >ual>uer 1Ddigo ser de fato gerado &elas de1lara'Oes da linguagem de &rograma'(o &ro&riamente dita" Por e;em&lo, a 1lasse FM=+o1 utiliMa a 1lasse FM=6ieJ, >ue foi refatorada" =ogo, no !eader umldo1"! foi realiMada a de1lara'(o: //diretiva de pre-processamento #define SOC2011 1 7a de1lara'(o dos mEtodos, foi utliMada uma de1lara'(o 1ondi1ional, >ue &ermite ao &rE?&ro1essador in1luir ou des1artar &arte do 1Ddigo de a1ordo 1om a direti.a de1larada anteriormente, nesse 1aso, a direti.a &ossui o .alor N1T, re&resentando um .alor .erdadeiro: //metodos utilizando o antigo UMLie! void addie!"UMLie! #vie!$% void removeie!"UMLie! #vie! & 'ool enforceOneie!(true $% //metodos utilizando o novo UMLie! #ifdef SOC2011 void addie!")*++UMLie! #vie!$% void removeie!")*++UMLie! #vie!& 'ool enforceOneie!(true $% #endif 2$ !tt&://JJJ"1&lus&lus"1om/do1/tutorial/&re&ro1essor/ Relatrio de Projeto Parcial A tE1ni1a de refatora'(o, 1onforme CoJler 82001, &" <59 e;&li1a, mais utiliMada foi a de di.idir algumas 1lasses >ue 1ontin!am mEtodos >ue &oderiam fa1ilmente serem geren1iados &or outra 1lasse" A no.a 1lasse +iagram s(o alguns dos mEtodos da 1lasse FM=6ieJ >ue antes geren1ia.am as 1onfigura'Oes dos diagramas" Com isso temos um 1Ddigo de mais f#1il manuten'(o e 1orre'(o de erros" NSe .o1B .B a estrutura do mesmo 1Ddigo em mais de um lugar, .o1B &ode ter 1erteMa >ue seu &rograma .ai ser mel!or se .o1B en1ontrar uma forma de unifi1#?los"T 8COQ=0R, 20019 * #9"$ie: +7;ra(<ics$ie:, A FM=6ieJ !erda.a anteriormente de :Can.as6ieJ" 7essa 1lasse, alEm da ada&ta'(o &ara :)ra&!i1s6ieJ, foi ne1ess#rio mudar 1omo o Moom era tratado" 7as Pltimas .ersOes do :t, ao in.Es de :Matri; 2* , utiliMa?se :%ransform 25 " :%ransform difere :Matri; 8o,soleto9, em >ue E uma .erdadeiro matriM $;$, &ermitindo transforma'Oes de &ers&e1ti.a" * #9"$ie:Canvas +7;ra(<icsScene, A FM=6ieJCan.as E a no.a FM=S1ene, !erdando de :Can.as" %rata de todos os e.entos o1orridos na 1ena" A 1lasse mais &rD;ima de :Can.as &ara a ada&ta'(o ao CrameJorR :)ra&!i1s6ieJ E a :)ra&!i1sS1ene" A no.a 1lasse FM=S1ene trata de todas as 1onfigura'Oes do diagrama 8um +iagrama de Classe, um de Se>uBn1ia ou um outro diagrama >ual>uer da FM=9 em 1ena: 1or da lin!a, fonte e alin!amento" * Diagram +<erda de 7!8ject e 7;ra(<icsItem, 7o.a 1lasse e;tra2da a &artir da FM=S1ene, >ue &assa a geren1iar os Jidgets na FM=S1ene" Os mEtodos dessa 1lasse tratam dos Jidgets &erten1entes a determinado diagrama em 1ena" ArmaMena as informa'Oes referentes a &osi'(o, ti&o de diagrama e a lista de Jidgets &erten1entes ao diagrama" 2* !tt&://do1">t"noRia"1om/latest/>transform"!tml 25 !tt&://do1">t"noRia"1om/latest/>transform"!tml Relatrio de Projeto Parcial * =idget>ase +<erda de 7!8ject, Classe ,ase &ara o FM=Qidget" * #9"!8ject 0ssa 1lasse E a .ers(o n(o gr#fi1a do FM=Qidget" 0stes s(o 1riados e mantidos na 1lasse FM=+o1" 0ssa 1lasse 1ontEm toda a informa'(o genEri1a ne1ess#ria &ara todos os o,etos FM=" * #9"=idget +<erda de =idget>ase e 7;ra(<icsRectItem, Classe ,ase &ara >uase todos os elementos gr#fi1os" A FM=Qidget !erda.a anteriormente de :Can.asRe1tangle" A 1lasse mais &rD;ima &ara a ada&ta'(o ao CrameJorR :gra&!i1s6ieJ E a :gra&!i1sRe1t@tem" 0ssa 1lasse mantEm as informa'Oes referentes a &osi'(o de 1ada Jidget em determinado diagrama, 1omo a &osi'(o, o taman!o e o ti&o" Relatrio de Projeto Parcial A. Validao A.1. 'stratB*ia Os testes e .alida'(o faMem &arte do &ro1esso de ada&ta'(o do softJare" AlEm do uso do :t%est=i,s, frameJorR &ara testes unit#rios em :t, &laneado &ara o final do &roeto, in1lui?se no &ro1esso um softJare es&e12fi1o &ara testes de interfa1e, o S>uis! Community 0dition" #tili?ando o S@uis< (ara gravar testes) Com o S>uis! E &oss2.el automatiMar os testes: o softJare a ser testado E e;e1utado atra.Es de uma 67C 86irtual 7etJorR Com&uting9, ao e;e1utar os &assos >ue de.em ser testados, o S>uis! 1ria os s1ri&ts de teste, em Ja.as1ri&t, Perl, Pyt!on ou %1l, mas tam,Em E &oss2.el editar e 1riar os s1ri&ts de a1ordo 1om a ne1essidade" Com os s1ri&ts gra.ados, &ode?se e;e1ut#?los >uantas .eMes forem ne1ess#rias &ara testes, ao in.Es de ter >ue faMer o &ro1esso manualmente &ara 1ada 1lasse >ue desea?se testar" @magem 2: 0;em&lo de Ja.as1ri&t &ara testes gerado &elo S>uis! Relatrio de Projeto Parcial A Pni1a des.antagem E >ue a medida >ue se gra.a os testes, o sistema armaMena uma ta,ela 1om os o,etos da a&li1a'(o, mas se o o,eto n(o esti.er na ta,ela ainda, o teste n(o E e;e1utado &or 1om&leto e E ne1ess#rio in1luir o o,eto ou editar a ta,ela no manualmente, ou e;e1utar a a&li1a'(o no modo S&y ou ainda sim&lesmente gra.ar testes onde usa?se os o,etos ne1ess#rios no teste" Os o,etos s(o elemento do softJare, 1omo um menu, uma 1am&o &ara edi'(o de te;to ou mesmo um reta no diagrama" A &artir do S>uis! E &oss2.el o,ter os &ontos onde a a&li1aa(o fal!a em tem&o de e;e1u'(o e gerar relatDrios a &artir de um 1onunto de testes e;e1utados" @magem 2: %a,ela de o,etos da a&li1a'(o Relatrio de Projeto Parcial 1=. -rono*ra$a O 1ronograma deste %CC foi todo ,aseado em Sprints de 15 dias, seguindo o 1i1lo e;&li1ado na a,ordagem de desen.ol.imento do &roeto, 1om datas &rogramadas e 1on1lu2das" Pode?se tam,Em .isualiMar neste 1ronograma, se&arada &or sprints, o &roduto de 1ada tarefa" As datas de entrega de relatDrios est(o desta1adas se&aradamente dos Sprints" T-- I "escrio da Ati&idade Produto In(cio 'ntre*a "etal;a$ento descriti&o Plano de Tra#al;o Plano de Tra#al;o 1@+=3 =1+=! An)lise do Pro#le$aC definio da soluo e criao do crono*ra$a. 0print 1D +lasse U0LView. +1digo 23425 67425 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print 2D +lasse U0LView+an!as. +1digo 6;425 2342< 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print 3D +lasse U0L=b$ect. +1digo 2>42< 6742< 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print !D +lasses U0L?idget e ?idget9ase. +1digo 6;42< 2642@ &esen!ol!imento- Testes e 9ug )i:. Eelatrio de Projeto Eelatrio =2+=7 'ntre*a da &erso Parcial do Eelatrio de Projeto Parcial para o Orientador 0print %D +lasses LineAath- +ircle- "ubset"Bmbol- "eLine?idget- 8ssociation?idget- 8cti!itB?idget- 8ctor?idget- 8rtifact?idget e 9o:?idget. +1digo 2342@ 6@42@ Testes e 9ug )i:ing. Eelatrio de Projeto Eelatrio 1=+=7 'ntre*a do Eelatrio de Projeto Parcial 2&erso final3 Apresentao de 0tatus do Projeto Apresentao 13+=7 19+=7 Apresentao de 0tatus do Projeto. %a,ela 1: Cronograma %CC@ Relatrio de Projeto Parcial T-- II "escrio da Ati&idade Produto In(cio 'ntre*a "etal;a$ento descriti&o 0print 7D +lasses +omponent?idget- &atatBpe?idget- 'ntitB?idget- 'num?idget- )loating&ashLine?idget- )loatingTe:t?idget. Code?idget. +1digo 6742@ 26427 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print 9D +lasses =b$ect?idget- Aac*age?idget- Ain?idge- Arecondition?idget- Region?idget- "ignal?idget- "tate?idget- Use+ase?idget and 0essage?idget. +1digo 23427 67427 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print @D +lasses )or*Doin?idget- +ombined)ragment?idg et and +ategorB?idget- +lassifier?idget. +1digo 6;427 2642; Testes e 9ug )i:. 0print AD Trabalhar no suporte a melhores estere1tipos. +1digo 2342; 6742; 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print 1=D +ompletar suporte a Undo4Reddo. +1digo 6;42; 2642E 8n/lise- &esen!ol!imento- Testes e 9ug )i:. 0print 11D Testes e 9ug )i:. +1digo 2342E 6@42E Testes e 9ug )i:. Eelatrio de Projeto AtualiFado Eelatrio 12+=A 'ntre*a do Eelatrio de Projeto AtualiFado. 0print 12D Relat1rio de 8ndamento Relat1rio 6742E 26462 'scrita do Relat1rio. 0e$in)rio de Anda$ento Apresentao 1A+=A 23+=A Apresentao do Anda$ento do Projeto. 0print 13D +orreFes e melhorias no Relat1rio. Relat1rio 23462 6@462 'scrita do relat1rio. 0print 1!D Gn(cio do desen!ol!imento do artigo. 8rtigo. 67462 >6462 'scrita do artigo. Relatrio de Projeto Parcial T-- II "escrio da Ati&idade Produto In(cio 'ntre*a "etal;a$ento descriti&o 0print 1%D &esen!iol!imento do 8rtigo final. 8rtigo. 26466 6<466 )inali#ando artigo e relat1rio final. 0print 17D )inali#ando artigo e relat1rio final. Relat1rio. 6@466 >2466 )inali#ando artigo e relat1rio final. Eelatrio de Projeto Eelatrio 21+11 'ntre*a do Eelatrio ,inal de Projeto. Apresentao ,inal Apresentao 2@+11 =2+12 Apresentao da Ganca ,inal. Eelatrio ,inal de Projeto Ee&isado Eelatrio 12+12 'ntre*a do Eelatrio ,inal de Projeto Ee&isado. %a,ela 2: Cronograma %CC@@ Relatrio de Projeto Parcial 11. -onsideraes Parciais Para o &rimeiro &rotDti&o &lanea.a?se1onseguir uma .isualiMa'(o dos Jidgets em tela 8os diagramas &ro&riamente ditos9, mas n(o E &oss2.el manter o :Can.as@tem fun1ionando em uma :)ra&!i1sS1ene" Com a ,ase &ronta, as 1lasses atE ent(o refatoradas, .ai ser &oss2.el realiMar um tra,al!o mais r#&ido &ara 1on1luir a ada&ta'(o do softJare, finaliMar o su&orte a Fndo/Redo e es1re.er os testes atE a data &re.ista de 1on1lus(o &ros&osta" Relatrio de Projeto Parcial Eefer?ncias Gi#lio*r)ficas R8H0=C&- 'ric ". T;e -at;edral and t;e GaFaarD >usin*s on 8inu5 and Open 0ource #6 an Accidental Ee&olutionar6. =IReillB J 8ssociates- Gnc. "ebastopol- +8- U"8. 3226. &ispon(!el em: Khttp:44catb.org4Lesr4writings4homesteading4cathedralMba#aar4N 8cesso em: 6E mar. 3266. GR==T- 8driaan deO %PGL'R "ebastianO 8&80"- Aaul D.O G=U"G="- Giorgo. -all for 4ualit6D Open 0ource 0oftHare 4ualit6 O#ser&ation. 'uropean research pro$ects- +="A8 e +8LG9R'. 322@. &ispon(!el em: Khttp:44 istlab.dmst.aueb.gr4Lgeorge4pubs4322@M=""MG%8G4paper.pdf N 8cesso em: 6E mar. 3266. DU&G'- Aeter. artnerD Open source Hill :uietl6 taIe o&er. 8br. 322;. &ispon(!el em: Khttp:44www.#dnet.co.u*4news4itMstrategB4322;4254254gartnerMopenMsourceMwillMuietlBMta*eMo!erM >E>7EE224N 8cesso em: 6E mar. 3266. GGLL'C- 8l. T;e Oportunit6 for 8inu5 in t;e 1eH 'cono$6. 322E. &ispon(!el em: Khttp:44www.redhat.com4f4pdf4idcMwhitepaperMlinu:MinMnewMeconomB.pdfN 8cesso em: 6E mar. 3266. "T8LL08C- Richard. J;6 0oftHare 0;ould 1ot Ha&e OHners. 3262. &ispon(!el em: Khttp:44www.gnu.org4philosophB4whBMfree.htmlN 8cesso em: 6E mar. 3266. GGLL'C- 8l. T;e Oportunit6 for 8inu5 in t;e 1eH 'cono$6. 322E. &ispon(!el em: Khttp:44www.redhat.com4f4pdf4idcMwhitepaperMlinu:MinMnewMeconomB.pdfN 8cesso em: 6E mar. 3266. )=?L'R- 0artin. Eefactorin*D I$pro&in* t;e "esi*n of '5istin* -ode. 3Q ed. Cew Hor*: 8ddisonM?esleB- )e!. 3226. 9L8C+R'TT'- DasminO "U00'R)G'L&- 0ar*. -.. KI Pro*ra$$in* Hit; 4t!. 3Q ed. 9oston: ArenticeMRall =pen "ource "oftware &e!elopment "eries- )e!. 322;. "U00'R)G'L&- 0ar*. Ad&anced 4t Pro*ra$$in*D -reatin* reat 0oftHare Hit; -.. and 4t !. 6Q ed. 9oston: ArenticeMRall =pen "ource "oftware &e!elopment "eries- Dul. 3262. 8C""'C- 8ndreas 8ardal. A Getter -an&as. Qt QuarterlB- 322@. &ispon(!el em: Khttp:44doc.trolltech.com446EMgraphics!iew.htmlN 8cesso em: 3< mar. 3266. R8C""'C- 8ndreas 8ardal. A rap;icsVieH sneaI<peeI. 0aio 322@. &ispon(!el em: Relatrio de Projeto Parcial Khttp:44labs.t.no*ia.com4322@42<4264aMgraphics!iewMsnea*Mpee*4N 8cesso em: 3< mar. 3266. "L'TT8- Gunna. 4t rap;ics and Perfor$ance L T;e -ost of -on&enience. Dan. 3262. &ispon(!el em: Khttp:44labs.t.no*ia.com432624264664tMgraphicsMandMperformanceMtheMcostMofMcon!enience4N 8cesso em: 3@ mar. 3266. GCU =perating "BstemO )ree "oftware )undation. T;e ,ree 0oftHare "efinition. Co!. 3262. &ispon(!el em: Khttp:44 www.gnu.org4philosophB4freeMww. html N 8cesso em: 32 mar. 3266. LH=C"- &aniel. 8inu5 Eules 0uperco$puters. )orbes. 0ar. 322<. &ispon(!el em: Khttp:44www.forbes.com4322<42>46<4c#SdlS2>6<linu:.htmlN 8cesso em: 33 mar. 3266. Relatrio de Projeto Parcial -o$ponentes Ee<utiliFados Classes do Fm,rello" 5+0?=i,s"