Você está na página 1de 6

Aula 5

Evolução do software
É cada vez mais comum a adoção de softwares dentro das organizações
empresariais em detrimento do uso do hardware ao longo dos anos. Mas, qual
seria o grande diferencial do software? Ao longo dos tópicos, você pode
constatar as inúmeras vantagens de se adotar um software dentro das
empresas e como a engenharia de software das empresas e como a
engenharia de software tem se desenvolvido de maneira extensa. Entretanto,
umas características explicam toda essa ascensão: a flexibilidade.

A flexibilidade dos sistemas de software é considerada um dos principais


motivos pelos quais os softwares são incorporados, em grande escala, aos
maiores e mais complexos sistemas. Produzir um hardware se torna muito caro
na medida em que se deseja realizar alterações no projeto inicial. Porém, as
transformações podem ser feitas no software, a qualquer tempo,
independentemente do desenvolvimento do sistema, devido ao baixo custo.

Sempre existiu uma espécie de separação conceitual sobre o que é processo


de desenvolvimento e o que é evolução do software (manutenção).
Desenvolver ou criar algo é sempre mais interessante do que consertar. Na
área da engenharia de software normalmente associam o termo
desenvolvimento de software à etapa de criatividade na produção de um
sistema partindo do seu conceito inicial até um sistema funcional.
Já a ideia de manutenção, mesmo com custos mais elevados, é vista como
enfadonha ou maçante por ser menos desafiadora que o desenvolvimento de
software.

Entretanto, a separação entre esses conceitos é irrelevante, considerando que


os sistemas de softwares são, na sua maioria, novos, os conceitos de
desenvolvimento e a manutenção são vistos como processos contínuos, ou
seja, ao invés de separá-los, é mais concreto imaginar a engenharia de
software como algo único.

Modelos de softwares e métodos ágeis

Modelos de processos clássicos de software

Verificamos que para o desenvolvimento de software há alguns problemas e


nem sempre tem soluções imediatas. Sempre questionamos o porque não há
uma solução mais abrangente em relação aos problemas de desenvolvimento
de software. Primeiramente é preciso compreender que não existe um método
específico que traga essas soluções.

Segundo Pressman (1995, p.30), a combinação de métodos associados a um


conjunto de ferramentas que os automatizem, a adoção de blocos de
construção mais poderosos na implementação do software, e o uso de técnicas
melhores que garantam a qualidade do software e a introdução de uma
mentalidade que envolva coordenação, controle e administração são os pilares
necessários para o desenvolvimento da engenharia de software.

A engenharia de software se baseia nos princípios da engenharia tradicional.


Seu principal objetivo é disponibilizar um software de baixo custo que ofereça
confiabilidade e eficiência quando for testado. Vale lembrar que a engenharia
de software abrange um conjunto formado por três componentes considerados
fundamentais:

 Métodos: na prática, indica como desenvolver um software. Suas


atividades envolvem planejamento e estimativa de projetos, além da
validação de requisitos, passando por codificações, teste e manutenção
 Ferramentas: oferecem apoio, seja de forma automatizada ou não;
 Procedimentos: são meios de ligação entre os métodos e as
ferramentas no desenvolvimento racional do software. Nesta etapa, são
definidas as sequencias de aplicação dos métodos.

Portanto, este conjunto de etapas (métodos, ferramentas e procedimentos)


forma o que chamamos de “paradigmas da engenharia de software”. Veremos
abaixo os principais paradigmas (modelos) utilizados na engenharia de
software e as aplicações práticas dentro das organizações.

Modelo cascata

O modelo de cascata (ciclo de vida clássico) se origina de uma abordagem


sistemática, sequencial ao desenvolvimento do software. Inicia-se a um nível
sistêmico, progredindo ao decorrer das fases posteriores.

Conforme Pressman “ no que se refere à análise e engenharia de sistemas, é


necessário considerar o fato de que um software compõe um sistema mais
abrangente, portanto o seu efetivo trabalho se inicia através da determinação
de requisitos dos componentes dos sistemas e continua com a atribuição de
determinada subdivisão destes requisitos ao software. “

A análise de requisitos de softwares se refere à compreensão de que todo


analista de software deve ter domínio da informação, assim como os atributos
exigidos para entender a origem dos programas a serem desenvolvidos. Já o
projeto de software é um procedimento de diversas etapas, que se baseia na
estrutura de dados, nos detalhes procedimentais, na arquitetura de software e
na caracterização de interface.

A codificação trata da forma como o projeto será traduzido e, a depender do


