Por que Desenvolvemos Sistemas?
- Necessidade do negócio
- Adaptação de sistema legado
- Extensão de funcionalidades de aplicação existente
- Criação de novo produto, serviço ou sistema
MODELOS PRESCRITIVOS DE PROCESSOS DE SOFTWARE
O modelo em cascata é um modelo de desenvolvimento de software seqüencial no qual o desenvolvimento é visto como
um fluir constante para frente (como uma cascata) através das fases de análise de requisitos, projeto, implementação,
testes (validação), integração, e manutenção de software. A origem do termo cascata é freqüentemente citado como
sendo umartigo publicado em 1970 por W. W. Royce.
Modelo em Cascata (Waterfall)
# Modelos Prescritivos de Desenvolvimento de Software
Modelo sequencial, com fluxo constante através das fases:
- Elicitação e levantamento de requisitos
- Projeto
- Construção (implementação/codificação)
- Integração
- Teste e depuração
- Instalação
- Manutenção
Desvantagens: Acúmulo de problemas de integração tardia, dificuldade em lidar com mudanças.
Freqüentemente, ele resulta em um acúmulo de integração tardia na implementação, quando, pela primeira vez, o produto é criado e o teste começa. Aparecem os problemas que permaneceram ocultos por todo o processo de Análise, Design e Implementação, e o projeto é paralisado enquanto começa um longo ciclo de correção de erros

Modelo Iterativo e Incremental
O Desenvolvimento Iterativo e Incremental é um processo de desenvolvimento de software criado em resposta às
fraquezas do modelo em cascata, o mais tradicional. Os dois padrões mais conhecidos de sistemas iterativos de desenvolvimento são o RUP (Processo Unificado da Rational) e o Desenvolvimento ágil de software. Por isso o desenvolvimento iterativo e incremental é também uma parte essencial da Programação Extrema e outros
Criado em resposta às fraquezas do modelo cascata. Desenvolvimento em iterações, com adição incremental de funcionalidades a cada iteração. Exemplos: RUP, desenvolvimento ágil.
Uma maneira mais flexível (e menos arriscada) de continuar é percorrer várias vezes as diversas disciplinas de desenvolvimento, construindo um melhor entendimento dos requisitos, planejando uma arquitetura robusta, elevando a organização do desenvolvimento e, por fim, liberando uma série de implementações que são gradualmente mais completas.
Esse procedimento chama-se ciclo de vida iterativo. A cada passagem, a seqüência de disciplinas do processo chama-se iteração.

A idéia básica por trás da abordagem iterativa é desenvolver um sistema de software incremental, permitindo ao desenvolvedor tirar vantagem daquilo que foi aprendido durante a fase inicial de desenvolvimento de uma versão do sistema. O aprendizado ocorre simultaneamente tanto para o desenvolvedor, quanto para o usuário do sistema. Os passos fundamentais do processo estão em iniciar o desenvolvimento comumsubconjunto simples de Requisitos de Software e iterativamente alcançar evoluções subseqüentes das versões até o sistema todo estar implementado. A cada iteração, as modificações de projeto são feitas e
novas funcionalidades são adicionadas.


Prototipagem
O cliente, define um conjunto de objetivos gerais do software, mas não identifica detalhadamente requisitos de entrada,processo e saída, em outros casos os engenheiros estão inseguros quanto ao algorítimo, as funcionalidades e a interação, nestes casos o paradigma da prototipagem oferece uma melhor abordagem. Esta técnica é mais comumente utilizada dentro de um contexto de
qualquer modelo de processo, auxiliando o engenheiro de software e o cliente a entenderem melhor o que deve ser construído quando os requisitos estão confusos
Técnica usada para melhor entendimento de requisitos confusos. Cria um protótipo funcional, que pode ser descartado parcialmente na versão final.
Desvantagens: O cliente pode confundir o protótipo com a versão final; o desenvolvedor pode fazer concessões na implementação para agilizar o processo.
MODELOS PRESCRITIVOS DE PROCESSOS DE SOFTWARE
Aprototipagem pode ser problemática pelas seguintes razões:
-
O cliente vê o que parece ser a versão executável do software, ignorando que o protótipo apenas consiga funcionar precariamente(“ele é mantido com gomademascar e arame”)
-
O desenvolvedor normalmente faz concessões na implementação (gambiarras-POG) afim de obter rapidamente um protótipo executável. O protótipo deve ser descartado, pelo menos em parte, e o software deverá ser desenvolvido submetido à engenharia com o foco na qualidade.
Modelo em Espiral
Combina a natureza iterativa da prototipagem com os aspectos controlados do modelo cascata. O software é desenvolvido em versões evolucionárias, com avaliação de riscos a cada iteração. O ciclo de vida clássico (comunicação, planejamento, modelagem, construção e implantação) é executado a cada evolução.

Vantagens: Estimativas e cronogramas mais realistas; maior versatilidade para lidar com mudanças.
Desvantagens: Pode ser difícil convencer o cliente, especialmente em contratos fechados; utilizado com mais frequência em grandes projetos.
Modelo RAD (Rapid Application Development)
Modelo incremental que enfatiza um ciclo de desenvolvimento rápido. Características:
- Ciclo de desenvolvimento rápido
- Construção baseada em requisitos bem compreendidos
- Utilização de componentes de software existentes
- Equipes trabalhando em paralelo
- Aplicação de geração automática de código
Fases:
- Modelagem do negócio
- Modelagem de dados
- Modelagem dos processos