Engenharia de Software UML RUP XP Patterns

Embed Size (px)

Citation preview

AnliseeProjetodeSistemas comUML

Prof.BrunoCrivelariSanches bcsanches@gmail.comEstematerialnopodeserreproduzidoouutilizadosem autorizao.

Bibliografia UMLBibleTomPender DesignPatternsHeadFirst UML:GuiadoUsurio,GradyBooch, JamesRumbaugh,IvarJacobson,Makron Books. UMLEssencial:umbreveguiaparaa linguagempadrodemodelagemde objetos.MartinFowlereKendallScott, Bookman.

Internet www.uml.org www.umlforum.com www.staruml.org http://jude.changevision.com/jude web/product/community.html

FerramentasCase Rational ArgoUML Poseidom JUDE Together VisualParadigm StarUML(OpenSource)

FundamentosUML UMLUnifiedModelingLanguage AUMLumalinguagemparavisualizar, especificar,construiredocumentaros artefatosdeumsistemadesoftware umconjuntodeferramentasenouma metodologiadedesenvolvimento Flexvelegenrica,podeseraplicadaa vriostiposdesistemas

FundamentosUML Mtodo=linguagem(UML)+Processo (RUP) ModeloConceitual: Coisas Relacionamentos Diagramas

Coisas Estruturais:nomesdosmodelos.Classes, casosdeuso,colaborao,componente, interface,n. Comportamentais:verbos.Interao, mquinadeestado, DeAgrupamento:organizao.Pacote, frameworks,subsistemas. DeAnotao:explicaes.Notas.

Relacionamentos Dependncia:indicaquemudanasemuma coisapodemafetaroutra Associao:representaaligaoentreum todoesuaspartes Generalizao:relacionamentoentrepaise filhosnoqualosfilhoscompartilham estruturaecomportamentodospais. Realizao:especificaumcontrato

Diagramas Visesdeumsistema: CasodeUso Projeto Processo Implementao Implantao

Diagramas Apresentaogrficadeumconjuntode elementos,geralmentemostradoscomoumgrafo conectadodevrtices(coisas)earcos (relacionamentos) Novediagramas:casosdeuso,classes,objetos, sequncia,colaborao,estados,atividades, componentes,execuo.

DiagramasUMLSeqncia Casos de Uso Objetos

...Colaborao Ambiente Estados

...Classes

Componentes

Atividades

Execuo

ProcessosdeDesenvolvimento CiclodeVidaTradicional Anlise Projeto Construo Testes Iterativo(RUP) ExtremeProgramming

RUP RationalUnifiedProcess Processodedesenvolvimentodesistemas iterativoeincrementalquesugereUML comopadrodeuso.

RUP

RUP Faseseseusprodutos: Concepo:Cronograma,descrio,diagramade casosdeusogeral Elaborao:Prottipo,casosdeusodetalhados, diagramadeclasses,projetolgicodobancode dados Construo:definiodasverses,mdulos implementados,bancodedados Transio:versobeta,versofinal,manuais.

ExtremeProgramming(XP) Processogildedesenvolvimento CriadoporKentBeck,WardCunningham, andRonJeffriesem2000 Objetivoprincipal:entregarosoftwarequeo clientequernomomentoemqueeleprecisa Menosformalizaoemaisdisciplina Sugereprticasparaalcanarvalores

ValoresdoXP1. Comunicao Maiorcomunicaoentremembrosdaequipe (presencial) Nolimitadaporprocessosformais Reduodacomplexidadedosistema Noprojetardemaneiragenrica:primeirooque necessrio Frequenteinversodasprticastradicionais

2. Simplicidade

ValoresdoXP1. Feedback Detecorpidadefalhas=economia Prazoscurtos Saberouvirecompreender Respeitarpontosdevistadiferentes Mudanaseerrossonaturais Jogarforaprticasquecausamproblemas

2. Respeito

3. Coragem

