1. O papel e a importância da arquitetura de software Aula Teste Concurso Professor FATEC São Paulo Dalton Martins [email_address] São Paulo, Março, 2011
2. O que veremos hoje ? Tema da Aula: o papel e a importância da arquitetura de software. Tópicos: 1. Contexto atual dos principais problemas de projetos na área de TI; 2. O que é arquitetura de software? 3. O que podemos esperar de uma arquitetura de software? - o papel de educação ; - o papel de comunicação ; - o papel de facilitação na análise e construção do software. 4. Importância da arquitetura: ajudando nos problemas dos projetos de TI; 5. Conclusão .
3. *Sucesso: projetos entregues no prazo, dentro do orçamento e com os requisitos corretos *Falharam: projetos cancelados e nunca utilizados *Problemas: atrasados, fora do orçamento e/ou com menos funcionalidades que demandadas Fonte: Chaos Repport 2009 Contexto atual
4. 51% dos usuários acham que a implantação do seu ERP não deu certo . 46% dos usuários acha que sua organização não entendeu o uso do sistema na melhoria de seus processos . 40% dos projetos falharam em atingir seus objetivos dentro de um ano de existência. 52,9% dos projetos vão custar aproximadamente 189% de seu orçamento original Fonte: Chaos Repport 2009, Robbins-Gioia Survey 2001, Conference Board Survey 2001. Contexto atual
5. Quais as principais causas encontradas 1. Falta de envolvimento do usuário 2. Falta de suporte executivo 3. Falta de clareza nos objetivos de negócio 4. Falta de maturidade emocional 5. Pouca otimização 6. Falta de um processo ágil 7. Falta de experiência em gerenciamento de projeto 8. Falta de conhecimento técnico 9. Má execução técnica do projeto 10. Falta de ferramentas e infra-estrutura Fonte: Chaos Repport 2009
6. Quais as causas tem a ver com relacionamento entre pessoas? 1. Falta de envolvimento do usuário 2. Falta de suporte executivo 3. Falta de clareza nos objetivos de negócio 4. Falta de maturidade emocional 5. Pouca otimização 6. Falta de um processo ágil 7. Falta de experiência em gerenciamento de projeto 8. Falta de conhecimento técnico 9. Má execução técnica do projeto 10. Falta de ferramentas e infra-estrutura Fonte: Chaos Repport 2009
7. Quais os principais problemas no desenvolvimento de um projeto de TI? Relacionamento entre pessoas , que impacta em: - dificuldade de construir uma visão comum; - dificuldade de ter clareza de requisitos; - dificuldade de ter orientação clara sobre os rumos do projeto; - baixo nível de adesão; - possibilidades reduzidas de atingir o que se espera, pois cada um espera coisas muito diferentes.
8. Quais recursos os diferentes atores utilizam para se comunicarem , alinharem visões e otimizarem esforços na realização de um projeto de software?
9. Desenvolvimento de software é um processo dinâmico Arquitetura de Sofware Como capturar estrutura, subestrutura, replicação com variação, comportamento dinâmico, atributos críticos de qualidade, requisitos, decisões fundamentais e propriedades emergentes de um sistema? Arquitetura de software é o recurso que utilizamos para documentar toda essa complexidade!
10. Desenvolvimento de software é um processo dinâmico Arquitetura de Sofware Como capturar estrutura, subestrutura, replicação com variação, comportamento dinâmico, atributos críticos de qualidade, requisitos, decisões fundamentais e propriedades emergentes de um sistema? Arquitetura de software é o recurso que utilizamos para documentar toda essa complexidade!
11. Arquitetura de software de um sistema computacional é o conjunto de estruturas que são necessárias para pensarmos sobre o sistema. Consiste de elementos do software, relações entre eles e as propriedades de ambos. Arquitetura de Sofware
12. Exemplo 1 – Arquitetura Cliente Servidor Arquitetura de Sofware
14. É através da Arquitetura de software que podemos dividir o sistema em partes e suas relações. É essa divisão que permite que grupos de trabalho, frequentemente separados por limites organizacionais, geográficos e mesmo de horários, possam trabalhar coletivamente na resolução de um problema maior. Arquitetura de Sofware
15. Mesmo a melhor arquitetura de software, perfeitamente desenvolvida para um projeto pode ser inútil se as pessoas não souberem corretamente como utilizá-la. Arquitetura de Sofware Criar uma arquitetura não é o suficiente! Ela precisa ser comunicada de uma forma que todos os atores interessados possam compreendê-la!
16. Arquitetura de Sofware Vejamos um exemplo! O que significa a seta abaixo? C1 C2
17. Arquitetura de Sofware Vejamos um exemplo! O que significa a seta abaixo? - C1 chama C2; - dados fluem de C1 para C2; - C1 instancia C2; - C1 envia uma mensagem para C2; - C1 é um subtipo de C2; - C2 é um repositório e C1 está escrevendo dados; - C1 é um repositório e C2 está lendo dados! Todas as respostas são válidas! Depende do contexto! C1 C2
18. Papéis da Arquitetura de Software Arquitetura serve como um meio de educação Arquitetura de Sofware Arquitetura serve como um meio de comunicação Arquitetura serve como base para análise e construção do sistema.
19. Arquitetura como meio de educação O uso educacional consiste de introduzir as pessoas a como funciona e como foi projetado o sistema. Novos membros da equipe, analistas externos, reuniões de aprovação e avaliação precisam de um meio para entenderem o sistema.
21. Arquitetura como meio de comunicação Os diferentes atores de um projeto possuem diferentes necessidades de informação. Precisam de diferentes formas de visualizar e compreender como um sistema funciona! A arquitetura é utilizada como meio de alinhamento de decisões e sistematização de processos. Facilita reduzir compreensões diferentes que só seriam percebidas na execução do programa!
23. Arquitetura como meio de análise e construção 3 principais fatores: - Arquitetura explicita aos implementadores o que deve ser feito; - Arquitetura contém informação de base para avaliar segurança, usabilidade, disponibilidade, entre outros elementos do sistema; - Para implementadores que utilizam ferramentas automáticas para geração de código, a documentação incorpora os modelos necessários .
25. Arquitetura de Software: vale a pena? (Custo de A sem Arquitetura – Custo de A com Arquitetura) > Custo da Arquitetura Seja A um projeto de software. Podemos avaliar se vale ou não a pena utilizar arquitetura de software com base na relação abaixo: Fundamental considerar todo o custo de comunicação, alinhamento, execução, etc., etc., etc....
26. Importância da Arquitetura de Software A arquitetura de software é o recurso que utilizamos que torna viável a produção de sistemas complexos! Ela auxilia na relação direta entre os diferentes atores envolvidos em um projeto. Facilita a compreensão, execução e comunicação a respeito do projeto!
28. Conclusão A arquitetura de software é um recurso fundamental no desenvolvimento de sistemas complexos. No entanto, apenas o uso da arquitetura não dá conta de tratar a complexidade que envolve a relação entre as pessoas no desenvolvimento de software. É fundamental utilizar como um facilitador na comunicação entre pessoas, otimizando recursos e tempo dos atores de um projeto.