You are on page 1of 37

Engenharia de Software

Gilson de Souza Carvalho
gaucho.gilson@hotmail.com

Engenharia de Software
Modelos de Processo de Software
4.1.1 O Modelo em Cascata
O primeiro modelo de processo de desenvolvimento de
software publicado originou-se de processos mais gerais
de sistema (Royce, 1970). Isso é mostrado na Figura 4.1.
Devido ao encadeamento de uma fase com outra, esse
modelo é conhecido como modelo em cascata ou ciclo de
vida do software. Os principais estágios do modelo
demonstram
as
atividades
fundamentais
de
desenvolvimento.

Engenharia de Software
Modelos de Processo de Software
1. Analise e definição de requisitos. Os serviços, restrições
e objetivos do sistema são definidos por meio de consultas
aos usuários do sistema. Eles são, portanto, definidos
detalhadamente e servem como uma especificação do
sistema.

.Engenharia de Software Modelos de Processo de Software 2. O projeto de software envolve a identificação e descrição das abstrações fundamentais do sistema de software e suas relações. Ele estabelece um arquitetura geral do sistema. O processo de projeto de sistema divide os requisitos em sistemas de hardware ou de software. Projeto de Sistema e Software.

Implementação e teste de unidade. o projeto de software é realizado com um conjunto de programas ou unidades de programas.Engenharia de Software Modelos de Processo de Software 3. . Durante este estagio. O teste unitário envolve a verificação de que cada unidade atende a sua especificação.

. As unidades individuais de programa são integrados e testados como um sistema completo para garantir que os requisitos de software foram atendidos. o sistema de software é liberado para o cliente. Após os testes . Integração e teste de sistema.Engenharia de Software Modelos de Processo de Software 4.

Engenharia de Software Modelos de Processo de Software 5. Geralmente (embora não necessariamente) esta é a fase mais longa do ciclo de vida. no aprimoramento da implementação das unidades de sistema e na ampliação dos serviços de sistema à medida que novos requisitos são identificados. O sistema é instalado e colocado em operação. Operação e manutenção. . A manutenção envolve a correção de erros não detectados nos estágios anteriores do ciclo de vida.

1 .Engenharia de Software Modelos de Processo de Software Figura 4.

A fase seguinte não deve começar antes que a fase anterior tenha terminado.Engenharia de Software Modelos de Processo de Software Em principio. o resultado de cada fase consiste de um ou mais documentos aprovados (‘assinados’). Na pratica. esses estágios se sobrepõem e trocam informações entre si. .

envolve uma sequencia de interações das atividades de desenvolvimento. são encontrados problemas de projeto e assim por diante. O processo de software não é um modelo linear simples. durante a codificação.Engenharia de Software Modelos de Processo de Software Durante o projeto. são identificados problemas com requisitos. .

Engenharia de Software Modelos de Processo de Software Devido aos custos de produção e aprovação de documentos. as interações são onerosas e envolvem um “retrabalho” significativo. após um pequeno numero de interações . como a especificação. e prosseguir com os estágios posteriores do desenvolvimento. Portanto. é normal suspender partes do desenvolvimento. .

O congelamento prematuro de requisitos pode significar que o sistema não fará o que o usuário deseja. . Isso pode levar também a sistemas mal estruturados.Engenharia de Software Modelos de Processo de Software Os problemas são resolvidos posteriormente. ignorados ou reprogramados. pois os problemas de projeto foram contornados por meio de artifícios de implementação.

O sistema deve. . Os erros de programação e projeto emergem e a necessidade de novas funcionalidades é identificada. evoluir para permanecer util. o software é colocado em uso. portanto.Engenharia de Software Modelos de Processo de Software Durante a fase final do ciclo de vida (operação e manutenção) . Erros e omissões nos requisitos originais de software são descobertos. Essas mudanças (manutenção de software) podem implicar repetição de estágios anteriores do processo.

