Buscar

Aula 3

Prévia do material em texto

Introdução à Engenharia de Software
Ementa
Introdução à Engenharia de Software;
Desenvolvimento Ágil;
Engenharia de Requisitos;
UML;
Modelos de Processo
Modelos Prescritivos de Processo
Modelo em Cascata;
Modelo Incremental;
Modelo RAD;
Modelos Evolucionários;
Modelo de Prototipagem;
Modelo Espiral;
Modelo de Desenvolvimento Concorrente;
Modelos Especializados de Processo;
Desenvolvimento Baseado em Componentes;
Modelo de Métodos Formais;
Desenvolvimento Orientado a Aspectos;
Modelos Prescritivos de Processo
Modelo Cascata;
Modelo Incremental;
Modelo RAD;
Modelo Cascata
Planejamento
Comunicação
Modelagem
Construção
Implantação
Modelo Cascata
Também chamado de ciclo de vida clássico;
Sugere uma abordagem sistemática e sequencial;
É o paradigma mais antigo da engenharia de software;
Ideal quando os requisitos são bem definidos, razoavelmente estáveis (de preferência fixos) e o trabalho pode prosseguir até o fim de modo linear;
Modelo Cascata
Tem sido constantemente criticado, questionando-se sua eficácia;
Projetos reais raramente seguem um fluxo sequencial;
É difícil para o cliente estabelecer todos os requisitos explicitamente. Não acomoda muito bem a incerteza natural que existe no início dos projetos;
O cliente precisa de paciência. O programa executável ficará disponível somente no final do projeto;
Modelo Incremental
Incremento 1
Incremento 2
Incremento n
Entrega do
Incremento 1
Entrega do
Incremento 2
Entrega do
Incremento n
Tempo decorrido do projeto
Funcionalidades do software
Comunicação
Planejamento
Modelagem
Construção
Implantação
Modelo Incremental
Combina elementos do modelo cascata aplicado de maneira iterativa;
Aplica sequências lineares de forma racional à medida que o tempo passa;
Cada sequência linear produz “incrementos” de software possíveis de ser entregues;
O primeiro incremento é chamado de núcleo do produto;
Os requisitos básicos são satisfeitos, mas características suplementares deixam de ser elaboradas;
O núcleo do produto é usado pelo cliente;
Modelo Incremental
Um plano é desenvolvido para o próximo incremento como resultado do uso;
Visa a modificação do núcleo do produto para melhor satisfazer às necessidades do cliente;
Elaboração de características e funcionalidades adicionais;
O processo é repetido a cada incremento, até que o produto esteja completo;
Modelo RAD
60 – 90 dias
Comunicação
Planejamento
Modelagem
Construção
Modelagem
Construção
Modelagem
Construção
Implantação
Equipe 1
Equipe 2
Equipe n
Modelo RAD
RAD (Rapid Application Development) é um modelo incremental de ciclo de desenvolvimento curto;
Mistura atividades do modelo cascata com o modelo incremental;
Adaptação do modelo cascata, no qual o desenvolvimento rápido é conseguido com o uso de uma abordagem de construção baseada em componentes;
Sendo os requisitos bem compreendidos e o objeto do projeto restrito, o processo RAD cria um sistema funcional no período de 60 a 90 dias;
Modelo RAD
Para projetos grandes, exige recursos humanos suficientes para criar várias equipes RAD;
Desenvolvedores e clientes devem estar comprometidos com atividades continuamente rápidas;
O sistema precisa ser adequadamente modularizado;
O modelo RAD pode não ser adequado quando os riscos técnicos são altos;
Modelos Evolucionários de Processo
Modelo Espiral;
Prototipagem;
Modelo de Desenvolvimento Concorrente;
Modelo Espiral
Comunicação
Planejamento
Modelagem
Implantação
Construção
Início
Modelo Espiral
Modelo de processo evolucionário que combina a natureza iterativa da prototipagem com os aspectos controlados e sistemáticos do modelo cascata;
Fornece o potencial para o desenvolvimento rápido de versões de software cada vez mais completas;
Diferentemente de outros modelos, que terminam quando o software é entregue, o modelo espiral pode ser adaptado para aplicação ao longo da vida do software;
Modelo Espiral
O primeiro circuito em volta da espiral pode representar um projeto de desenvolvimento de conceitos que começa no centro da espiral e continua por várias iterações até que o projeto seja completado;
Se for um projeto de desenvolvimento de novo produto, o novo produto vai evoluir por meio de num número de iterações em torno da espiral;
Quando pronto, um novo circuito em volta da espiral poderia ser usado para representar um projeto de aperfeiçoamento do produto;
Modelo Espiral
Permanece operacional até que o software seja retirado de serviço;
Há momentos que o processo fica adormecido, mas sempre que um modificação é iniciada, o processo começa do ponto de entrada;
Como o software evolui a medida que o processo avança, o desenvolvedor e o cliente entendem melhor e reagem aos riscos de cada nível evolucionário;
Usa a prototipagem como mecanismo de redução de risco e permite ao desenvolvedor aplicar a prototipagem em qualquer estágio do produto;
Modelo Espiral
Pode ser difícil convencer os clientes (principalmente por questões de contrato) que a abordagem evolucionário é controlável;
Exige competência considerável na avaliação dos riscos e depende dessa competência para obter sucesso;
Se um risco importante não for descoberto e gerenciado, fatalmente ocorrerão problemas;
Prototipagem
Plano rápido
Construção do
protótipo
Implantação
Entrega e
Feedback
Comunicação
Modelagem
Plano rápido
Prototipagem
Apesar de poder ser usada como modelo de processo independente, é mais comumente usada dentro do contexto dos outros processos;
Auxilia o engenheiro de software e o cliente a entenderem melhor o que deve ser construído quando os requisitos estão confusos;
A iteração de prototipagem é planejada e modelada rapidamente. O projeto rápido concentra-se nos aspectos visíveis para o cliente e leva à construção de um protótipo que é implantado e avaliado pelo cliente. O feedback refina os requisitos do software;
Prototipagem
O que fazer com o protótipo?
Pode ser lento, grande, complicado de usar ou tudo isso ao mesmo tempo. A alternativa é começar novamente e construir uma versão projetada;
Planejar antecipadamente a construção de um protótipo descartável;
Mas o protótipo pode servir como “o primeiro sistema” e evoluir a partir de então;
Desenvolvimento Concorrente
Em desenvolvimento
Pronto
Aguardando modificações
Em revisão
Sob inspeção
Transformado em referência
Nenhum
Desenvolvimento Concorrente
Todas as atividades ocorrem em paralelo, mas estão em diferentes estados;
O modelo define uma série de eventos que vão disparar transições de estado para estado, para cada uma das atividades;
Em vez de usar uma sequencia como o modelo cascata, ele define uma rede de atividades;
Pode ser aplicado a todo tipo de desenvolvimento de software e fornece uma visão exata de como está o estado do projeto;
Desenvolvimento Concorrente
Exemplo: Começo de projeto
A atividade de comunicação completou sua primeira iteração e está no estado aguardando modificações;
A atividade de modelagem passa do estado nenhum para o estado em desenvolvimento.
Se o cliente requere mudança nos requisitos, a modelagem passa de em desenvolvimento para aguardando modificações e a comunicação passa de aguardando modificações para em revisão;
Modelos Especializados de Processo
Desenvolvimento baseado em componentes;
Modelo de métodos formais;
Desenvolvimento orientado a aspectos;
Desenvolvimento Baseado em Componentes
Compõe aplicações a partir de componentes de software previamente preparados;
Segue os seguintes passos implantados com uma abordagem evolucionária:
Pesquisa e avaliação de componentes disponíveis para o domínio em questão;
Considerações sobre a integração de componentes;
Projeto de arquitetura de software;
Integração dos componentes à arquitetura;
Testes para garantir a funcionalidade adequada;
Desenvolvimento Baseado em Componentes
Leva ao reuso de software, que segundo estudos tem como vantagens:
Redução significativa do prazo de desenvolvimento;
Redução significativa no custo do projeto;
Aumento do índice de produtividade;
Em que situações o desenvolvimento baseado em componentes não é adequado?
Aquelas em que não existam componentes padrão disponíveis ou em que nãose queira pagar pelos componentes;
Modelo de Métodos Formais
Métodos formais permitem ao engenheiro de software especificar, desenvolver e verificar um sistema aplicando uma rigorosa notação matemática;
Uma variante chamada engenharia de software sala limpa é aplicada por algumas organizações;
Elimina muitos problemas encontrados nos outros modelos, como ambiguidade, incompletude, inconsistência, etc;
Servem de base para a verificação de programas, oferecendo a promessa de um software livre de defeitos;
Modelo de Métodos Formais
Apropriado para softwares críticos (por exemplo, de aeronaves e dispositivos médicos);
Porém, é um modelo de processo altamente lento e dispendioso;
Exige treinamento extensivo para dar aos desenvolvedores o preparo necessário;
É difícil usar os modelos como um mecanismo de comunicação com a maioria dos clientes;
Desenvolvimento Orientado a Aspectos
É um paradigma novo de engenharia de software que fornece mecanismos para definir, especificar, projetar e construir aspectos;
Aspectos são preocupações do cliente que permeiam diversos níveis do sistema, incluindo:
Propriedades de alto nível (ex: segurança, tolerância a falha);
Funções (ex: aplicação de regras de negócio);
Sistêmicas (ex: sincronização e gestão de memória);
Um processo orientado a aspectos ainda não foi totalmente desenvolvido, mas deve adotar características do modelo espiral e do modelo concorrente;
O Processo Unificado
É uma tentativa de unir os melhores recursos e características dos modelos convencionais;
Reconhece a importância da comunicação com o cliente e dos casos de uso para descrever a visão do cliente;
Utiliza a UML como a notação para modelagem e análise de projeto;
Sugere um fluxo de processo que é iterativo e incremental;
Também conhecido como RUP (de Rational Unified Process) – a Rational construiu ferramentas de apoio ao processo unificado;
Histórico do Processo Unificado
Década de 1980: popularização dos métodos de programação orientada a objeto (OO) levando a métodos variados de análise e projeto OO;
Início da década de 1990: Rumbaugh, Booch e Jacobson começaram a trabalhar em um “método unificado”, que resultou na UML e tornou-se uma norma industrial. A Rational e outros vendedores desenvolveram ferramentas UML;
Final da década de 1990: Jacobson, Rumbaugh e Booch desenvolvem o Processo Unificado, um arcabouço para engenharia de software OO;
Hoje em dia, o Processo Unificado e a UML são amplamente usados em projetos OO de todas as naturezas;
O Processo Unificado
É um processo incremental, ou seja, enquanto acontecem as fases de construção, transição e produção, já pode ser iniciado o incremento seguinte;
Um fluxo de trabalho de engenharia de software é distribuído ao longo de todas as fases do Processo Unificado;
Identifica as tarefas exigidas para realizar uma ação importante de engenharia de software;
Fases do Processo Unificado:
Elaboração: 
abrange as atividades de comunicação com o cliente, planejamento e modelagem. Refina e expande os casos de uso preliminares e expande a representação arquitetural para incluir cinco visões diferentes:
O modelo de casos de uso;
O modelo de análise;
O modelo de projeto;
O modelo de implementação;
O modelo de implantação;
O plano é revisto e pode ser modificado;
Fases do Processo Unificado
Construção:
Idêntica a atividade de construção no processo genérico:
Usa o modelo arquitetural como entrada;
Desenvolve ou adquire e integra componentes de software;
Torna cada caso de uso operacional;
Modelos de análise e projeto são completados;
Testes são elaborados e executados;
Fases do Processo Unificado
Transição: abrange atividades de construção e implantação:
O software é dado aos usuários finais para testes beta e relatórios de feedback que podem levar a modificações;
Informações de apoio necessárias são criadas (manuais e procedimentos de instalação);
Na conclusão dessa fase tem-se uma versão utilizável do software;
Fases do Processo Unificado
Produção: 
Abrange as atividades de implantação:
O uso do software é monitorado;
É fornecido suporte para o ambiente de operação;
Os relatórios de defeito e solicitações são recebidos e avaliados;
Fases do Processo Unificado
Concepção: 
Abrange atividades de comunicação com o cliente e de planejamento, tais como:
Requisitos de negócio usando casos de uso preliminares;
Arquitetura geral do sistema com os principais subsistemas e funções;
Planejamento com recursos, riscos e cronogramas;
Principais Produtos de Trabalho – Concepção
Documento de visão;
Modelo inicial de caso de uso;
Glossário inicial do projeto;
Caso de negócio inicial;
Avaliação inicial de risco;
Plano de projeto;
Modelo de negócio;
Um ou mais protótipos;
Principais Produtos de Trabalho – Elaboração
Modelo de caso de uso
Requisitos suplementares
Modelo de análise
Descrição da arquitetura do software
Protótipo arquitetural executável
Modelo de projeto preliminar
Lista de risco revisada
Plano de projeto incluindo planos de iteração, fluxos de trabalho adaptados, marcos, produtos técnicos de trabalho
Manual preliminar do usuário
Principais Produtos de Trabalho – Construção
Modelo de projeto
Componentes de software
Incremento integrado de software
Plano e procedimento de teste
Caso de teste
Documentação de apoio
Manuais do usuário
Manuais de instalação
Descrição do incremento atual
Principais Produtos de Trabalho – Transição
Incremento de software entregue
Relatório de teste beta
Realimentação geral do usuário
Padrões de Processo
O processo de software pode ser definido como uma coleção de padrões que definem um conjunto de:
Atividades;
Ações;
Tarefas de trabalho;
Produtos de trabalho;
Comportamentos de trabalho necessários ao desenvolvimento de software;
Pela combinação de padrões, uma equipe pode construir um processo que melhor satisfaça às características de um projeto;
Descrição de Padrões de Processo
Nome do Padrão: descreve sua função dentro do processo;
Intenção: descreve o objetivo do padrão;
Tipo:
– Padrão de Tarefa: define uma ação ou tarefa de trabalho;
– Padrão de Estágio: define uma atividade de arcabouço;
– Padrão de Fase: define uma sequencia de atividades de arcabouço;
• Contexto Inicial: descreve condições sob as quais o padrão se aplica;
• Problema: descreve o problema a ser resolvido pelo padrão;
• Solução: descreve como o estado inicial do processo é modificado em consequência da aplicação do padrão;
• Contexto Resultante: condições que resultarão quando o processo for aplicado;
• Padrões Relacionados: lista de todos os padrões relacionados a este;
• Usos Conhecidos/Exemplos: instâncias específicas nas quais o padrão é aplicável;
Exemplo
Nome do Padrão: Prototipação;
Intenção: Construir um protótipo que será avaliado iterativamente pelos interessados em solidificar requisitos de software;
Tipo: Padrão de fase;
Contexto Inicial:
– Interessados identificados;
– Modo de comunicação estabelecido;
– Problema identificado;
– Entendimento inicial do escopo, requisitos e restrições;
Problema: interessados estão inseguros do que desejam;
Solução: descrição do processo de prototipação;
Contexto Resultante: um protótipo de software que identifique os requisitos básicos é aprovado pelos interessados;
Padrões Relacionados: comunicação-com-o-cliente, projeto-iterativo, desenvolvimento-iterativo, avaliação-pelo-cliente, levantamento-derequisitos;
Usos Conhecidos/Exemplos: a prototipação é recomendada quando os requisitos são incertos;
Atividade
Formem duplas e escrevam uma descrição para o padrão de processo:
Comunicação-inicial-com-o-cliente
Incluindo nome, intenção, tipo (tarefa, estágio ou fase), contexto inicial, problema, solução, contexto resultante, padrões relacionados e usos conhecidos;

Continue navegando