capitulo 4 - processos de software

Upload: phelipegyn

Post on 06-Jul-2015

484 views

Category:

Documents


0 download

TRANSCRIPT

SOFTWARE PROCESSESIan Sommerville, 8 edio Captulo 4Aula de Luiz Eduardo Guarino de Vasconcelos

ObjetivosIntroduzir modelos de processo de software Descrever uma variedade de modelos de processo e quando eles podem ser usados Descrever esboos de modelos de processo para engenharia de requisitos, desenvolvimento de software, teste e evoluo Apresentar a tecnologia CASE para dar suporte s atividades de processo de software

Topics coveredSoftware process models Process iteration Process activities The Rational Unified Process Computer-aided software engineering

Windows Vista5000 desenvolvedores (sem incluir pessoal no tcnico); 50 milhes de linhas de cdigo; 16 milhes de linhas de cdigo somente nos ltimos 3 anos; Verses compilveis todos os dias; Testes de regresso; Intervalo de 3 dias para uma mudana submetida aparecer no executvel;

Windows Vista~1.7 pessoas testando para cada programador; Precisa ter compatibilidade com verses anteriores; Precisa ser instalado em milhares de configuraes diferentes; Imaginem os riscos!!!

Windows VistaComo organizar as atividades tal que 5000 pessoas possam trabalhar juntas ao mesmo tempo?Processo de software; Ferramentas de Gerncia de Configurao;

Como testar tanto cdigo? E ainda para tantas plataformas diferentes? Como projetar um sistema com 50 milhes de linhas de cdigo? Como garantir a integridade deste projeto?Arquitetura / Modular / Projeto de software;

O processo de softwareUm conjunto estruturado de atividades requeridas para desenvolver um sistema de softwareEspecificao Projeto Validao Evoluo

Um modelo de processo de software uma representao abstrata de um processo. Apresenta uma descrio de um processo de alguma perspectiva particular

Viso geral de um Processo

Modelos genricos de processo de softwareO modelo cascataSepara e distingue fases de especificao e desenvolvimento

Desenvolvimento evolucionrioEspecificao e desenvolvimento so entrelaados

Desenvolvimento baseado na reutilizaoO sistema montado a partir de componentes existentes

Existem n variantes destes modelos!

Classificao das metodologiasPesadas ou grande, burocrtica, densa ou de cerimniaUsada em organizaes que exigem comunicao formal Onde projetos so longos, complexos e requisitos devem ser bem definidos Projetos crticos que envolvam risco de vida Projetos que suportam, normalmente, acima de 12 pessoas Usadas para padronizar aes das pessoas So: Cascata, Fast-tracking, incremental, RUP, OPEN, Catalysis.

Classificao das metodologiasgeis ou pequenas, leves ou adaptveisUsada por organizaes que do nfase colaborao Abordagem flexvel Usada para projetos que tem requisitos que mudam muito (mercado, necessidades organizao, leis, propsito do projeto, troca de chefia) Comunicao muito prxima com o cliente Exige menos pessoas, mas muito mais capacitadas, afinal, participaro de quase todas as fases do projeto. So: Iterativo, Espiral, XP, Scrum, Crystal, etc

Modelo Cascata

Fases do modelo cascataProcesso Linear Anlise e definio de requisitos (Estudo de Viabilidade) Projeto do sistema e do software Implementao e teste da unidade Integrao e teste do sistema Operao e manuteno A desvantagem do modelo cascata a dificuldade de acomodar mudanas depois que o processo est em andamento Uma fase tem de estar completa antes de passar para a prxima

Problemas do modelo cascataProcesso no fora antecipao das mudanas Processo baseado na produo de documentos (burocrtico) Dificuldade de responder a mudanas de requisitos de clientes. Poucos sistemas de negcio tem requisitos estveis. Assim, o modelo somente apropriado quando os requisitos estiverem bem consolidados e entendidos. Dificuldade de estimar com pouca informao Usado para grandes projetos quando os requisitos so bem compreendidos e quando mudanas so limitadas durante o desenvolvimento

Modelo Cascata FAST TRACKINGVariante do modelo sequencial linear Fase inicia antes que a(s) precursora(s) tenha(m) terminado Aumenta risco de retrabalhoRequisitos

Projeto

Cod. Mdulos

