Você está na página 1de 14

RESUMO ENG.

DE SOFTWARE Ian Sommerville


Autor: Paulo Norberto

CAPITULO 1
INTRODUO

Os sistemas de software so abstratos e intangveis. Eles no so restringidos pelas propriedades dos materiais, nem governados pelas leis da fsica ou pelos processos de manufatura. Isso simplifica a engenharia de software, porque no h limites naturais para o potencial do software. No entanto, devido a essa falta de restrio fsica, os sistemas de software podem se tornar extremamente complexos de modo muito rpido, difceis de entender e caros para alterar. Existem vrios tipos de sistemas de software, desde os simples at os complexos. No faz sentido que se busque notaes, mtodos ou tcnicas universais para a engenharia de software, pois diferentes tipos de software exigem abordagens diferentes. A seguir algumas causas das falhas de software: 1. Aumento de demanda: O aumento da demanda de softwares os sistemas tem que ser construdos mais rapidamente, serem maiores e mais complexos, devem ter capacidades que antes eram consideradas impossveis. Como os mtodos e as tcnicas de engenharia de software existentes no conseguem lidar com isso, novas tcnicas de engenharia de software precisam ser desenvolvidas para atender a essas novas demandas. 2. Expectativas baixas: Por ser fcil escrever programas de computador sem usar tcnicas e mtodos de engenharia de software, isso forou a muitas empresas a desenvolver softwares medida que seus produtos e servios evoluram. Como consequncia, e por no utilizar mtodos de engenharia de software no dia-a-dia, seus softwares so mais caros e menos confiveis do que deveriam ser. Vrias pessoas desenvolvem softwares hoje em dia, para os mais diferentes meios (cientfico, hobby, empresariais), no entanto a maior parte dos softwares desenvolvido para um propsito especfico de negcio. O software profissional, que

usado por algum alm do seu desenvolvedor, normalmente criado por equipes, em vez de indivduos. Ele mantido e alterado durante sua vida. A engenharia de software inclui tcnicas que apoiam especificao, projeto e evoluo de programas. Falar em engenharia de software no apenas criar programas de computador, mas tambm engloba toda a documentao associada e dados de configurao necessrios para fazer esse programa operar corretamente. Um sistema de software desenvolvido profissionalmente mais que apenas um programa; ele normalmente uma srie de programas separados e arquivos de configurao usados para configurar esses programas. Isso inclui documentao do sistema (descreve a sua estrutura), documentao do usurio (explica como usar o sistema), e sites para o usurio baixar informaes recentes do produto. Engenheiros de software preocupam-se em desenvolver produtos de softwares (softwares que podem ser vendidos). Existem dois tipos de produtos de software: 1. Produtos genricos: So os sistemas chamados stand-alone, que so os que so vendidos para qualquer cliente que esteja interessado em compra-los. Exemplos: ferramentas de banco de dados, processadores de texto, pacotes grficos, etc. E tambm as aplicaes verticais, tais como, sistemas de biblioteca, contabilidade, e manuteno de registros de alguma empresa. 2. Produtos sob encomenda: So criados para atender um fim especfico e um cliente particular. desenvolvido especificamente para esse cliente. Exemplo: sistema de controle de trfego areo. O que software? R: Softwares so programas de computador e documentao associada. Quais os atributos de um R: Prover a funcionalidade e o desempenho requerido pelo bom software? usurio; deve ser confivel, fcil de manter e usar. Quais as principais R: Especificao de software, desenvolvimento de software, atividades da engenharia de validao de software e evoluo de software. software? Quais os principais desafios R: Lidar com o aumento de diversidade, demandas pela da engenharia de software? diminuio do tempo para a entrega e desenvolvimento de software confivel. Quais sos os custos da R: 60% de desenvolvimento e 40% de testes. engenharia de software? Sobre a qualidade dos softwares profissionais, devemos lembrar que o software alterado pelas pessoas, alm dos seus desenvolvedores. A qualidade no apenas o

