220 likes | 339 Views
Processo de Software. ► METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: abdala@das.ufsc.br. Objetivos. Introduzir os principais processos de software; Discutir as vantagens e desvantagens de cada um dos processos;. Plano.
E N D
Processo de Software ►METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: abdala@das.ufsc.br
Objetivos Introduzir os principais processos de software; Discutir as vantagens e desvantagens de cada um dos processos;
Plano • Modelos de Processos de Software; • Modelo em Cascata • Prototipação • ModeloIterativo • ModeloemEspiral • Métodos Ágeis • DesenvolvimentoDirigidoporModelos
Processo de Software • Um conjunto estruturado de atividades que são necessárias para se desenvolver um sistema de software • Especificação; • Projeto; • Implementação; • Validação; • Evolução. • Um modelo de processo de software é uma representação abstrata de um processo. Ele apresenta uma descrição do processo a partir de uma dada perspectiva
Modelo em Cascata Definição de Requisitos Projeto do Software Implementação e Teste de Unidades Integração e teste do Sistema Implantação e Manutenção
Fases do Modelo em Cascata Definição dos Requisitos e Análise do Problema Projeto do Software Implementação e Teste de Unidades Integração e Teste do Sistema Operação e Manutenção A principal desvantagem do modelo em cascata é a dificuldade em se acomodar mudanças uma vez que o processo se iniciou. Uma fase deve terminar antes que a fase seguinte possa se iniciar
Problemas do Modelo em Cascata Difícil atender a mudança de requisitos dos usuários Apropriado apenas quando os requisitos são claros desde o início do projeto Poucos sistemas possuem requisitos estáveis O modelo em cascata é principalmente usado em processos de engenharia onde o sistema é desenvolvido em diversas localidades (modularização) Ainda assim, cerca de 40% de todos os projetos utilizam este modelo!
Modelo de Prototipação Especificação Versão Inicial Descrição em Alto Nível Desenvolvimento Versão Intermediária Validação Versão Final
Observações sobre Prototipação • Desenvolvimento Exploratório • O objetivo é trabalhar com os clientes (stackholders) para criar iterativamente um sistema final a partir de uma especificação inicial. • Deve-se iniciar o processo com um conjunto de requisitos muito bem entendidos e novas características são adicionadas a medida que vão sendo propostas pelo usuário • Protótipo Descartável • Tem como objetivo o entendimento dos requisitos do sistema
Observações sobre Prototipação • Problemas • Falta de visibilidade; • Sistemas possuem geralmente uma estrutura pobre; • Habilidades especiais (i.e. Em linguagens de prototipação rápida) podem ser necessárias. • Aplicabilidade • Em projetos de pequenos e de médio tamanho; • Em partes de sistemas mais complexos(i.e. As interfaces do usuário); • Em programas de curto ciclo de vida.
Modelo de Desenvolvimento Incremental Definição de requisitos iniciais Atribuição de requisitos à iterações Projeto da arquitetura do sistema Desenvolvimento do incremento do sistema Validação do Incremento Integração do Incremento Validação do Sistema Sistema Final
Vantagens do Modelo Incremental Uma parte usável do sistema é entregue ao cliente a cada iteração (incremento); Incrementos iniciais podem ser usados como protótipos para clarificação de requisitos; Baixo risco de falha geral do projeto; Os sub-sistemas de mais alta prioridade tendem a passar por testes mais intensos.
Modelo Espiral O Processo é representadopormeio de umaespiralaoinvés de umasequência de atividades com retro-alimentação; Nãoexistemfasesfixastalcomoespecificaçãoouprojeto – loops naespiralsãoescolhidosdependendo do que é requerido; Riscossãoavaliadosexplicitamenteeresolvidosdurantetodo o processo;
Secções do Modelo Espiral • Definição dos objetivos • Especificação dos objetivos para a fase corrente são identificados; • Avaliação e redução de riscos • Riscos são avaliados e atividades são especificadas para reduzir os riscos chave; • Desenvolvimento e validação • Um modelo de desenvolvimento é escolhido para o projeto que pode ser qualquer dos modelos vistos anteriormente • Planejamento • O projeto é revisto e a próxima fase da espiral é planejada
Métodos Ágeis • Baseado modelo interativo, porém mais “leve” e centrado no ponto de vista das pessoas envolvidas • Cadafasedemoradias e nãosemanas • Envolvidosficampresentesnumamesmasala • Enfatizam trabalho no software como uma medida primária de progresso • Utilizafeedback aoinvés de planejamentocomomecanismoprimário de controle • Disponibilização regular de versões do software
Métodos Ágeis - Exemplos SCRUM é um termo usado no jogo de Rúgbi, que significa quando os jogadores se amontoam • Extreme Programming (XP) • Fases pequenas e rápidas (alguns dias) • Testes são automatizados: metas p/ desenvolvimento • Programação feita em duplas • Projeto e arquitetura surgem por refactoring • SCRUM • Usado no gerenciamento de projetos de software • Ciclosformadosporváriasinterações (sprint) • Brevesreuniõesdiárias (daily scrum)
Métodos Ágeis - Aplicabilidade Mais adequados quando os requisitos estão emergindo e mudando rapidamente Mais adequados para projetos com pequenos times, em torno de 20 pessoas Nãosãoaplicáveisemsistemascríticos
Desenv. Dirigido por Modelos • Definirvisõesabstrataspara o projetoatéchegar no código • Modelossãorefinadosatravés de transformaçõessucessivas (Greenfield and Short 2003)
Desenv. Dirigido por Modelos Modelo Específico de Domínio(modelos em XML) MetaCASEDSLTools Modelo WEBJSP+Spring+Hibe Modelo DesktopSwing + Spring Modelo CelularMIDP + Burlap Código WEBJSP+Spring+Hibe Código DesktopSwing + Spring Código CelularMIDP + Burlap Plataforma(WEB + Desktop + Celular)
Pontos Chave Processos de Software sãoconjuntos de atividadesenvolvidasnacriação de um software; Modelos de processo de software sãorepresentaçõesabstratasdestesprocessos; As atividadescomuns a todososmodelossão: especificação, projeto, implementação, validação e evolução; Modelosgerais de processodescrevem a organização do processo de software. Exemplosincluem o modeloemcascata, prototipagem, iterativo, modeloságeis e baseadoemcomponentes;
Referências R. S. Pressman, Engenharia de Software, McGraw Hill, 6a Ed., 2002. Chap. 3. I. Sommerville. Software Engineering. 7th Ed. Addison-Wesley, 2004. Chap. 4.