Buscar

Fundamentos de Desenvolvimento de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Metodologia de 
Desenvolvimento de 
Sistemas 
Metodologia de 
Desenvolvimento de 
Sistemas 
1ª edição
2019
Autoria
Parecerista Validador
Samira Santos da Silva
Sandra Gavioli Puga / José Leão
*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.º 9.610/98 e punido pelo artigo 184 do Código Penal.
22
 2Unidade 22. Fundamentos de 
Desenvolvimento de Software
Para iniciar seus estudos
Nesta unidade, apresentaremos os conceitos básicos para a compreensão 
de metodologias de desenvolvimento de software. Daremos a definição de 
software enquanto produto, visto que essa definição é a que se aplica ao 
desenvolvimento de softwares para o mercado. Além disso, abordaremos 
as etapas no desenvolvimento de software, a definição de modelo de ciclo 
de vida, bem como o conceito de metodologia de desenvolvimento de 
software. Todos esses conceitos são importantes para o desenvolvimento 
de softwares mais robustos e com mais qualidade.
Objetivos de Aprendizagem
• Identificar os princípios que envolvem o desenvolvimento de 
software.
• Descrever os conceitos de software enquanto produto, modelos de 
ciclo de vida e metodologias para o desenvolvimento de software.
23
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Introdução da unidade
O objetivo desta unidade é contextualizar os fundamentos do desenvolvimento de software e suas etapas, bem como 
apresentar as metodologias de desenvolvimento de software mais utilizadas no momento. Esse conhecimento 
possibilitará ao aluno compreender outros níveis de complexidade de metodologia de desenvolvimento de 
software, do básico ao complexo, facilitando reconhecer no ambiente corporativo das empresas situações em 
que a escolha e aplicação de métodos sejam necessárias. Nesta unidade, será apresentado o conceito de software 
como produto, que é o interesse de equipes que desenvolvem para atender o mercado corporativo. Também 
serão expostas algumas metodologias de desenvolvimento de software existentes. Por fim, serão abordados os 
modelos de ciclo de vida para que o aluno possa entender os seus conceitos e aplicação simultânea com as 
metodologias de desenvolvimento de software.
2.1 Fundamentos de desenvolvimento de Software
Nesta unidade, abordaremos os princípios para a compreensão do desenvolvimento de software. Primeiramente, 
apresentaremos a definição de software enquanto produto categorizando-o em produtos genéricos e sob 
encomenda. Em seguida, definiremos o conceito de desenvolvimento de software apresentando cada uma das 
suas etapas. Então elucidaremos o conceito de modelo de ciclo de vida, exemplificando com a apresentação de 
dois tipos de modelo, em cascata e iterativo e incremental. Por fim, apresentaremos a definição de metodologias de 
desenvolvimento de softwares, ilustrando seu conceito com a descrição de algumas das principais metodologias.
2.1.1 O que é um software?
Programas de computador são escritos por diversas pessoas. Profissionais em empresas escrevem programas 
que simplificam seu trabalho. Pesquisadores escrevem programas que realizam seus experimentos. E alguns 
programadores escrevem programas apenas por hobby. Entretanto, a maior parte do desenvolvimento de software 
é realizada com o intuito profissional, a fim de construí-los para um propósito de negócio. Em geral, softwares 
desse tipo são produzidos por equipes em vez de apenas uma pessoa. Devido a seu alto custo, tanto em termos 
de dinheiro quanto em termos de tempo, geralmente um software é desenvolvido uma vez e mantido durante 
um longo tempo, tendo apenas algumas alterações nesse período. Atualmente, em função do dinamismo dos 
negócios e da disponibilidade de novas tecnologias, métodos voltados ao rápido desenvolvimento e entrega têm 
sido fortemente utilizados, atendendo a um escopo reduzido, porém com forte interação com os usuários. 
Na engenharia de software, tem-se como objetivo apoiar o desenvolvimento de softwares profissionais, visto que 
se integrarão com outros softwares e, assim, farão parte de um sistema completo, requerendo, portanto, diversos 
cuidados, diferentemente de outros tipos de softwares. As técnicas existentes nela apoiam todos os passos no 
desenvolvimento de um software, desde a especificação, passando pelo projeto até a evolução do software. 
Softwares pessoais geralmente não requerem esse tipo de preocupação.
Quando pensamos no conceito de software, geralmente nos referimos a um programa de computador. 
Entretanto, a engenharia de software não diz respeito apenas ao programa de computador, mas também à toda 
documentação e dados de configuração que são necessários para que o programa funcione de forma correta. 
Um sistema de software que foi desenvolvido com intuito profissional é, na maioria das vezes, mais do que apenas 
o programa em si. Inclui a integração de diversos programas e arquivos de configuração. Pode incluir, também, 
uma documentação do sistema para que outra equipe consiga entendê-lo, uma documentação de usuário para 
que usuários consigam interagir com o sistema e até mesmo sites em que o programa possa ser atualizado. 
Uma diferença fundamental entre o desenvolvimento de forma profissional e de forma amadora é a necessidade 
de um manual existente no primeiro. Se quem está escrevendo o software é a própria pessoa que vai utilizá-lo, 
24
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
não há necessidade de especificar manuais do programa. Entretanto, caso seja um software profissional, isto se 
torna fundamental, visto que alterações futuras, por exemplo, podem ser realizadas por uma equipe diferente 
daquela que o escreveu. Esses pontos são fundamentais para longevidade do software.
Engenheiros de software, de forma geral, se preocupam em desenvolver o que chamamos de produto de software, 
ou seja, um software que pode ser vendido para um cliente. Existem dois tipos de produtos de software: produtos 
genéricos e produtos sob encomenda.
2.1.2 Produtos genéricos
Produtos genéricos são softwares do tipo stand alone (capazes de operar independentemente de outro hardware/
software) produzidos por empresas de desenvolvimento e vendidos para quaisquer clientes que queiram comprá-
los. Exemplos mais comuns desse tipo de software são os softwares para PCs, como ferramentas de banco de 
dados, editores de texto, editores gráficos e ferramentas para gestão de projetos. Além desses exemplos, podemos 
citar o que chamamos de aplicações verticais. Essas aplicações são desenvolvidas para atender a determinado 
nicho. Exemplos disso são os softwares para controle de estoque, sistema de gestão de biblioteca e sistemas 
de contabilidade, desde que desenvolvidos especificamente para serem executados de forma individual, pois 
sistemas de contabilidade e controle de estoques hoje fazem parte de produtos Enterprise Resource Planning (ERP).
Figura 12 – Editor de texto: exemplo de um produto genérico
Fonte: SHUTTERSTOCK, 2018.
2.1.3 Produtos sob encomenda
Produtos sob encomenda são softwares encomendados por um cliente em particular. Por essa razão, esse software 
acaba tendo as características específicas exigidas pelo cliente. Alguns exemplos desse tipo de software são os 
sistemas de controle de dispositivos eletrônicos, sistemas para dar apoio a uma parte específica do negócio ou 
até mesmo sistemas de controle de tráfego aéreo.
25
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Figura 13 – Sistema de controle de tráfego aéreo: exemplo de um produto sob encomenda
Fonte: SHUTTERSTOCK, 2018.
2.2 O que é o desenvolvimento de software?
Desenvolver um softwareé uma atividade complexa, exige inúmeros passos até a operação correta do mesmo. O 
resultado disso é que muitos projetos de desenvolvimento de softwares são abandonados no meio do caminho, 
seja por falta de tempo, seja de dinheiro. Um estudo realizado pelo Standish Group em 1994 relata que 10% dos 
projetos não terminavam dentro do prazo estabelecido. Além disso, cerca de 60% dos projetos obtinham um 
custo maior do que o esperado. A situação atualmente não está nada diferente.
Tentativas para minimizar as dificuldades de se desenvolver softwares, como as citadas no parágrafo anterior, 
envolvem a definição de um processo de desenvolvimento de software. Um processo de desenvolvimento de 
software consiste em todas as atividades para definir, desenvolver, testar e manipular um software. Entre os 
principais objetivos de um processo no desenvolvimento de software, estão: definir as atividades a serem 
executadas; definir quando, como e quem vai executá-las; estabelecer formas de verificar o andamento do 
desenvolvimento; padronizar a forma como o software é desenvolvido em uma empresa. Existem vários processos 
de desenvolvimentos de software. Alguns exemplos de processos já existentes são o ICONIX, o Rational Unified 
Process (RUP) e o Enterprise Unified Process (EUP). 
Um processo de desenvolvimento agrupa as tarefas necessárias para a construção de softwares em atividades. 
Existem diversos processos de softwares propostos. Apesar disso, é um consenso na comunidade de engenharia 
de software que não existe um processo único ideal para todas as situações. Existem processos que se adaptam 
melhor em diferentes situações. Entretanto, podemos definir algumas atividades que estão presentes na maioria 
dos processos, com uma ou outra modificação. Nessa seção, descreveremos as atividades típicas de um processo 
de desenvolvimento de softwares, que são: levantamento de requisitos, análise, projeto, implementação, testes e 
implantação.
26
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
2.2.1 Levantamento de requisitos
A etapa de levantamento de requisitos consiste na compreensão do problema no qual o desenvolvimento do 
software está imerso. O principal objetivo dessa etapa é fazer com que usuário e desenvolvedores tenham a mesma 
visão do sistema que deve ser construído. Para isso, clientes e desenvolvedores realizam um levantamento das 
necessidades dos futuros usuários do sistema que será desenvolvido. Denominamos tais necessidades como 
requisitos.
Por vezes, o termo levantamento de requisitos é encontrado na literatura como elicitação de 
requisitos ou até mesmo análise de requisitos.
Fique atento!
Geralmente, os requisitos são condições, capacidades e funcionalidades que estão relacionadas ao domínio do 
problema e que devem ser trazidas para o sistema. Durante essa etapa, é necessário também que a equipe de 
desenvolvimento procure entender o domínio que deve ser compreendido pelo sistema. Existem diversas técnicas 
para isso, como: leitura de material de referência; imersão no ambiente do usuário para observação; entrevista 
com usuários e especialistas; workshops; entre outras.
O resultado da etapa de levantamento de requisitos é o documento de requisitos, contendo diversos tipos de 
requisitos para o sistema a ser desenvolvido. Esse documento pode vir até mesmo escrito em linguagem informal. 
Um documento como esse, normalmente, contém:
1. Requisitos funcionais: definem as funcionalidades que devem existir no sistema. Um exemplo desse 
requisito seria: “O sistema deve permitir que cada recepcionista cadastre um novo paciente”.
2. Requisitos não-funcionais: definem as restrições existentes em relação às funcionalidades do sistema. 
Alguns dos tipos de requisitos não funcionais serão listados a seguir.
a. Confiabilidade: consiste em medidas quantitativas que dizem respeito à confiabilidade exigida do sistema. 
Exemplo disso seria definir um requisito que determina qual deve ser o tempo médio mínimo entre falhas. 
Dessa forma, conseguimos “exigir” que o sistema tenha o mínimo de confiabilidade.
b. Desempenho: corresponde a requisitos que vão estabelecer o tempo de resposta esperado para 
determinadas funcionalidades ou até mesmo a quantidade máxima de memória requerida pelo sistema.
c. Portabilidade: requisitos que vão restringir os componentes de hardware ou software com os quais o 
sistema terá de interagir. Geralmente, estão ligados aos sistemas operacionais e plataformas sob os quais 
o software deverá ser executado.
d. Segurança: esse tipo de requisito diz respeito a limitar acessos não autorizados a determinadas partes 
do sistema (ou a todo o sistema), seja por acessos internos, seja externos, a fim de garantir o mínimo 
de segurança. Temos de considerar que, atualmente, temos a Lei Geral de Proteção de Dados do Brasil 
(LGPD), uma política internacional de proteção ao dado que está sendo implantada no Brasil, de forma 
que essas leis devem ser consideradas. 
27
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
e. Usabilidade: requisitos que vão afetar a usabilidade do sistema. O impacto se dá, principalmente, na 
facilidade de uso e na necessidade de realizar treinamentos com usuários ou não.
 3. Requisitos normativos: são restrições que limitam o desenvolvimento do sistema. Podem dizer respeito, 
