Você está na página 1de 49

Engenharia de Software

Aula 02
Ciclo de Vida de um Produto de Software Processos de Software Modelos de Ciclo de Vida

Jos Humberto Cruvinel


Contato: jhcruvinel@jhcruvinel.com Site: www.jhcruvinel.com

Comprar ou Desenvolver? (Make or Buy)

Comprar

Quando se encontra um produto que atende aos requisitos desejados, uma boa soluo. Nesse caso, no h processo de desenvolvimento, mas existiro atividades de:
Aquisio Implantao Adaptao Integrao com outros sistemas

Dependendo dos casos, esse conjunto de processos pode ser mais sofisticado e caro Caso se utilize Software Livre, o custo pode ser reduzido, mas tome cuidado com as customizaes
Slide 2

Engenharia de Software - Jos Humberto Cruvinel

Comprar ou Desenvolver? (Make or Buy)

Desenvolver

O desenvolvimento melhor quando:


O produto de mercado no atendem boa parte dos requisitos O produto de mercado no est estvel 1qs fornecedores no possuem o custo de um produto pronto muito alto

Se no for este o caso e precisar desenvolver internamente ou externamente (fbricas de software), preciso gerenciar o desenvolvimento interno ou acompanhar o desenvolvimento externo. Entretanto assume-se os riscos envolvidos no desenvolvimento de software.

Engenharia de Software - Jos Humberto Cruvinel

Slide 3

Comprar ou Desenvolver? (Make or Buy)

Vamos assumir que devemos desenvolver ou contratar o desenvolvimento de um sistema.

O que necessrio para garantir o desenvolvimento no prazo, custo, qualidade e escopo desejados?

Engenharia de Software - Jos Humberto Cruvinel

Slide 4

Ciclos de vida de um produto

A Engenharia de Software se preocupa com o software como produto. Cliente

Pessoa fsica ou jurdica que contrata a execuo de um projeto, u um seu representante autorizado, com poder de aceitao de propostas e produtos. Pessoa que efetivamente usar um produto. Pode ser: cliente, funcionrio, departamento de marketing...

Usurio

Engenharia de Software - Jos Humberto Cruvinel

Slide 5

Ciclos de vida de um produto de Software

Ciclo de vida de um Software


concebido, a partir de uma necessidade especificado construdo, tornando-se um conjunto de itens Entra em operao, sujeito a um processo de negcio Sofre manutenes e acrscimos retirado de operao, ao final de sua vida til

Engenharia de Software - Jos Humberto Cruvinel

Slide 6

Ciclos de vida de um produto de Software

Engenharia de Software - Jos Humberto Cruvinel

Slide 7

Ciclos de vida de um produto de Software

Exemplo 1: Sistema de Inscrio para Evento


Ms 01: Concepo Ms 02-03: Elaborao Ms 04-05: Construo Ms 06: Transio Ms 07: Realizao do Evento Ms 08: Retirada do sistema (fim do ciclo de vida)

Engenharia de Software - Jos Humberto Cruvinel

Slide 8

Ciclos de vida de um produto de Software

Exemplo 2: Sistema de Pagamento


Ms 01-03: Concepo Ms 04-09: Elaborao Ms 10-15: Construo Ms 16: Transio (verso 1.0) Ms 17: Operao Assistida (verso 1.0) Ms 19: Pacote de correes (verso 1.1) Ms 27: Pacote de correes (verso 1.2) Ms 36: Novo mdulo (verso 2.0) Ms 56: Novo Mdulo (verso 3.0) Ms 78: Retirada do sistema (fim do ciclo de vida)
Slide 9

Engenharia de Software - Jos Humberto Cruvinel

Processo

Conjunto de passos parcialmente ordenados, constitudos por atividades, mtodos, prticas e transformaes, usados para atingir uma meta [Paula Filho, 2002]. Conjunto de atividades executadas para transformar um conjunto de requisitos de cliente em um sistema [Scott, 2003]. Os processos so o elo entre os mtodos e as ferramentas, definindo a ordem em que eles sero usados [Pressman, 2002]
Slide 10

Engenharia de Software - Jos Humberto Cruvinel

Para que serve um processo?

Descrever quem est fazendo o que, como e quando. Prover uma diretriz para a organizao e sequncia das atividades da equipe. Especificar quais artefatos devem ser desenvolvidos e em quais momentos. Direcionar as tarefas de desenvolvedores individuais e de toda a equipe. Oferecer critrios para monitorar e medir os produtos e atividades do projeto.

Engenharia de Software - Jos Humberto Cruvinel

Slide 11

Camadas da Engenharia de Software

Engenharia de Software - Jos Humberto Cruvinel

Slide 12

Camadas da Engenharia de Software