Desenvolvimento evolucionrioDesenvolvimento exploratrioO objetivo trabalhar com clientes e evoluir o sistema final de um esboo de especificao inicial. Deve comear com os requisitos que esto bem entendidos

Preparao de prottipos descartveisObjetivo entender os requisitos do sistema. Deve comear com requisitos pobremente entendidos

Desenvolvimento evolucionrio

Ouvir o Cliente

Desenho e Construo

Avaliao do Cliente

Desenvolvimento evolucionrioAplicabilidadePara sistemas interativos pequenos ou mdios Para partes de sistemas grandes (ex. a interface de usurio) Para sistemas de curto-prazo

VantagensGrande interao com o usurio Qualidade da definio da interface

Desenvolvimento evolucionrioProblemas Falta de visibilidade do processo Sistemas so, em geral, pobremente estruturados Habilidades especiais (ex. em lnguas para rpida preparao de prottipos ) podem ser requeridas Expectativa do usurio pois o prottipo no o real. O cliente v o que parece ser uma verso executvel do software, ignorando que o prottipo funciona de maneira precria O desenvolvedor freqentemente faz concesses na implementao a fim de conseguir rapidamente um prottipo executvel

Desenvolvimento orientado ao reusoBaseado no reuso sistemtico, onde os sistemas so integrados de componentes existentes ou sistemas padronizados (ou COTS) Estgios do Processo Anlise do componente Modificao dos requisitos Projeto do sistema com reuso Desenvolvimento e integrao Esta abordagem est se tornando mais importante, mas a experincia ainda limitada com ela

Desenvolvimento orientado ao reuso

Iterao do ProcessoRequisitos do sistema SEMPRE evoluem no decorrer de um projeto, ento a iterao do processo, onde estgios anteriores so re-trabalhados, sempre parte de um processo para sistemas maiores Iterao pode ser aplicada para qualquer modelo de processo genrico Duas abordagens (relacionadas)Desenvolvimento incremental Desenvolvimento espiral

Desenvolvimento incrementalAo invs de entregar o sistema de uma nica vez, o desenvolvimento e a entrega dividida em incrementos com cada incremento entregando parte da funcionalidade requerida Os requisitos dos usurios so priorizados e os requisitos de maior prioridade so includos em incrementos iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so congelados embora requisitos para incrementos posteriores possam continuar a evoluir

Desenvolvimento incremental

Vantagens do desenvolvimento incrementalO valor agregado ao Cliente est na entrega em cada incremento de modo que a funcionalidade do sistema estar disponvel mais cedo Incrementos iniciais funcionam como prottipos para ajudar a evocar requisitos para incrementos posteriores Menores riscos de falha no projeto em geral Os servios do sistema de alta prioridade tendem a receber a maioria dos testes

Desvantagens do desenvolvimento incrementalNem todos os tipos de aplicao so apropriados para o RAD. Se o sistema no puder ser adequadamente modularizado, a construo e seleo de componentes ser problemtica No adequado quando so enfrentados riscos tcnicos elevados. Por exemplo, adoo profunda de uma nova tecnologia

Desenvolvimento espiralProcesso representado como uma espiral ao invs de uma seqncia de atividades com retorno Cada volta na espiral representa uma fase no processo. No existem fases fixas como especificao ou projeto as voltas na espiral so escolhidas de acordo com o que requerido Os riscos so explicitamente cotados e resolvidos durante todo o processo

Modelo espiral do processo de software4-Avaliar 1-Objetivos ?

3-Construir

2-Avaliar Alternativas Riscos

Setores do modelo espiralEstabelecimento de objetivosObjetivos especficos para a fase so identificados

Avaliao e reduo de riscosOs riscos so avaliados e atividades postas em prtica para reduzir os riscos principias

Desenvolvimento e validaoUm modelo de desenvolvimento para o sistema escolhido, podendo ser qualquer um dos modelos genricos

Planejamento e avaliao do clienteO projeto revisado e a fase seguinte da espiral planejada

Comentrios sobre o Ciclo de Vida em Espiral uma abordagem realstica para o desenvolvimento de software em grande escala. Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva. Pode ser difcil convencer os clientes que uma abordagem "evolutiva" controlvel. Exige considervel experincia na determinao de riscos e depende dessa experincia para ter sucesso A cada iterao ao redor da espiral, verses progressivamente mais completas do software so construdas O modelo relativamente novo e no tem sido amplamente usado

