Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
y Como e quando a arquitetura acontece em RUP e XP y O papel do Arquiteto de Software y Relao entre os Stakeholders e a arquitetura de um
sistema
y Consideraes finais
Arquitetura de Software
Arquitetura de Software
Introduo
| Sucesso do Projeto = planejamento + escolha metodologia adequada; | Planejamento - escolha do processo de acordo com recursos disponveis; | Metodologias
y Tradicional (Cascata):
y Etapas seqncias; y Grande esforo em especificar e definir arquitetura;
y Iterativas (RUP):
y A cada iterao uma parte do sistema desenvolvida; y Incremental;
y geis (XP):
y Comunicao face-a-face preferida a documentao compreensiva; y Pequenas releases.
4 Arquitetura de Software 4
Requisitos
y y y
Apenas um usurio operando o sistema; Aplicao desktop (centralizada); Dar suporte a locao de filmes; Modelagem dos requisitos: diagramas
Design
y
| | | |
Implementao e testes de unidade Integrao Manuteno O que acontece se eu chegar a fase de implementao e perceber que algum requisito/funcionalidade no foi modelado de forma correta ou consistente? E se algum requisito/funcionalidade mudar? Se o sistema tiver que dar suporte a pagamento tambm?
6 Arquitetura de Software
| |
8 8 Arquitetura de Software
9 9 Arquitetura de Software
10 10 Arquitetura de Software
Papis/Equipe (quem est fazendo o que); Artefatos (o que produzido); Atividades (como o trabalho conduzido); Workflows (quando uma tarefa conduzida).
11 Arquitetura de Software
Arquitetura no RUP
| Modelos so representaes consistentes de um sistema; | Os modelos de sistemas complexos podem ser bastante grandes; | Suponha uma tarefa de descrever um sistema em que os designers, programadores, usurios e gerente estejam aptos para:
y y y y y Entender o que o sistema faz; Entender como o sistema funciona; Estar pronto para trabalhar em alguma parte do sistema; Estender o sistema; Reusar parte do sistema para construir outro.
| Agora assuma que liberado um espao limitado para essa tarefa (p. ex. O mximo de 60 pginas). O que voc faria para descrever a arquitetura do sistema? | A arquitetura o que resta quando voc no pode tirar mais nada e ainda entender o sistema e explicar como funciona. 12
12 Arquitetura de Software
Arquitetura no RUP
| Prope um processo centrado na arquitetura; | Anlise e design para a arquitetura so atividades conjuntas; | Uso de UML e vises 4+1, Kruchten[3].
13 13 Arquitetura de Software
Arquitetura no RUP
| A arquitetura desenvolvida em iteraes durante a fase de elaborao seguindo uma abordagem incremental (builds), resultando assim em uma arquitetura estvel;
| O papel da descrio da arquitetura guiar toda a equipe de desenvolvimento durante ciclos de vida do sistema.
14 14 Arquitetura de Software
Concepo
y
Requisitos: Modelagem do negcio e do domnio; Vises; Use cases do sistema; Diagramas preliminares de classes; Diagramas Sequncia e/ou colaborao; Diagrama final de classes; Prottipo da arquitetura; Prottipo GUI; Planejamento da construo; Reviso dos use cases; Reviso dos diagramas de classes
Elaborao
y y y y y y y y
Construo
y y 15
15
Arquitetura de Software
Extreme Programming - XP
| A Extreme Programming - XP - uma metodologia gil voltada s equipes pequenas e mdias que desenvolvem software baseado em requisitos vagos e que se alteram com rapidez, Beck [16]; | O objetivo de XP tornar o projeto flexvel, diminuindo o custo a possveis mudanas; | Por que o termo extreme no nome?
16 16 Arquitetura de Software
Se revisar o cdigo bom, ento vamos revisar o cdigo durante todo o tempo (programao em par); Se testar bom, ento todo mundo vai testar durante todo o tempo (teste de unidade), at os clientes (teste funcional); Se design bom, ento vamos fazer com que isso seja parte do dia-adia da equipe (refatorao de cdigo); Se ter simplicidade bom, ento vamos deixar o sistema com o design o mais simples possvel; Se arquitetura importante, todo mundo ir defin-la e refinla durante todo o tempo (metfora); Se teste de integrao importante, ento vamos integrar e testar vrias vezes ao dia (integrao contnua); Se ter iteraes pequenas legal, ento vamos fazer iteraes muito pequenas segundos/minutos/hora (Planning Game). 17
17
Arquitetura de Software
18 18 Arquitetura de Software
19 19 Arquitetura de Software
Arquitetura em XP
| comparada ao algoritmo hill-climbing: primeiro voc faz um design simples, depois um pouco mais complexo, em seguida um mais simples, depois um mais complexo. | Aplicar esse algoritmo para projetar a arquitetura do sistema da locadora:
y Primeiro desenvolve-se uma arquitetura que dar suporte apenas para as funcionalidades especificadas: Utilizar plataforma J2SE 1.4; Persistncia com XML; y Depois tenta-se uma mais complexa; Utilizar plataforma J2SE 1.4; Persistncia com MySQL; y Se tivermos que mudar para a J2SE 1.6?
20 20 Arquitetura de Software
Arquitetura em XP
| Se alguma funcionalidade/requisito mudar?
Agora a aplicao deve ser capaz de suportar plugins; E agora? Esse requisito tem impacto sobre o que j foi feito? SIM!!!
21 21 Arquitetura de Software
Arquitetura em XP
| Durante a fase de Explorao a equipe possibilidades de arquitetura para o sistema: experimenta as
y A equipe se divide em pares, onde cada para ir tentar construir o sistema de forma diferente, durante uma ou duas semanas; y Depois as solues so comparadas e se escolhe a mais vivel (metfora de XP); y Caso acabe o tempo e no tenha resposta, sinal de que existe riscos, tecnolgicos p. ex., e deve-se procurar alternativas.
| Espera-se que a arquitetura para todo o sistema esteja definida ao final da primeira iterao, ainda que seja s o esqueleto.
22 22 Arquitetura de Software
Uma equipe de 4 desenvolvedores se divide em pares para tentar construir o sistema de forma diferente, durante uma ou duas semanas , ento temos 2 pares;
y
Primeiro par: | Implementar o sistema utilizando a plataforma J2SE 1.5; | Fazer persistncia com XML; Segundo par: | Implementar o sistema utilizando Delphi; | Fazer persistncia com XML; Comparam-se as solues e escolhe a mais vivel; Resultado: Metfora definida!
23
y y
23
Arquitetura de Software
24 24 Arquitetura de Software
| No segundo ciclo foram implementadas as correes pelos desenvolvedores dos erros detectados pela equipe de testes no primeiro ciclo, assim como os re-testes aps as correes terem sido efetuadas.
25 25 Arquitetura de Software
26 26 Arquitetura de Software
| No 2 ciclo:
Medodologia RUP XP 27 Arquitetura de Software
| Em relao ocorrncia de erros, verificou-se no 1 ciclo, que o grupo de XP apresentou 42% a mais que o grupo de RUP;
y Hiptese: devido aos scripts de testes feitos pelos desenvolvedores XP antes da implementao definitiva a quantidade de erros detectados nesta etapa seria maior que a do RUP; y Tal hiptese no se confirmou devido estas propores de erros terem se mantido na etapa dos testes de aceitao realizados pela equipe de testes, no 2 ciclo.
28 28 Arquitetura de Software
|No prudente e nem possvel efetuar uma concluso genrica, e sim, afirmar que neste caso, sob estas condies de parmetros, variveis e escopo apresentados, obteve-se melhor resultado com a aplicao das tcnicas e prticas sugeridas pelo RUP.
29 Arquitetura de Software
30
Arquitetura de Software
31 31 Arquitetura de Software
32
35 35 Arquitetura de Software
36 36 Arquitetura de Software
37 37 Arquitetura de Software
39 39 Arquitetura de Software
40 40 Arquitetura de Software
41 41 Arquitetura de Software
42 42 Arquitetura de Software
43 43 Arquitetura de Software
44 44 Arquitetura de Software
Uma certificao do mercado, no atesta que alguem ou no determinada coisa; Ter uma certificao SCEA no prova que voc efetivamente um arquiteto de software; A certificao simplesmente garante que voc foi testado em todos os aspectos que um arquiteto deve possuir de conhecimento;
47
47
Arquitetura de Software
Vistos os pontos relacionados ao perfil do arquiteto de software, alguns mitos foram quebrados:
y
1 Mito: arquiteto = desenvolvedor snior evoludo; 2 Mito: o arquiteto trabalha em um ambiente isolado da realidade do processo de desenvolvimento; 3 Mito: para ser um arquiteto basta conhecer as tcnicas de arquitetura de software; 4 Mito: um analista de sistemas ou um programador mais experiente pode fazer o mesmo trabalho que um arquiteto de software faz.
48
48
Arquitetura de Software
Arquiteto de Software
|
Muitas pessoas pensam no arquiteto como aquele superprogramador que conhece vrias tecnologias e o cara mais inteligente da equipe; Esta uma viso errada, normalmente, estes super-programadores so pessoas difceis de lidar, que pouco conversam (a no ser sobre tecnologia) e que no gostam de serem pressionadas. Totalmente em desacordo com o perfil do arquiteto de software;
49 49 Arquitetura de Software
50
Arquitetura de Software
Introduo
CONTEXTUALIZAO
51 51 Arquitetura de Software
Introduo
CONTEXTUALIZAO
limitadas quelas que o usam. y Sistemas de software no so apenas usados, eles so:
y y y y y
y Stakeholders!
Cada atividade envolve um nmero de pessoas com requisitos, interesses e necessidades prprios a serem satisfeitos pelo software
52 52 Arquitetura de Software
Introduo
CONTEXTUALIZAO
Impossvel pensar em arquitetura de software sem considerar os stakeholders
Processo de Definio Arquitetural
Segue
Elementos Arquiteturais
Compreende
1..n
Arquitetura
Tem
Sistema
Enderea as necessidades de 1..n
Arquiteto
Cria e Detm
Descrio Arquitetural
Stakeholder
1..n
Captura os interesses de
53 53 Arquitetura de Software
Stakeholders
DEFINIO
Um stakeholder em uma arquitetura de software uma pessoa, grupo ou entidade com um interesse em ou preocupaes sobre a realizao da arquitetura.
[IEEE Standard 1471, 2000]
54 54 Arquitetura de Software
Stakeholders
DEFINIO
Um stakeholder em uma arquitetura de software uma pessoa, grupo ou entidade com um interesse em ou preocupaes sobre a realizao da arquitetura.
[IEEE Standard 1471, 2000]
Indivduos
y Ex: o arquiteto e o gerente de projetos.
Classes de pessoas
y Ex: usurios, desenvolvedores e testadores.
55 Arquitetura de Software
55
Stakeholders
DEFINIO
Um stakeholder em uma arquitetura de software uma pessoa, grupo ou entidade com um interesse em ou preocupaes sobre a realizao da arquitetura.
56 56 Arquitetura de Software
Stakeholders
DEFINIO
Um stakeholder em uma arquitetura de software uma pessoa, grupo ou entidade com um interesse em ou preocupaes sobre a realizao da arquitetura.
[IEEE Standard 1471, 2000]
57 57 Arquitetura de Software
Stakeholders
IMPORTNCIA DOS STAKEHOLDERS y Stakeholders dirigem a forma e sentido da arquitetura: y Decises arquiteturais refletem as suas necessidades. y Sem eles, no haveria nenhum ponto no desenvolvimento da
arquitetura:
y No haveria ningum para constru-lo, implant-lo, execut-lo, ou pagar
arquiteturais.
58 58 Arquitetura de Software
Stakeholders
PROBLEMAS E TRADEOFFS
sucesso. y No entanto,
y y
Os interesses dos stakeholders muitas vezes no so claros. Quando o stakeholder no um indivduo, pode no ser possvel capturar as necessidades de todos os membros y Dificuldade na identificao dos stakeholders
y Ex: quando um novo produto est sendo desenvolvido.
59
Arquitetura de Software
Stakeholders
OS STAKEHOLDERS E O ARQUITETO
|
60 60 Arquitetura de Software
Stakeholders
IDENTIFICANDO STAKEHOLDERS
61 61 Arquitetura de Software
Stakeholders
CRITRIOS PARA UM BOM STAKEHOLDER
|
Autorizado Representativo
62
Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
E muitos Outros!
63 63 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
64 64 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
Gerente de Projeto y Responsvel pelo gerenciamento do progresso do sistema atravs das variveis: qualidade, custo, prazo e escopo. y Interessado em:
y Todos os propsitos e restries do sistema; y Suas interaes com outros sistemas; y Saber se a arquitetura permitir que as equipes trabalhem
65 65 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
Arquiteto y Responsvel por descrever, documentar e conduzir a construo do sistema satisfazendo todas as necessidades dos stakeholders. y Preocupado com:
y Identificar e engajar os stakeholders; y Entender e capturar os interesses dos stakeholders; y Definir uma arquitetura que enderea estes interesses; y Conduzir a realizao da arquitetura do sistema fsico.
66 66 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
Desenvolvedor y Responsvel pela construo do sistema a partir das especificaes. y Interessado em:
y Idia geral por trs do sistema; y Funcionalidades que devero ser implementadas; y Recursos que podem ser usados (plataforma, linguagem, ferramentas, etc.); y Questes como manutenabilidade, flexibilidade e compreensibilidade; y Restries (atributos de qualidade, oramento, etc.) que devem ser satisfeitas.
67 67 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
Testador y Responsvel por testar o sistema para garantir que ele funciona corretamente. y Interessado em:
y Mesmas informaes dos desenvolvedores, porm com nfase na
68 68 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
Mantenedor y Responsvel pelo gerenciamento da evoluo do sistema uma vez que ele seja operacional. y Interessado em:
y Documentao de desenvolvimento; y Instrumentao (facilidades para monitoramento operacional); y Ambientes de depurao; y Interoperabilidade com sistemas existentes.
69 69 Arquitetura de Software
Stakeholders
CLASSES DE STAKEHOLDERS
y y y y y y
Outros Stakeholders Engenheiro de requisitos Analistas Projetistas de outros sistemas Gerentes de linha de produto Usurios finais Arquitetos futuros
70 70 Arquitetura de Software
Stakeholders
STAKEHOLDERS E VISES y Algumas dificuldades podem existir ao responder questes como: y Quais so os elementos funcionais principais da arquitetura? y Como estes elementos iro interagir entre si e com o meio? y Que informao ser gerenciada, armazenada e apresentada? y Que elementos fsicos de hardware e software sero necessrios para dar suporte a estes elementos funcionais? y Que caractersticas operacionais e capacidades devero ser providas? y Quais ambientes de desenvolvimento, teste, suporte e treinamento sero providos? y Modelo nico?
71 71 Arquitetura de Software
Stakeholders
STAKEHOLDERS E VISES
y Impossvel capturar as caractersticas funcionais e propriedades de
qualidade de um sistema complexo com um simples modelo. y preciso representar sistemas complexos de uma forma que seja gerencivel e compreensvel por uma faixa de stakeholders tcnicos e de negcio. y Vises!
Uma viso uma representao de um ou mais aspectos estruturais de uma arquitetura que ilustra como a arquitetura enderea um ou mais interesses de um ou mais stakeholders.
[Woods, 2005] 72 72 Arquitetura de Software
Stakeholders
STAKEHOLDERS E VISES
73
73
Arquitetura de Software
Stakeholders
CONFLITOS DE INTERESSES y Exemplos y Desempenho x Proteo
y Usurio: Uma pgina no deve demorar mais de 1 segundo para carregar. y Cliente: O sistema deve ser seguro (controle de acesso, autenticao, ...).
y Confiabilidade x Desempenho
y Cliente: persistncia com arquivos XML y Desenvolvedor: persistncia com BDs
74 74 Arquitetura de Software
Consideraes finais
75
Arquitetura de Software
Consideraes finais
y
76
Arquitetura de Software
Referncias
y [1] P. B. Kruchten, "The 4+1 view model of architecture," Software, IEEE, vol. 12, y y
y y y
no. 6, pp. 42-50, 1995. [2] Fowler, M. Design - who needs an architect? Software, IEEE 20, 5 (2003), 1113. [3] Kruchten, P. The software architect-and the software architecture team. Software Architecture; TC2 First Working IFIP Conference on Software Architecture (WICSA1) 2 , 565583. [4] P. Kruchten, The Rational Unified Process: An Introduction, Third Edition. Addison-Wesley Professional, December 2003. [5] K. Beck and C. Andres, Extreme Programming Explained: Embrace Change (2nd Edition). Addison-Wesley Professional, November 2004. [6] M. R. Mcbride, "The software architect: essence, intuition, and guiding principles," in OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications. ACM Press, 2004, pp. 230-235.
77
Arquitetura de Software
Referncias
y [7] Rational Unified Process: http://www.wthreex.com/rup. y [8] BROOKS, F. No Silver Bullet: Essence and Accidents of Software Engineering.
y y y y
Proc. IFIP, IEEE CS Press, pp. 1069-1076; reprinted in IEEE Computer, pp. 10-19, Apr, 1987. [9] RUP e XP: http://xp.edugraf.ufsc.br/bin/view/XP/RUPeXP. [10] Resvista Mundo Java, edio 25. [11] Utilizando UML e Padres: Uma Introduo Anlise e ao Projeto Orientados a Objetos, 2 Edio, Craig Larman, BOOKMAN, 2004 [12] N. Rozanski and E. Woods, Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional, April 2005.
78
Arquitetura de Software