Baixe o app para aproveitar ainda mais
Prévia do material em texto
Profa. MSc. Priscila Facciolli UNIDADE II Engenharia de Software I Conjunto de atividades coerentes e consistentes para especificar, projetar, implementar e testar um software. É uma representação abstrata de como será realizada a construção do software. Processo de desenvolvimento de software Para definir as atividades a serem conduzidas no projeto. Para uniformizar o entendimento dos envolvidos em relação ao desenvolvimento de sistemas. Para manter a consistência entre os sistemas desenvolvidos em uma mesma empresa. Para viabilizar os pontos de controle para a gerência. Para que um processo? Processo de desenvolvimento de software Fonte: Adaptado do: livro-texto. Percepção das necessidades do cliente ou do usuário final (requisitos do software) Desenvolvimento Concepção (análise do software - modelagem) Elaboração (definição da arquitetura do software) Construção Desenho inicial Implementação Desenho detalhado Codificação Teste de unidade Testes de integração Transição (entregas parciais e testes de homologação pelo cliente usuário final) Operação (utilização do software pelo cliente-usuário) Manutenção (melhorias do software e acertos de defeitos) Retirada (troca ou cancelamento do produto de software) Sugere práticas e métodos para que o próprio indivíduo possa identificar e corrigir os seus pontos fracos. É uma sugestão para organizar e disciplinar o indivíduo, e não para limitar a sua capacidade de criação. Possui 7 etapas sequenciais e progressivas, cada uma com um conjunto de roteiros e formulários disponíveis em www.sei.cmu.edu. Processo Pessoal de Software (PSP) Processo Pessoal de Software (PSP) Fonte: livro-texto. Objetivos do PSP: Melhorar o planejamento; Melhoria das estimativas de prazos; Estabelecer processos de revisão de projeto e código; Gerenciar a qualidade; Executar a fase de projeto de maneira mais formal; Identificar pontos de melhoria da qualidade. Processo Pessoal de Software (PSP) O TSP é baseado no PSP e estabelece um framework para: Planejar e gerenciar um projeto em equipe; Definir processos – Incremental; Distribuir papéis – Disciplina; Construir um trabalho em equipe; Estabelecer medidas de qualidade; Ter equipes eficazes. Processo para a Equipe de Software (TSP) Equipes eficazes possuem: Objetivo definido, realista e tangível; Recursos são suficientes para o trabalho; Membros qualificados; Time motivado e empenhado em cumprir os objetivos; Membros cooperam e apoiam uns aos outros; Membros são disciplinados em seu trabalho. Processo para a Equipe de Software (TSP) Estabelecer objetivos e papéis; Definir um processo comum de trabalho; Envolver todos na produção do plano e negociar o plano com a gerência; Comunicar constante e livremente; Treinar previamente em PSP. Processo para a Equipe de Software (TSP) Fonte: Adaptado do livro-texto. Gerência da qualidade Equipes autogerenciáveis Arcabouço (framework) de mediação integrada Coaching (tutorial) Personal Software Process (PSP) Fatores princípios do TSP Um processo de desenvolvimento define um conjunto de atividades para organizar e padronizar a construção de um software. A fase responsável por definir as características técnicas da arquitetura do software é a: a) Fase de construção. b) Fase de concepção. c) Fase de manutenção. d) Fase de elaboração. e) Fase de transição. Interatividade Um processo de desenvolvimento define um conjunto de atividades para organizar e padronizar a construção de um software. A fase responsável por definir as características técnicas da arquitetura do software é a: a) Fase de construção. b) Fase de concepção. c) Fase de manutenção. d) Fase de elaboração. e) Fase de transição. Resposta Definem um conjunto distinto de atividades, ações, tarefas, marcos e produtos de trabalho que são necessários para fazer a engenharia de software com alta qualidade. Esses modelos fornecem um roteiro útil para o trabalho de engenharia de software. Modelos de ciclo de vida de software Principais modelos de ciclo de vida: Modelo Codifica-Remenda; Modelo Sequencial Linear (cascata); Modelo Incremental; Modelo RAD; Modelo Prototipação; Modelo Espiral; Modelo Unificado; Modelo PRAXIS; Modelo Sala Limpa. Modelos de ciclo de vida de software O modelo de ciclo de vida processo é escolhido com base: Na natureza do projeto e da aplicação (tipo de software); Nos métodos e ferramentas a serem utilizados; Nos controles e nos produtos intermediários e finais a serem entregues. Modelos de ciclo de vida de software Ciclo de vida do software – mais comum Modelos de ciclo de vida de software Fonte: Adaptado do: livro-texto. Levantamento das necessidades Desenvolvimento Projeto Análise das alternativas Manutenção Implementação Levantamento das necessidades: Entendimento e levantamento das necessidades da área do negócio. Análise: Identificação e avaliação das alternativas sistêmicas que atendam aos requisitos. Projeto: Definem as características técnicas relacionadas à construção como a arquitetura e o banco de dados. Modelos de ciclo de vida de software Desenvolvimento: Inclui a codificação e os testes do novo sistema. Implantação: Consiste em transferir a aplicação do ambiente de desenvolvimento para o ambiente de produção. Manutenção: Atividades relacionadas a correções e/ou inclusão de novas funcionalidades após o sistema estar em produção. Modelos de ciclo de vida de software É o modelo de ciclo de vida mais caótico. Parte de uma especificação simples ou uma reunião para iniciar a codificação, fazendo correções à medida que surgem os defeitos. Não há a separação de papéis e todos fazem todas as atividades. Ainda é utilizado nos dias atuais. Modelo Codifica-Remenda Modelo Cascata (waterfall) Fonte: Adaptado do: livro-texto.. Engenharia de Sistemas Análise Design Codificação Testes Manutenção Engenharia de Sistemas: Envolve a coleta das necessidades dos usuários. Definem-se: Os requisitos de negócio; A avaliação do sistema atual em uso, se existir; Elementos de software e hardware necessários. Modelo Cascata (waterfall) Análise: Concentra-se no detalhamento do “o quê” deve ser feito. Design (projeto): Define o “como” a aplicação será construída; Envolve a definição da arquitetura de software, do banco de dados e das características visuais. Modelo Cascata (waterfall) Codificação: Tradução dos requisitos para uma linguagem de programação. Testes: Verifica se a aplicação está de acordo com a sua especificação. Manutenção: Envolve as alterações no sistema relacionadas aos erros, às evoluções de negócio ou às evoluções técnicas. Modelo Cascata (waterfall) Principais dificuldades: Os projetos nem sempre são sequenciais e as mudanças sempre trazem problemas; O produto somente é visível no final de todo o ciclo. Quando utilizar: Projetos com requisitos bem definidos; Projetos pequenos com duração de, até, 2 meses. Modelo Cascata (waterfall) O Modelo Cascata ainda é muito utilizado nos dias atuais e representa a estrutura base para os demais modelos. Qual das opções a seguir é uma característica deste modelo? a) É um processo interativo. b) É indicado para projetos longos. c) O produto é visto somente ao final. d) É indicado para os projetos com requisitos mal definidos. e) Nenhuma das alternativas. Interatividade O Modelo Cascata ainda é muito utilizado nos dias atuais e representa a estrutura base para os demais modelos. Qual das opções a seguir é uma característica deste modelo? a) É um processo interativo. b) É indicado para projetos longos. c) O produto é visto somente ao final. d) É indicado para os projetos com requisitos mal definidos. e) Nenhuma das alternativas. Resposta Divide o desenvolvimento de software em incrementos (que são partes do sistema) que “independem” uns dos outros. Cada sequência linear produz uma parte do software. O processo se repete até que o produto esteja completo. O incremento inicial é chamado de núcleo do produto. Isto quer dizer que os requisitos básicos devem ser satisfeitos logo no início do projeto. Modelo Incremental Modelo Incremental Fonte: Adaptado do: livro-texto. Incremento 1 Incremento 2 Incremento n Entrega do n incremento Entrega do 2º incremento Entrega do 1º incremento Núcleo do produto Comunicação Comunicação Comunicação Planejamento Planejamento Planejamento Modelagem Modelagem Modelagem Construção Construção Construção Implantação Implantação Implantação Para sistemas que podem ser divididos em módulos. Para sistemas com muitas alterações de requisitos. Quando o usuário necessita utilizar uma parte do produto antes do final de um projeto. Quando há um prazo de entrega que não pode ser modificado. Modelo Incremental – Quando utilizar? Vantagens: Entregas parciais facilitam a validação do cliente; Feedback constante aumenta a qualidade; Cada incremento é uma parte de software utilizável. Desvantagens: Cliente pode não aceitar a divisão em módulos. Modelo Incremental É incremental e contém um ciclo de desenvolvimento curto (em média de 60 a 90 dias). Construção baseada em componentes. Pode ser dividido entre as várias equipes RAD e, ao final, integrada para formar o todo. Modelo RAD (Rapid Application Development) Modelo RAD (Rapid Application Development) Fonte: Adaptado do: livro-texto. Equipe nº 1 Equipe nº 2 Equipe nº 3 60 a 90 dias Modelagem do negócio Modelagem dos dados Modelagem do processo Geração de aplicação Teste e modificação Modelagem do negócio Modelagem dos dados Modelagem do processo Geração de aplicação Teste e modificação Modelagem do negócio Modelagem dos dados Modelagem do processo Geração de aplicação Teste e modificação As restrições de tempo devem ser (em média de 60-90 dias). Se a aplicação de software pode ser modularizada e cada função principal possa ser completada em menos de 3 meses. Cada função principal pode ser tratada por uma equipe distinta e, depois, integrada para formar um todo. Modelo RAD – Quando utilizar? Vantagens: Ciclo curto de desenvolvimento; Usa a prototipação interativa e viva; Aumento do reúso do código. Desvantagens: Não indicado para projetos grandes e complexos; Não aplicado a projetos com alto risco técnico. Modelo RAD É um modelo evolucionário. Pode ser usado por qualquer dos demais modelos. Utilizado para identificar e validar os requisitos. Permite visualizar como o sistema ficará quando estiver pronto. Modelo de Prototipação Modelo de Prototipação Fonte: Adaptado do: livro-texto. Obter os requisitos Refinamento do protótipo Avaliar o protótipo Construir o protótipo Elaborar o projeto rápido Quando os requisitos estão mal definidos ou difíceis de serem compreendidos. Um meio de redução de risco, ao permitir que o usuário visualize como vai ficar antes de estar pronto. Pode ser usado em qualquer tipo de sistema na fase de captura dos requisitos. Depois, pode continuar com outros modelos ao decorrer de desenvolvimento. Modelo de Prototipação – Quanto utilizar? Vantagens: Reduz o número de mudanças; Aumenta a qualidade; Pode reduzir o tempo de desenvolvimento. Desvantagens: O cliente acha que o produto está pronto; O projetista pode incorporar as soluções inadequadas. Modelo de Prototipação Os modelos de ciclo de vida de desenvolvimento de software Incremental e RAD são semelhantes em sua estrutura. Assinale a alternativa que indica uma dessas semelhanças: a) Usam a prototipação. b) Divide o software em partes menores. c) Utiliza os componentes. d) Não melhora a qualidade. e) São testados só ao final de todo o projeto. Interatividade Os modelos de ciclo de vida de desenvolvimento de software Incremental e RAD são semelhantes em sua estrutura. Assinale a alternativa que indica uma dessas semelhanças: a) Usam a prototipação. b) Divide o software em partes menores. c) Utiliza os componentes. d) Não melhora a qualidade. e) São testados só ao final de todo o projeto. Resposta Engloba a natureza interativa do Modelo de Prototipação com os aspectos do Modelo Cascata e de análise de riscos. Cada loop representa uma fase do processo de software. Onde cada loop pode estar relacionado à viabilidade do sistema. O próximo loop, à definição de requisitos. O próximo, ao projeto e assim por diante. A cada ciclo são produzidas versões cada vez mais completas do software. Modelo Espiral Modelo Espiral Fonte: Adaptado do livro-texto. Definir os objetivos (planejamento) Avaliar e planejar a próxima fase Analisar os riscos Desenvolvimento da engenharia Para softwares de grande porte. Para softwares que possuem riscos no seu desenvolvimento. Com o uso de prototipação, tem-se melhor conhecimento de requisitos do sistema. Modelo Espiral – Quando utilizar? Vantagens: É uma alternativa ao ciclo cascata; Primeiro modelo a incluir a análise de riscos; Permite uma maior interação com o cliente. Desvantagens: Difícil convencer o cliente que uma abordagem “evolutiva” é melhor; Exige experiência na avaliação de riscos e no uso do modelo. Modelo Espiral Baseado em casos de uso. Centrado em arquitetura. Modela o software utilizando a UML. Desenvolve o software interativamente. Gerencia os requisitos. Verificação contínua da qualidade. Processo unificado Processo unificado Fonte: Adaptado de livro-texto. Requisitos Análise Análise Testes Implementação Concepção Elaboração Construção Transição Iter. Iter. nº 1 nº 2 Iter. Iter. nº 1 nº 2 Vantagens: Tolerância às mudanças de requisitos; Elementos de um software são integrados progressivamente; Incorpora, formalmente, a gerência de projeto ao ciclo. Desvantagens: Cliente não aceita o processo interativo; Complexidade de suas fases e seus fluxos; Indispensáveis que os profissionais sejam capacitados no processo. Processo unificado Processo configurável. Adapta-se a softwares de pequeno, médio ou de grande porte. Baseado em documentação de requisitos. Utiliza UML. Trabalha com a orientação aos objetos. RUP (Processo Unificado Racional) RUP (Processo Unificado Racional) Apresenta 4 fases: Concepção ou iniciação, elaboração, construção e transição. Disciplinas: São 10 atividades que variam de intensidade conforme a fase. Dão origem aos artefatos do projeto. Fonte: Adaptado do: livro-texto. Requisitos Análise Design Implementação Testes Modelo de use case Modelo de análise Modelo design Modelo de implementação Modelo de teste Modelo de negócio, lista de requisitos, casos de uso, modelo de domínio, protótipo preliminar Modelo de classes, diagrama de atividades, diagrama de estados e casos de testes Deployment, diagrama de componentes, diagramas de sequência e modelagem visual Tem como objetivo dar suporte ao treinamento em engenharia de software e à implantação de processos em organizações. É baseado na experiência do prof. Wilson de Pádua Paula Filho. Baseia-se em: CMMI, UML, UP e nos padrões do Institute Eletric Eletronic Engineering (IEEE) para a engenharia de software. Processo Praxis Fornece suporte para projetos realizados individualmente ou por pequenas equipes, com duração de seis meses a um ano. Abrange requisitos, análise, desenho, testes e implementação, quanto métodos gerenciais, como gestão de requisitos, gestão de projetos, garantia da qualidade e gestão de configuração. Propõe um ciclo de vida composto por fases. Gera artefatos (documentos e modelos). ProcessoPraxis É uma aplicação prática de matemática e estatística para produzir software de alta qualidade. Aplica fortemente a prevenção de erros. Utiliza os métodos de especificação precisos, chamadas de especificações formais. A especificação formal é complexa e trabalhosa. Processo Clean Room (Sala Limpa) Normalmente, utilizada na produção de softwares que trazem risco à perda de vidas humanas. Exemplos: controle de trens, metrôs, aviões e usinas nucleares. Processo Clean Room – Quando utilizar? Vantagens: Alta qualidade; Baixo número de erros. Problema: Processo muito complexo; Requer conhecimento matemático; Produtividade é menor. Processo Clean Room Em relação às afirmativas a seguir sobre o processo unificado, qual a alternativa correta: a) Não utiliza técnicas para a garantia da qualidade. b) É um processo simples que não requer treinamento. c) É um processo rápido e de fácil aceitação pelo cliente. d) É baseado em casos de uso e centrado em arquitetura. e) Não requer o gerenciamento do projeto. Interatividade Em relação às afirmativas a seguir sobre o processo unificado, qual a alternativa correta: a) Não utiliza técnicas para a garantia da qualidade. b) É um processo simples que não requer treinamento. c) É um processo rápido e de fácil aceitação pelo cliente. d) É baseado em casos de uso e centrado em arquitetura. e) Não requer o gerenciamento do projeto. Resposta ATÉ A PRÓXIMA!
Compartilhar