Régis Simão 1/46
Processos de Software
Processos de Software
Processos de Software
Agenda
Introdução
Modelos de processos de software Iteração de processo
Especificação de software
Projeto e implementação de software Validação de software
Evolução de software
Apoio automatizado ao processo Bibliografia
Régis Simão 3/46
Processos de Software
Introdução
Objetivos
Introduzir modelos de processos de software
Descrever alguns de modelos de processos e quando eles devem ser
usados
Descrever modelos de processos para engenharia de requisitos,
desenvolvimento de software, teste e evolução
Introduzir a tecnologia CASE para suportar as atividades de processos de
Processos de Software
Introdução
Um conjunto estruturado de atividades necessárias ao desenvolvimento de um produto de software
Especificação Projeto
Validação Evolução
Um modelo de processo de software é uma representação abstrata de um processo. Ele apresenta uma descrição de um processo sob alguma
perspectiva particular
Modelos de processos de software são chamados também de ciclo de vida de processos
Régis Simão 5/46
Processos de Software
Modelos de Processos de Software
Modelos Genéricos
Modelo em “cascata” (Waterfall)
Fases distintas e separadas para especificação e desenvolvimento
Desenvolvimento evolucionário
Especificação e desenvolvimento intercalados
Desenvolvimento orientado a reuso ou Engenharia baseada em
Componentes
O sistema é montado a partir de componentes existentes
Desenvolvimento formal de sistemas
Um modelo matemático do sistema é formalmente transformado em uma
Processos de Software
Modelos de Processos de Software – Modelo em cascata
Definição de Requisitos Projeto de Software Implementação e teste de unidade Integração e teste de sistema Operação e Manutenção
Régis Simão 7/46
Processos de Software
Modelos de Processos de Software – Modelo em cascata
Fases
Análise e definição de requisitos Projeto de Software de Sistemas Implementação e testes de unidade Integração e testes de sistema
Operação e manutenção
A desvantagem do modelo em cascata é a dificuldade de acomodar
mudanças após o processo está adiantado
Processos de Software
Modelos de Processos de Software – Modelo em cascata
Problemas
Divisão inflexível do projeto em estágio distintos
Dificuldade de respostas às mudanças de requisitos dos clientes
Assim, este modelo é somente apropriado quando os requisitos são bem
Régis Simão 9/46
Processos de Software
Modelos de Processos de Software – Desenvolvimento evolucionário
Tipos
Desenvolvimento exploratório
O objetivo é trabalhar com os cliente, a fim de explorar seus requisitos e
entregar um sistema final. Deveria ser iniciado com requisitos bem entendidos
Fazer protótipos descartáveis
O objetivo é entender os requisitos do sistema. Deveria ser iniciado com
Processos de Software
Modelos de Processos de Software – Desenvolvimento evolucionário
Versões intermediárias Versões intermediárias Descrição do esboço Especificação Desenvolvimento Validação Versão inicial Versões intermediárias Versão final
Régis Simão 11/46
Processos de Software
Modelos de Processos de Software – Desenvolvimento evolucionário
Problemas
Falta de visibilidade do processo, o progresso é medido através da
geração de produtos regulares
Sistemas são freqüentemente mal estruturados
Habilidades especiais (por exemplo: linguagens para prototipagem
rápida) podem ser necessárias
Aplicabilidade
Para sistemas interativos de tamanhos pequenos e médios
Processos de Software
Modelos de Processos de Software – Desenvolvimento orientado a
reuso
Baseado em reuso sistemático, onde sistemas são integrados a partir de componentes existentes na empresa ou COTS (commercial-off-the-shelf). Estágios do processo:
Análise de componentes Modificação de requisitos Projeto do sistema com reuso Desenvolvimento e integração
Esta técnica está ganhado mais ênfase, mas ainda existem poucas experiências com ela
Régis Simão 13/46
Processos de Software
Modelos de Processos de Software – Desenvolvimento orientado a
reuso
Especificação de requisitos Análise dos componentes Modificação de requisitos Projeto do sistema com reuso Desenvolvimento e integração Validação do sistemaProcessos de Software
Modelos de Processos de Software – Desenvolvimento orientado a
reuso
Vantagens
Reduz a quantidade de software a ser desenvolvimento, reduzindo o
custo e os riscos
Leva a uma entrega mais rápida do software
Desvantagens
Preconiza a existência de uma biblioteca de componentes
Conflitos entre os requisitos do cliente e os componentes disponíveis Gestão mais complexa na evolução dos componentes e da aplicação
Régis Simão 15/46
Processos de Software
Modelos de Processos de Software – Desenvolvimento formal de
sistemas
Baseado na transformação de uma especificação matemática formal em diferentes representações até um programa executável
Transformações formais preservam a corretude, pois cada transformação é como uma prova formal, que mostra que o programa está em
conformidade com a especificação
Exemplo: Abordagem Cleanroom da IBM, 1987. Desenvolve-se e prova-se matematicamente, não há testes
Processos de Software
Modelos de Processos de Software – Desenvolvimento formal de
sistemas
Definição de Requisitos Especificação formal Transformação formal Integração e testes de sistema Desenvolvimento formal de sistemasEspecificação formal Programa executável R1 R2 R3 P1 P2 P3 P4 Transformações formais TN: Transformação formal RN: Representação matemática
PN: Provas de corretude das transformações
Régis Simão 17/46
Processos de Software
Modelos de Processos de Software – Desenvolvimento formal de
sistemas
Problemas
Necessidade de conhecimento e treinamento especializado para aplicar a
técnica
Dificuldade de formalmente especificar alguns aspectos do sistema, tais
como interface do usuário
Aplicabilidade
Sistemas críticos, especialmente aquele que requerem segurança e
Processos de Software
Iteração de processo
Os requisitos do sistema SEMPRE evoluem durante o projeto, assim a iteração do processo, onde os estágio iniciais são retrabalhados, é sempre parte do processo de grandes sistemas
Iteração pode ser aplicado a qualquer um dos modelos genéricos Existem duas técnicas relacionadas:
Desenvolvimento incremental Desenvolvimento em espiral
Régis Simão 19/46
Processos de Software
Iteração de processo – Desenvolvimento incremental
No lugar de entregar o sistema como uma única entrega, o
desenvolvimento e a entrega são divididos em incrementos, onde cada incremento entrega parte das funcionalidades solicitadas
Requisitos dos usuários são priorizados e os requisitos de prioridades mais altos são incluídos nos incrementos iniciais
Um vez que o desenvolvimento de um incremento é iniciado, os requisitos são congelados, embora os requisitos continuem a evoluir nos
Processos de Software
Iteração de processo – Desenvolvimento incremental
Definir esboço dos requisitos Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento do sistema Validar
incremento Integrar incremento
Validar sistema
Sistema incompleto
Sistema final
Régis Simão 21/46
Processos de Software
Iteração de processo – Desenvolvimento incremental
Vantagens
Funcionalidades que acrescentam maiores valores para o usuário são
entregues mais cedo, a cada incremento
Os incrementos iniciais agem como protótipos que ajudam a elicitar
requisitos para os incrementos seguintes
Os serviços de prioridades mais altas tendem a receber mais testes
Extreme Programming (XP)
Uma nova técnica para construir software baseado no desenvolvimento e
na entrega de incrementos muito pequenos de funcionalidade
Apoia-se no aumento constante de código, no envolvimento do usuário
Processos de Software
Iteração de processo – Desenvolvimento em espiral
O processo é representado como uma espiral, ao invés de uma seqüência de atividades com algum retorno de uma atividade para outra
Cada volta na espiral representa uma fase no processo
Não há fases fixas, como especificação ou projeto, as atividades na espiral são escolhidas dependendo do que é necessário
Régis Simão 23/46
Processos de Software
Iteração de processo – Desenvolvimento em espiral
R is k a n a ly s is R i s k a n a l y s i s R is k a n a ly s is R i s k a n a ly s i s P ro t o -t y p e 1 P ro t o t y p e 2 P ro t o t y p e 3 O p e r a -ti o n a l p r o t oy p e C o n c e p t o f O p e r a ti o n S im u l a t i o n s , m o d e ls , b e n c h m a r k s S /W re q u i r e m e n t s R e q u i r e m e n t v a li d a ti o n D e s i g n V & V P ro d u c t d e s i g n D e ta i l e d d e s i g n C o d e U n i t t e s t I n t e g r a t i o n t e s t A c c e p ta n c e te s t S e rv i c e D e v e lo p , v e r i f y n e x t -l e v e l p ro d u c t E v a lu a te a lt e rn a t iv e s id e n t if y , r e s o l v e r is k s D e te r m in e o b j e c t iv e s a lte r n a t iv e s a n d c o n s tr a in t s P la n n e x t p h a s e I n te g r a ti o n a n d t e s t p la n D e v e l o p m e n t p l a n R e q u i r e m e n t s p l a n L i fe - c y c le p l a n R E V I E W
Processos de Software
Iteração de processo – Desenvolvimento em espiral
Cada laço da espiral é dividido em quatro setores:
Definição de Objetivos
São identificados os objetivos específicos de cada fase
Avaliação e redução dos riscos
Riscos são avaliados e as atividades são selecionadas para reduzir ou
eliminar os riscos mais altos
Desenvolvimento e validação
Um modelo de desenvolvimento é escolhido, podendo ser qualquer um dos
modelos genéricos
Planejamento
Régis Simão 25/46
Processos de Software
Especificação de Software
É o processo de estabelecer o que serviços são necessários e as restrições de desenvolvimento e operação de sistemas
Processo de engenharia de sistemas:
Estudo da viabilidade
Elicitação e análise de requisitos Especificação de requisitos
Processos de Software
Especificação de Software – Processo de engenharia de requisitos
Estudo de viabilidade Levantamento e análise de requisitos Especificação de requisitos Validação de requisitos Relatório de viabilidade Modelo de sistemas Requisitos do usuário e do sistema Documentação de requisitos
Régis Simão 27/46
Processos de Software
Projeto e Implementação de Software
É o processo de converter a especificação do sistema em um sistema executável
Projeto de software
Projetar uma estrutura de software que atenda as especificações
Implementação
Traduzir a estrutura em um programa executável
As atividades de projeto e implementação estão muito relacionadas e podem ser intercaladas
Processos de Software
Projeto e Implementação de Software – Processo de projeto
Projeto de arquitetura Especificação de requisitos Especificação abstrata Arquitetura de sistema Especificação de Software Especificação de interface Especificação de componentes Especificação de estruturas de dados Especificação de algoritmos Projeto de interface Projeto de componentes Projeto de estruturas de dados Projeto de algoritmos
Régis Simão 29/46
Processos de Software
Projeto e Implementação de Software – Métodos de projeto
Técnica sistemática para o desenvolvimento do projeto de software O projeto é geralmente documentado como um conjunto de modelos
gráficos
Possíveis modelos:
Modelo de fluxo de dados
Modelo de relacionamento de entidades ou modelo de
entidade-relacionamento (MER)
Modelo estrutural
Processos de Software
Projeto e Implementação de Software – Programação e depuração
São as técnicas de traduzir um projeto em programa e remover erros do programa
Programar é uma atividade pessoal, não existe um processo de programação geral
Os programadores realizam algum testes de programas para descobrir falhas no programa e remover estas falhas no processo de depuração
Régis Simão 31/46
Processos de Software
Projeto e Implementação de Software – Processo de depuração
Localizar erro
Projetar
solução do erro Reparar erro
Refazer testes do programa
Processos de Software
Validação de Software
Verificação e validação destinam-se a mostrar que um sistema está de acordo com suas especificações e que ele atende as expectativas do cliente
Envolve checar e rever os processos e testar o sistema
Testar sistema envolve executar o sistema com casos de testes que são derivados da especificação do dados reais a serem processados pelo sistema
Régis Simão 33/46
Processos de Software
Validação de Software – Processo de teste
Teste de unidade Teste de módulo Teste de subsistema Teste de sistema Teste de aceitação
Processos de Software
Validação de Software – Estágios de Teste
Teste de unidade
Componentes individuais são testados
Teste de módulo
Coleções relacionadas de componentes são testadas
Teste de subsistema
Módulos são integrados em subsistemas e testados. O foco deve ser o
teste de interface
Teste de sistema
Testar o sistema como um todo. Testar as propriedades emergentes
Teste de aceitação
Régis Simão 35/46
Processos de Software
Validação de Software – Fases de teste no processo de software
Especificação de requisitos Especificação de sistema Projeto de sistema Projeto detalhado Teste de aceitação Teste de integração de sistema Teste de integração de subsistema Operação Teste de integração de subsistema Plano de teste de aceitação Plano de teste de integração de sistema Plano de teste de integração de subsistema
Processos de Software
Evolução de Software
Software é inerentemente flexível e pode ser alterado
A medida que os requisitos mudam devido a circunstâncias de negócio, o software que suporta o negócio deve também evoluir e mudar
Embora tenha existido uma demarcação entre desenvolvimento e evolução, é altamente irrelevante a medida que menos sistemas são completamente novos
Régis Simão 37/46
Processos de Software
Evolução de Software
Definir requisitos do sistema Avaliar sistemas existentes Propor mudanças de sistema Modificar sistemas Sistemas existentes Novo sistemaProcessos de Software
Apoio Automatizado ao Processo
Engenharia de software auxiliada por computador (CASE) é o nome dado ao software utilizado para apoiar as atividades de processo de software: desenvolvimento e evolução
Atividades automatizadas:
Editor gráfico para desenvolvimento de modelos de sistemas Dicionário de dados para gerenciar entidades do projeto
Construtor de interfaces gráficas (interfaces de usuário) Depuradores para apoiar a busca de falhas no sistema
Régis Simão 39/46
Processos de Software
Apoio Automatizado ao Processo – Tecnologia CASE
A tecnologia CASE tem permitido uma melhoria significante no processo de software, mas não na ordem de magnitude que foi previsto
Construir software requer criatividade, isto não pode ser automatizado Construir software é uma atividade de time e, em grandes projetos, muito
tempo é gasto em iterações das pessoas. Tecnologia CASE não suportam bem estas comunicações
Processos de Software
Apoio Automatizado ao Processo – Classificação CASE
Classificação ajuda a entender os diferentes tipos de ferramentas CASE e os seus suportes às atividades do processo
Perspectiva funcional
Ferramentas são classificadas de acordo com sua função específica
Perspectiva de processo
Ferramentas são classificadas de acordo com a atividade que elas
apóiam
Perspectiva de integração
Ferramentas são classificadas de acordo com a maneira como são
organizadas em unidades integradas, que fornecem apoio a uma ou mais atividades de processo
Régis Simão 41/46
Processos de Software
Apoio Automatizado ao Processo – Classificação Funcional de
Ferramentas CASE
Processos de Software
Apoio Automatizado ao Processo – Classificação Ferramentas CASE
com base em Atividades
Régis Simão 43/46
Processos de Software
Apoio Automatizado ao Processo – Integração CASE
Ferramentas
Suportam tarefas individuais do processo, tais como checagem de
consistência do projeto, edição de texto, etc
Workbenches
Suportam uma fase do processo, tais como especificação ou projeto.
Normalmente, incluem um número de ferramentas integradas
Ambientes
Suportam todas as atividades ou uma substancial parte de todo o
processo de software. Normalmente incluem vários workbenches integrados
Processos de Software
Apoio Automatizado ao Processo – Ferramentas, Workbenches e
Ambientes
Régis Simão 45/46
Processos de Software
Bibliografia
Sommerville, Ian. Engenharia de Software, 8a. edição. Addison Wesley, 2007