Análise e Projeto de Sistemas I Profa. Ana Karina Barbosa Fevereiro/2007 Análise e Projeto de Sistemas Orientado a Objetos - a disciplina Avaliação – 1o Exercício Escolar - Prova – 2o Exercício Escolar - Projeto em grupo Metodologia – – – – Aulas Expositivas Anotações de aula Listas de Exercícios Acompanhamento de Projeto O que constitui um sistema de informática? SISTEMA SOFTWARE HARDWARE BASE DE DADOS REDES O software é a parte programável de um sistema de informática. Ele é um elemento central: realiza estruturas complexas e flexíveis que trazem funções, utilidade e valor ao sistema. Mas os outros componentes são indispensáveis. Foco da Disciplina Análise e Projeto do Software. Na prática, o analista será chamado com freqüência a resolver questões pertinentes aos outros componentes do sistema ou, no mínimo, encontrar quem as resolva. Alguma proficiência nas respectivas disciplinas lhe será necessária. Realidade de Hoje Grande demanda para desenvolvimento de aplicações não triviais. Rápida evolução tecnológica. Tempo de desenvolvimento deve ser curto. Falta de tempo para amadurecimento dos profissionais. Equipes grandes. Algum problema? Software que não atende aos requisitos. Software com bugs. Tempo e orçamento estourados. Entendimento não preciso das necessidades do usuário. Dificuldade na mudança dos requisitos. Módulos que não se encaixam perfeitamente. Dificuldade de manutenção dos sistemas. Descoberta tardia de sérios problemas no projeto. Performance inadequada. Por que esses problemas acontecem? Gerência de requisitos insuficiente. Comunicação ambígua e insuficiente. Arquiteturas frágeis. Complexidade dos sistemas. Inconsistência entre requisitos, projeto e implementação não detectados. Testes insuficientes. Avaliação subjetiva da situação dos projetos. Propagação de mudanças descontrolada. Automação insuficiente. Como tratar as causas dos problemas? Seguir um processo de desenvolvimento. O QUE É UM PROCESSO? Um conjunto de passos parcialmente ordenados, constituídos por atividades, métodos, práticas e transformações, usado para atingir uma meta É fundamental a definição de quem faz o quê, quando e como. Características de um processo eficiente Orienta o desenvolvimento, operação e manutenção do software. Reduz risco e aumenta previsibilidade. Permite controle sobre o desenvolvimento dentro de custos, prazos e níveis de qualidade desejados. O PONTO DE PARTIDA PARA A ARQUITETURA DE UM PROCESSO É A ESCOLHA DE UM MODELO DE CICLO DE VIDA Ciclo de Vida Codifica-remenda Os desenvolvedores começam a codificar prontamente. À medida que os erros vão aparecendo, estes vão sendo remendados. Não exige sofisticação técnica nem gerencial. Modelo de alto risco, impossível de gerir e que não permite assumir compromissos confiáveis. Ciclo de Vida Clássico - Modelo Cascata Análise Projeto Codificação Teste Modelo Cascata Análise (Investigação) – Para criar o sw de uma aplicação, é necessária uma descrição do problema e dos seus requisitos - o que é o problema e o que o sistema deve fazer Projeto (Solução) – Enfatiza uma solução lógica, ou seja, como o sistema deverá ser construído a fim de atender os requisitos estabelecidos Modelo Cascata Codificação – Nesta etapa, o projeto deve ser traduzido em uma forma legível por máquina. Se o projeto for executado detalhadamente, a codificação pode ser executada mecanicamente. Testes – O processo de realização de testes concentra-se nos aspectos lógicos internos do software, garantindo que todas as instruções sejam testadas. Sâo realizados testes para descobrir erros e garantir que a entrada definida produza resultados reais que concordem com os resultados exigidos. Modelo Cascata - Observações Manutenção – O software sofrerá mudanças depois que for entregue ao cliente. Ocorrerão mudanças porque erros foram encontrados, porque o sw deve ser adaptado a fim de acomodar mudanças em seu ambiente externo ou porque o cliente exige acréscimos funcionais ou não-funcionais. A manutenção de sw reaplica cada uma das etapas precedentes do ciclo de vida a um programa existente. Análise X Projeto – A divisão entre análise e projeto é vaga, por isso não é de grande valia ser rígido quanto ao que se constitui um passo de análise e um passo de projeto. Aplicação do modelo cascata iterativamente Análise Análise Projeto Projeto Codificação Codificação Teste Teste tempo O sistema é desenvolvido por incrementos (subconjunto da funcionalidade do sistema). Versão executável é produzida ao final de cada iteração Cada iteração inclui integração e teste. O levantamento de requisitos da primeira iteração envolve a definição do escopo do projeto como um todo. Iterações seguintes incluem o detalhamento de requisitos já levantados ou até mesmo levantamento de novos requisitos. Em geral, uma iteração deve durar entre 2 semanas a 2 meses, dependendo da duração total do projeto e experiência da equipe. Características do modelo iterativo Riscos críticos são resolvidos antes que grandes investimentos sejam realizados. Permite feedback dos usuários desde cedo. Teste e integração são atividades contínuas. Pequenos objetivos, foco em curto-prazo. Progresso é medido de forma mais concreta. Implementações parciais podem ser implantadas. Modelagem Visual na Análise e Projeto Facilita entendimento. Facilita comunicação entre a equipe. Diminui ambiguidade. Diferentes membros da equipe possam comunicar decisões sem ambigüidade. Facilita a gerência da complexidade. O uso de uma ferramenta para a construção dos diagramas facilita bastante o trabalho de equipe. UML - Linguagem de Modelagem Unificada Orientada a objetos. Serve para especificar, modelar e documentar um sistema. Desenvolvida por Jim Rumbaugh, Grady Booch e Ivar Jacobson. Padronizada pela OMG (Object Management Group). Adotada como padrão na indústria de sw. Análise de sistema A análise de sistema é realizada com os seguintes objetivos em mente: – Identificar as necessidades do usuário. – Avaliar a concepção do sistema quanto a sua exeqüibilidade. – Executar a análise econômica e técnica. – Atribuir funções ao hardware, ao software, às pessoas, ao banco de dados e aos demais elementos do sistema. – Estabelecer as restrições de prazo e de custo. – Criar uma definição de sistema que constitua a base para todo o trabalho de engenharia subseqüente. Análise de sistema Quanto esforço deve ser despendido na análise e definição de sistemas? – Variáveis: o tamanho e complexidade do sistema, área de aplicação, usuário final, obrigações contratuais, etc. – De 20 a 40% na análise do sistema Análise de sistema Quem o faz? – Um analista experiente e bem treinado deve dirigir a maioria das tarefas. – O analista trabalha em conjunto com o pessoal administrativo e técnico do cliente e com a equipe de desenvolvimento de sistema. – Para projetos muito grandes, uma equipe de analistas de sistemas pode ser formada para dirigir cada tarefa de análise. Análise de sistema Por que é tão difícil? – Um conceito nebuloso deve ser transformado em um conjunto concreto de elementos tangíveis. – Desentendimento, omissão, inconsistência e erro são passíveis de acontecer. – A percepção do sistema pode modificar-se à medida que a atividade progride.