capítulo 2 - processos de softwaresebastiao/ensino/ubi/2017-2018/es/teoricas/ch2 sw... ·...

58
Capítulo 2 - Processos de Software Capítulo 2 Processos Software 1 2017/2018

Upload: phamdang

Post on 18-Dec-2018

214 views

Category:

Documents


0 download

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