que o software faz, mas tambm como ele se comporta quando est sendo executado, bem como a estrutura e a organizao dos programas do sistema e a documentao associada. Isso reflete nos atributos de software, que so chamados de no funcionais ou de qualidade. Exemplos desses atributos: Tempo de resposta a uma consulta realizada pelo usurio e a compreenso do cdigo do programa. A seguir uma tabela com as caractersticas essenciais de um sistema profissional de software: Manutenibilidade O software deve ser escrito de forma que possa evoluir para atender s necessidades do cliente. Esse um atributo crtico, porque a mudana de software um requisito inevitvel de um ambiente de negcios em mudana. Confiana e Inclui uma srie de caractersticas como: confiabilidade, proteo proteo e segurana. O software no pode causar prejuzos fsicos ou financeiros no caso de falha no sistema e usurios maliciosos no devem ser capazes de acessar ou prejudicar o sistema. Eficincia O software no deve desperdiar os recursos de sistema, como memria e ciclos do processador. Deve ser eficiente na capacidade de resposta, tempo de processamento, uso de memria, etc. Aceitabilidade O software deve ser aceitvel para o tipo de usurio para o qual foi projetado. Isso significa que ele deve ser compreensvel, usvel e compatvel com outros sistemas usados por ele. A engenharia de software no se preocupa apenas com os processos tcnicos do desenvolvimento de software. Ela tambm inclui atividades como gerenciamento de projeto de software e desenvolvimento de ferramentas, mtodos e teorias para apoiar a produo de software. Engenharia tem haver com obter resultados de qualidades requeridos dentro do cronograma e do oramento. A abordagem sistemtica usada na engenharia de software , s vezes, chamada processo de software. Um processo de software uma sequncia de atividades que leva produo de um produto de software. Existem quatro atividades fundamentais comuns a todos os processos de software. So elas: 1. Especificao de software: Clientes e engenheiros definem o que ser produzido e as suas restries de operao. 2. Desenvolvimento de software: projeto e programao 3. Validao de software: O software verificado para garantir que est de acordo com o que o cliente quer. 4. Evoluo de software: O software modificado para atender a mudana de requisitos do cliente e do mercado.

Alm das quatro atividades fundamentais tambm existem trs aspectos gerais que afetam vrios tipos diferentes de software: 1. Heterogeneidade: O sistema deve rodar em diferentes tipos de computadores e dispositivos mveis. Integrao entre sistemas novos e antigos e escritos em linguagens de programao diferentes. Desenvolver um software confivel que seja flexvel o suficiente para lidar com essa heterogeneidade. 2. Mudana de negcio e social: As tcnicas de desenvolvimento devem evoluir junto com a sociedade e o surgimento de novas tecnologias para que o tempo requerido para o software da retorno a seus clientes seja reduzido tambm. 3. Segurana e confiana: Precisamos ter certeza de que os usurios maliciosos no possam atacar nosso software e de que a proteo da informao seja mantida. Engenharia de software uma abordagem sistemtica para a produo de software; ela analisa questes prticas de custo, prazo e confiana, assim como as necessidades dos clientes e produtores do software. A forma como ela realmente implementada varia de acordo com a organizao que est desenvolvendo, o tipo de software e as pessoas envolvidas no processo de desenvolvimento. No existe um mtodo global de desenvolvimento, mas um conjunto diverso de mtodos e ferramentas. Talvez o fator mais significante em determinar quais tcnicas e mtodos de engenharia de software so mais importantes seja o tipo de aplicao a ser desenvolvida. Vejam alguns tipos diferentes de aplicaes: 1. Aplicaes stand-alone: Aplicaes executadas em computador local, no precisam estar conectadas a uma rede. 2. Aplicaes interativas baseadas em transaes; 3. Sistemas de controle embutido; 4. Sistemas de processamento de lote; 5. Sistemas de entretenimento; 6. Sistemas para modelagem e simulao; 7. Sistemas de coleta de dados; 8. Sistemas de Sistemas. Alm disso, existem fundamentos de engenharia de software que se aplicam a todos os tipos de sistemas de software: 1. Eles devem ser desenvolvidos em um processo gerenciado e compreendido;