Caractersticas do Modelo em EspiralDesvantagens Bem aplicado somente a sistemas de larga escala Sistemas devem ser produtos internos da empresa Vantagens Fcil de decidir o quanto testar No faz distino entre desenvolvimento e manuteno

Extreme programmingNova abordagem para o desenvolvimento de software baseado no desenvolvimento e entrega de incrementos de funcionalidade bem pequenos Conta com melhoramento constante do cdigo, envolvimento do usurio no time de desenvolvimento e programao em pares Abordado mais adiante

Atividades de ProcessoEspecificao de Software Projeto e implementao de software Validao de software Evoluo de software

Especificao do SoftwareO processo de estabelecer que servios so requisitados e quais as restries na operao e desenvolvimento do sistema Processo de engenharia de requisitosEstudo de viabilidade Elicitao e anlise dos requisitos Especificao dos requisitos Validao dos requisitos

O processo de engenharia de requisitos

Projeto e implementao de SoftwareO processo de converter a especificao do sistema em um sistema executvel Projeto de SoftwareProjeto de uma estrutura de software que perceba a especificao

ImplementaoTransformar esta estrutura em um programa executvel

As atividades de projeto e implementao so intimamente relacionadas e podem ser entrelaadas

Atividades de processo de projetoProjeto arquitetural Especificao abstrata Projeto de interface Projeto de componente Projeto de estrutura de dados Projeto de algoritmo

O processo do projeto de software

Mtodos do ProjetoAbordagens sistemticas para desenvolver um projeto de software O projeto geralmente documentado como uma srie de modelos grficos Modelos possveisObject model; Sequence model; State transition model; Structural model; Data-flow model.

Programando e DepurandoTransformar um projeto em um programa e remover erros do programa Programao uma atividade pessoal no existe processo de programao genrico Programadores realizam alguns testes de programa para detectar falhas no programa e remover tais falhas no processo de depurao

O processo de depurao / debugging

Validao do SoftwareVerificao e validao (V & V) pretendem mostrar que um sistema est de acordo com sua especificao e cumpre os requisitos do cliente do sistema Envolve a verificao e a reviso de processos e teste do sistema Teste de sistema envolve a execuo do sistema com cases de teste que so derivados da especificao dos dados reais a serem processados pelo sistema

The testing process

The testing process

Testing stagesTeste da UnidadeOs componentes individuais so testados

Teste do MduloConjuntos de componentes dependentes relacionados so testados

Teste do Sub-sistemaOs mdulos so integrados em sub-sistemas e testados. O foco aqui deve ser no teste da interface

Teste do SistemaTeste do sistema como um todo. Teste das propriedades emergentes

Teste de AceitaoTeste com dados do consumidor para verificar que aceitvel

Testing phases

Evoluo do SoftwareSoftware hereditariamente flexvel e pode ser mudado. Como os requisitos mudam ao se alterar as circunstncias de negcios, o software que suporta o negcio tambm deve evoluir e mudar Embora tenha havido uma demarcao entre desenvolvimento e evoluo (manuteno), este cada vez mais irrelevante na medida que menos e menos sistemas so totalmente novos

Evoluo do Software

The Rational Unified ProcessUm modelo de processo moderno derivado do trabalho de UML e do Processo Unificado (PU) de Desenvolvimento de Software. Normalmente descreve 3 perspectivasUma perspectiva dinmica que mostra as fases do modelo ao longo do tempo Uma perspectiva esttica que mostra as atividades realizadas no processo Uma perspectiva prtica, que sugere boas prticas a serem usadas durante o processo

RUP phase model

Concepo

Elaborao

Construo

Transio

RUP phasesConcepoEstabelece o business case para o sistema. Identificar entidades externas que iro interagir e depois definir as interaes.

ElaboraoDesenvolver um entendimento sobre o domnio do problema e a arquitetura do sistema.

ConstruoSystem design, programming and testing.

TransioDeploy the system in its operating environment.

RUP good practiceDesenvolver software iterativamente Gerenciar requisitos Usar arquiteturas baseadas em componentes Modelar o software visualmente Verificar a qualidade do software Controlar as mudanas do software

