Capítulo 2 - Processos de Software Capítulo 2 Processos Software 1
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 2
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 3
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 4
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 5
Modelos de processo de software Capítulo 2 Processos Software 6
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 7
O modelo em cascata Capítulo 2 Processos Software 8
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 9
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 10
Desenvolvimento incremental Capítulo 2 Processos Software 11
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 12
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 13
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 14
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 15
Engenharia de software orientada à reutilização Capítulo 2 Processos Software 16
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 17
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 18
Atividades no processo Capítulo 2 Processos Software 19
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 20
O processo de engenharia de requisitos Capítulo 2 Processos Software 21
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 22
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 23
Um modelo geral do processo de design Capítulo 2 Processos Software 24
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 25
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 26
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 27
Fases de testes Capítulo 2 Processos Software 28
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 29
Testando fases num processo de softwaredriven plano (V-modelo) Capítulo 2 Processos Software 30
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 31
Evolução do sistema Capítulo 2 Processos Software 32
Mudança Capítulo 2 Processos Software 33
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 34
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 35
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 36
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 37
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 38
O processo de desenvolvimento de protótipos Capítulo 2 Processos Software 39
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 40
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 41
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 42
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 43
Entrega incremental Capítulo 2 Processos Software 44
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 45
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 46
Melhoria de processos Capítulo 2 Processos Software 47
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 48
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 49
O ciclo de melhoria de processos Capítulo 2 Processos Software 50
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 51
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 52
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 53
Níveis de maturidade da capacidade Capítulo 2 Processos Software 54
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 55
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 56
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 57
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 58