EVOLUÇÃO HISTÓRICA DA MODELAGEM DE SISTEMAS Décadas de 50/60 Softwares Simples. Desenvolvimento ad-hoc Modelagem baseada em fluxogramas e diagramas. Década de 70 Surgimento de computadores mais avançados. Explosão computacional. Sistemas mais complexo. Modelos mais robustos. Surgimento da programação estruturada. Década de 80 Computadores mais rápidos e baratos. Necessidade por interfaces. Surgimento da analise estruturada. Inicio anos 90 Surgimento da analise orientada a objetos. Fim década de 90 Maturidade da orientação a objetos. Padrões de projetos, componentes e qualidade ganham espaço. Surge a UML – Linguagem de modelagem simplificada. UML Linguagem visual Cada elemento possui uma sintaxe. Ela é independente da linguagem de programação, quanto do processo de desenvolvimento. Visões do Sistema Visão de Caso de Uso: Descreve o sistema por um ponto de vista externo, como um conjunto de interações entre sistemas e agentes externos. Visão de Implementação: Gerenciamento das versões do sistema, através de agrupamento de componentes e sub-sistemas. Visões do Sistema Visão de Implantação: Distribuição física do sistema em sub-sistemas e a conexão entre essas partes. Visão de Processo: Enfatiza as características de concorrência, sincronização e desempenho do sistema. Diagramas da UML Diagramas de Caso de Uso Diagrama de Classes Diagrama de Objetos Diagramas da UML Diagrama de Interação Diagrama de TE Diagrama de Atividade Diagrama de Implementação Diagrama de Seqüência Diagrama de Colaboração Diagrama de Componentes Diagrama de Implantação O processo de desenvolvimento de Softwares Atividade Complexa: 10% terminam no prazo estimado. 25% são descontinuados antes do fim. 60% custos acima do esperado. Atrasos médios nos projetos: 1ano Etapas no processo de desenvolvimento Levantamento de requisitos. Usuários e desenvolvedores tenham a mesma visão. Requisitos funcionais: definem a funcionalidade do sistema. Requisitos não funcionais: definem as características de qualidade que o sistema deve ter. Ex: Confiabilidade, desempenho, portabilidade Levantamento de Requisitos Serve como um termo de consenso entre a equipe técnica(desenvolvedores) e o cliente. Estabelece o escopo do sistema. O escopo pode ser volátil. Os requisitos podem e devem ser ordenados em função do seu grau de prioridade. Análise de Requisitos Análise corresponde a “quebrar” um sistema em seus componentes. Essa atividade não leva em consideração o ambiente, seu foco está em construir uma estratégia de solução. Projeto Determina como o sistema funcionará. Aspectos tecnológicos devem ser considerados nessa fase: Linguagem, banco de dados, etc. É dividido em duas partes: Projeto da arquitetura (alto nível) Projeto detalhado (baixo nível) Projeto da Arquitetura Consiste em distribuir as classes relacionadas do sistema em sub-sistemas e seus componentes. Os diagrama UML normalmente utilizados nessa fase são: Diagrama de componentes e Diagrama de implementação. Projeto Detalhado São modeladas as colaborações entre os objetos de cada módulo. Também são realizadas o projeto de interface com usuário e o projeto de banco de dados. Os diagramas utilizados são: Diagrama de classes, Diagrama de caso de uso, Diagrama de interação, Diagrama de estados e Diagrama de atividade Implementação Nessa fase, o sistema é codificado. Além da codificação, a implementação pode também utilizar componentes de softwares e bibliotecas de classe. Testes São atividades realizadas para verificação do sistema construído. Seu principal produto é o relatório de testes. Implantação O Sistema é empacotado, distribuído e instalado no ambiente do usuário. São finalizados os manuais de utilização. Em alguns casos ocorre a migração de sistemas e dados existentes. Componente Humano O desenvolvimento de software é um processo altamente cooperativa. Participam do projeto: Gerentes de projeto; Analistas; Projetistas; Programadores; Clientes. Em geral, um pessoa pode desempenhar diversas funções, bem como, uma função ser realizadas por diversas pessoas. Gerente de Projeto Profissional responsável pela gerencia ou coordenação das atividades relacionadas a construção do sistema. Também é responsável pelo orçamento do projeto de desenvolvimento. Outra atividade é verificar se os diversos recursos alocados estão sendo gastos na taxa esperada. Analistas Profissional que deve ter o conhecimento do domínio de negócio. Deve definir com o usuário os requisitos do sistema. Projetistas Deve avaliar as alternativas de solução do problema. Gerar a especificação detalhada da solução computacional. Arquiteto de Software Seu papel é elaborar a arquitetura do sistema todo. Ele é quem toma as decisões sobre quais são os subsistemas que compõe o sistema e quais as interfaces entre eles. Programadores Responsavel pela implementação do sistema. É comum em algumas equipes, possuir analistas que realizem essa atividade. Clientes Individuo para qual o sistema é desenvolvido. Pode ser cliente usuário ou cliente contratante. Sua participação é de extrema importância. Modelo de ciclo de vida em cascata Levantamento de Requisitos Analise de Requisitos Projeto Implementação Testes Implantação Características do Modelo Classico Implementação Bottom-Up Nada está pronto até o final Erros pequenos são encontrados no inicio, enquanto os maiores no final dos testes. Progressão Seqüencial Fases são seguidas de forma seqüencial As especificações são congeladas Ciclo de Vida Semi-Estruturado Implementação Top-Down Possibilidade de testes antes do fim Diagramas Utilizados Diagramas de Fluxo de Dados Dicionário de Dados Diagramas de Entidade-Relacionamento Especificações de Processos Ciclo de Vida Estruturado Dividido em 9 partes: Levantamento Análise Projeto Implementação Geração de Testes Controle de Qualidade Descrição dos Procedimentos Conversão de Bases Instalação Levantamento Estudo de Viabilidade Especificação do que se deseja automatizar Principais Objetivos: Diagrama de Contexto Diagrama de Fluxo de Dados Identificar atuais deficiências Estabelecer Metas e Objetivos Previsão de termino Análise Gera a especificação estruturada do sistema. Modelagem utilizando: Diagramas de Fluxo de Dados Diagramas Entidade-Relacionamento Diagrama de Transição de Estados Envolve o desenvolvimento de um modelo Ambiental e comportamental Projeto Desenvolvimento de hierarquia para construção. Transformação do modelo de dados em bases de dados Implementação Codificação e integração das partes. Programação Estruturada e Implementação TopDown O sistema vai ficando completo progressivamente. Geração de Testes Criar testes a partir da especificação. Pode ser realizado paralelamente ao projeto e implementação. Controle de Qualidade Teste Final ou Teste de Aceitação. Deve demonstrar em geral o funcionamento completo do sistema. Descrição dos Procedimentos Descrição formal das partes manuais do novo sistema. Descrição da interação utilizados com o software. Conversão das Bases de Dados Converter dados existentes para nova base de dados Instalação Passagem imediata versus gradual. Treinamento dos utilizadores. Abordagem Radical x Conservadora Radical: Atividades Conservadora: Uma executadas em paralelo. atividade só inicia ao termino da outra. Ambas são perigosas devido a serem extremos. Abordagem Radical x Conservadora Utilização de formas intermediárias: Iniciar uma fase com 50% da anterior completa. Executar algumas atividades em paralelo. Não existe uma forma certa ou errada, cada projeto é uma nova condição de desenvolvimento. Mais Radical = Maior probabilidade de erros Mais Conservadora = Menor probabilidade de erros Modelo de ciclo incremental e iterativo Levantamento de Requisitos Analise de Requisitos Projeto Implementação Testes Implantação Levantamento de Requisitos Analise de Requisitos Projeto Implementação Testes Implantação Levantamento de Requisitos Analise de Requisitos Projeto Implementação Testes Implantação