Engenharia de Software Modelos de Processo de Software As vantagens do modelo em cascata consiste na documentação produzida em cada fase e sua aderência a outros modelos de processo de engenharia. Seu maior problema é a divisão inflexível do projeto em estágios distintos. Os compromissos devem ser assumidos no estagio inicial do processo. o que torna difícil reagir as mudanças de requisitos do usuário. .

Engenharia de Software Modelos de Processo de Software Portanto. o modelo em cascata reflete o tipo de modelo de processo usado em outros projetos de engenharia. Consequentemente. o modelo em cascata deve ser usado apenas quando os requisitos forem bem compreendidos e houver pouca probabilidade de mudanças radicais durante o desenvolvimento do sistema. processos de softwares baseados nessa abordagem são ainda usados para desenvolvimento de software. particularmente quando fazem parte de um projeto maior de engenharia de sistemas. . No entanto.

expondo o resultado aos comentários do usuário e refinando esse resultado por meio de varias versões ate que seja desenvolvido um sistema adequado (Figura 4.2 Desenvolvimento Evolucionário O desenvolvimento evolucionário baseia-se na ideia de uma implementação inicial.2) .1.Engenharia de Software Modelos de Processo de Software 4.

Engenharia de Software Modelos de Processo de Software Figura 4.2 .

Existem dois tipos fundamentais de desenvolvimento evolucionário: . em vez de serem separadas. com feedback rápido que permeia as atividades.Engenharia de Software Modelos de Processo de Software As atividades de especificação. desenvolvimento e validação são intercaladas.

. O desenvolvimento começa com as partes do sistema compreendidas. O sistema evolui por meio da adição de novas características propostas pelo cliente.Engenharia de Software Modelos de Processo de Software Desenvolvimento exploratório. no qual o objetivo do processo é trabalhar com o cliente para explorar os requisitos e entregar um sistema final.

O protótipo se concentra na experimentação dos requisitos mal compreendidos pelo clientes. a partir disso.Engenharia de Software Modelos de Processo de Software Prototipação throwaway. . na qual o objetivo do processo de desenvolvimento evolucionário é compreender os requisitos do cliente e. desenvolver melhor definição de requisitos para o sistema.

A vantagem de um processo de software baseado na abordagem evolucionaria é que a especificação pode ser desenvolvida de forma incremental. .Engenharia de Software Modelos de Processo de Software Uma abordagem evolucionaria para desenvolvimento de software é frequentemente mais eficaz que a abordagem em cascata na produção de sistemas que atendem as necessidades imediatas dos clientes.

No entanto. a abordagem evolucionaria tem dois problemas: .Engenharia de Software Modelos de Processo de Software A medida que os usuários compreendem melhor seu problema . do ponto de vista da engenharia e do gerenciamento. isso pode ser refletido no sistema de software.

Engenharia de Software Modelos de Processo de Software O processo não é visível. A incorporação de mudanças de software tornar-se cada vez mais difícil e onerosa. Os gerente precisam de produtos regulares para medir o progresso. Se os sistemas são desenvolvidos rapidamente . A mudança continua tende a corromper a estrutura do software . . Os sistemas são frequentemente mal estruturados. não é viável economicamente produzir documentos que reflitam cada versão do sistema.

.Engenharia de Software Modelos de Processo de Software Para sistemas de pequeno e médio porte (ate 500 mil linhas de código). nos quais diversas equipes desenvolvem diferentes partes do sistema. É difícil estabelecer uma arquitetura estável do sistema usando essa abordagem. penso que a abordagem evolucionaria seja o melhor método de desenvolvimento. Os problemas de desenvolvimento evolucionário tornam-se particularmente graves para sistemas complexos de grande porte e de longo ciclo de vida. o que torna difícil integrar as contribuições das equipes.

. recomendo um processo misto que incorpore as melhores características dos modelos de desenvolvimento em cascata e evolucionário. usando uma abordagem evolucionaria para resolver as incertezas na especificação do sistema. Você pode. Isso pode envolver o desenvolvimento de um protótipo throwaway. portanto. reimplementar o sistema usando uma abordagem mais estruturada.Engenharia de Software Modelos de Processo de Software Para sistemas de grande porte.