O processo o adesivo que mantm unidas as camadas, definindo uma estrutura para um conjunto de reas chave. Quando o processo envolve a elaborao de um produto de software, pode ser referido como ciclo de vida do software, descrevendo a vida do produto desde a sua concepo at a implementao, entrega, utilizao e manuteno. Alguns autores destacam a sutileza entre processo e modelo de processo...
Slide 13

Engenharia de Software - Jos Humberto Cruvinel

Caractersticas dos processos

Prescrevem as suas principais atividades. Utilizam recursos, est sujeito a um conjunto de restries (como um cronograma) e gera produtos intermedirios e finais. Podem ser compostos de subprocessos de algum modo relacionados. Pode ser definido em uma hierarquia de processos. Cada atividade de um processo tem critrios de entrada e sada, de modo a definir o incio e fim do processo. Podem ser aplicados controles a atividades, recursos ou produtos de um processo.
Slide 14

Engenharia de Software - Jos Humberto Cruvinel

Modelo de processo de software

Estabelece uma estrutura genrica para as principais atividades, entradas, sadas e restries de um projeto. O processo especfico escolhido com base na natureza do projeto, dos mtodos e ferramentas a ser utilizadas e nos controles e produtos requeridos. Ciclo de desenvolvimento genrico:

Descrio da situao atual; Definio do problema; Desenvolvimento tcnico; Integrao da soluo.


Slide 15

Engenharia de Software - Jos Humberto Cruvinel

Modelo de processo de software

Modelo de processo de Software (Modelo de Ciclo de Vida):

Codifica-remenda Cascata Sashimi Prototipagem Evolutiva Entrega por Estgios Entrega Evolutiva (Evolucionrio) Espiral Iterativo e Incremental Desenvolvimento orientado por componentes Desenvolvimento orientado por servios Desenvolvimento orientado por processos de negcio (BPM) Dirigido por Ferramenta (CASE)
Slide 16

Engenharia de Software - Jos Humberto Cruvinel

Codifica-Remenda (Catico)

Engenharia de Software - Jos Humberto Cruvinel

Slide 17

Codifica-Remenda (Catico)

Partindo apenas de uma especificao (ou nem isso), os desenvolvedores comeam imediatamente a codificar, remendando medida que os erros vo sendo descobertos provavelmente o mais utilizado, pois no exige sofisticao tcnica ou gerencial. Facilidade. Desvantagens:

no utiliza um processo definido modelo de alto risco no permite assumir compromissos confiveis
Slide 18

Engenharia de Software - Jos Humberto Cruvinel

Cascata

Engenharia de Software - Jos Humberto Cruvinel

Slide 19

Cascata

Definido por Royce em 1970

Fortemente documental Fases bem definidas e bem delimitadas Interao reduzida Validao e verificao apenas no final do processo

O modelo cascata determina que cada estgio deve estar concludo antes do prximo estgio comear Vantagens:

permite a criao de pontos de controle melhora a gesto do projeto e a confiabilidade

Engenharia de Software - Jos Humberto Cruvinel

Slide 20

Cascata

Desvantagens:

Projetos reais raramente seguem o fluxo sequencial. Modificaes podem gerar confuso. Exige que o cliente estabelea previa e explicitamente os requisitos. Baixa visibilidade para o cliente. Uma verso executvel do programa s estar disponvel ao final do projeto. Processo rgido e burocrtico (nem todos os detalhes de um projeto podem ser previstos para a fase de projeto) Os riscos aumentam no final do projeto, uma vez que a correo de erros nesta etapa muito grande Em grandes projetos, cada fase pode levar muito tempo
Slide 21

Engenharia de Software - Jos Humberto Cruvinel

Sashimi

Engenharia de Software - Jos Humberto Cruvinel

Slide 22

Sashimi

Variante do modelo Cascata que permite superposio entre fases e a realimentao de correes. Vantagens:

existncia de pontos de controle processo mais flexvel, permitindo sobreposio diminuio dos riscos no final do projeto dificuldade em gerenciar projetos baseados nesse modelo baixa visibilidade para o cliente

Desvantagens:

Engenharia de Software - Jos Humberto Cruvinel

Slide 23

Prototipagem Evolutiva

Engenharia de Software - Jos Humberto Cruvinel

Slide 24

Prototipagem Evolutiva

Engenharia de Software - Jos Humberto Cruvinel

Slide 25

Prototipagem Evolutiva

Variante do modelo em Espiral, onde a espiral utilizada para gerar uma srie de verses (prottipos) ao invs do produto completo Vantagens:

permite que os requisitos sejam definidos progressivamente apresenta alta flexibilidade e visibilidade para os clientes diminuio dos riscos
O desenvolvedor faz concesses na implementao a fim de conseguir rapidamente um prottipo executvel o desenho deve ser de excelente qualidade, para que a estrutura do produto no se degenere ao longo dos prottipos
Slide 26

