Engenharia de Software I - Aula 04 Prof. Denis Carvalho Instituto Federal de Educação, Ciência e Tecnologia de Minas Gerais Campus São João Evangelista
Conteúdo 1 Introdução 2 Paradigmas 3 Referências
Introdução Figura: Adaptada pelo autor A produção de software é, frequentemente, uma atividade por vezes caótica, sem orientações de natureza estratégica e planos de gerenciamento e controle; Em qualquer desenvolvimento, é preciso definir passos, regras e coordenar corretamente as interações entre as pessoas, os procedimentos aplicados e as características do produto; Só com a compreensão das reais necessidades dos usuários é possível dar origem a um produto de qualidade.
Introdução Esse tal software é viável? Jogo de perguntas que esclarecem alguns pontos. Figura: Adaptada de pelo autor Existem 7 questões que devemos considerar para obter sucesso em qualquer projeto: 1- Por que o sistema vai ser desenvolvido? 2- O que vai/deve ser feito? 3- Quando vai ser feito? 4- Quem é o responsável? 5- Onde as responsabilidades estão localizadas? 6- Como vai ser feito? 7- Quanto vai custar?
Introdução Processos de desenvolvimento ou metodologia de desenvolvimento? Figura: Adaptada pelo autor O processo de desenvolvimento de software é um conceito muito vasto e pretende designar uma sequência de atividades, normalmente agrupadas em fases e tarefas, executadas de forma sistemática e uniformizada; (PRESS- MAN, 2011) Segundo (SOMMERVILLE, 2011), processo de software é um conjunto de atividades relacionadas que levam à produção de software; Metodologia vai além da mera sequência de etapas e procedimentos recomendados e aplicados durante o desenvolvimento. Portanto, uma metodologia pressupõe a existência de um processo. (PRESSMAN, 2011)
Introdução E quanto ao ciclo de vida? E modelo é igual a modelagem? Figura: Adaptada pelo autor Obedecendo a essas definições de processo e metodologia, o conceito de ciclo de vida pode ser encarado como sinônimo de processo. Segundo (PRESSMAN, 2011), a expressão ciclo de vida é mais antiga, aparecendo, normalmente, associada a abordagens mais tradicionais e o termo processo aparece no contexto de estudos mais recentes. Modelo é uma interpretação de um dado domínio do problema de acordo com uma determinada estrutura de conceitos. A modelagem é, a um só tempo, a arte e a ciência de criar modelos para uma determinada realidade.
Paradigmas Ciclo de vida: Codifica-Remenda Figura: Adaptada pelo autor É o ciclo de vida mais caótico. Partindo apenas de uma especificação (ou nem isso), os desenvolvedores começam a codificar, remendando (corrigindo) à medida que os erros aparecem; Nenhum processo é seguido e infelizmente, é provavelmente um dos mais utilizados; (FILHO, 2009) Algumas características: Alto risco e não permite assumir compromissos confiáveis; Impossível gerenciar; Altamente utilizado nas disciplinas de AEDs.
Paradigmas Ciclo de vida: Clássico ou Cascata ou Waterfall Figura: Adaptada pelo autor Primeiro processo de desenvolvimento se software, criado por Royce em 1970; (SOMMERVILLE, 2011) Estrutura rigorosa; Uma etapa só começa quando a anterior termina; Inflexível, não se adapta bem a mudanças; Quando usar? Quando existir requisitos muito bem definidos; O cliente só recebe a versão final do software, uma entrega apenas.
Paradigmas Ciclo de vida: Desenvolvimento incremental ou evolucionário Figura: Fonte: (SOMMERVILLE, 2011) É baseado na ideia de desenvolver uma implementação inicial, expô-la aos stakeholders e continuar o desenvolvimento por meio da criação de várias versões; (SOMMERVILLE, 2011) Vantagens: O custo das mudanças é reduzido; Feedback do stakeholder é mais fácil; Entrega mais rápida, benefício para o cliente; Desvantagens: O processo não é visível; Risco de degradação com muitas mudanças e novos incrementos;
Paradigmas Ciclo de vida: Prototipagem Figura: Adaptada pelo autor Paradigma que propicia ao desenvolvedor criar um modelo do software que será implementado; (SOMMERVILLE, 2011) O modelo pode assumir três formas: Um protótipo em papel ou visual; Um protótipo do software com algumas parte de alguma função; Um protótipo do software com algumas funções básicas; Problemas: Não entendimento pelo cliente de que o protótipo não é um produto acabado;
Paradigmas Ciclo de vida: Espiral Figura: Fonte: (SOMMERVILLE, 2011) É um paradigma acadêmico e é aderente a outros ciclos de vida. Normalmente é implantado juntamente com outro paradigma, por exemplo o Cascata (Figura); (FILHO, 2009) É dividido por estágios, que compreende cada loop no espiral; Vantagem: Maior controle dos riscos do projeto; Desvantagem: Destina-se ao desenvolvimento interno;
Paradigmas Agora, vamos exercitar... 1- Como apresentado, o paradigma espiral pode ser usado em conjunto a outro paradigma. Um exemplo é o uso do Cascata. Explique como seria a união do espiral e o ciclo de vida prototipagem. 2- Defina de acordo com seus conhecimento a importância dos paradigmas de desenvolvimento (ciclos de vida). 3- Explique de acordo com seus entendimentos o paradigma Cascata. 4- O mercado de desenvolvimento é dinâmico e é preciso agregar valor aos negócios rapidamente. Diante deste contexto globalizado, onde os interesses são direcionados ao retorno financeiro do investimento (ROI). Qual paradigma atualmente é o mais utilizado? Justifique sua resposta, observe as questões elementares (entrega, comportamento, relacionamento, segurança) para sua resposta.
Referências FILHO, W. de P. P. Engenharia de software: Fundamentos, Métodos e Padrões. [S.l.]: LTC, 2009. 4 p. PRESSMAN, R. S. Engenharia de software. [S.l.]: McGraw Hill Brasil, 2011. SOMMERVILLE, I. Engenharia de software. [S.l.]: Pearson, 2011.