por exemplo, ao custo e prazo máximo de entrega do sistema ou até mesmo a aspectos legais (necessidade 
de licença), componentes de hardware ou software que necessitam ser adquiridos, além de atender a 
aspectos específicos da legislação brasileira, etc. Também podem ser regras de negócio, restrições ou 
políticas do domínio do problema que afetam o desenvolvimento.
Requisitos devem ser estabelecidos de modo que seja possível sua verificação. Além disso, clientes devem ser 
capazes de compreendê-los, bem como todos da equipe. Ele não deve conter as soluções técnicas a serem 
adotadas, mas sim responder à pergunta: “O que o usuário precisa neste sistema?”. Nesse documento, é 
interessante que os requisitos apareçam ordenados de acordo com a prioridade que é definida pelo valor que 
sua implementação traz ao cliente. Essa prioridade ajudará a equipe técnica a tomar decisões ao longo do 
desenvolvimento. 
Essa etapa é a mais importante em termos financeiros, visto que uma especificação incorreta leva a sistemas 
inconsistentes, que não serão utilizados de fato, resultando em desperdício de dinheiro e tempo. Além disso, esse 
documento pode ser visto como um termo de consentimento entre a equipe técnica e o cliente. Nesse sentido, 
ele é a garantia para a equipe de desenvolvimento de que aquilo que foi implementado realmente era o que o 
cliente concordou ao assinar o documento de requisitos.
2.2.2 Análise
Por vezes, a etapa de levantamento de requisitos (definida anteriormente) em conjunto com a etapa de análise 
recebem o nome de engenharia de requisitos. Nesta seção, abordaremos a fase de análise. Num contexto geral, 
o termo “analisar” significa dividir um sistema em componentes e verificar como interagem, a fim de entender o 
funcionamento do sistema. No contexto de sistemas de softwares, essa etapa consiste em um estudo detalhado 
dos requisitos que foram levantados na etapa anterior. Com base nesse estudo, modelos que representem o 
sistema são construídos.
Eventualmente, o termo análise é encontrado na literatura como análise de requisitos.
Fique atento!
Assim como o levantamento de requisitos, a análise de requisitos não leva em consideração o ambiente tecnológico 
a ser utilizado. Esta não é uma preocupação da análise de requisitos. É necessário primeiro especificar de forma 
bem clara o que deve ser feito, para só então definir como fazê-lo. Portanto, deve-se dedicar tempo para que o 
problema seja definido por completo para só então implementá-lo. Muitas equipes pecam por ignorarem essa 
etapa, o que resulta em problemas em etapasfuturas. 
28
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Os modelos construídos na etapa de análise devem ser validados e verificados. A validação tem como objetivo 
garantir que as necessidades que o cliente possui estão sendo atendidas pelo sistema. A pergunta que deve-se 
fazer é: “Estamos construindo o sistema correto?”. Para ter certeza da resposta, modelos são apresentados a 
futuros usuários para que possam ser validados. A validação evita que se descubra em etapas tardias que o 
sistema em construção não é o que o cliente queria. 
Já a verificação tem por objetivo verificar se modelos construídos condizem com os requisitos definidos. A 
pergunta que se deve fazer é: “Estamos construído o sistema corretamente?”. Modelos nessa etapa são analisados 
separadamente, bem como a consistência da sua integração. A validação é tipicamente uma atividade de análise, 
enquanto a verificação é uma atividade típica da fase de projeto (que veremos a seguir). 
Um dos resultados da etapa de análise é o modelo de objetos representando as classes que compõem o sistema. 
Outro resultado é um modelo funcional do sistema a ser desenvolvido. Ao longo dos anos, diversas ferramentas 
foram propostas para auxiliar na etapa de modelagem. Cada uma é útil para modelar determinado aspecto do 
sistema. Pode-se, também, utilizar mais de uma ferramenta para capturar diferentes aspectos.
A modelagem de dados consiste em criar modelos que expliquem ou descrevam o comportamento de um 
sistema. No caso da modelagem para o projeto de software, esse modelo descreve o sistema a ser construído. As 
principais ferramentas para realizar análise na Unified Modeling Language (UML) são o diagrama de casos de uso e 
o diagrama de classes. Outros diagramas da UML também podem ser utilizados.
2.2.3 Projeto
Na análise, a preocupação está em aspectos que são independentes da implementação do sistema. Já na fase de 
projeto, estabelece-se “como” o sistema funcionará para que atenda aos requisitos, considerando os recursos 
tecnológicos existentes. No projeto, adicionam-se restrições de tecnologia aos modelos construídos na fase de 
análise. Tais restrições podem estar ligadas à arquitetura do sistema, ao padrão de interface gráfica, à linguagem 
de programação, entre outros.
Você também pode encontrar o termo projeto na literatura como “design” ou “desenho”.
Fique atento!
O resultado dessa etapa é uma descrição computacional de o que o software deve fazer, que precisa condizer com 
a descrição produzida pela etapa de análise. Em alguns casos, restrições de tecnologia já ficam subentendidas 
da etapa de análise. Em outros casos, devem ser especificadas nessa etapa. Mas, independentemente disso, essa 
etapa é direcionada pelos modelos produzidos na etapa anterior e pelo planejamento do sistema.
29
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Apesar de apresentarmos a análise e o projeto de forma separada nesta unidade, nem 
sempre há uma distinção bem clara entre as duas etapas. Pelo contrário, frequentemente 
essas duas etapas se misturam.
Fique atento!
As duas atividades principais nessa etapa são o projeto da arquitetura e o projeto detalhado. O projeto da 
arquitetura reside na distribuição das classes de objetos relacionadas do sistema em subsistemas e seus 
componentes. Pode-se, também, distribuir esses componentes de forma física pelos recursos de hardware 
disponíveis. Geralmente, os diagramas de implementação UML são utilizados nessa atividade do projeto.
O projeto de arquitetura também é chamado de “projeto de alto nível”. Já o projeto detalhado 
pode vir com a nomenclatura “projeto de baixo nível”.
Saiba mais
Já no projeto detalhado, modelam-se as colaborações entre objetos de cada módulo, a fim de realizar as 
funcionalidades deste. Nessa atividade, também são realizados projetos da interface com o usuário, do banco de 
dados, dos algoritmos a serem utilizados e é considerada a distribuição do sistema. Geralmente, são utilizados 
diagrama de classes, diagrama de casos de uso, diagrama de interação e diagrama de atividades nessa atividade 
do projeto. 
2.2.4 Implementação
A etapa de implementação consiste em codificar o sistema, ou seja, traduzir a descrição computacional resultante 
da etapa de projeto em um código executável por meio do uso de linguagens de programação. Em processos que 
seguem o paradigma da orientação a objetos, a implementação consiste na criação do código-fonte das classes 
do sistema usando linguagens, como C++, C#, Java, etc. Essa etapa pode consistir na programação desde o início 
ou pode também fazer reuso de componentes de softwares, bibliotecas e frameworks, a fim de tornar mais rápida 
sua execução.
2.2.5 Testes 
A especificação realizada na fase de projeto passa por diversos testes, com o propósito de realizar a verificação do 
sistema. O principal resultado dessa etapa é o relatório de testes, que contém informações sobre possíveis erros 
30
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
que forem identificados no software. Após a execução dos testes, partes individuais do sistema são integrados 
para, assim, formar o produto de software. 
Há uma tendência nos desenvolvedores de simplificar em demasia as atividades de testes, seja por problemas 
de prazo, pela ansiedade da própria equipe de desenvolvimento ou, principalmente, pelos usuários. Porém, as 
etapas de teste não podem de forma alguma serem minimizadas. Ao contrário, devem ser criadas estratégias, 
selecionar profissionais do cliente e analistas de teste que executarão tais atividades. Considera-se que a equipe 
de desenvolvimento deve ter no seu quadro perfis específicos para as atividades de teste.
2.2.6 Implantação 
A implantação consiste no empacotamento, distribuição e instalação do sistema no ambiente do usuário. Aqui 
os manuais do sistema são escritos, arquivos são carregados, dados são importados para o sistema e usuários são 
capacitados para usar o sistema de forma correta. Por fim, pode ocorrer também a migração não só de sistemas 
de softwares, mas também de dados preexistentes.
2.3 O que são modelos de ciclo de vida?
O desenvolvimento de softwares pode envolver diversas fases (descritas na seção anterior). Denominamos modelo 
de ciclo de vida um encadeamento específico dessas fases na construção de um software. Existe uma diversidade 
de modelos de ciclo de vida. Alguns deles foram apresentados na unidade anterior. A principal diferença entre 
eles está na maneira como as diversas fases são encadeadas. Nesta seção, descreveremos dois modelos de ciclo 
de vida: modelo em cascata; modelo iterativo e incremental.
2.3.1 Modelo em cascata
O modelo de ciclo de vida em cascata é também chamado de clássico ou linear e tem como característica 
principal uma tendência na progressão sequencial entre uma fase e a seguinte. Ocasionalmente, pode haver 
uma retroalimentação entre uma fase e a fase anterior. Mas, de forma geral, as fases seguem em sequência. A 
Figura 14 ilustra o modelo em cascata.
Figura 14 – Modelo em cascata
Requisitos
Design
Análise
Desenvolvimento
Testes
Operação
Fonte: Elaborada pela autora.
31
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
Existem diversos problemas provenientes da utilização desse modelo. A maioria deles provém da sequencialidade 
das fases. O primeiro problema é que projetos no mundo real dificilmente seguem o fluxo sequencial. Existem 
diversas atividades que podem ser desenvolvidas em paralelo. Além disso, o fato de que essa abordagem define 
que todos os requisitos devem ser levantados no começo do desenvolvido limita a possibilidade da descoberta 
de novos requisitos posteriormente, após testes com o usuário. Por fim, só há uma versão pronta do sistema ao 
chegar ao final do ciclo. Em algumas situações, o usuário nãoquer esperar todo esse tempo para ter uma versão 
inicial que ele já possa utilizar. 
Mesmo com todos esses problemas, o modelo em cascata foi utilizado durante bastante tempo. Atualmente, sua 
utilização não é mais viável, devido à grande complexidade dos sistemas.
2.3.2 Modelo iterativo e incremental
O modelo de ciclo de vida incremental e iterativo foi proposto na tentativa de solucionar os problemas 
impostos pelo modelo em cascata. Um processo de desenvolvimento segundo essa abordagem considera 
o desenvolvimento em ciclos. Cada ciclo contém as seguintes fases: análise; projeto; implementação; testes. 
Diferentemente da abordagem em cascata, em que essas etapas são realizadas uma única vez, nesta abordagem, 
em cada ciclo, todas essas etapas são executadas novamente. A Figura 15 exibe o modelo iterativo e incremental.
Figura 15 – Modelo de ciclo de vida iterativo e incremental
Fonte: Elaborada pela autora.
O que muda de um ciclo para o outro é o subconjunto de requisitos considerado. Portanto, a cada ciclo, um 
subconjunto de requisitos diferente é desenvolvido. No ciclo seguinte, um novo subconjunto de requisitos é 
considerado criando um novo incremento do sistema, com mais funcionalidades implementadas a cada ciclo. 
Podemos entender esse método como uma generalização do método em cascata. Considerando cada ciclo 
individualmente, podemos dizer que ali existe um desenvolvimento em camada. 
Essa abordagem só funciona se é possível particionar os requisitos em subconjuntos para que cada subconjunto 
seja implementado em um ciclo diferente. Para decidir quais subconjuntos de requisitos serão desenvolvidos 
primeiro, considera-se a prioridade que cada requisito tem para o cliente e seu risco. Com a abordagem 
incremental, o usuário participa de forma ativa do desenvolvimento do software, o que diminui as chances da 
construção de um sistema diferente do que ele deseja.
32
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
O modelo de ciclo de vida incremental e iterativo tem por característica o desenvolvimento 
de software em vários passos similares (iterativo), com cada passo estendendo o sistema e 
deixando-o com mais funcionalidades (incremental).
Uma desvantagem frequentemente elucidada dessa abordagem é o fato da possibilidade do usuário já se 
entusiasmar em demasia com a primeira versão do sistema e pensar que esta já corresponde ao sistema final. 
Entretanto, existem várias atividades não sistêmicas que podem e devem ser desenvolvidas com os usuários, 
para que eles conheçam o ciclo de vida do projeto e a estratégia na aplicação de cada ciclo, acrescendo, ainda, as 
vantagens, como o fato de que riscos do projeto nessa abordagem podem ser melhor gerenciados e mitigados, 
fazendo com que mesmo sim valha a pena sua utilização.
2.4 O que são metodologias de desenvolvimento de software?
Podemos definir uma metodologia de desenvolvimento de software como sendo um conjunto de modelos de 
processo ou métodos que possuem alguma característica em comum. Elas são utilizadas para o estabelecimento 
de ordem, definição de padrões e para utilização de técnicas já provadas no desenvolvimento de sistemas, que 
agilizam o processo e garantem o máximo de qualidade no software. As principais abordagens de metodologias 
de desenvolvimento de software são: metodologia estruturada; metodologia orientada a objetos; metodologia 
ágil. As principais diferenças entre elas estão nas técnicas de construção do processo de negócio, nas definições 
dos dados e nos modelos de eventos.
2.4.1 Metodologia estruturada
Em metodologias do tipo estruturada definem-se uma sucessão de processos detalhados desde o nível macro 
até o nível mais baixo. Em outras palavras, estabelece-se uma visão top-down de sistemas. Entre as metodologias 
existentes, a metodologia estruturada é a mais antiga, estando ainda em uso em algumas instituições. 
A representação dos elementos do sistema nessa metodologia é dada pelo uso do Data Flow Diagram (DFD) ou 
Diagrama de Fluxo de Dados. Esse diagrama descreve o fluxo dos dados no sistema. Já o Entity Relation Diagram (DER) 
ou Diagrama Entidade Relacionamento descreve o relacionamento entre entidades, que podem ser, por exemplo, 
objetos ou pessoas. Ele normaliza os dados do ambiente e define os dados para a aplicação. Nele, determinam-se 
os registros estruturados para serem definidos nas bases de dado. Em outras palavras, especifica-se como dados 
devem entrar e sair dos processos a serem armazenados no sistema. 
Para armazenar as descrições em um repositório, pode-se fazer uso de ferramentas CASE. O resultado é um 
modelo lógico do negócio que representa uma abstração do mundo real. Existem outros métodos que fazem 
parte dessa metodologia, mas não foram abordados aqui.
33
Metodologia de Desenvolvimento de Sistemas | Unidade 2 - Fundamentos de Desenvolvimento de Software
2.4.2 Metodologia Orientada a Objetos
A metodologia de desenvolvimento orientada a objetos entende cada processo como uma coleção de objetos. A 
metodologia utiliza os termos da orientação a objetos como sua base, tais como encapsulamento, requerimento, 
herança e classe. Tendo também seu próprio conjunto de diagramas, a metodologia faz uso de diagramas similares 
à metodologia estruturada. Por vezes, essa metodologia é descrita como contendo quatro fases: análise; projeto 
do sistema; projeto dos objetos; implementação. 
Atualmente, a metodologia orientada a objetos tem sido bastante aceita pelo mercado, em comparação com a 
metodologia estruturada. É possível a transição da metodologia estruturada para a orientada a objetos. Cerca de 
47 metodologias “pontes” têm sido utilizadas com essa função.
2.4.3 Metodologia ágil
O desenvolvimento de software ágil, que começou a partir da metade de 1990, pode ser visto como uma reação 
contra métodos chamados “pesados”, que continham regulamentação bastante restrita e burocrática, como o 
modelo em cascata, por exemplo. A metodologia ágil surgiu para superar os problemas do modelo em cascata 
trazidos pela sua lentidão, burocracia e contradição à forma usual com que os engenheiros de software sempre 
realizaram seu trabalho com eficiência. 
Primitivamente, métodos ágeis eram denominamos “métodos leves”. Durante uma reunião no ano de 2001, 
membros ativos da comunidade se reuniram em Snowbird, nos Estados Unidos, adotando, assim, o nome 
métodos ágeis. Posteriormente, formou-se a Agile Alliance, organização sem fins lucrativos com o objetivo de 
promover o desenvolvimento ágil.
Os métodos ágeis iniciais são os seguintes: Scrum, Crystal Clear, Programação Extrema, Adaptive Software 
Development, Feature Driven Development e Dynamic Systems Development Method. Mais tarde, outros métodos 
foram surgindo e, atualmente, métodos ágeis são bastante utilizados no processo de desenvolvimento de muitas 
empresas. A utilização dos métodos ágeis tem crescido exponencialmente, em função das empresas startups 
que desenvolvem novas soluções aproveitando a oferta de oportunidades geradas pelas novas tecnologias, 
como Internet das Coisas (IoT), e também por empresas tradicionais que, em função do dinamismo do mercado, 
necessitam rapidamente de se adaptarem ao mundo digital.
Síntese da unidade
Esta unidade teve como objetivo definir alguns conceitos básicos para a compreensão do desenvolvimento de 
softwares. Foram apresentados os conceitos de software com produto, bem como a definição de desenvolvimento 
de software, modelos de ciclo de vida e metodologia de desenvolvimento de software.
34
Considerações finais
Compreender os conceitos básicos no desenvolvimento de software 
possibilita que conceitos complexos sejam assimilados de maneira mais 
fácil no futuro.
	Unidade 1
	1. Histórico do Desenvolvimento de Software 
	Unidade 2
	2. Fundamentos de Desenvolvimento de Software
	Unidade 3
	3. Modelos do Ciclo de Vida de Projetos de Desenvolvimento de Software
	Unidade 4
	4. Modelos MDS 
	Unidade 5
	5. Processosde MDS
	Unidade 6
	6. Tipos MDS 
	Unidade 7
	7. Qualidade em MDS
	Unidade 8
	8. Estudos de Casos com Uso de Software CASE

Outros materiais