Desvantagens:

Engenharia de Software - Jos Humberto Cruvinel

Entrega por Estgios

Engenharia de Software - Jos Humberto Cruvinel

Slide 27

Entrega por Estgios

Variante do modelo de Cascata. Realiza a entrega de liberaes parciais do produto ao cliente Vantagens:

aumenta a visibilidade do projeto mesmas do modelo em Cascata o desenho deve ser de excelente qualidade, com mdulos bem especificados para realizao das liberaes

Desvantagens:

Engenharia de Software - Jos Humberto Cruvinel

Slide 28

Entrega Evolutiva (Evolucionrio)

Engenharia de Software - Jos Humberto Cruvinel

Slide 29

Entrega Evolutiva (Evolucionrio)

uma combinao dos modelos de Cascata e Prototipagem Evolutiva. Permite que, em pontos bem definidos, os usurios possam avaliar partes do produto e fornecer feedback quanto s decises tomadas Vantagens:

minimizao dos riscos apresenta alta flexibilidade e visibilidade para os clientes facilita o acompanhamento do progresso de cada projeto tanto por gerentes quanto pelo cliente

Desvantagens:

deve produzir uma arquitetura de produto robusta que se mantenha ntegra ao longo dos ciclos de liberaes parciais
Slide 30

Engenharia de Software - Jos Humberto Cruvinel

Espiral

um modelo iterativo Cada loop na espiral representa uma fase do processo de software. O loop mais interno pode estar relacionado viabilidade do sistema; o prximo loop, definio de requisitos; o prximo loop, ao projeto do sistema, e assim por diante. O foco est na eliminao dos riscos Cada loop na espiral est dividido em quatro setores:

Planejamento (definio de objetivos, alternativas e restries) Avaliao e reduo de riscos Engenharia, desenvolvimento e validao Avaliao e plano da prxima fase

Exige competncia gerencial inclusive para avaliar riscos O produto desenvolvido em uma srie de iteraes. A equipe pode trabalhar em todo o ciclo de vida.
Slide 31

Engenharia de Software - Jos Humberto Cruvinel

Engenharia de Software - Jos Humberto Cruvinel

Slide 32

Espiral

Vantagens:

Liberaes de verses mais frequentes (maior visibilidade para o cliente) Feedback maior do cliente, detectando os problemas mais rpido Atividades de manuteno so usadas para identificar problemas e definir os requisitos das prximas liberaes Riscos diminuem consideravelmente A escala e complexidade do trabalho podem ser descobertas mais cedo Mudanas de tecnologia podem ser incorporadas mais cedo Maior controle do projeto Requer gesto sofisticada para ser sempre visvel e confivel
Slide 33

Desvantagens:

Engenharia de Software - Jos Humberto Cruvinel

Iterativo e Incremental

Os clientes no precisam esperar at a entrega do sistema inteiro para se beneficiar dele. Podem usar os incrementos iniciais e ganhar experincia, fornecer feedback. Utiliza a regra de Pareto: os servios de prioridade mais alta so entregues primeiro, e os incrementos posteriores so integrados a eles. Pode ser do tipo time boxed (dirigido por prazo), ou seja, o produto aquilo que se consegue fazer dentro de determinado prazo (2 a 4 semanas - Sprint).
Slide 34

Engenharia de Software - Jos Humberto Cruvinel

Iterativo Incremental (time-boxed, dirigido por prazo)

Engenharia de Software - Jos Humberto Cruvinel

Slide 35

Iterativo e Incremental

Engenharia de Software - Jos Humberto Cruvinel

Slide 36

Iterativo e Incremental

Engenharia de Software - Jos Humberto Cruvinel

Slide 37

Iterativo e Incremental

Vantagens:

Liberaes de verses mais frequentes (maior visibilidade para o cliente) Feedback maior do cliente, detectando os problemas mais rpido Riscos diminuem consideravelmente A escala e complexidade do trabalho podem ser descobertas mais cedo Mudanas de tecnologia podem ser incorporadas mais cedo Entrega-se valor e obtm feedback mais rpido o produto das iteraes apenas um resultado parcial, mais iteraes sero necessrias para concluir o produto Maior refatorao e retrabalho (arquitetura emergente)
Slide 38

Desvantagens:

Engenharia de Software - Jos Humberto Cruvinel

Desenvolvimento orientado por componentes


Esta abordagem baseia-se na existncia de um nmero significativo de componentes reusveis. O processo de desenvolvimento do sistema enfoca a integrao desses componentes, e vez de desenvolv-lo a partir do zero. Outro modelo de ciclo de vida pode ser utilizado em conjunto nesta abordagem

Engenharia de Software - Jos Humberto Cruvinel

Slide 39