PrticasdoXP AmbienteInformativo Objetivo:aprimoraracomunicao Ferramentas: Cartescomhistrias(mural) QuadroBranco Postit FlipChart GrficosnaParede

PrticasdoXP BuilddeDezMinutos Objetivo:Melhorarofeedback,evitaroacmulo deerros Deveserpossvelexecutarobuildeostestes automatizadosemdezminutos Ajudamareduziroestresseemmomentos crticos

PrticasdoXP BuilddeDezMinutos Dificildeseobtercomjogos Visual:precompiledheaders VisualExpress2008:Buildsparalelos

PrticasdoXP DesenvolvimentoOrientadoaTestes Testeprimeiro,programedepois Escrevertestesquenofuncionemcasosejam inseridoserrosbviosnocdigo Fazerotestefuncionarcomimplementaes bvias Refatorarmtodosetestes

PrticasdoXP DesignIncremental Aplicaodesenvolvidadeformaiterativae incremental Criarsoluessimplesacadaiterao

SentarseJunto Trabalhoemconjunto Facilidadenacomunicao

PrticasdoXP EquipeIntegral Compostapelosdesenvolvedoresepelousurio

Trabalhoemconjunto Facilidadenacomunicao

Reunioemp

PrticasdoXP PadrodeCodificao(CodingStandard) Parecequeumapessoafeztodoosistema

PosseColetiva(CollectiveOwnership) Todossoresponsveis

IntegraoContnua(ContinuousIntegration) Vriasvezesaodia

RitmoSustentvel(SustainablePace) Prazosadequados

PrticasdoXP ProgramaoemPar(PairProgramming) Trocaealternncia

ProjetoSimples(SimpleDesign) Apenasoquenecessrio

Refatoramento(Refactoring) Melhoriacontnuadosoftware

Metfora(Metaphor) Analogiaparafacilitarodesenvolvimento

Vantagens Foconacodificao(programaspequenos) Envolvimentodousurio Trabalhoemequipeecomunicao Responsabilidadepelaqualidade Simplicidade Testesfrequentes Melhoriacontnua

FatoresCrticos PadresdeCodificao TarefasPequenas Refatorao TestesAutomticos ProgramaoemPar

PadresdeCodificao Facilitamacomunicaoeamanuteno Minimizamoconhecidoproblema:ningum entendeestecdigo Ferramentasautomticasparaformatao

TarefasPequenas Identifiquefuncionalidadespequenasque nodemoremmaisdoquealgumashoras Implementeafuncionalidadetotalmente, incluindotestesedocumentao

Refatorao Melhordedoismundos: Resolvaoproblemaomaisrpidopossvel Melhoreoprograma/recursosacadanova iterao

Oprogramaestsemprefuncionando,no importaafasedoseudesenvolvimento

Refatorao Encapsularcampos Extrairmtodos Extrairinterface(generalizartipo) Movermtododeumasubclasseparauma superclasse(PullUp) Movermtododeumasuperclasseparauma subclasse(PushDown) Renomearmtodos

TestesAutomticos Testesnoservemapenasparavalidarocdigo!!! Testessousadosparacomunicarclaramentecomo ocdigodeveserusadoecomoeledevefuncionar Aautomatizaodetestesassemelhaseaoprocesso decompilaomoderno: ProgramasemCartes=TestesManuais Compiladoresonthefly=TestesAutomticos

TestesAutomticos Sistemasquenopossuemtestesautomticos somaisdifceisdemanter ObjetosMock

TestedeNovasFuncionalidades Escrevaotesteparaafuncionalidade CodifiqueosobjetosMock Executeotesteunitrio Codifiqueanovafuncionalidade Executeotesteunitrio Executeoconjuntodetestes(TestSuite)

TestedeBugs Escrevaumtestequefalheparaobug reportado Executeotesteeobserveafalha Corrijaobug Executeotesteeobserveosucesso

ProgramaoemParFunciona?

ProgramaoemPar Podefuncionarbem(1+1