detalhamento do projeto executado, a codificação se dará mecanicamente. A
etapa de teste do programa ocorre posteriormente à codificação, onde se
espera que todas as instruções, sob o aspecto lógico interno, sejam testadas.
Nesta fase, os aspectos lógicos externos também devem ser testados, a fim
de, entre outras coisas, descobrir possíveis erros.

Por fim, é a manutenção que, prevendo possíveis mudanças que o software


sofrerá após a entrega ao cliente final, reaplicará as etapas precedentes da
modelo cascata. É preciso entender que as mudanças ocorrem devido à
descoberta dos erros no software ou uma exigência do cliente referente á
adição de funcionalidade e desempenho.

É o mais antigo dentro da engenharia de software, a modelo cascata também é


o meio utilizado. Porem há muitas críticas primeiramente está relacionado ao
fato de que o fluxo sequencial proposto tem baixa aplicabilidade quando se
trata de projetos reais.

Outro aspecto se refere ao cliente ter certa dificuldade em declarar suas


exigências de maneira explícita. O modelo cascata não consegue absorver o
grau de incerteza presente no início dos projetos. Dessa forma surge o conflito
entre o que o cliente deseja e o que o modelo pode oferecer.

Mesmo com esses problemas o modelo cascata ocupa uma posição de suma
importância dento da área de engenharia de software, já que consegue
estabelecer um determinado padrão em que podem ser inseridas as etapas
que vão desde os métodos para análise até a manutenção.

Modelo evolucionário

Deparamo-nos quase diariamente com produtos e serviços que passam por


mudanças evolutivas com o tempo. Todo sistema que apresentam certo nível
de complexidade, o software também evoluiu à medida que os anos passam.

Os requisitos observados em negócios ou produtos estão propensos a se


alterar constantemente, à medida que o desenvolvimento avança. Dessa forma
o produto final entregue passa por etapas extremamente complexas, nas quais
os prazos são reduzidos por exigência do mercado.

Sendo inviável, dentro de um cenário como este, apresentar um produto de


software abrangente. Sendo assim, é possível criar uma versão reduzida do
software como forma alternativa para lidar com as pressões existentes em um
negócio ou enfrentar a competitividade.

E nesse cenário, onde os

Requisitos básicos de um produto ou sistema são bem definidos, mas que os


detalhes referentes a extensões do produto ou sistema necessitam de ajustes,
que os modelos evolucionários podem ser inseridos.
Prototipação

Hipótese

Um determinado cliente conseguiu estabelecer uma série de objetivos gerais


para o software que deseja adquirir, entretanto, não foi possível definir, de
maneira detalhada quais requisitos de entrada, processamento e saída. Por
outro lado, pode haver na cabeça do desenvolvedor uma dúvida sobre o grau
de eficiência do algoritmo a ser usado ou como o sistema operacional
consegue se adaptar. Dessa forma recomenda-se o uso de uma abordagem de
prototipação à engenharia de software.

Segundo definição de Pressman, prototipação é um processo que capacita o


desenvolvedor a criar um modelo de software que será implementado.
Basicamente, este modelo está disposto de três formas:

 Um protótipo, que estará disposto em um modelo referenciado em PC


ou em papel, e irá apresentar a interação homem-máquina de maneira
que permita ao usuário entender como ocorrerá a interação
 O protótipo de trabalho deve conseguir implementar subconjuntos da
função solicitada do software requerido.
 A observação de um programa que já existe utilizado para executar total
ou parcialmente a função solicitada, porém, possui atributos que serão
ajustados à medida que o desenvolvimento do software se amplia.
Verificando a imagem, é possível tecer algumas considerações. De
imediato, verifica-se que a prototipação começa com a coleta e o
refinamento de requisito.
Posteriormente, ocorre o chamado “projeto rápido”, que tem como
objetivo representar as características de softwares que estarão
facilmente visíveis ao usuário, ou seja, aquilo que se refere às
abordagens de entrada e formatos de saída.
Tal projeto possibilita a elaboração de um protótipo que será analisado
pelo cliente e utilizado para o filtro de requisitos que possibilitarão a
criação do software, em sua etapa final.
Partindo de um ponto de vista considerado ideal, podemos afirmar que
um protótipo funciona como método para reconhecer atributos de
software, ou seja, caso venha a ser elaborado um protótipo de trabalho,
é possível que o desenvolvedor utilize partes de programas já
construídos ou aplique técnicas que viabilizem, de maneira rápida, os
programas de trabalho.
O protótipo serve como espécie de primeiro sistema. Também pode
apresentar inúmeros problemas. Quando um cliente, acredita ter
visualizado uma determinada versão de trabalho do software, mas não
sabe que na ânsia de colocar o produto em funcionamento foi
desconsiderado, pelos desenvolvedores, aspectos como qualidade e
manutenção.
Pg61

Você também pode gostar