Static workflowsWorkflow Business modelling Requisitos Anlise e projeto Implementation Description Os processos de negcios so modelados usando casos de uso de negcios Os agentes que interagem com o sistema so identificados e os casos de uso so desenvolvidos para modelar os requisitos do sistema Um modelo de projeto criado e documentado usando modelos de arquitetura, modelo de componente, modelo de objeto e de sequncia Os componentes de sistema so implementados e estruturados em subsistemas de implementao. A gerao automatic de cdigo com base nos modelos de projeto ajuda a acelerar esse processo O teste um processo iterative realizado em conjunto com a implementao. O teste de sistema segue o trmino da implementao Uma verso do produto criada, distribuda aos usurios e instalada no local de trabalho Este workflow de apoio gerencia as mudanas do sistema Este workflow de apoio gerencia o desenvolvimento do sistema

Test

Deployment Configuration and change management Project management

Environment / Ambiente Relacionado disponibilizao de ferramentas apropriadas de software para a equipe de desenvolvimento

Computer-aided software engineering (CASE)Engenharia de software auxiliada por computador (CASE) um software para dar suporte aos processos de desenvolvimento e evoluo do software Automao da atividadeEditores grficos para o desenvolvimento de modelos de sistema Dicionrio de dados para gerenciar entidades de projeto Construtor Grfico UI para a construo de interface para usurio Depuradores para suportar deteco de falhas no sistema Tradutores automticos para gerar novas verses de um programa

Case technologyTecnologia Case tem levado a melhorias significantes no processo de software embora no na ordem de magnitude de melhorias que foram antes previstosA engenharia de software requer pensamento criativo isto no prontamente automatizvel A engenharia de software uma atividade de grupo e, para grandes projetos, muito tempo utilizado em interaes do grupo. A tecnologia CASE no os suporta de fato

CASE classificationA classificao nos ajuda a entender os diferentes tipos de ferramentas de CASE e seu suporte para atividades do processo Perspectiva FuncionalAs ferramentas so classificadas de acordo com suas funes especficas

Perspectiva do ProcessoAs ferramentas so classificadas de acordo com as atividades do processo que suportam

Perspectiva da IntegraoAs ferramentas so classificadas de acordo com sua organizao em unidades integradas

Classificao funcional de ferramentas CASE

Classificao baseada em atividades

Perspectiva de Integrao CASEFerramentasSuporta tarefas individuais do processo como verificao da consistncia de um projeto, edio de texto, etc. GASPRO, QSSrequireit, DOORS, SLATE, GENEXXUS

reas de trabalho (workbenches)Suporte a fases do processo como especificao ou projeto. Normalmente inclui uma variedade de ferramentas integradas

AmbientesSuporta tudo ou uma parte substancial de todo um processo de software. Normalmente inclui vrias reas de trabalho integradas

Tools, workbenches, environments

Pontos-chaveProcessos de software so as atividades envolvidas na produo e desenvolvimento de um sistema de software. Eles so representados num modelo de processo de software. Atividades comuns aos processos de software so especificao, projeto e implementao, validao e evoluo. Modelos genricos de processos descrevem a organizao do processo de software. Modelos de processos iterativos descrevem o processo de software com um ciclo de atividades

Pontos-chaveEngenharia de requisitos o processo de desenvolver uma especificao de software Os processos de projeto e implementao transformam a especificao em um programa executvel A Validao envolve verificar que o sistema cumpre com as especificaes e as necessidades do usurio Evoluo se preocupa em modificar o sistema depois que ele est em uso Tecnologia CASE suporta atividades de processo de software

Pesquisa Captulo 4Identifique todos os modelos de processos apresentados e construa um quadro comparativo Colocar todas as referncias Individual na prxima aula Mtodo principal Descrio resumida Vantagens e desvantagens Quais os softwares mais apropriados Faa uma anlise crtica de cada modelo Entregar no e-mail Assunto: FES_CAP4 Arquivo: Nome_FES_CAP4

Pesquisa - Apresentao8 grupos 15 minutos de apresentao 2 apresentadores (mximo) 4 a 6 pginas formato da SBC Temas Frameworks de desenvolvimento (.NET Framework, 2 frameworks em Java e mais um em outra linguagem) Design Patterns CMMI e MPSBR Estimativas (COCOMO, COCOMO II) e Estimativas (APF, Anlise por Caso de Uso) RUP, Ferramentas CASE Testes de Software Estudo de Software House Segurana em Software Entregar antes no e-mail Assunto: FES_AP1 Arquivo: Nome_FES_AP1