Desenvolvimento orientado por servios

Essencialmente, as arquiteturas orientadas a servios (SOA Service-Oriented Architectures) so um caminho para o desenvolvimento de sistemas distribudos nos quais os componentes desses sistemas so servios dedicados. Esta abordagem utiliza tcnicas de descoberta, criao, reutilizao e gesto de servios (Governana de Servios). Entretanto, nem tudo um servio (exige avaliao criteriosa) Outro modelo de ciclo de vida pode ser utilizado em conjunto nesta abordagem
Slide 40

Engenharia de Software - Jos Humberto Cruvinel

Desenvolvimento orientado por processos de negcio (BPM)

O desenvolvimento orientado por processos de negcio procura estreitar o lao entre a rea de negcio e TI, utilizando uma linguagem de notao entendia por ambas as partes (BPMN) Esta abordagem utiliza tcnicas de mapeamento de processos (AS-IS e TO-BE), simulao de processos, alm da utilizao de servios e formulrios relacionados ao processo. Exige menos interveno da rea de TI, pois as ferramentas atuais so mais acessveis (BPMS) Normalmente se utiliza uma metodologia prpria para o desenvolvimento
Slide 41

Engenharia de Software - Jos Humberto Cruvinel

Dirigido por Ferramenta (CASE)


Implementados seguindo uma metodologia de uma ferramenta ou framework de desenvolvimento. Vantagens:

desenvolvimento altamente padronizado devido imposio de padres de projeto, produtos tem maior qualidade facilidade de gerncia do processo

Desvantagens:

algumas ferramentas impem processos rgidos dependncia do fornecedor da ferramenta qualidade do produto depende da qualidade da ferramenta
Slide 42

Engenharia de Software - Jos Humberto Cruvinel

Maturidade dos processos

A maturidade de uma organizao em engenharia de software mede seu grau de competncia tcnica e gerencial, para produzir software de boa qualidade, dentro do prazo e custos razoveis e previsveis. Para tornar uma organizao mais madura e capacitada, preciso melhorar a qualidade de seus processos. Um modelo de capacitao um paradigma de melhoria que serve de referncia para avaliar a maturidade dos processos de uma organizao. Ex: CMMI e MPS.BR
Slide 43

Engenharia de Software - Jos Humberto Cruvinel

Sintomas de imaturidade

Os projetos no so definidos com clareza e atividades de desenvolvimento so disfaradas de manuteno. As pessoas no recebem o treinamento necessrio ou escolhem arbitrariamente. As ferramentas no ajudam realmente a resolver os problemas. Os procedimentos e padres, quando existem, so definidos e seguidos de forma burocrtica.

Engenharia de Software - Jos Humberto Cruvinel

Slide 44

Condies para melhoria dos processos

O processo atual deve ser conhecido. O processo deve ter forte apoio da alta administrao da organizao. Os gerentes dos projetos devem ter participao ativa no processo. Todos os que usaro o processo devem ser envolvidos. Investimentos significativos devem ser feitos. O processo deve ter estgios intermedirios bem definidos, em que so localizados os pontos de controle.
Slide 45

Engenharia de Software - Jos Humberto Cruvinel

Prticas favorveis

Engenharia de Software - Jos Humberto Cruvinel

Formao de grupos cuja atividade-fim a melhoria dos processos. Formao de estruturas organizacionais adequadas e estveis para criao, evoluo e suporte de processos. Desenvolvimento de recursos de apoio a processos (padres, modelos, exemplos, documentos de referncia, base de dados, etc.). Realizao de programas de treinamento, orientao. Estabelecimento de medies do grau de progresso. Estabelecimento de mecanismos de controle e verificao.
Slide 46

Gerncia de Processo de Software


Presidncia

Conselho

Diretoria de Gesto

Diretoria de Desenvolvimento de Software

Diretoria de Infra-Estrutura

...

Superitendncia

Superintendncia

Gerncia de Processo

Equipe 01

Equipe 03

Equipe 02

Equipe 04

Engenharia de Software - Jos Humberto Cruvinel

Slide 47

Modelo IDEAL

Modelo de programa de melhoria proposto pelo SEI em 1996. estruturado em cinco fases:

Initiating (iniciao - lanar bases para o programa): Motivao, patrocnio e infra-estrutura. Diagnosing (diagnstico - determinar onde se est e aonde se quer chegar): Aferio e recomendaes. Estabilishing (estabelecimento - planejar detalhes): Priorizao, abordagem e planejamento. Acting (aes - realizar planos): Criao da soluo, testespiloto, refinamento e implantao completa. Leveraging (aprendizado - aprender com a experincia): Anlise, validao e proposies de aes futuras.
Slide 48

Engenharia de Software - Jos Humberto Cruvinel

Aula 02
Dvidas?

Você também pode gostar