capítulo 2 - processos de softwaresebastiao/ensino/ubi/2017-2018/es/teoricas... · design de...
TRANSCRIPT
Capítulo 2 - Processos de Software
Capítulo 2 Processos Software 12017/2018
Assuntos abordados
Modelos de processo de software
Atividades no processo de software
Mudança no processo de software
Melhoria de processos
Capítulo 2 Processos Software 22017/2018
O processo de software
Um conjunto estruturado de atividades necessárias para
desenvolver um sistema de software.
Independente do processo de software, todos envolvem:
Especificação - definir o que o sistema deve fazer;
Conceção e implementação - define a organização do sistema e
implementação do sistema;
Validação - verificar se ele faz o que o cliente quer;
Evolução - mudança do sistema em resposta às necessidades
dos clientes.
Um modelo de processo de software é uma representação abstrata
de um processo. Ele apresenta uma descrição de um processo
numa perspetiva particular.
Capítulo 2 Processos Software 32017/2018
Descrições do processo de software
Quando se descreve e discute processos, abordam-se
geralmente as atividades desses processos, tais como
especificar um modelo de dados, projetar uma interface
de utilizador, etc., e a ordenação dessas atividades.
Descrições de processos também podem incluir:
Os produtos, que são os resultados de uma atividade do
processo;
Regras, que refletem as responsabilidades das pessoas
envolvidas no processo;
Pré e pós condições de uma atividade do processo que foi
aprovada ou um produto produzido.
Capítulo 2 Processos Software 42017/2018
Processos orientados por plano e processos
ágeis
Processos orientados por plano são processos em que
todas as atividades do processo são planeadas com
antecedência e o progresso é medido comparado com o
planeado.
Em processos ágeis, o planeamento é incremental e é
mais fácil de mudar o processo para refletir as
mudanças dos requisitos dos clientes.
Na prática, os processos incluem ambas as abordagens,
plano e ágeis.
Não existem processos de software certos ou errados.
Capítulo 2 Processos Software 52017/2018
Modelos de processo de software
Capítulo 2 Processos Software 62017/2018
Modelos de processo de software
O modelo em cascata
Modelo orientado por plano, as fases separadas e distintas de
especificação e desenvolvimento.
Desenvolvimento incremental
Especificação, desenvolvimento e validação são intercalados.
Pode ser ágil ou orientada por plano.
Integração e configuração
O sistema é montado a partir de componentes
configuráveis existentes. Pode ser ágil ou orientada por plano.
Na prática, a maioria dos grandes sistemas são
desenvolvidos usando um processo que incorpora
elementos de todos estes modelos.Capítulo 2 Processos Software 72017/2018
O modelo em cascata
Capítulo 2 Processos Software 82017/2018
As fases do modelo em cascata
Há fases separadas no modelo em cascata:
Definição e análise de requisitos
Design de sistema e do software
Implementação e teste
Integração e teste do sistema
Operação e manutenção
A principal desvantagem do modelo em cascata é a
dificuldade de implementar uma mudança depois de o
processo estar em curso. Em princípio, uma fase tem de
estar completa antes de passar para a próxima fase.
Capítulo 2 Processos Software 92017/2018
Problemas do modelo em cascata
Particionamento inflexível do projeto em estágios
distintos, torna difícil para responder às novas
exigências dos clientes.
Portanto, este modelo é apropriado somente quando os
requisitos são bem compreendidos e as mudanças forem
bastante limitadas durante o processo de design.
Poucos sistemas têm requisitos estáveis.
O modelo cascata é o mais usado em projetos de
engenharia de sistemas grandes onde um sistema é
desenvolvido em várias localidades.
Nestas circunstâncias, o processo orientado por plano no
modelo em cascata ajuda a coordenar o trabalho.
Capítulo 2 Processos Software 102017/2018
Desenvolvimento incremental
Capítulo 2 Processos Software 112017/2018
Denefícios do desenvolvimento incremental
O custo de implementar novas exigências dos clientes é
reduzido.
A quantidade de análise e documentação que tem de ser refeito
é muito menos do que é necessário com o modelo em cascata.
É mais fácil de obter feedback dos clientes sobre o
trabalho de desenvolvimento que tem sido feito.
Os clientes podem comentar sobre demonstrações do software
e ver o quanto foi implementado.
É possível uma entrega e implantação do software útil
para o cliente mais rápido.
Os clientes são capazes de usar e obter valor a partir do
software mais cedo, do que é possível com um processo em
cascata.Capítulo 2 Processos Software 122017/2018
Problemas no desenvolvimento incremental
O processo não é visível.
Os gestores de projeto precisam de entregas regulares para
medir o progresso. Se os sistemas são desenvolvidos de forma
rápida, não existe custo-efetivo para produzir documentos que
refletem todas as versões do sistema.
A estrutura do sistema tende a degradar-se quando são
adicionados novos incrementos.
Em menos tempo, dinheiro é gasto em refatoração para
melhorar o software, mudanças regulares tendem a corromper a
estrutura. Incorporando novas mudanças de software torna-se
cada vez mais difícil e caro.
Capítulo 2 Processos Software 132017/2018
Integração e configuração
Baseado no reuso de software onde os sistemas são
integrados a partir de componentes existentes ou outros
sistemas.
Elementos reutilizados podem ser configurados para
adaptar o seu comportamento e funcionalidade aos
requisitos do utilizador.
Reutilização é agora a abordagem padrão para a
construção de muitos tipos de sistema de negócios.
Capítulo 2 Processos Software 142017/2018
Tipos de software reutilizáveis
Sistemas de aplicação standalone que são configurados
para uso em um ambiente particular.
Objetos que são desenvolvidas como um pacote para
serem integradom com um framework de componentes
tais como .NET ou J2EE.
Serviços web que são desenvolvidos de acordo com
padrões de serviço e que estão disponíveis para
invocação remota.
Capítulo 2 Processos Software 152017/2018
Engenharia de software orientada à reutilização
Capítulo 2 Processos Software 162017/2018
Etapas chave do processo
Especificação de requisitos
Exploração e avaliação de software
Refinamento dos requisitos
Configuração do sistema
Adaptação e integração dos componentes
Capítulo 2 Processos Software 172017/2018
Vantagens e desvantagens
Redução de custos e riscos, pois menos software é
construído a partir do zero
Entrega e implantação do sistema mais rápido
Mas os compromissos com requisitos são inevitáveis
para que o sistema não atenda às necessidades reais
dos utilizadores
Perda de controle sobre a evolução dos elementos
reutilizados do sistema
Capítulo 2 Processos Software 182017/2018
Atividades no processo
Capítulo 2 Processos Software 192017/2018
Atividades no processo
Os processos de software são sequências intercaladas
de atividades técnicas, colaborativas e gerenciais com o
objetivo geral de especificar, projetar, implementar e
testar um sistema de software.
As quatro atividades no processos são: especificação, o
desenvolvimento, a validação e a evolução, são
organizadas de modo diferente em processos de
desenvolvimento diferentes.
No modelo em cascata, as atividades estão organizadas
em sequência, ao passo que no modelo incremental
estão intercaladas.
Capítulo 2 Processos Software 202017/2018
O processo de engenharia de requisitos
Capítulo 2 Processos Software 212017/2018
Especificação de software
O processo para definir quais os serviços necessários e
identificar as restrições de utilização e desenvolvimento
do sistema.
Processo de engenharia de requisitos
Levantamento e análise de requisitos
• O que os stakeholders do sistema exigem ou esperam do sistema
Especificação de requisitos
• A definição dos requisitos em detalhes
A validação de requisitos
• Verificar a validade dos requisitos
Capítulo 2 Processos Software 222017/2018
Conceção e implementação de software
Processo de conversão da especificação do sistema
num sistema executável.
Design de software
Projetar uma estrutura de software que atenda à especificação;
Implementação
Transformar essa estrutura em um programa executável;
As atividades de projeto e implementação são
fortemente relacionadas e podem ser intercaladas.
Capítulo 2 Processos Software 232017/2018
Um modelo geral do processo de design
Capítulo 2 Processos Software 242017/2018
Atividades no projeto
Arquitetura do sistema, onde se identifica a estrutura
geral do sistema, os principais componentes
(subsistemas ou módulos), os seus relacionamentos e
como eles são distribuídos.
Design da base de dados, onde se projeta as estruturas
de dados do sistema e como estes vão ser
representadas numa de dados.
Design de interface, onde se define as interfaces entre
os componentes do sistema.
Seleção de componentes e design, onde se procura
componentes reutilizáveis.
Capítulo 2 Processos Software 252017/2018
Implementação do sistema
O software é implementado, quer através do
desenvolvimento de um programa ou programas ou
configurando um sistema de aplicação.
Conceção e implementação são atividades intercaladas
para a maioria dos tipos de sistema de software.
A programação é uma atividade individual com nenhum
processo padrão.
Depuração é a atividade de encontrar falhas no
programa e corrigir estas falhas.
Capítulo 2 Processos Software 262017/2018
Validação do software
Verificação e a validação tem a intenção de mostrar que
o sistema está conformidade com a sua especificação e
cumpre os requisitos do cliente.
Envolve processos de verificação, revisão e teste do
sistema.
Testes envolvem a execução do sistema com casos de
teste que são derivados da especificação dos dados
reais a serem processados pelo sistema.
O teste é a actividade de verificação e validação mais
utilizada.
Capítulo 2 Processos Software 272017/2018
Fases de testes
Capítulo 2 Processos Software 282017/2018
Fase de testes
Testes de componentes
Os componentes individuais são testados de forma
independente;
Os componentes podem ser funções ou objetos, ou grupos
coerentes dessas entidades.
Teste do sistema
Teste de sistema como um todo. O teste das propriedades
emergentes é particularmente importante.
Testes pelos clientes
Teste com dados do cliente para verificar se o sistema atende as
necessidades do cliente.
Capítulo 2 Processos Software 292017/2018
Testando fases num processo de software-
driven plano (V-modelo)
Capítulo 2 Processos Software 302017/2018
Evolução do software
O software é inerentemente flexível e pode mudar.
Os requisitos mudam durante as mudanças de
circunstâncias do negócio, o software que suporta o
negócio também deve evoluir e mudar.
Embora tenha havido uma demarcação entre
desenvolvimento e evolução (manutenção) esta é cada
vez mais irrelevante como menos sistemas são
completamente novos.
Capítulo 2 Processos Software 312017/2018
Evolução do sistema
Capítulo 2 Processos Software 322017/2018
Mudança
Capítulo 2 Processos Software 332017/2018
Mudança
A mudança é inevitável em todos os grandes projetos de
software.
Mudanças nos negócios levam a requisitos novos e
modificações no sistema
As novas tecnologias abrem novas possibilidades para melhorar
implementações
Mudança de plataformas exigem mudanças no aplicativo
A mudança leva a reformular de modo que os custos de
mudança incluem o retrabalho - novo trabalho (por
exemplo, reanalisar requisitos), bem como os custos de
implementação de novas funcionalidades
Capítulo 2 Processos Software 342017/2018
Reduzir os custos de retrabalho
Antecipar a mudança, onde o processo de software inclui
atividades que podem antecipar possíveis alterações antes
do retrabalho ser necessário.
Por exemplo, um protótipo de sistema pode ser desenvolvido para
mostrar algumas das principais características do sistema para os
clientes.
Tolerância à mudança, onde o processo foi concebido de
modo que as mudanças possam ser implementadas a custo
relativamente baixo.
Isso normalmente envolve alguma forma de desenvolvimento
incremental. As alterações propostas podem ser implementadas em
incrementos que ainda não foram desenvolvidos. Se isso for
impossível, então apenas um único incremento (uma pequena
parte do sistema) pode ter ser alterado para incorporar a mudança.
Capítulo 2 Processos Software 352017/2018
Mudanças de requisitos
Prototipagem do sistema, onde uma versão do sistema
ou parte do sistema é desenvolvido rapidamente para
verificar os requisitos do cliente e a viabilidade das
decisões de design.
Entrega incremental, onde incrementos de sistema são
entregues ao cliente para comentários e
experimentação.
Capítulo 2 Processos Software 362017/2018
Prototipagem
Um protótipo é uma versão inicial de um sistema,
utilizado para demonstrar conceitos e experimentar
opções de design.
Um protótipo pode ser usado em:
O processo de engenharia de requisitos para ajudar com
levantamento de requisitos e validação;
Em processos de design para explorar opções e desenvolver
um design da interface;
No processo de teste para executar testes.
Capítulo 2 Processos Software 372017/2018
Benefícios da prototipagem
Melhora a usabilidade do sistema.
A correspondência mais próxima às necessidades reais
dos utilizadores.
Melhoria da qualidade do design.
Melhoria da manutenção.
Reduzir o esforço de desenvolvimento.
Capítulo 2 Processos Software 382017/2018
O processo de desenvolvimento de protótipos
Capítulo 2 Processos Software 392017/2018
Desenvolvimento de protótipos
Podem basear-se em linguagens ou ferramentas de
prototipagem rápida
Podem desenvolver-se deixando de fora funcionalidade
Protótipo deve se concentrar em áreas do produto que não são
bem compreendidos;
Verificação e recuperação de erros não podem ser incluídos no
protótipo;
Protótipo deve-se concentrar em requisitos funcionais, em vez
de não-funcionais, tais como confiabilidade e segurança
Capítulo 2 Processos Software 402017/2018
Lançamento de protótipos
Os protótipos devem ser descartados após o
desenvolvimento, eles não são uma boa base para um
sistema de produção:
Pode ser impossível ajustar o sistema para atender aos
requisitos não-funcionais;
Os protótipos normalmente não são documentados;
A estrutura do protótipo é normalmente degradada através da
mudança rápida dos requisitos;
O protótipo provavelmente não vai atender aos padrões normais
de qualidade da organização.
Capítulo 2 Processos Software 412017/2018
Entrega incremental
Em vez de uma única entrega, o desenvolvimento e
fornecimento é dividido em incrementos com cada
incremento a fornecer parte da funcionalidade requerida.
Requisitos de utilização são priorizados e os requisitos
de prioridade mais alta são incluídos nos incrementos
iniciais.
Uma vez que o desenvolvimento de um incremento é
iniciado, os requisitos são congelados embora requisitos
para incrementos posteriores possam continuar a
evoluir.
Capítulo 2 Processos Software 422017/2018
Desenvolvimento e entrega incremental
Desenvolvimento incremental
Desenvolver o sistema em incrementos e avaliar cada
incremento antes de prosseguir para o desenvolvimento do
próximo incremento;
Abordagem normalmente utilizada em métodos ágeis;
Avaliação feita pelo utilizador / cliente.
Entrega incremental
Implantar um incremento para uso pelos utilizadores finais;
Avaliação mais realista sobre o uso prático de software;
Difícil de implementar para sistemas de substituição, porque os
incrementos têm menos funcionalidades do que o sistema que
está a ser substituído.
Capítulo 2 Processos Software 432017/2018
Entrega incremental
Capítulo 2 Processos Software 442017/2018
Vantagens da entrega incremental
O cliente pode usar a funcionalidade do sistema que é
disponibilizada mais cedo.
O incremento inicial age como um protótipo para auxiliar
o levantamento dos requisitos para incrementos
posteriores.
Menor risco de falha geral do projeto.
Os serviços de sistema de mais alta prioridade tendem a
receber mais testes.
Capítulo 2 Processos Software 452017/2018
Problemas na entrega incremental
A maioria dos sistemas exigem um conjunto de serviços
básicos que são usados por diferentes partes do
sistema.
Como os requisitos não são definidos em detalhes até um
incremento ser implementado, ele pode ser difícil de identificar
instalações comuns que são necessárias a todos os
incrementos.
A essência do processo iterativo é que a especificação é
desenvolvida em conjunto com o software.
No entanto, este conflito com o modelo de contratos de muitas
organizações, onde a especificação completa do sistema é parte
do contrato de desenvolvimento do sistema.
Capítulo 2 Processos Software 462017/2018
Melhoria de processos
Capítulo 2 Processos Software 472017/2018
Melhoria de processos
Muitas empresas de software têm se voltado para a
melhoria do processo de software como uma maneira de
melhorar a qualidade do seu software, reduzir custos ou
acelerar os seus processos de desenvolvimento.
Melhoria de processos significa a compreensão de
processos existentes e alterar esses processos para
aumentar a qualidade do produto e / ou reduzir custos e
tempo de desenvolvimento.
Capítulo 2 Processos Software 482017/2018
Abordagens para a melhoria
A abordagem maturidade do processo, concentra-se em
melhorar processos de gestão de projetos e introduzir
boas práticas em engenharia de software.
O nível de maturidade do processo reflete o grau em que as
boas práticas técnicas e de gestão foram adotadas nos
processos de desenvolvimento de software da organização.
A abordagem ágil, concentra-se no desenvolvimento
iterativo e na redução das despesas gerais do processo
de software.
As características primárias dos métodos ágeis são entrega
rápida de funcionalidades e capacidade de resposta às
mudanças dos requisitos de cliente.
Capítulo 2 Processos Software 492017/2018
O ciclo de melhoria de processos
Capítulo 2 Processos Software 502017/2018
Atividades de melhoria de processo
Processo de medição
Medir um ou mais atributos do processo de software ou produto.
Estas medições formam uma base que ajuda a decidir se as
melhorias de processos têm sido eficazes.
Processo análise
o processo atual é avaliado e os pontos fracos do processo são
identificados. Modelos de processos (às vezes chamado de
mapas de processo) descrevem o processo que pode ser
desenvolvido.
Processo mudança
Processo mudança, são propostas para abordar algumas das
fragilidades identificadas. Estes são introduzidas e o ciclo
recomeça para recolher dados sobre a eficácia das mudanças.
Capítulo 2 Processos Software 512017/2018
Processo de medição
Sempre que possível, devem ser recolhidos os dados
quantitativos
No entanto, quando as organizações não têm padrões de
processos claramente definidos isso é muito difícil, pois não se
sabe o que medir. Um processo deve ter que ser definido antes
de qualquer medição.
Processo de medição deve ser utilizado para
avaliar melhorias
Mas isso não significa que as medições devem conduzir as
melhorias.
Capítulo 2 Processos Software 522017/2018
Métricas
Tempo necessário para as atividades serem concluídas
Por exemplo, tempo de calendário ou esforço para concluir uma
atividade ou processo.
Recursos necessários para processos ou atividades
Por exemplo, o esforço total em pessoas-dia.
Número de ocorrências de um determinado evento
Por exemplo, número de defeitos descobertos.
Capítulo 2 Processos Software 532017/2018
Níveis de maturidade da capacidade
Capítulo 2 Processos Software 542017/2018
O modelo de maturidade
Inicial
essencialmente descontrolada
Repetivel
procedimentos de gestão de produto definido e usados
Definição
procedimentos e estratégias de gestão de processos definidos
e usados
Gestão
estratégias de gestão de qualidade definidos e usados
Otimização
estratégias de melhoria de processos definidos e usados
Capítulo 2 Processos Software 552017/2018
Pontos chave
Processos de software são atividades envolvidas na
produção de um sistema de software. Modelos de
processo de software são representações abstratas
destes processos.
Modelos de processo descrevem a organização de
processos de software.
Exemplos desses modelos gerais incluem o modelo de
'cascata', desenvolvimento incremental, e desenvolvimento
orientados para reutilização.
Engenharia de requisites é o processo de
desenvolvimento de uma especificação de software.
Capítulo 2 Processos Software 562017/2018
Pontos chave
Processos de Design e implementação estão preocupados com a
transformação de uma especificação de requisitos para um sistema
de software executável.
Validação de software é o processo de verificação de que o sistema
está de acordo com a sua especificação e que atende às
necessidades reais dos utilizadores do sistema.
Evolução do software ocorre quando mudar os sistemas de
software existentes para atender às novas exigências. O software
deve evoluir para permanecer útil.
Os processos devem incluir atividades tal como prototipagem e
entrega incremental para lidar com a mudança.
Capítulo 2 Processos Software 572017/2018
Pontos chave
Os processos podem ser estruturados para entrega e
desenvolvimento iterativo para que as alterações possam ser feitas
sem interromper o sistema como um todo.
As principais abordagens para processar melhorias são
abordagens ágeis, voltadas para a redução de custos de processos
e abordagens baseadas numa melhor gestão de processos e o uso
de boas práticas de engenharia de software.
A estrutura de maturidade identifica níveis de maturidade que
correspondem essencialmente ao uso de boas práticas de
engenharia de software.
Capítulo 2 Processos Software 582017/2018