2. Confiana e desempenho so importantes para todos os tipos de sistema; 3. importante entender e gerenciar as especificaes e os requisitos de software (o que o software deve fazer); 4. Voc deve fazer o melhor uso possvel dos recursos existentes. Pontos importantes: ! Software no apenas um programa ou programas; ele inclui tambm a documentao. Os atributos principais de um produto de software so manutenibilidade, confiana, proteo, eficincia e aceitabilidade. ! O processo de software inclui todas as atividades envolvidas no desenvolvimento do software. Atividades de alto nvel de especificao, desenvolvimento, validao e evoluo parte de todos os processos de software. ! As ideias fundamentais da engenharia de software so universalmente aplicveis para todos os tipos de desenvolvimento de sistemas. Esses fundamentos incluem processos de software, confiana, proteo, requisitos e reuso. ! Existem vrios tipos diferentes de sistemas, e cada um requer ferramentas e tcnicas de engenharia de software adequadas a seu desenvolvimento. Existem poucas, se houver alguma, tcnicas especficas de projeto e implementao aplicveis a todos os tipos de sistemas. ! As ideias bsicas da engenharia de software so aplicveis a todos os tipos de sistemas de software. Esses fundamentos incluem processos de software gerenciados, confiana e proteo de software, engenharia de requisitos e reuso de software.

CAPITULO 2
Um processo de software um conjunto de atividades relacionadas que levam produo de um produto de software. Existem muitos processos de softwares diferentes, mas todos devem incluir quatro atividades fundamentais para a engenharia de software: 1. Especificaes de software 2. Projeto e implementao de software 3. Validao de software 4. Evoluo de software

Os processos de software, s vezes, so categorizados como dirigidos a planos ou a processos geis. Processos dirigidos a planos so aqueles em que todas as atividades so planejadas com antecedncia, e o progresso avaliado por comparao com o projeto inicial. Em processos geis o planejamento gradativo, e mais fcil alterar o processo de maneira a refletir as necessidades de mudana dos clientes. Geralmente, necessrio encontrar um equilbrio entre os processos geis e os processos dirigidos a planos. A seguir alguns modelos de processos utilizados na engenharia de software: " Modelo em cascata:

1. Anlise e definio de requisitos: Os servios, restries, e metas do sistema so estabelecidos por meio de consulta ao usurio. Em seguida, so definidos em detalhes e funcionam como uma especificao do sistema. 2. Projeto de sistema e software: O processo de projeto de sistemas aloca os requisitos tanto para sistemas de hardware como para os sistemas de software, por meio da definio de uma arquitetura geral do sistema. O projeto de software envolve identificao e descrio das abstraes fundamentais do sistema de software e seus relacionamentos. 3. Implementao e teste unitrio: Durante esse estgio, o projeto de software desenvolvido como um conjunto de programas ou unidades de programas. O teste unitrio envolve a verificao de que cada unidade atenda a sua especificao.

4. Integrao e teste de sistema: As unidades individuais do programa ou programas so integradas e testadas como um sistema completo para assegurar que os requisitos do software tenham sido atendidos. Aps o teste, o software entregue ao cliente. 5. Operao e manuteno: A manuteno envolve a correo de erros que no foram descobertos em estgios iniciais. Nesse modelo, o estgio seguinte no deve ser iniciado at que a fase anterior seja concluda. Por causa dos custos de produo e aprovao de documentos, as iteraes podem ser dispendiosas e envolver significativos retrabalho. " Desenvolvimento incremental

