Engenharia de Software Parte I Introdução Metodologias para o Desenvolvimento de Sistemas DAS 5312 1
Mitos do Desenvolvimento de Software A declaração de objetivos é suficiente para se construir um software. Mudanças nos requisitos são fáceis porque o software é flexível e pode se adaptar a estas. Revisões são supérfluas. Se há atraso no cronograma, basta adicionar mais gente na equipe para que este seja cumprido. Um software funcional é a única parte do projeto que deve ser entregue ao cliente. Metodologias para o Desenvolvimento de Sistemas DAS 5312 2
Crise de Software Produto de baixa qualidade. Processo com baixos graus de produtividade e satisfação dos projetistas de software. Custo crescente do software em relação ao hardware. Por quê? Software é intangível. Não há processo padrão de desenvolvimento. Grandes projetos de software são, freqüentemente, projetos únicos. Metodologias para o Desenvolvimento de Sistemas DAS 5312 3
Engenharia de Software Afinal, o que é engenharia de software? Engenharia de software é a área que trata do desenvolvimento, uso e reuso de princípios, modelos, técnicas, metodologias, ferramentas e ambientes para a construção e manutenção, em equipe, de software a ser usado satisfatoriamente por várias pessoas e com várias versões no decorrer do tempo. Metodologias para o Desenvolvimento de Sistemas DAS 5312 4
Engenharia de Software Observações Engenharia de software possui duas dimensões: a dimensão de engenharia (que se preocupa com o processo de desenvolvimento adotado e a construção do software) e a dimensão de gerenciamento (que se preocupa com o controle das atividades para a construção do software). O resultado final da atividade de engenharia de software não é apenas o software, envolvendo também toda a documentação associada a ele. O resultado final implica em um processo mais sistemático de construção do software e uma preocupação constante com a qualidade do software. Metodologias para o Desenvolvimento de Sistemas DAS 5312 5
A Dimensão de Gerenciamento De forma sucinta, a dimensão de gerenciamento se preocupa com as seguintes atividades: Planejamento do projeto, com a elaboração do planos do projeto, de qualidade, de validação, de gerenciamento de configuração, de manutenção e de desenvolvimento de equipe. Gerenciamento dos riscos do projeto. Gerenciamento do pessoal do projeto. Controle das atividades e do escopo. Gerenciamento de configuração. Gerenciamento dos requisitos. Metodologias para o Desenvolvimento de Sistemas DAS 5312 6
A Dimensão de Engenharia A dimensão de engenharia é responsável pelas seguintes atividades: Especificação de software: definição das funcionalidades do software e das restrições de sua operação. Projeto e implementação de software: o software será desenvolvido e construído de acordo com as especificações. Validação de software: verifica se se o software implementa as funcionalidades definidas. Evolução de software: o software deve evoluir para atender outras necessidades do cliente. Metodologias para o Desenvolvimento de Sistemas DAS 5312 7
Modelos de Processos de Desenvolvimento de Software Modelos de processos de desenvolvimento devem levar em consideração as principais atividades definidas na dimensão de engenharia. Dentre os principais modelos, tem se: Modelo Tradicional (também conhecido como Waterfall, em Cascata ou Queda d'água). Modelo de Prototipação (também conhecido como Evolucionário) Modelo Incremental Modelo Orientado a Reuso (também conhecido como Baseado em Componentes) Modelo de Melhorias Iterativas (também conhecido como Espiral) Metodologias para o Desenvolvimento de Sistemas DAS 5312 8
O Modelo Tradicional Ordem linear de atividades: fases sucessivas, onde os resultados de uma fase tornam se entradas das próximas. Verificação no fim de cada fase para certificar se que seus resultados são consistentes com as entradas e com os requisitos do sistema. Requisitos do usuário são congelados antes do início do projeto. Permite pouca interferência do usuário após este congelamento, pois retarda a fase de codificação. Útil quando os requisitos são bem conhecidos antes do início do projeto. Metodologias para o Desenvolvimento de Sistemas DAS 5312 9
O Modelo Tradicional Metodologias para o Desenvolvimento de Sistemas DAS 5312 10
Documento de Requisitos Estrutura básica (padrão IEEE): Descrição geral: Perspectiva do software. Introdução Propósito do documento de requisitos. Escopo do software. Funções do software. Características do usuário. Restrições gerais. Suposições e dependências. Definições, acrônimos e abreviações. Requisitos específicos: Funcionais. Referências. Não funcionais. Visão geral do restante do documento. De interface. Metodologias para o Desenvolvimento de Sistemas DAS 5312 11
O Modelo de Prototipação Construção de um protótipo para entender melhor o problema e seus requisitos com a participação do usuário, esclarecendo os aspectos confusos e desconhecidos do sistema. Protótipo não é o sistema final, pois: Implementa apenas os aspectos funcionais mais essenciais. Possui baixa performance e despreocupação com eficiência. Sistemas projetados com prototipação apresentam melhor interface com o usuário e respeitam mais os limites de implementação. Metodologias para o Desenvolvimento de Sistemas DAS 5312 12
O Modelo de Prototipação Metodologias para o Desenvolvimento de Sistemas DAS 5312 13
O Modelo de Prototipação Metodologias para o Desenvolvimento de Sistemas DAS 5312 14
O Modelo de Prototipação Os principais problemas com processos de desenvolvimento baseados no modelo de prototipação são: Falta de visbilidade do processo de desenvolvimento. Construção de sistemas mal estruturados. Exigência, muitas vezes, de técnicas e ferramentas especiais. Processos de desenvolvimento baseados no modelo de prototipação obtém maior sucesso para sistemas pequenos com tempo de vida razoavelmente curto e poucas pessoas envolvidas no processo. Metodologias para o Desenvolvimento de Sistemas DAS 5312 15
O Modelo Incremental Tem os benefícios dos modelos tradicional e de prototipação. Idéia básica: desenvolvimento (projeto, codificação e teste) incremental do software. Priorização das funcionalidades principais do software, de forma a implementar essas funcionalidades antes, tratando aspectos chaves do problema, tipicamente mais fáceis de entender. A cada incremento, o usuário fornece suas opiniões sobre o software, avançando em direção à implementação final. Metodologias para o Desenvolvimento de Sistemas DAS 5312 16
O Modelo Incremental Metodologias para o Desenvolvimento de Sistemas DAS 5312 17
Vantagens do Modelo Incremental Os clientes não precisam esperar que a versão final do software seja entregue para usá lo. Os clientes podem utilizar os primeiros incrementos desenvolvidos como um protótipo de forma a melhor definir alguns requisitos do software. Existe um risco menor de fracasso do software. Como as funções prioritárias são entregues primeiro, é inevitável que estas passem por um período de testes mais intensivo. Metodologias para o Desenvolvimento de Sistemas DAS 5312 18
O Modelo Orientado a Reuso O software é desenvolvido a partir de componentes de software reutilizáveis. O modelo orientado a reuso necessita de: uma ampla base de componentes de software reutilizáveis que implementem diversas funcionalidades. Uma infraestrutura de integração para esses componentes. A vantagem desta abordagem é a redução na quantidade de software a ser desenvolvido. A desvantagem é que as adequações sobre os requisitos são inevitáveis e o controle sobre a evolução do sistema é perdido. Metodologias para o Desenvolvimento de Sistemas DAS 5312 19
O Modelo Orientado a Reuso Metodologias para o Desenvolvimento de Sistemas DAS 5312 20
O Modelo Iterativo Em vez de representar o processo de desenvolvimento de software como uma seqüência de atividades com algum retorno de uma atividade para outra, este é representado como uma espiral, onde cada volta da espiral representa uma fase (ou ciclo) do processo de desenvolvimento de software. Cada fase é dividida nas seguintes atividades: Definição de objetivos: os objetivos são definidos e um plano de gerenciamento é elaborado. Avaliação e redução de riscos: providências são tomadas para a redução dos riscos.. Desenvolvimento e validação: um modelo de desenvolvimento, dentre os anteriores, é escolhido para o desenvolvimento do software. Este é desenvolvido e validado. Planejamento: O projeto é revisto e a próxima fase (volta da espeiral) é planejada. Metodologias para o Desenvolvimento de Sistemas DAS 5312 21
O Modelo Iterativo Metodologias para o Desenvolvimento de Sistemas DAS 5312 22
Fases no Modelo Iterativo O modelo em espiral é diferente de outros modelos de processo de desenvolvimento de software por considerar os riscos de forma explícita. Apesar de o modelo em espiral não definir fases fixas, este modelo é bastante utilizado com as seguintes fases: Abertura: a idéia do software é desenvolvida, definindo se o escopo do projeto e sua viabilidade. Elaboração: a ênfase aqui é na arquitetura do sistema e na minimização dos riscos. Construção: ênfase na construção do software. Transição: atividades que levam à entrega do software para o cliente (como integração e testes). Metodologias para o Desenvolvimento de Sistemas DAS 5312 23
Comparação entre os Modelos Modelo Tradicional: útil quando os requisitos do sistema estão bem definidos inicialmente, em geral, para sistemas cujas funcionalidades são bem conhecidas. Modelo de Prototipação: útil para a construção de interfaces gráficas ou quando o desconhecimento das funcionalidades do sistema é maior. Modelo Interativo: útil para pequenos projetos, combinando as boas características dos dois modelos anteriores. Modelo Orientado a Reuso: útil quando existe uma ampla base de componentes reutilizáveis. Modelo de Melhorias Iterativas: útil para grandes projetos com requisitos que podem mudar com o andamento do projeto. Metodologias para o Desenvolvimento de Sistemas DAS 5312 24