Engenharia de Software Modelos de Processo de Software As partes do sistema bem compreendidas podem ser especificadas e desenvolvidas usando um processo baseado em cascata. que são difíceis de serem especificadas antecipadamente. . Outras partes do sistema. devem ser sempre desenvolvidas usando um abordagem de programação exploratória. tais como interface com o usuário.

1. existe algum reuso de software. Isso ocorre geralmente de maneira informal. Elas procuram por esses produtos.Engenharia de Software Modelos de Processo de Software 4. quando as pessoas que trabalham no projeto conhecem os projetos ou códigos similares aos necessários. os modificam e os incorporam ao sistema. Na abordagem evolucionaria. o reuso é frequentemente essencial para o desenvolvimento rápido do sistema. .3 Engenharia de software baseada em componentes Na maioria dos projetos de software .

tem emergido e se tornar cada vez mais utilizada .Engenharia de Software Modelos de Processo de Software Esse reuso informal ocorre independente do processo de desenvolvimento usado. nos últimos anos. uma abordagem para desenvolvimento de software. No entanto. denominada engenharia de software baseada em componentes (CBSE – Component Based Software Engineering) e que conta com reuso.

3. esses componentes são sistemas comerciais independentes (COTS ou Commercial Off-The-Shelf Systems) que podem fornecer funcionalidade especifica. . Algumas vezes. O modelo genérico de processo para CBSE é mostrado na Figura 4.Engenharia de Software Modelos de Processo de Software A abordagem orientada a reuso depende de uma grande base de componentes de software reusáveis e algum framework de integração desses componentes. como a formatação de texto ou um calculo numérico.

3 .Engenharia de Software Modelos de Processo de Software Figura 4.

Esses estágios são: . os estágios intermediários em um processo orientado a reuso são diferentes.Engenharia de Software Modelos de Processo de Software Embora o estagio de especificação inicial de requisitos e o estagio de validação sejam comparáveis ao outros processos.

Analise de componentes. . Dada uma especificação de requisitos. Geralmente. não existe uma correspondência exata e os componentes que podem ser usados fornecem apenas parte da funcionalidade necessária. é feito uma busca por componentes para implementar esta especificação.Engenharia de Software Modelos de Processo de Software 1.

Eles são modificados para refletir os componentes disponíveis. Modificação de requisitos. a atividade de analise de componentes pode ser novamente realizada para procurar soluções alternativas. Quando as modificações são impossíveis. .Engenharia de Software Modelos de Processo de Software 2. Durante esse estagio. os requisitos são analisados usando as informações sobre os componentes encontrados.

organizando o framework para eles. o framework do sistema é projetado ou um framework existe é reusada. . Projeto de sistema com reuso. Os projetistas levam em consideração os componentes reusados. Pode ser necessário projetar algum software novo caso os componentes reusáveis não estejam disponíveis.Engenharia de Software Modelos de Processo de Software 3. Durante esse estágio.

A integração de sistema. O software que não pode ser adquirido externamente é desenvolvido e os componentes e os sistemas COTS são integrados para criar o novo sistema. nesse modelo. . em vez de ser uma atividade separada. pode ser parte do processo de desenvolvimento.Engenharia de Software Modelos de Processo de Software 4. Desenvolvimento e Integração.

Engenharia de Software Modelos de Processo de Software A engenharia de software baseada em componentes tem a vantagem obvia de reduzir a quantidade de software a ser desenvolvido e. reduzir os custos e riscos. Isso também leva geralmente a uma entrega mais rápida de software. . dessa maneira.

Além disso. .Engenharia de Software Modelos de Processo de Software No entanto. algum controle sobre a evolução do sistema será perdido se as novas versões dos componentes reusáveis não estiverem sob controle da organização que as utiliza. compromissos com os requisitos são inevitáveis e isso pode levar a um sistema que não atenda as reais necessidades dos usuários.