Essa abordagem intercala as atividades de especificao, desenvolvimento e validao. O sistema desenvolvido como uma srie de verses (incrementos), de maneira que cada verso adiciona funcionalidade anterior. As atividades de especificao, desenvolvimento e validao so intercaladas, e no separadas, com rpido feedback entre todas as atividades. " Engenharia de software orientada a reuso Na maioria dos projetos de software, h algum reuso de software. Isso acontece muitas vezes informalmente, quando as pessoas envolvidas no projeto sabem de projetos ou cdigos semelhantes ao que exigido. Elas o buscam, fazem as modificaes necessrias e incorporam-nos a seus sistemas.

Apesar do modelo de reuso ter estgios comparveis com outros processos de software, ele difere nos estgios intermedirios. Vejam quais so eles: 1. Anlise de componentes: Dada a especificao de requisitos, feita uma busca de componentes para implementar essa especificao. Os componentes que podem ser usados podem apenas fornecer alguma funcionalidade necessria. 2. Modificao de requisitos: Durante esse estgio, os requisitos so analisados usando-se informaes sobre os componentes que foram descobertos. Em seguida, estes sero modificados para refletir os componentes disponveis. 3. Projeto do sistema com reuso: Durante este estgio, o framework do sistema projetado ou algo existente reusado. Os projetistas tm em mente os componentes que sero reusados e organizam o framework para reuso. 4. Desenvolvimento e integrao: Softwares que no podem ser adquiridos externamente so desenvolvidos, e os componentes e sistemas so integrados para criar o novo sistema. A integrao de sistemas, nesse modelo, pode ser parte do processo de desenvolvimento, em vez de uma atividade separada. Engenharia de software orientada a reuso tem a vantagem bvia de reduzir a quantidade de software a ser desenvolvido, e, assim, reduzir custos e riscos. Geralmente, tambm proporciona a entrega mais rpida do software. Especificao de software ou engenharia de requisitos o processo de compreenso e definio dos servios requisitados do sistema e identificao de restries relativas operao e ao desenvolvimento do sistema. Essa uma parte crtica do processo de software, pois erros nessa fase inevitavelmente geram problemas no projeto e na implementao do sistema. O processo de engenharia de requisitos tem como objetivo produzir um documento de requisitos acordados que especifica um sistema que satisfaz os stakeholders. Existem quatro atividades principais do processo de engenharia de requisito: 1. Estudo de viabilidade 2. Elicitao e anlise de requisitos 3. Especificao de requisitos 4. Avaliao de requisitos. As atividades no processo de requisitos no so feitas em apenas uma sequencia. A anlise de requisitos continua durante a definio e especificao, e novos requisitos emergem

durante o processo. Por tanto, as atividades de anlise, definio e especificao so intercaladas. O estgio de implementao do desenvolvimento de software o processo de converso do sistema em um sistema executvel. Um projeto de software uma descrio da estrutura do software a ser implementado, dos modelos e estruturas de dados usados pelo sistema, das interfaces entre os componentes do sistema e, s vezes, dos algoritmos usados. Os projetistas no chegam a um projeto final imediatamente, mas desenvolvem-no de forma iterativa. Eles acrescentam formalidade e detalhes, enquanto desenvolvem seu projeto por meio de revises constantes para correo de projetos anteriores. A validao de software tem a inteno de mostrar que um software se adequa a suas especificaes ao mesmo tempo em que satisfaz as especificaes do cliente do sistema. O teste do programa a principal tcnica de validao. A validao tambm pode envolver processos de verificao, como inspees e revises, em cada estgio do processo de software, desde a definio dos requisitos de usurios at o desenvolvimento do programa. Erros em componentes de programa podem vir luz durante os testes de sistema. O processo , portanto, iterativo, com informaes realimentadas de estgios posteriores para partes anteriores do processo. Os estgios do processo de teste so: 1. Testes de desenvolvimento 2. Teste de sistema 3. Teste de aceitao Se uma abordagem incremental usada para o desenvolvimento, cada incremento deve ser testado enquanto desenvolvido. Pontos importantes: ! Os processos de software so as atividades envolvidas na produo de um sistema de software. Modelos de processos de software so representaes abstratas desses processos. ! Modelos gerais de processo descrevem a organizao dos processos de software. Exemplos desses modelos gerais incluem o modelo em cascata, o desenvolvimento incremental e o desenvolvimento orientado a reuso. ! Engenharia de requisitos o processo de desenvolvimento de uma especificao de software. As especificaes destinam-se a comunicas as necessidades de sistemas dos clientes para os desenvolvedores do sistema.

