Engenharia de Software
O Processo de Software
Prof. Michel Pires da Silva
O processo de software
Surgimento
Utilizada desde 1980
O início de sua existência foi um passo
importante para a melhoria da qualidade do software.
Proposto uma nova forma de gerencia de
projetos por meio de atividades e processos.
O processo de software
Informalmente
O processo de software pode ser compreendido como sendo o conjunto de todas as atividades necessárias para transformar os requisitos do cliente em software.
Obs: sua função não é somente criar algo novo
mas também manter produtos já existente.
O processo de software
Compreendendo o processo
O processo de software
Os processos existentes podem ser definidos para atividades tais como:
Desenvolvimento
Manutenção
Aquisição
Contratação
Fase de teste
O processo de software
Os passos de um processo – atividades – podem ser comparados com uma rede de informações.
Finalidade: identificar cada atividade existente
Passo 1
Passo 2
Passo 4
O processo de software
Para que o processo de software funcione adequadamente, faz-se
necessário a utilização de um ciclo de vida.
O ciclo de vida é responsável por criar
uma ordem lógica para as atividades
O processo de software
Modelo primário “codifica-remenda”
Ciclo de vida muito utilizado por empresas que não prezam um mínimo de qualidade no software.
Empresas que não pensam em produzir
softwares em grande escala.
O processo de software
Modelo codifica-remenda
Especificação (???)
Desenvolvimento
“Produto”
O processo de software
Modelo cascata
Modelo de fácil implantação
Apresentação de uma correta execução de
sub-processos. Esses são executados em uma
estrita seqüência, o que permite demarcar
pontos de controle ao decorrer do projeto.
O processo de software
Modelo Cascata
R equis itos
A nális e
D es enho
Im plem entaç ão
T es tes
Im plantaç ão
O processo de software
Problemas do modelo cascata
Dificuldade em acomodar mudanças depois que o processo está para ser executado
Partição inflexível do cliente em estágios distintos
Dificuldade em responder a mudanças dos requisitos
É mais apropriado quando os requisitos e
produto são bem compreendidos
O processo de software
Modelos evolucionários
Desenvolvimento exploratório
O objetivo é interagir com o cliente e obter um sistema a partir de uma especificação inicial. Deve-se começar com requisitos bem compreendidos e de fácil
execução.
Prototipação descartável
O objetivo é compreender os requisitos a partir do
desenvolvimento de protótipos. Deve-se começar com requisitos mal compreendidos.
O processo de software
Processo executado nos modelos evolucionários
Descrição Versões
Intermediárias Versão
inicial
Atividades concorrentes
Versão Especificação
Desenvolvimento
Validação
O processo de software
Problemas
Falta de visibilidade do processo
Os sistemas são mal estruturados
Conhecimentos especializados (e.g. em
linguagens para prototipação rápida) pode ser preciso – RoR por exemplo
Aplicabilidade
Sistemas interativos de pequeno e médio porte
Partes de sistemas de larga escala (e.g.
interface do usuário)
Sistemas com tempo de vida curto
O processo de software
Modelos formais
Baseado em transformações sucessivas de uma especificação matemática em um programa
executável
As transformações preservam a corretitude,
portanto é possível mostrar que o programa está de acordo com a sua especificação inicial.
Está incorporado na abordagem ‘Cleanroom’ de
desenvolvimento de software
O processo de software
Modelos formais
Especificação
formal Programa
executável
R1 R2 R3
P1 P2 P3 P4
Transformações formais
Provas de corretitude de transformação
T1 T2 T3 T4
O processo de software
Problemas
Necessidade de conhecimentos específicos e treino para aplicar a técnica
Dificuldade para formalmente especificar alguns aspectos, tais como, a interface do usuário
Aplicabilidade
Sistemas críticos onde aspectos de segurança
são cruciais
O processo de software
Modelos orientados a reutilização
Baseado na reutilização sistemática onde o software é construído a partir de componentes existentes
Estágios do processo
Análise de componentes
Modificação de requisitos
Desenho do sistema com reutilização
desenvolvimento e integração
Esta abordagem tem grande potencial, mas,
falta ainda mais experiência para o seu uso
O processo de software
Modelos baseados em reutilização
Especificação de requisitos
Modificação de requisitos
Desenhar sistema
c/ reutilização Desenvolvimento Integração Validação do
sistema Análise de
componentes
O processo de software
Os modelos clássicos em engenharia não possuem um grande atrativo que é deixar que o cliente participe da fase de construção de seu produto, por exemplo:
Como consultor de idéias
Como usuário de teste por meio de
protótipos.
O processo de software
Modelos denominados Incrementais
Ao contrário de entregar o sistema de uma só vez, o desenvolvimento e a entrega é realizada a partir de incrementos onde cada incremento corresponde a uma das funcionalidades do sistema
É definida uma prioridade entre os requisitos, e os requisitos de prioridade mais alta são
incluídos nos incrementos iniciais
Uma vez que o desenvolvimento de um
incremento é iniciado, seus requisitos são
O processo de software
Modelos baseados em prototipação
Possibilita que o desenvolvedor crie um modelo do software a ser construído.
Ideal para identificar os requisitos de software.
Protótipo em papel ou sistema que retrata a interação com o usuário.
Protótipo que implemente algumas funções exigidas.
O processo de software
O processo de software
Modelo em espiral:
processo é representado como uma espiral em vez de sequência de atividades
Cada volta da espiral representa uma fase do processo
Não há fases fixas como especificação e desenho - as voltas na espiral são determinadas pelo que é requerido
Riscos são explicitamente avaliados e resolvidos no
processo
Planejar fases seguintes
Determinar objetivo, alternativas e
restrições
Avaliar alternativas, identificar e resolver
os riscos
Desenvolver e verificar o próximo Custo Acumulado
Progresso entre as fases
O processo de software
Vantagens do modelo espiral
O cliente não tem que esperar até que todo o sistema seja concluído
Incrementos iniciais agem como um protótipo que ajuda a analisar os requisitos de
incrementos posteriores
Menor risco de fracasso geral do projeto
Os serviços de prioridade mais alta são
testados exaustivamente
O processo de software
Técnicas de quarta geração (4GT)
Abrangem um amplo conjunto de ferramentas
Seu objetivo é prover uma interface de trabalho ao desenvolvedor.
A ferramenta então gera automaticamente, o código-fonte, tendo como base o que o
desenvolvedor especificou.
O processo de software
Sua utilização permite uma diminuição no ciclo de vida do software.
Coleta de requisitos
Estratégia de projeto
Implementaçã o usando
4GT
Teste
4GT
EX.: IBM RUP
O processo de software
Para transformar a implementação feita pela 4GT em produto, basta:
Realizar testes cuidadosos
Desenvolver uma documentação significativa
Executar todas as demais atividade de
“transcrição” que também são exigidas.
O processo de software
Desvantagens
As ferramentas não são mais fáceis de se usar do que as linguagens de programação.
O código fonte gerado por tais ferramentas não é muito eficiente.
A complexidade de sua utilização aumenta
conforme o sistema cresce.
O processo de software
Qual o melhor modelo para se utilizar no desenvolvimento de software?
Os Modelos evolucionários são bons para produtos novos ou já conhecidos?
Quando utilizar o modelo em cascata e
por que?
O processo de software
Para pensar
Sempre busque soluções adequadas ao problema
Faça a Engenharia de Software trabalhar a seu
favor, pense como utiliza-la, duvide da teoria e leve- a eficientemente para a prática.
Acabei o meu banho.
MM...
rápido.Foi