·

Análise de Sistemas ·

Engenharia de Software

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta
Equipe Meu Guru

Prefere sua atividade resolvida por um tutor especialista?

  • Receba resolvida até o seu prazo
  • Converse com o tutor pelo chat
  • Garantia de 7 dias contra erros

Texto de pré-visualização

Engenharia de Software 1ª edição 2019 Autoria Parecerista Validador Juliana Padilha Sandra Gavioli Puga Paulo Lacerda Todos os gráficos tabelas e esquemas são creditados à autoria salvo quando indicada a referência Informamos que é de inteira responsabilidade da autoria a emissão de conceitos Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização A violação dos direitos autorais é crime estabelecido pela Lei nº 961098 e punido pelo artigo 184 do Código Penal 18 2 Unidade 2 2 Modelos do Ciclo de Vida do Software Para iniciar seus estudos Olá Nesta unidade iniciaremos os estudos sobre os modelos de ciclo de vida do software também conhecido como processo de software Apresentaremos uma metodologia para a prática da criação de um software trabalhando os seguintes conceitos O que é processo de software O que é modelo de processo de software e quais são os principais modelos O que é o modelo de processo unificado e quais são as suas fases O modelo de processo pessoal PSP Objetivos de Aprendizagem Explicar o conceito de processo de software Diferencie os tipos de modelos de processos de software existentes na literatura Identificar e discuta a importância da utilização do processo de softwares tradicionais no desenvolvimento de softwares Identificar quando aplicar um processo tradicional um processo unificado eou Processo Pessoal PSP 19 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Introdução da unidade Nesta unidade apresentaremos conceitos que possibilitarão ao aluno entender a importância da utilização dos modelos de processos de software existentes na engenharia de software para desenvolver softwares com qualidade e dentro do planejamento inicial 21 O Processo de software Processo é um conjunto sequencial e particular de ações com objetivo comum Um processo não é uma descrição rígida de como desenvolver um software e sim uma abordagem adaptável que possibilita à equipe de software selecionar e escolher qual o conjunto adequado às ações e tarefas O objetivo é entregar o software dentro do cronograma cumprir o prazo e com boa qualidade PRESSMAN MAXIM 2016 Processo de software é também conhecido como modelo do ciclo de vida de um software porém aqui adotaremos a terminologia mais utilizada na literatura que é processo de software Processo de software é um conjunto estruturado de atividades necessárias para desenvolver um sistema de software representado esquematicamente na figura 4 A figura ilustra que cada atividade é composta por um conjunto de ações cada ação é definida por um conjunto de tarefas que identifica as tarefas de trabalho a serem completadas os artefatos de software que serão produzidos os fatores de garantia da qualidade que serão exigidos os marcos utilizados para indicar progresso 20 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Figura 4 Uma metodologia do processo de software Fonte PRESSMAN MAXIM 2016 Segundo Sommerville 2011 o modelo de processo de software tem a finalidade de auxiliar na criação de um software com alta qualidade e dentro do prazo estabelecido Existem vários processos de software distintos nesse contexto Pressman e Maxim 2016 afirmam que cinco atividades devem ser incluídas como fundamentais para a engenharia de software Comunicação a comunicação é importante para que se entenda quais são os objetivos dos stakeholders partes interessadas Por meio da comunicação será possível entender e definir as necessidades funções e características do software Planejamento essa atividade consiste em criar um plano de projeto do software Nesse plano deve constar o trabalho que o engenheiro de software deverá desempenhar como descrever as tarefas técnicas a serem desenvolvidas os possíveis riscos do projeto os recursos necessários as funcionalidades que serão produzidas e um cronograma de trabalho Modelagem consiste em criar modelos para facilitar o entendimento da equipe de desenvolvimento em relação às necessidades e objetivos do software solicitado pelos stakeholders Construção essa atividade referese ao desenvolvimento geração de código do software e também à realização de testes para verificarencontrar erros de codificação 21 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Entrega nessa atividade é feita a entrega parcial ou integral do software ao cliente Este avaliará o software entregue e fornecerá um feedback à equipe de desenvolvimento Essas cinco atividades podem ser utilizadas para o desenvolvimento tanto de programas pequenos e simples quanto de programas grandes e complexos A diferenças estará nos detalhes e na complexidade dos processos 22 Modelos de processo Esses modelos foram propostos para trazer ordem ao caos existente na área de desenvolvimento de software PRESSMAN MAXIM 2016 Segundo Sommerville 2011 modelo de processo de software é definido como uma representação simplificada de um processo de software em que cada modelo representa uma perspectiva particular de um processo fornecendo informações parciais sobre ele Os modelos de processo de software que veremos nesta unidade são modelo cascata modelo de processo incremental e modelo de processo evolucionário Para saber mais sobre processos de software e modelos de processos de software leia o artigo disponível em httpsmediumcomomarelgabrysblogsoftwareengineeringsoftware processandsoftwareprocessmodelspart24a9d06213fdc Acesso em 30 jun 2018 Saiba mais 221 Modelo cascata Foi o primeiro modelo de processo de desenvolvimento de software a ser proposto Esse modelo é também conhecido como ciclo de vida clássico Ele sugere que o desenvolvimento do software seja feito sequencialmente e disciplinado PRESSMAN MAXIM 2016 Esse modelo possui cinco fases comunicação planejamento modelagem construção e emprego conforme ilustrado na figura 5 Figura 5 Modelo cascata Comunicação início do projeto levantamento de necessidades Plenejamento estimativas cronograma acompanhamento Modelagem análise projeto Construção condifcação testes Emprego entrega suporte feedback Fonte PRESSMAN MAXIM 2016 22 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Nas últimas três décadas o modelo cascata tem recebido diversas críticas relativas à sua eficácia Os problemas apontados são É difícil para o cliente apresentar aos engenheiros de softwares todas as suas necessidades A divisão nessas cinco fases distintas torna difícil atender às necessidades de mudanças nos requisitos do cliente Portanto esse modelo só é recomendado utilizar no desenvolvimento de software quando os requisitos são bem definidos pelos clientes Se ocorrer mudanças durante o processo de desenvolvimento elas devem ser bem pequenas O sistema só é implantado no final do desenvolvimento do projeto Erros graves se não detectados durante o desenvolvimento podem ser desastrosos Concluise que o principal problema do modelo cascata é o impedimento de inserir alterações de requisitos depois que esse modelo de processo já foi iniciado Devido ao fato da utilização da abordagem sequencial em que uma fase precisa ser completada antes de iniciar a próxima fase Portanto esse modelo é recomendado apenas para softwares cujos requisitos estão bem definidos 222 Modelo de processo incremental Diferente do modelo cascata cuja entrega é feita somente após concluir todas as cinco fases o modelo incremental consiste em implementar uma parte também chamando de incremento do software e entregar aos usuáriosclientes para que deem um feedback retorno comentário aos desenvolvedores do software Os feedbacks permitem os desenvolvedores criarem outras versões do software até que esteja adequada ao usuáriocliente PRESSMAN MAXIM 2016 A figura 6 ilustra as fases do modelo incremental para aplicar a cada incremento ou então a cada quantidade de incrementos que se fizerem necessários para o desenvolvimento do software Figura 6 Modelo incremental Incremento 1 Incremento 2 Incremento N Comunicação Planejamento Implantação Comunicação Planejamento Implantação Comunicação Planejamento Implantação Fonte SOUZA 200 23 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software O modelo incremental ilustra a forma como nós resolvemos os problemas Geralmente nós não pensamos em uma solução completa para determinado problema A solução é produzida aos poucos corrigindo e avançando à medida que obtemos sucesso As vantagens do modelo incremental são i O custo de inserir mudanças nos requisitos do cliente é reduzido ii Como as entregas são feitas por partes incrementos torna mais fácil obter feedback dos clientes sobre o software iii Permite aos clientes uma melhor forma de acompanhar o quanto já foi implementado do software durante reuniões de entregas incrementais iv A entrega feita por incrementos permite uma utilização mais rápida por parte do cliente que não usa necessariamente todas as funcionalidades As desvantagens do modelo incremental são i a inserção de mudanças no código posterior a cada entrega de incrementos torna o processo de software mais difícil e caro ii desenvolvedores que estão acostumados a trabalhar com modelos sequenciais como o modelo cascata podem ter problemas quando trabalham com o modelo incremental que é mais flexível 223 Modelo de processo evolucionário Modelos evolucionários são iterativos É modelo de processo no qual o software é projetado para evoluir ao longo do tempo por isso possibilita o desenvolvimento de versões cada vez mais completas do software A seguir veja dois modelos comuns em processos evolucionários Prototipação É uma versão do sistema ou de parte dele desenvolvida rapidamente para verificar as necessidades do cliente e a viabilidade de algumas decisões de projeto Esse processo previne mudanças já que permite aos usuáriosclientes experimentarem o sistema antes da entrega e então refinarem seus requisitos Outra vantagem é que quando os requisitos estão obscuros esse paradigma da prototipação auxilia os desenvolvedores a compreenderem melhor o que será ou está sendo construído Consequentemente as mudanças de requisitos a serem feitas após a entrega do software serão bem reduzidas 24 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Figura 7 Paradigma da prototipação Construção de um protótipo Modelagem Projeto rápido Comunicação Emprega Entrega e Realimentação Projeto rápido Fonte PRESSMAN MAXIM 2016 A figura 7 apresenta o paradigma da prototipação que é composto por cinco fases A comunicação é a fase em que o modelo se inicia Nesta fase ocorre uma reunião com os envolvidos no projeto para definir os objetivos gerais do software identificar quais requisitos já são conhecidos e esquematizar quais áreas necessitam de uma definição de maiores detalhes Na fase projeto rápido é feito um projeto rápido que consiste em uma representação daqueles aspectos do software que serão visíveis aos usuários finais por exemplo o layout da interface com o usuário ou a forma como serão exibidas as informaçõesdados na tela Tratará de um protótipo estático sem navegação As fases modelagem projeto rápido e construção de um protótipo se sobrepõem pois referemse à modelagem e construção de um protótipo dinâmico ou seja navegável A fase emprego entrega e realimentação utiliza o protótipo dinâmico para fornecer um feedback dos usuáriosclientes e assim aprimorar os requisitos Esse protótipo também é utilizado para compreender melhor as necessidades que devem ser atendidas Em suma o protótipo atua como um mecanismo para identificar os requisitos do software Tanto clientes como desenvolvedores aprovam o modelo de prototipação pois os clientes podem ter uma ideia de como ficará o produto final No entanto podem ocorrer problemas como o cliente enxergar o protótipo como uma versão operacional do sistema e desejar a entrega rápida O desenvolvedor frequentemente faz a implementação rápida para atender à vontade do cliente porém terá como consequência a qualidade do software afetada Mas ainda que possam ocorrer problemas a prototipação é um modelo de processo eficiente No entanto será preciso definir as regras desse modelo de processo logo no início do projeto e deixar o cliente ciente de que o protótipo será construído apenas para servir como um mecanismo de coleta e definição dos requisitos do sistema 25 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Modelo espiral Foi proposto por Barry Boehm1 em 1988 O processo é representado por uma espiral e não como uma sequência de atividades Cada iteração na espiral representa uma fase do processo Em cada iteração ou ciclo são reavaliados os riscos por isso é dito que esse modelo é dirigido a riscos Somente após a avaliação dos riscos algum desenvolvimento é realizado Em cada iteração é ampliado o grau de definição e a implementação de um sistema A figura 8 ilustra as atividades do modelo espiral em que cada iteração no espiral representa uma fase comunicação planejamento modelagem construção e emprego do processo de software Figura 8 Modelo espiral típico Fonte PRESSMAN MAXIM 2016 A primeira volta da espiral resulta no desenvolvimento de uma especificação de produto Cada passagem pela região de planejamento resulta em ajustes no projeto do software Custos e cronogramas podem ser reajustados conforme o feedback dos usuáriosclientes após a entrega do produto Esse modelo é bem diferente dos outros modelos de processos explicados anteriormente que terminam somente quando o software é entregue O modelo espiral é uma abordagem realista para o desenvolvimento de sistemas e de software de larga escala PRESSMAN MAXIM 2016 Pelo fato de o software evoluir à medida que o processo avança desenvolvedores e clientes reagem melhor aos riscos de cada iteração das atividades dos processos conforme avançam Esse modelo utiliza a prototipação para a redução dos riscos em cada etapa Os riscos são explicitamente avaliados e resolvidos ao longo do processo 23 O processo unificado Processo unificado é uma tentativa de aproveitar as melhores características dos modelos tradicionais São os modelos de processos apresentados na Seção 22 O processo unificado destaca a importância da comunicação com o cliente e da utilização de diagramas de casos de uso para descrever a visão do cliente sobre um sistema 1 Para saber mais sobre Barry Boehm acesse o site httpsenwikipediaorgwikiBarryBoehm Acesso em 31 out 2018 26 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software O processo unificado é um modelo iterativo constituído de fases Pressman e Maxim 2016 identificam cinco fases distintas no modelo do processo de software A figura 9 descreve as cinco fases do processo unificado concepção elaboração construção transição e produção e também as relaciona com as atividades genéricas comunicação planejamento modelagem construção e emprego vide Seção 2 Figura 9 O processo unificado Fonte PRESSMAN MAXIM 2016 A fase de concepção envolve as atividades de comunicação e as de planejamento Nessa fase em conjunto com os interessados clientes são identificados os requisitos fundamentais do negócio de forma preliminar É também modelada uma arquitetura de alto nível que será expandida e refinada em fases posteriores Com base nessas informações são identificados os recursos os principais riscos e é definido um cronograma que será a base para as fases posteriores A fase de elaboração envolve as atividades de comunicação e modelagem Nela ocorre o detalhamento dos requisitos de software e o desenvolvimento de uma arquitetura executável arquitetura implementável A arquitetura inclui cinco visões i modelo de caso prático ii modelo de requisitos iii modelo de projeto iv modelo de implementação v modelo de emprego Na fase de elaboração o planejamento é revisado para garantir que o escopo os riscos e o prazo de entrega sejam alcançáveis A arquitetura ainda não oferece todas as funções e recursos do sistema mas o suficiente para demonstrar a sua viabilidade Essa arquitetura não é um protótipo uma vez que não será descartada e sim será a base para as fases seguintes A fase de construção referese à atividade de construção definida para o processo de software tradicional A arquitetura é completada então é realizada a implementação do códigofonte São realizados os testes unitários e as atividades de integração dos componentes bem como os testes de integração Antes da realização da fase de transição o software é confrontado contra os testes de aceitação A fase de transição é o último estágio da iteração Nela são produzidos a documentação e os materiais de apoio instalação configuração ajuda do software O software é entregue aos usuários finais para o teste beta 27 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software A fase de produção condiz com a atividade de emprego do processo tradicional Nessa fase ocorre o monitoramento do uso contínuo do software disponibilização de suporte para o software realização e avaliação de relatórios de defeitos e também a solicitação de mudanças Em suma nessa fase é esperado que se tenha o software documentado e funcionando corretamente em seu ambiente operacional O processo unificado não é um processo adequado para todos os tipos de software como os softwares embutidos Entretanto ele representa uma abordagem que combina três modelos de processos modelo cascata modelo de processo incremental e engenharia de software orientada a reuso SOMMERVILLE 2011 Para saber mais sobre teste beta leia o artigo disponível em httpswwwtecmundocom brmacos1698oquesaoversoesalfabetarcefinalhtm Acesso em 30 jun 2018 Para saber mais sobre processo unificado leia o artigo disponível em httpswwwibm comdeveloperworksrationallibrarycontent03July100012511251bestpractices TP026Bpdf Acesso em 30 jun 2018 Para saber mais sobre engenharia de software orientada a reuso leia o artigo disponível em httpsmediumcomomarelgabrysblogsoftwareengineeringsoftwareprocessand softwareprocessmodelspart24a9d06213fdc Acesso em 30 jun 2018 Saiba mais 24 Modelo de processo pessoal PSP O modelo de processo pessoal PSP foi criado em 1997 por Watts Humphery 2 É um processo de software projetado para a medição pessoal do desenvolvedor Ele também responsabiliza o desenvolvedor pelo planejamento de projetos e dá a capacidade de controlar a qualidade de todos os artefatos de softwares desenvolvidos Esse modelo define cinco atividades estruturais Planejamento essa atividade faz o planejamento do software que inclui as estimativas de defeitos identificação de tarefas de desenvolvimento e elaboração de um cronograma de projeto Registramse todas as métricas em formulários ou planilhas Projeto de alto nível referese ao desenvolvimento de especificações externas para cada componente que será construído e também a elaboração de um projeto de componentes Se for necessário podese construir protótipos para melhor compreender o software Todos os problemas são registrados Revisão de projeto de alto nível nessa atividade são aplicados métodos de verificação formais para revelar erros no projeto As medições são mantidas para todos os resultados de trabalho e tarefas importantes 2 Para saber mais sobre Watts Humphery acesse o site httpsenwikipediaorgwikiWattsHumphrey Acesso em 31 out 2018 28 Engenharia de Software Unidade 2 Modelos do Ciclo de Vida do Software Desenvolvimento é nessa atividade que o código é gerado revisado compilado e testado As medições são mantidas para todos os resultados de trabalho e tarefas importantes Autópsia por meio de medidas e métricas coletadas é determinada a eficácia do processo As mudanças no processo serão realizadas conforme o resultado das medições e das métricas O PSP reforça a necessidade de identificar erros precocemente e também a importância de compreender os tipos de erros que provavelmente ocorrerão Para saber mais sobre Processo Pessoal PSP leia o artigo disponível em httpswww researchgatenetprofileMauroSpinolapublication273664039APLICACAODO MODELOPSPMANUALEAMPARADOPORFERRAMENTACASEEMUMESTUDO DECASODEFABRICADESOFTWAREBRASILEIRAlinks55b0c62008aeb0ab4669b4df APLICACAODOMODELOPSPMANUALEAM Acesso em 30 jun 2018 Saiba mais Síntese da unidade Nesta unidade você aprendeu os principais modelos de processos de software além de Diferenciar qual modelo de processo de software utilizar dependendo do tipo e tamanho do software que será desenvolvido Identificar quais são as principais características de cada modelo de processo de software Descrever o que é processo unificado e processo pessoal PSP 29 Considerações finais Esperamos que você tenha conseguido assimilar da melhor forma possível o conteúdo aqui apresentado Para ampliar o seu conhecimento consulte o aprofundamento de conteúdo e assista à videoaula da unidade pois contêm informações relevantes para seu aprendizado