! Processos de projeto e implementao esto relacionados com a transformao das especificaes dos requisitos em um sistema de software executvel. Mtodos sistemticos de projetos podem ser usados como parte dessa transformao. ! Validao de software o processo de verificao de que o sistema est de acordo com a sua especificao e satisfaz s necessidades reais do usurio do sistema. ! Evoluo de software ocorre quando se alteram os atuais sistemas de software para atender aos novos requisitos. As mudanas so continuas, e o software deve evoluir para continuar til. ! Processos devem incluir atividades para lidar com as mudanas. Podem envolver uma fase de prototipao, que ajuda a evitar ms decises sobre os requisitos e projetos. Processos podem ser estruturados para o desenvolvimento e a entrega iterativos, de forma que mudanas possam ser feitas sem afetar o sistema como um todo. ! RUP um moderno modelo genrico de processo, organizado em fases (concepo, elaborao, construo e transio), mas que separa as atividades (requisitos, anlises, projetos, etc.) dessas fases.

!"#$%&'()*)
!

Os processos de desenvolvimento rpido de software so concebidos para produzir, rapidamente, softwares teis. O software no desenvolvido como uma nica unidade, mas como uma srie de incrementos cada incremento inclui uma nova funcionalidade do sistema. Embora existam muitas abordagens para o desenvolvimento rpido de software, elas compartilham algumas caractersticas fundamentais: 1. Os processos de especificao, projeto e implementao so intercalados. 2. O sistema desenvolvido em uma srie de verses. 3. Interfaces de usurio do sistema so geralmente desenvolvidas com um sistema interativo de desenvolvimento que permite a criao rpida do projeto de interface por meio de desenho e posicionamento de cones na interface. Os mtodos geis so mtodos de desenvolvimento incremental em que os incrementos so pequenos e, normalmente, as novas verses do sistema so criadas e disponibilizadas aos clientes a cada duas ou trs semanas. Elas envolvem os clientes no

processo de desenvolvimento para obter feedback rpido sobre a evoluo dos requisitos. Assim, minimiza-se a documentao, pois se utiliza mais a comunicao informal do que reunies formais com documentos escritos. Mtodos geis permitiram que a equipe de desenvolvimento focasse no software em si, e no em sua concepo e documentao. Mtodos geis, universalmente, baseiam-se em uma abordagem incremental para a especificao, o desenvolvimento e a entrega do software. Destinam-se a entregar o software rapidamente aos clientes, em funcionamento, e estes podem, em seguida, propor alteraes e novos requisitos a serem includos nas iteraes posteriores do sistema. Tem como objetivo reduzir a burocracia do processo, evitando qualquer trabalho de valor duvidoso de longo prazo e qualquer documentao que provavelmente nunca ser usada. Os princpios dos mtodos geis: Envolvimento do cliente Entrega incremental Pessoas, no processos. Os clientes devem estar intimamente envolvidos no processo de desenvolvimento. Seu papel fornecer e priorizar novos requisitos do sistema e avaliar suas iteraes. O software desenvolvido em incrementos com o cliente, especificando os requisitos pra serem includos em cada um. As habilidades da equipe de desenvolvimento devem ser reconhecidas e exploradas. Membros da equipe devem desenvolver suas prprias maneiras de trabalhar, sem processos prescritivos. Deve-se ter em mente que os requisitos do sistema vo mudar. Por isso, projete o sistema de maneira a acomodar essas mudanas. Focalize a simplicidade, tanto do software a ser desenvolvido quanto do processo de desenvolvimento. Sempre que possvel, trabalhe ativamente para eliminar a complexidade do sistema.

