Arquivo da categoria: ENGENHARIA DE SOFTWARE

05

Modelos de Ciclo de Vida

Modelos de Ciclo de Vida

>“São uma representação abstrata e simplificada do processo de desenvolvimento software, apresentada a partir de uma perspectiva específica”

>Tipicamente contêm:

◦“Esqueleto do processo”
◦Ordem de precedência das atividades
◦Principais artefatos e produtos gerados

Principais Modelos

>Cascata ou Clássico
>Prototipagem
>Métodos formais
>Espiral
>Incremental

Modelo em Cascata

>Modelo “Clássico”, teve origem na indústria de manufatura e construção
>Sua estrutura é composta por várias etapas que são executadas de forma sistemática e seqüencial
>Na falta de uma abordagem estruturada, foi a primeira tentativa de formalizar uma metodologia de desenvolvimento de software

Modelo em Cascata (Pressman)

Modelo em Cascata (Sommerville) 

>Minimiza o planejamento, organiza as atividades em uma sequência com entregas bem definidas
>Funciona bem para requisitos estáveis e bem compreendidos
◦O modelo pressupõe que os requisitos ficarão estáveis ao longo do projeto
>É facilmente aplicável em equipes inexperientes
 Porém, atrasa a redução de riscos!

O Modelo em Cascata atrasa a resolução dos riscos

Fases do Ciclo de Vida

>Planejamento
◦Esboçar escopo e requisitos
◦Fazer estimativas razoáveis sobre recursos, custos e prazos

>Análise e Especificação de Requisitos
◦Refinar requisitos e escopo
◦Entender o domínio do problema, com comportamento e funcionalidades esperados

>Projeto
>Incorporar requisitos tecnológicos aos requisitos essenciais do sistema
>Projetar a arquitetura do sistema

>Implementação
>Traduzir o projeto em uma forma passível de execução pela máquina
>Codificação

>Testes
◦Realizar diversos níveis de teste, de forma a fazer a verificação do software.

>Implantação, Operação e Manutenção
◦Colocar o software em produção
◦Treinar pessoas
◦Manter o software
◦Gerenciar os serviços

 

images

Engenharia de Software

Engenharia de Software: o que é?

>Disciplina de engenharia preocupada com todos os aspectos sobre a produção de software, incluindo:

>Processos                                                                                                                                                                                                                                                                                                                                                                                                    

.Racionalizam o desenvolvimento de Software.

>Métodos

.Conhecimento técnico; “Como” fazer

>Ferramentas

.Suporte automatizado para processos e métodos.

Desenvolver software não é só programar!

Objetivos:

>Obter software de qualidade.
>Com produtividade no seu desenvolvimento, operação e manutenção.
>Dentro de custos, prazos e níveis de qualidade controlados.
>Com o melhor custo-benefício entre Qualidade e Produtividade.

Engenharia de Software versus Engenharia de Sistemas

>Engenharia de Sistemas é algo maior: preocupa-se com todos os aspectos de sistemas baseados em computador.

.Software
.Hardware
.Processos
.Pessoas e outros sistemas, etc.

>Engenharia de Software é apenas parte deste processo

Histórico

>Década de 60: a chamada “Crise do Software”

.Desenvolvimento fora de controle.
.Iniciou como um problema de Custo e Produtividade.
.Mais importante: era um problema de Qualidade.

>Década de 70

. Programação Estruturada
. Projeto Estruturado

 

Antigamente…

 

 

>Década de 80

.Análise Estruturada (DFDs, Dicionário de Dados, Diagrama ER, de Estados, etc.).
.Ferramentas CASE

>Década de 90

.Análise e Projeto OO.
.Java
.UML
.Processo Unificado

>Anos 2000

.Metodologias Ágeis
.Novos paradigmas: SOA, Aspectos, Model-Driven Architecture, etc.
.Cloud Computing

Terminologia

Software

>Programa de computador e documentação associada.
>Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral.
>Novos softwares podem ser criados desenvolvendo-se novos programas ou reusando softwares existentes.

Processo

>Uma série conectada de ações, com a intenção de satisfazer um objetivo.
>Define quem está fazendo o quê, quando e como para atingir um certo objetivo.

Processo de Software

>Um conjunto estruturado de atividades para desenvolver um sistema de software.

◦Especificação
◦Projeto
◦Validação
◦Evolução