730 likes | 812 Views
Arquiteturas de Software. Francilene Garcia Projeto I 2008.2. Conceitos Básicos. Um sistema computacional. Nós temos tecnologia. Podemos construí-lo. Um sistema computacional isolado…. ?. computador. No espaço, ninguém escuta o seu. Stakeholders…. QA. Operador. Consumidor.
E N D
Arquiteturas de Software Francilene Garcia Projeto I 2008.2
Um sistema computacional Nós temos tecnologia Podemos construí-lo
Um sistema computacional isolado… ? computador No espaço, ninguém escuta o seu
Stakeholders… QA Operador Consumidor Arquiteto Técnico Desenvolvedor CEO Cliente BillGates AdminSys CEO Fornecedor
Outros sistemas… Ativos Gerador de Relatórios Contabilidade Infra Rede Labs Estudantes Cadastros
Oportunidades e riscos… Impostos Venda fraca de sistemas Mercado imaturo Venda acelerada de sistemas Construção de imagem Entrada na Bolsa BillGates Desempenho fraco Chega tarde ao mercado
Restrições e aspectos críticos… Falta desenv. de BD Sistema Operacional Alta oferta de desenv. Java Processador + rápido Legislação Sistemas Legados Ética e meio ambiente Políticas Padrões
Qual o papel da arquitetura? ? Leaning tower image from Gary Feuerstein. Other images from The Big Ball of Mud, by Yoder and Foote.
Ciclo de vida do desenvolvimento Arquitetura define a estrutura do sistema Primeira release libera o core do sistema “The evolutionary delivery lifecycle model” (Rapid Development, Steve McConnell) A arquitetura desempenha um papel vital na definição da estrutura do sistema, desde cedo no ciclo de vida do desenvolvimento
Vida útil do sistema A arquitetura antecipa decisões que afetam toda vida útil do sistema
Definições… …e formam um todo que atendem a expectativas Um sistema é um conjunto de partes As partes se relacionam entre si…
Alguns exemplos… Antes: Na engenharia, trabalha-se com muitos modelos. Um modelo é uma representação que abstrai detalhes menos essenciais, e pode ser manuseada de uma forma que o “objeto real” não permite.
Boletim Web (Blog) Disponibilidade Segurança Uma arquitetura em 3-camadas – muito utilizada em sistemas client-server e web
Processamento de imagem Desempenho Portabilidade O processamento tipo “pipeline” é muito utilizado em sistemas de tempo real e embarcados
Isto é tudo! • Questões?
Referências e Leituras Recomendadas • "An Introduction to Architecture." Chapter 1 of A Software Architecture Primer, by John Reekie and Rohan McAdam. • "Architectural Analysis." Chapter 2 of A Software Architecture Primer, by John Reekie and Rohan McAdam. • Jan Bosch, ``Design of Software Architectures,'' Chapter 2 of Design and Use of Software Architectures: Adopting and Evolving a Product-line Approach, pp 23--40. Addison-Wesley, 2000. • Alistair Cockburn, ``Introduction,'' Chapter 1 of Writing Effective Use Cases, pp 1--19. Addison-Wesley, 2000.
Arquitetura é arte? Fatores contextuais Arquitetura desejável Necessidades do Cliente Os clientes devem auxiliar no projeto da arquitetura desejável, sem esquecer os fatores contextuais
Fatores contextuais – para casas • Clima • Materiais disponíveis • Portabilidade • Riscos • Atividades
onstraints nablers isks “Fatores contextuais”? “OS-Z não é compatível” “OS-Z melhora a segurança” “OS-Z não tem tal facilidade” São exemplos de fatores.
Tipos de fatores contextuais • São buscados em vários lugares: • Mercado/concorrência • Empresas • Tecnologia • Políticas “O time de desenvolvimento da India…” “A legislação restringe falhas …” “Uma versão atualizada de …” “Padrão 3576 requer…” “A forte capacidade de desenvolvimento Java…” “Esta janela de oportunidade…”
Decisivos • Mudança…! • Estrutura organizacional • Desempenho do time
Uso de narrativas • Um caminho informal mas útil para descrever funcionalidades do sistema através de cenários • Cria “personagens” e conta a “estória” • Algumas vezes pode parecer levar à escrita de casos de uso Preciso de um editor que “escute” minhas palavras e gere um histórico com meus discursos…
Um exemplo de narrativa “Pedro está interessado em comparar paisagens do litoral nordestino com praias da costa espanhola usando padrões de fotografia. Ele tem acumulado e classificado dados nos últimos cinco anos, exportando-os de forma que os dados possam ser manuseados por um pacote estatístico.” “Pedro” é um pesquisador do INPE.
Requisitos funcionais • Surgem das necessidades dos stakeholders • Explicitam quais funcionalidades o sistema deve prover • Abordagens variam: • Linguagem estruturada (análise de requisitos) • Casos de uso • Modelos formais • Estórias de Uso (XP1)
Requisitos não-funcionais • Expressados na forma de atributos de qualidade • A arquitetura deve identificar, analisar e suportar a implementação de atributos de qualidade
Atributos runtime • Atributos runtime afetam a execução do sistema em produção • Cenários devem ser descritos com foco em instâncias específicas da execução
Um acrônimo bem utilizado… Velocidade do process., utilização de recursos, tempo de resposta erformance sability Impacto de fatores humanos Taxa de falhas, modos, severidade, e recuperação eliability Integridade dos dados, confidencialidade, resistência a ataques ecurity São atributos usados para definir o “guarda-chuva” das qualidades.
Qualidades não ligadas à execução • São mais ligadas à vida útil do sistema • Cenários são expressados em termos de incidentes que ocorrem durante o desenvolvimento, deployment, ou operação do sistema
Outros acrônimos… aintainability volvability estability eusability ntegrity onfigurability calability
Algum outro atributo de qualidade? availability auditability modifiability feasibility compatibility backwards-compatibility standards-compliance continuity-of-view friendliness customizability learnability memorability enjoyability responsiveness schedulability verifiability analyzability reparability adaptability integrability interoperability predictability extensibility dependability safety portability survivability expendability expandability extensibility distributability flexibility
Performance • Pode se manifestar de diferentes formas: • Latência • Rendimento • Eficiência de memória • Diferentes métricas de desempenho devem ser aplicadas a diferentes partes do sistema
Usability • Usabilidade apresenta vários aspectos: • Aprendizagem • Atratividade • Tempo para completar a tarefa • Taxa de erros • Para um bom resultado, deve ser analisado por um perito em usabilidade
MTTF Availability = MTTF+MTTR Reliability • Um campo complexo: • Falhas de hardware/software • Mean time to failure (MTTF) • Mean time to repair (MTTR) • Demandas por Reliability dependem de sua criticalidade: • Indesejável • Perda de receita • Perda de vida
Reliability • Conceito varia para sistemas diferentes: • Sistemas financeiros podem se tornar indisponíveis, MAS nenhum dado pode ser perdido • Sistemas de Telecom podem perder dados MAS devem se recuperar agilmente • Sistemas de controle devem manter o controle, em qualquer situação • Capacidade de recuperação
Criticality • Consequência do sistema de falha • Não-crítica • Perturba a atividade • Baixa • Perda de negóco, mas não séria • Média • Perda de longo prazo para o negócio • Alta • Prejuízo, perda de vida, etc.
Security • Todo sistema trata de alguma maneira: • Ataque externo (network) • Fragilidade da política • Integridade dos dados • Segurança é onerosa • Técnicos especializados podem ajudar
Endereçando atributos de qualidade • Narrativas (ou cenários) • Comportamento • Patterns (padrões) • Estilos • Táticas
Narrativas • Uma narrativa ou cenário que reforça o atributo de qualidade buscado • Contexto • Ação • Resposta Preciso de um editor que “escute” minhas palavras e gere um histórico com meus discursos… a cada 15 minutos de fala deve ser gerado um documento Deve ser mensurável!
Performance “A consulta no caixa eletrônico deve gerar um retorno em menos de 2 segundos.”
Referências e Leituras Recomendadas • "Architectural Design." Chapter 3 of A Software Architecture Primer, by John Reekie and Rohan McAdam. • Michael Hirsch, ``Making RUP agile,'' OOPSLA 2002 Practitioners Reports, 2002. • William J. Brown, Hays W. McCormick III, and Scott W. Thomas. ``One Size Fits All,'' in AntiPatterns in Project Management, pp319--366. John Wiley and Sons, 2000. • Frederick P. Brooks Jr. The Design of Design. Turing Award Lecture, 2001.
Um elefante… Uma parede! É como um leque! Uma árvore! Um arpão! Uma corda? Uma cobra! Baseado numa fábula indiana.
Um sistema de software… E as atividades de tempo real? Como vai funcionar a funcionalidade de mineração de dados? Vamos ver o deployment Quais as vantagens estratégicas ?
Visões da arquitetura Uma visão expressa um aspecto particular da arquitetura Visão conceitual Implementação Domain-level responsibilities Execução Estrutura Build-time Estrutura Run-time Alguns autores recomendam a construção de várias visões… outros não…
Componentes e conectores Um componente relaciona um conjunto de responsabilidades • Exemplos de responsabilidades: • PlayBackClipSequence • SynchronizeWithVideo • PrefetchClips Um conector indica a comunicação entre componentes A arquitetura conceitual estrutura o sistema em termos de responsabilidades no nível do domínio
Interfaces externas Interfaces externas (incluindo sistemas legados) Algumas restrições físicas do sistema conhecidas Interfaces essenciais com hardware Nota: Um stakeholder não é um sistema externo!
SRS Projetando uma arquitetura? Atributos de qualidade Requisitos funcionais Requisitos do negócio