Aceitar as mudanas Manter a simplicidade

Abordagens geis de desenvolvimento de software consideram o projeto e a implementao como atividades centrais no processo de software. Eles incorporam outras atividades, como elicitao de requisitos e testes no projeto e na implementao. Em contrapartida, uma abordagem de engenharia de software dirigida a planos identifica estgios distintos do processo de software com sadas associadas a cada estgio. As sadas de um estgio so usadas como base para o planejamento da atividade do processo a seguir. Em uma abordagem dirigida a planos, ocorrem iteraes no mbito das atividades com documentos formais, usados para estabelecer a comunicao entre os estgios do processo. Por exemplo, os requisitos vo evoluir e, finalmente, ser produzida uma especificao de

requisitos. Em uma abordagem gil, iteraes ocorrem em todas as atividades. Por tanto, os requisitos e o projeto so desenvolvidos em conjunto, e no separadamente. Extreme Programming (XP) talvez o mais conhecido e mais utilizado dos mtodos geis, pois a abordagem foi desenvolvida para impulsionar prticas reconhecidamente boas, como o desenvolvimento iterativo, a nveis extremos. Por exemplo, em XP, vrias novas verses de um sistema podem ser desenvolvidas, integradas e testadas em um nico dia por programadores diferentes. Em extreme Programming, os requisitos so expressos como cenrios (chamados de estrias do usurio), que so implementados diretamente como uma srie de tarefas. Os programadores trabalham em pares e desenvolvem testes para cada tarefa antes de escreverem o cdigo. Quando o novo cdigo integrado ao sistema, todos os testes devem ser executados com sucesso. H um curto intervalo entre os releases do sistema. Extreme Programming envolve uma srie de prticas que refletem os princpios dos mtodos geis: 1. O desenvolvimento incremental sustentado por meio de pequenos e frequentes releases do sistema. 2. O envolvimento do cliente sustentando por meio do engajamento contnuo do cliente com a equipe de desenvolvimento. 3. Pessoas no processos so sustentadas por meio de programao em pares, propriedade coletiva do cdigo do sistema e um processo de desenvolvimento que no envolve horas excessivas de trabalho. 4. As mudanas so aceitas por meio de releases contnuos para os clientes. 5. A manuteno da simplicidade feita por meio da refatorao constante que melhora a qualidade do cdigo, bem como por meio de projetos simples que no antecipam desnecessariamente futuras mudanas no sistema. Em um processo XP, os clientes esto intimamente envolvidos na especificao e priorizao dos requisitos do sistema. Os requisitos no esto especificados como uma lista de funes requeridas do sistema. Pelo contrrio, o cliente do sistema parte da equipe de desenvolvimento e discute cenrios com outros membros da equipe. Juntos, eles desenvolvem um carto de estrias, englobando as necessidades do cliente. A equipe de desenvolvimento, ento, tenta implementar esse cenrio em um release futuro do software. Os cartes de estria so as principais entradas para o processo de planejamento em XP ou jogo de planejamento. Esse processo geralmente envolve discusses com o cliente para

refinamento dos requisitos. O cliente, ento, prioriza as estrias para implementao, escolhendo aquelas que podem ser usadas imediatamente para oferecer apoio aos negcios. A inteno identificar funcionalidade til que possa ser implementada em cerca de duas semanas, quando o prximo release do sistema disponibilizado para o cliente. Claro que, como os requisitos mudam, as estrias no implementadas mudam ou podem ser descartadas. Se houver necessidade de mudanas em um sistema que j tenha sido entregue, novos cartes de estria so desenvolvidos e, mais uma vez, o cliente decide se essas mudanas devem ter prioridade sobre a nova funcionalidade. Para evitar alguns dos problemas de teste e validao do sistema, a abordagem XP enfatiza a importncia dos testes do programa. Extreme Programming incluiu uma abordagem de testes que reduz as chances de erros desconhecidos na verso atual do sistema. As principais caractersticas dos testes em XP so: 1. Desenvolvimento test-first 2. Desenvolvimento de teste incremental a partir de cenrios 3. Envolvimentos dos usurios no desenvolvimento de testes e validao 4. Uso de frameworks de testes automatizados. O desenvolvimento test-first uma das mais importantes inovaes no XP. Em vez de escrever algum cdigo e, em seguida, escrever testes para esse cdigo, voc escreve os testes antes do cdigo. Isso significa que voc pode executar o teste enquanto o cdigo est sendo escrito e pode encontrar problemas durante o desenvolvimento. No desenvolvimento test-first, os implementadores de tarefas precisam entender completamente a especificao para que possam escrever testes para o sistema. Isso significa que as ambiguidades e omisses da lista de especificaes devem ser esclarecidas antes do inicio da implementao. Alm disso, tambm evita o problema de test-lag. Isso pode acontecer quando o desenvolvedor do sistema trabalha em um ritmo mais rpido que o testador. A implementao fica mais e mais frente dos testes e desenvolve-se uma tendncia a ignorar os testes, a fim de que o cronograma de desenvolvimento possa ser mantido. Outra prtica inovadora introduzida no XP que, para desenvolver o software, os programadores trabalhem em pares. Na verdade, para desenvolver o software eles se sentam juntos, na mesma estao de trabalho. No entanto, os mesmos pares nem sempre programam juntos. Pelo contrario, os pares so criados de maneira dinmica, de modo que todos os membros da equipe trabalhem uns com os outros durante o processo de desenvolvimento. O uso da programao em pares tem uma srie de vantagens:

1. D suporte a ideia de propriedade e responsabilidade coletiva para o sistema. 2. Atua como um processo de reviso informal, porque cada linha de cdigo observada por, pelo menos, duas pessoas. 3. D suporte refatorao, que um processo de melhoria de software. PONTOS IMPORTANTES:

1. Mtodos geis so mtodos de desenvolvimento incremental que se concentram em desenvolvimento rpido, releases frequentes do software, reduo de overheads dos processos e produo de cdigos de alta qualidade. Eles envolvem o cliente diretamente no processo de desenvolvimento. 2. A deciso de usar uma abordagem dirigida a planos para o desenvolvimento deve depender do tipo de software a ser desenvolvido, das habilidades da equipe de desenvolvimento e da cultura da empresa que desenvolve o sistema. 3. Extreme Programming um mtodo gil, bem conhecido, que integra um conjunto de boas praticas de programao, como releases frequentes do software, melhorias contnuas do software e participao do cliente na equipe de desenvolvimento. 4. Um ponto forte da Extreme Programming o desenvolvimento de testes automatizados antes da criao de um recurso do programa. Quando um incremento integrado ao sistema, todos os testes devem ser executados com sucesso. 5. O mtodo Scrum uma metodologia gil que fornece um framework de gerenciamento de projetos. centralizado em torno de um conjunto de sprints, que so perodos determinados de tempo, quando um incremento de sistema desenvolvido. O planejamento baseado na priorizao de um backlog de trabalho e na seleo das tarefas mais importantes para um sprint. 6. O escalamento de mtodos geis para sistemas de grande porte difcil. Tais sistemas necessitam de projeto adiantado e alguma documentao. A integrao continua praticamente impossvel quando existem varias equipes de desenvolvimento separadas trabalhando em um projeto.