Curso de Engenharia de Computação ABORDAGENS SOBRE MÉTODOS DE DESENVOLVIMENTO DE SOFTWARE

Tamanho: px
Começar a partir da página:

Download "Curso de Engenharia de Computação ABORDAGENS SOBRE MÉTODOS DE DESENVOLVIMENTO DE SOFTWARE"

Transcrição

1 Curso de Engenharia de Computação ABORDAGENS SOBRE MÉTODOS DE DESENVOLVIMENTO DE SOFTWARE Jeferson Teixeira Campinas São Paulo Brasil Dezembro de 2008

2 Curso de Engenharia de Computação ABORDAGENS SOBRE MÉTODOS DE DESENVOLVIMENTO DE SOFTWARE Jeferson Teixeira Monografia apresentada à disciplina de Trabalho de Conclusão do Curso de Engenharia de Computação da Universidade São Francisco, sob a orientação do Prof. Doutor Adalberto Nobiato Crespo, como exigência parcial para conclusão do curso de graduação. Orientador: Prof. Doutor Adalberto Nobiato Crespo Campinas São Paulo Brasil Dezembro de 2008

3 Abordagens sobre métodos de desenvolvimento de software Jeferson Teixeira Monografia defendida e aprovada em 11 de Dezembro de 2008 pela Banca Examinadora assim constituída: Professor Dr. Adalberto Nobiato Crespo (Orientador) USF Universidade São Francisco Campinas SP. Professor M.Sc. Claudio Maximiliano Zaina USF Universidade São Francisco Campinas SP. Professor Esp. Ricardo César Boaretto USF Universidade São Francisco Campinas SP.

4 Dedico este trabalho a minha noiva e futura esposa, Elisa Alonso, por me apoiar em todos os momentos. Dedico também a meus pais, Jair Teixeira e Jocely Rodrigues Teixeira, por todo o carinho e dedicação em toda minha vida.

5 .Agradecimentos Agradeço a Deus por me ter guiado até aqui e por ter me dado a oportunidade de ser quem eu sou. Agradeço a minha noiva e futura esposa, Elisa Alonso, por sempre demonstrar seu amor, apoio e dedicação. Agradeço a meus pais por todo carinho e dedicação em todos os momentos da minha vida, sempre estando prontos para me ajudar e me orientar. Agradeço a todos os professores que tive durante toda a minha vida, que me ensinaram valores que levarei comigo para sempre. Agradeço, finalmente, a meu orientador, Prof. Doutor Adalberto Nobiato Crespo, por ter aceitado me orientar e me conduzir durante toda a realização deste trabalho. v

6 Sumário Lista de Siglas...vii Lista de Figuras...viii Resumo...ix Abstract...x 1 Introdução Contextualização Objetivo Estrutura do Texto Métodos de desenvolvimento de software Metodologias tradicionais de desenvolvimento de software Método cascata Método espiral Outros métodos tradicionais de desenvolvimento de software Prototipação RUP Métodos ágeis de desenvolvimento de software Origem dos métodos ágeis de desenvolvimento de software Valores ágeis Características comuns entre métodos tradicionais e métodos ágeis Scrum XP Outros métodos ágeis Crystal Methods Feature-Driven Development (FDD) Dynamic Systems Development Method (DSDM) Projeto Desenvolvido Levantamento de necessidades e requisitos Interação com o cliente Número de indivíduos que compõe a equipe de desenvolvimento Grau de maturidade dos indivíduos que compõe a equipe de desenvolvimento Prazos e custos da construção de um software Testes e entrega do software para o cliente Manutenção do software em produção Conclusão Vantagens dos métodos ágeis em relação aos métodos tradicionais Desvantagens dos métodos ágeis em relação aos métodos tradicionais Características necessárias que uma equipe de desenvolvimento de software deve ter para utilizar métodos ágeis Contribuições Trabalhos futuros...54 Referências Bibliográficas...55 vi

7 Lista de Siglas CMMI DSDM FDD MPS.BR RAD RUP UP XP Capability Maturity Model Integration Dynamic Systems Development Method Feature-Driven Development Melhoria de Processos de Software Brasileiro Rapid Application Development Rational Unified Process Unified Process Extreme Programming vii

8 Lista de Figuras Figura 1 Histórico de publicação de metodologias de desenvolvimento de software...7 Figura 2 Método cascata...11 Figura 3 Método Espiral...14 Figura 4 Fases e volume de atividades para cada atividade do RUP...16 Figura 5 Comparação de custo de mudança entre cascata e XP...22 Figura 6 Ciclo de desenvolvimento do Scrum...31 Figura 7 Valores e práticas de XP...35 Figura 8 Esquema do Crystal Methods...37 viii

9 Resumo Este trabalho descreve os princípios básicos do métodos tradicionais e dos métodos ágeis de desenvolvimento de software, apresentando suas principais características e definições. Os métodos tradicionais de desenvolvimento de software são abordados nesse trabalho devido a sua grande utilização na indústria de software e também devido a sua importância histórica, por se tratarem dos primeiros métodos de desenvolvimento de software criados, em especial o método cascata, que foi o primeiro método de desenvolvimento de software utilizado pela indústria de software e, em alguns lugares, é utilizado até hoje. Continuando o enfoque em relação aos métodos tradicionais, é descrito o método Espiral, que foi o primeiro método que utilizou técnicas iterativas e incrementais, e também são brevemente citados os outros métodos tradicionais de desenvolvimento (Prototipação e RUP). Já em relação aos métodos ágeis de desenvolvimento de software, é descrita a origem desses métodos bem como os valores ágeis, definidos através do Manifesto Ágil, que compõe quatro definições básicas dos métodos ágeis de desenvolvimento de software. Os métodos Scrum e XP são apresentados e detalhados, dando enfoque em suas principais características. Os dois métodos foram escolhidos por serem atualmente os mais utilizados entre os adeptos aos métodos ágeis de desenvolvimento. O trabalho se encerra com a comparação entre os métodos tradicionais e os métodos ágeis, analisando algumas de suas características comuns. Também é feita a análise em relação as vantagens e desvantagens de se utilizar métodos ágeis de desenvolvimento de software. Por fim, são levantadas as características básicas que uma equipe de desenvolvimento de software deve ter para que a utilização de métodos ágeis seja viável e garanta a qualidade do software gerado ao final do processo de desenvolvimento PALAVRAS-CHAVE: Desenvolvimento de Software, Métodos ágeis, Métodos Tradicionais, Scrum, XP, Cascata, Espiral. ix

10 Abstract This paper describes the basic principles of traditional methods and agile methods of software development, presenting their main characteristics and settings. Traditional methods of software design are discussed in this work because of their great use in the software industry and also because of its historical importance, they were the first methods of developing software created, especially the cascade method, which was the first method of developing software used by the software industry and in some places, is used today. Continuing the focus on the traditional methods, the method is described Spiral, which was the first method that used techniques recursive and incremental, and are also briefly mentioned the other traditional methods of development (Prototyping and RUP). Already in the methods of agile software development, is described the origin of such methods as well as the values agile, defined by the Manifesto agility, which comprises four categories of basic methods of agile software development. The methods Scrum and XP are presented and detailed, focusing on its main features. The two methods were chosen because they are currently the most widely used among supporters of agile methods of development. The paper concludes with a comparison between traditional methods and agile methods to analyze some of their common characteristics. It's also done the analysis on the advantages and disadvantages of using agile methods of software development. Finally, it raised the basic features that a team of software design must have for the use of agile methods to be viable and ensure the quality of software generated at the end of the development process. KEY WORDS: Software development, Agile methods, Traditional methods, Scrum, XP, Waterfall, Spiral x

11 1 INTRODUÇÃO 1.1 Contextualização Os avanços tecnológicos vistos no último século e no início do século atual fizeram com que o software tenha papel imprescindível em diversos segmentos de atividades da sociedade atual. Cada vez mais equipamentos eletrônicos, que utilizam softwares de vários tipos para controlarem seu funcionamento, têm feito parte do cotidiano das pessoas, tanto na indústria, como no comércio e em domicílios. Essa crescente demanda por novos produtos tecnológicos aumenta proporcionalmente a demanda por desenvolvimento de novos softwares e conseqüentemente implica na busca por novas maneiras mais apropriadas de desenvolvê-los. Visto isto, torna-se claro que o aumento do mercado de software seja um fato consumado na sociedade atual. O aumento desde mercado também o tornou mais competitivo, fazendo com que as necessidades para desenvolvimento de software evoluam cada vez mais rapidamente e exigindo cada vez mais a necessidade de se adaptar a essas mudanças. A falta de envolvimento e comprometimento das pessoas que retinham o conhecimento sobre o problema, aliado a coleta de requisitos muito instáveis, ocasionou na constatação de que vários métodos de desenvolvimento de software se demonstrassem impróprios. No CHAOS Report de 1994 [Chaos], 365 empresas colaboraram com a avaliação de 3682 projetos, demonstrando que 83,2% foram cancelados ou entregues excedendo o orçamento ou o prazo estimado. Dentre esses projetos, o custo foi em média 89% acima do previsto e o atraso médio foi de 122% além do planejado. Os participantes também declararam as principais razões para esses resultados e apenas seis fatores representaram juntos a 60,35% das possíveis causas. Esses fatores são: requisitos incompletos, falta de envolvimento de usuários, mudanças de requisitos e especificações, falta de apoio da equipe de negócios, falta de recursos e expectativas não-realistas [Filho2008]. A Engenharia de Software tem como intuito principal buscar melhores formas de se projetar e desenvolver software para que problemas com relação a cumprimento de prazos e controle de custos de projetos de software sejam cada vez mais otimizados. 1

12 Uma grande quantidade de pessoas tem trabalhado em pesquisas de metodologias que auxiliam a equipe de projeto de um determinado software a gerenciar todos os aspectos que envolvem a sua produção. É inegável que grandes evoluções têm surgido nessa área, mas com as constantes mudanças do mercado de software mundial a necessidade de se desenvolver software com alta qualidade, baixo custo e em prazos cada vez mais curtos exigem que novas metodologias de desenvolvimento sejam projetadas, estudadas e implementadas para atender essas mudanças. Várias comunidades de desenvolvimento de software espalhadas pelo mundo, com a consciência de que a qualidade dos softwares desenvolvidos estava muito aquém do necessário, fizeram várias tentativas de melhorar o desenvolvimento de softwares, resultando em modelos tais como: Unified Process (UP), Cleanroom Software Engineering e Rapid Application Development (RAD) que apostaram em alternativas que se baseiam em processos pré-definidos. Também foram criados modelos de certificação para validar a aplicação dos processos. Nesse quesito se destacam o Capability Maturity Model Integration (CMMI), ISO e o modelo de Melhoria de Processos de Software Brasileiro (MPS.BR). Mas apesar das boas intenções dessas iniciativas, todas abordam o desenvolvimento de software como um processo que pode ser repetido mecanicamente, tentando enquadrá-lo em uma linha de produção. [Filho2008] Um dos grandes problemas das metodologias desenvolvidas no início da história da Engenharia de Software é o grande formalismo nos modelos de processos propostos, que vão à contramão do desenvolvimento de software exigido atualmente software de qualidade, com desenvolvimento rápido e de baixo custo. Apesar de hoje em dia ser facilmente possível adquirir um software em lojas de shopping center, supermercados e até mesmo em bancas de jornal, o desenvolvimento de um software segue padrões muito diferentes do desenvolvimento da maioria dos bens de consumo, como um avião, por exemplo. No caso de um avião, as maiores necessidades são em relação à matéria prima necessária e quais ferramentas utilizar. Após construir a primeira unidade de um avião é possível determinar quais ferramentas serão utilizadas e a quantidade de matéria prima necessária para se construir um novo avião. Além disso, a replicação de um avião pode seguir uma linha de montagem completamente automatizada, sem necessidade de intervenção humana. Já no caso de software, o problema não está relacionado com a replicação do mesmo, já que depois de pronto, um software 2

13 pode ser facilmente replicado a custo praticamente zero. O grande problema do software está em seu desenvolvimento, já que não há matéria prima palpável para tal. Na década de 90 começaram a surgir pesquisas em relação a metodologias de desenvolvimento de software que resultou no surgimento do que hoje são chamados métodos ágeis de desenvolvimento de software. As metodologias desenvolvidas anteriormente ao surgimento dos métodos ágeis tinham como fundamento básico a documentação e a previsibilidade dos processos. Elas buscavam levantar todas as necessidades e requisitos do software e entender todo o domínio do problema antes de iniciar o desenvolvimento. Depois que todas as necessidades e requisitos do sistema são levantados e analisados, é feito um planejamento para gerenciar todas as mudanças que podem ocorrer durante o processo de desenvolvimento do software. Já os métodos ágeis de desenvolvimento de software optam pela adaptabilidade. Métodos ágeis partem do pressuposto de que é praticamente impossível levantar todas as necessidades e requisitos de um software antes do início do seu desenvolvimento. Nos métodos ágeis os requisitos são levantados no decorrer do andamento do projeto e o planejamento é sempre contínuo, de modo que as adaptações as alterações dos requisitos possam ocorrer. Os métodos ágeis compreendem vários processos para desenvolvimento de software, levando em conta técnicas iterativas e incrementais baseadas em equipes auto organizadas, auto gerenciáveis e multifuncionais. A interação social entre os indivíduos que desenvolvem o software, o pleno funcionamento do software acima de uma documentação compreensível e a rápida resposta as mudanças ao invés de se seguir um plano previamente determinado são premissas básicas dos métodos ágeis de desenvolvimento de software. Levando-se em conta que os métodos ágeis têm como foco principal pequenas equipes e que 85% das empresas de software dos EUA maior produtor mundial de software são consideradas pequenas [Filho2008], a pesquisa e o aprimoramento desses métodos tem se tornado cada vez mais constante e importante. 3

14 1.2 Objetivo O principal objetivo deste trabalho é comparar métodos tradicionais e métodos ágeis de desenvolvimento de software e demonstrar quais as vantagens e desvantagens que os métodos ágeis têm em relação aos métodos tradicionais. Também é objetivo deste trabalho apresentar quais características uma equipe de desenvolvimento de software deve ter para que a utilização de métodos ágeis seja viável e garanta que o software entregue tenha a qualidade esperada pelo cliente A comparação entre os métodos apresentados será realizada analisando uma série de características comuns que os dois métodos têm para o desenvolvimento de um projeto de software. Essas características comuns compreendem o ciclo completo de desenvolvimento de um software, passando pelas fases de análise, projeto, desenvolvimento, testes e manutenção de um software. As características comuns que serão comparadas neste trabalho são: levantamento de requisitos e necessidades, necessidade de interação com o cliente, número de indivíduos que compõe a equipe de desenvolvimento, grau de maturidade desses indivíduos, prazos e custos da construção de um software, testes e entrega do software para o cliente e, por fim, a manutenção do software já completamente disponibilizado e em produção. No capítulo que contém os resultados e a conclusão do trabalho serão apresentadas e detalhadas as vantagens e as desvantagens que os métodos ágeis têm em relação aos métodos tradicionais de desenvolvimento de software através da análise realizada de cada característica comum apresentada. Também serão apresentadas quais são as características necessárias que uma equipe de desenvolvimento de software deve ter para que a utilização de métodos ágeis seja viável e garanta a qualidade do software gerado ao final do processo de desenvolvimento. No final do trabalho serão apresentados dois temas que poderão ser desenvolvidos em estudos futuros, utilizando-se como base os resultados deste trabalho. 4

15 1.3 Estrutura do Texto Para ajudar o leitor na leitura do texto, o mesmo está dividido da seguinte maneira: O capítulo 2 faz uma abordagem geral sobre métodos de desenvolvimento de software. O item 2.1 define os métodos tradicionais de desenvolvimento de software, dando ênfase para os métodos Cascata no item e o método Espiral no item 2.1.2, enquanto no item são brevemente descritos outros métodos tradicionais Já no item 2.2 são definidos os métodos ágeis de desenvolvimento de software. No item é descrita a origem dos métodos ágeis. Os valores ágeis definidos no Manifesto Ágil são descritos no item e no item são definidas as características comuns entre os métodos ágeis e os métodos tradicionais. Em relação à métodos ágeis, no item é detalhado o método Scrum, enquanto no item é detalhado o método XP, deixando para o item uma breve descrição de outros métodos ágeis. O capítulo 3 contém o desenvolvimento do projeto, com as explanações sobre os objetivos apresentados, utilizando os itens descritos no capitulo 2 para apresentar os argumentos que justificam as conclusões obtidas em relação aos objetivos definidos no início do trabalho. É feita a comparação entre os métodos tradicionais e os métodos ágeis de desenvolvimento, bem como as vantagens e desvantagens de se utilizas métodos ágeis de desenvolvimento de software e também quais as características necessárias uma equipe de desenvolvimento de software deve ter para utilizar métodos ágeis durante um projeto de software. O capítulo 4 contém a conclusão do trabalho, onde são mostrados os resultados obtidos pela comparação entre os métodos tradicionais e os métodos ágeis de desenvolvimento. Também são mostradas as vantagens e desvantagens de se utilizar métodos ágeis de desenvolvimento de software e, por fim, são concluídas quais são as características necessárias uma equipe de desenvolvimento de software deve ter. No item 4.1 são apresentadas as contribuições que este trabalho oferece para os seus leitores e no item 4.2 são apresentados trabalhos futuros que podem utilizar este trabalho como base para o seu desenvolvimento. 5

16 2 MÉTODOS DE DESENVOLVIMENTO DE SOFTWARE Neste capítulo descreveremos algumas das principais metodologias de desenvolvimento de software utilizadas por empresas na construção de softwares. Será dada uma visão geral nessas principais metodologias, sem se aprofundar em detalhes específicos de cada metodologia. Caso o leitor se interesse em se aprofundar em alguma metodologia citada, poderá utilizar as referências citadas durante o texto para tal. Primeiramente faremos um breve relato sobre métodos tradicionais de desenvolvimento de software, já que as mesmas têm um papel importantíssimo na história da Engenharia de Software, por ainda serem amplamente utilizadas em empresas de desenvolvimento de software desde o início da utilização de técnicas metodológicas para desenvolvimento de software. Por fim, aprofundaremos com mais intensidade em métodos ágeis de desenvolvimento de software; que tem ganhado grande espaço em empresas de desenvolvimento de software nos últimos anos e que será o tema principal deste trabalho. A Figura 1 mostra cronologicamente a evolução dos métodos de desenvolvimento de software mais conhecidos pela indústria de software. Na Figura 1 podemos ver que a maioria dos métodos ágeis surgiu antes mesmo do Manifesto Ágil [ManifestoAgil2001]. Neste trabalho falaremos abordaremos dois métodos tradicionais de desenvolvimento de software: Cascata, que é o primeiro método de que se tem conhecimento e tem importância histórica significativa. Também será abordado o método Espiral, por sem amplamente utilizado atualmente. Já em relação aos métodos ágeis de desenvolvimento, serão abordados os métodos XP e Scrum, por serem atualmente os mais pesquisados no meio acadêmico e mais utilizados pela indústria. 6

17 Figura 1. Histórico de publicação de metodologias de desenvolvimento de software. [Filho2008] 7

18 2.1 Metodologias tradicionais de desenvolvimento de software No início dos anos 70 a indústria de software passou a utilizar métodos de engenharia durante o desenvolvimento de software com o intuito de descrever processos que pudessem posteriormente ser replicados. Os métodos de engenharia proporcionam detalhes de como fazer para construir um software. Os métodos envolvem um amplo conjunto de tarefas que incluem: planejamento e estimativa de projeto, análise de requisitos de software e de sistema, projeto da estrutura de dados, arquitetura de programa e algoritmo de processamento, codificação, teste e manutenção. Os métodos da engenharia de software muitas vezes introduzem uma notação gráfica ou orientada à linguagem especial e introduzem um conjunto de critérios para a qualidade de software. [Pressman2004] Como visto na definição acima, métodos de engenharia têm como principal função descrever detalhes de como fazer um software. Para tal, o uso de ferramentas e modelos que pudessem representar graficamente esse como fazer foram sendo desenvolvidos com o tempo. Diagramas UML, especificações, cenários de uso, planos de trabalho, definições de teste, relatórios, análises, entre outros, são algumas das formas de definir artefatos utilizados em cada fase do desenvolvimento de um software. Para cada fase do desenvolvimento de software uma série de artefatos é definida para detalhar como aquela fase será executada, de modo que a fase seguinte do desenvolvimento possa utilizá-los na continuação do desenvolvimento. Assim que a fase é concluída, a fase seguinte obtém os artefatos desenvolvidos anteriormente, os atualiza e produz novos artefatos que serão utilizados pela fase seguinte. Esses passos se repetem até que o produto final tenha sido finalizado. A documentação gerada é fortemente utilizada na comunicação e na interação entre as pessoas alocadas no projeto a ser desenvolvido. É também utilizada na comunicação com pessoas que estão fora do processo de desenvolvimento, tais como clientes e usuários. O uso da documentação detalhada serve para demonstrar para o cliente aquilo que será desenvolvido. O uso da documentação pressupõe que um grupo vasto de pessoas possa desenvolver o mesmo projeto sem que se dividam o mesmo ambiente de trabalho, sem se relacionarem verbalmente ou, até mesmo, sem ao menos se conhecerem. Mas o que vemos na prática é que apenas o uso de uma documentação detalhada não substitui a interação entre as pessoas envolvidas no processo de desenvolvimento de um software. 8

19 Mudanças constantes durante o processo de desenvolvimento de software, seja por alterações de requisitos ou falhas no planejamento inicial do projeto, podem resultar em uma documentação extremamente complexa e de difícil compreensão, mesmo para as pessoas envolvidas no processo de desenvolvimento desde o seu início. A interação entre os envolvidos no processo de desenvolvimento, nestes casos, é uma forma mais eficaz de se estabelecer como e quais tarefas serão realizadas para atender as constantes mudanças que o processo de desenvolvimento pode sofrer. 9

20 2.1.1 Método cascata O método cascata foi o primeiro método amplamente utilizado pela engenharia de software com o intuito de descrever todos os passos de todos os processos de desenvolvimento de software. O paradigma do ciclo de vida clássico da engenharia de software, às vezes chamado modelo cascata, requer uma abordagem sistemática, seqüencial ao desenvolvimento do software, que se inicia no nível do sistema e avança ao longo da análise, projeto, codificação, teste e manutenção. [Pressman2004] Cada nível citado na definição acima pode ser caracterizado como uma fase do processo de desenvolvimento e deve prover uma série de artefatos que documentam cada fase. Todos esses artefatos são criados e posteriormente utilizados na fase seguinte. Abaixo estão descritas e detalhadas as seis fases que fazem parte do escopo de um projeto que utiliza o método cascata: Análise e engenharia de sistemas: Coleta de todos os requisitos para todos os elementos do sistema. A coleta desses requisitos é feita em nível de sistema e é feita a análise de alto nível nesses requisitos. Também é realizada uma análise de alto nível de requisitos tecnológicos, a fim de prever possíveis limitações de uso. Análise de requisitos de software: Nesta fase, a coleta dos requisitos de software é intensificada especificamente no software a ser desenvolvido, a fim de adquirir o conhecimento detalhado do negócio para o qual o software se propõe a tratar. As necessidades de desempenho, de interface e todos os outros métodos que os usuários terão para se relacionar com o software devem ser especificados, documentados e revistos com o cliente. Projeto: Esta fase define quatro atributos distintos do software: Modelagem, arquitetura, estrutura de dados e interfaces entre elementos e usuários do sistema. Todos os requisitos coletados na fase anterior devem ser cobertos nesta fase, a fim de atender todas as restrições e os níveis mínimos de desempenho e qualidade preestabelecidos. Como na fase anterior, o projeto é documentado e passa a fazer parte da especificação completa do sistema. 10

21 Codificação: A especificação completa do software deve ser traduzida de forma que a máquina consiga executar todas as tarefas definidas. O código gerado deve seguir exatamente o que foi especificado nas fases anteriores. Testes: Cada funcionalidade do software é testada e validada a fim de verificar se todos os requisitos e restrições definidas foram codificados de forma coerente com o que foi definido na especificação. Os testes podem ser do tipo caixa preta, que verifica apenas as interfaces que são disponibilizadas pelo sistema, ou podem ser do tipo caixa branca, que verifica o código gerado durante a fase de codificação. Manutenção: Erros ou mudanças de requisitos podem ser identificados pelo cliente durante a utilização. Assim, ajustes devem ser realizados no software para que estes erros sejam corrigidos e que os novos requisitos sejam implementados. Uma nova versão do software é construída e disponibilizada para o cliente, incluindo os ajustes e correções necessárias. Figura 2 Método cascata Mesmo sendo o mais antigo método utilizado para desenvolvimento de software, o método cascata possui alguns problemas em relação a sua aplicabilidade: 11

22 1. Os projetos reais dificilmente seguem um fluxo seqüencial. Interações podem ocorrer durante o desenvolvimento, o que traz problemas na utilização do método; 2. É praticamente impossível definir todos os requisitos do sistema no início do projeto. O método cascata exige que todos os requisitos sejam definidos no início do projeto; 3. O cliente só terá uma versão de software no final de todo o processo de desenvolvimento. Assim, verificações de usabilidade e erros na concepção do problema só serão descobertos depois do software estar pronto, o que causará alto custo de manutenção. Cada um desses problemas citados é real e embora o método cascata tenha essa fragilidade, ele é extremamente mais eficaz do que não utilizar método nenhum para desenvolvimento de software. 12

23 2.1.2 Método espiral O método espiral, também conhecido como método iterativo-incremental, apresenta duas inovações se comparado com o método cascata. Introdução do modelo iterativo; Inclusão de análise de riscos. No modelo iterativo as fases de desenvolvimento são realizadas várias vezes, definindo ciclos de desenvolvimento. Já a análise de riscos propõe momentos em que as pessoas envolvidas no projeto podem identificar e avaliar possíveis dificuldades encontradas durante o desenvolvimento. O método espiral utiliza a abordagem do método cascata como uma das etapas do ciclo de desenvolvimento. A cada iteração o software evolui e fica mais próximo da versão final que será entregue para o cliente. Quatro etapas são definidas a cada iteração. [Pressman2004] Essas quatro etapas são: Planejamento: Inicialmente são coletados os principais requisitos do sistema para realizar um planejamento de alto nível, determinar objetivos, alternativas e restrições do projeto. Depois do primeiro ciclo, a avaliação do cliente também será utilizada nessa iteração. Análise de riscos: São avaliados os riscos futuros do projeto, com base nos requisitos coletados. A partir dessa identificação, procura-se encontrar soluções para minimizar o impacto que estes riscos possam oferecer. Com essas soluções definidas, toma-se a decisão de seguir o desenvolvimento do projeto ou de cancelá-lo. Engenharia: O produto planejado durante a fase de planejamento é efetivamente implementado. Porém, não é desenvolvido todo o sistema de uma única vez. Apenas o que foi planejado para uma única iteração é desenvolvido. A cada nova iteração, um novo módulo do sistema é desenvolvido e integrado com os módulos desenvolvidos anteriormente. Para cada iteração da fase de engenharia, utiliza-se o modelo cascata ou outro modelo de desenvolvimento de software. Avaliação do cliente: O cliente avalia o que foi desenvolvido na fase de engenharia e acrescenta comentários, sugestões e alteração a serem realizadas. Essas avaliações do cliente serão utilizadas na nova iteração, como entrada para a etapa de planejamento. 13

24 A Figura 3 demonstra graficamente o modelo espiral e a interação entre os ciclos de desenvolvimento. Figura 3 Método Espiral (Adaptado de A análise de riscos possibilita a todos os envolvidos no projeto a possibilidade de periodicamente avaliar o andamento do projeto e priorizar a atenção em pontos específicos que podem se tornar impeditivos da continuidade futura do mesmo. Com isso, todos os envolvidos no projeto têm a obrigação de avaliar e modificar constantemente seus objetivos e a viabilidade do projeto, durante a sua execução. Muitas vezes o software produzido não atende as necessidades definidas pelo cliente, devido a falta de conhecimento de técnicas e de domínio completo do projeto como um todo. O caráter evolutivo desse método tem como foco principal o conhecimento gradativo do problema, adquirido a cada nova iteração, e com isso, mais tempo para análise e compreensão das necessidades do cliente. Contudo, a grande desvantagem do espiral é definir a quantidade de iterações que o projeto terá. Assim, torne-se extremamente complexo e difícil determinar quanto será o custo e quando será o prazo final para encerramento do projeto. 14

25 2.1.3 Outros métodos tradicionais de desenvolvimento de software Os métodos cascata e espiral foram abordados com mais detalhes neste trabalho devido a sua importância histórica e a sua relevância e utilização na indústria de software atual. Já o método espiral surgiu na metade da década de 80 e obteve grande sucesso, passando a ser muito utilizado até hoje em várias empresas de desenvolvimento de software. Além desses dois métodos tradicionais de desenvolvimento de software, podemos citar outros como Prototipação [Pressman2004] e o RUP (Rational Unified Process) [RUP1999] Prototipação O método de prototipação tem como base principal a criação de um pequeno protótipo do software que será desenvolvido com o intuito de, a partir desse protótipo, novos requisitos e necessidade do software sejam identificados e propiciar para o cliente a possibilidade de sugerir mudanças e identificar falhas na análise e no desenvolvimento do software. Um protótipo pode ser desenvolvido para que o cliente possa avaliar o design das telas e a facilidade de uso. Mas um protótipo também pode ser desenvolvido para que analisar a viabilidade da utilização de novas tecnologias ou para testar o desempenho do software, por exemplo, simulando a sua utilização em um ambiente com as mesmas características que terá o ambiente onde o software será instalado no cliente RUP Apesar de o RUP ser tratado por alguns autores como sendo um método ágil de desenvolvimento de software por se tratar de um método com várias características adaptativas, a maioria dos autores o descrevem como sendo um método tradicional de desenvolvimento. O método RUP surgiu em 1999, dentro da Rational Corporation, uma empresa americana que tinham como proprietários três especialistas em desenvolvimento de software: Ivar Jacobson, Grady Booch, e J. Rumbaugh. Em 2003 a Rational Corporation foi vendida para a IBM que, no entanto, preservou o nome do método já disseminado por todo o mundo naquele momento. O RUP define quatro fases principais no ciclo de desenvolvimento de um software. Iniciação, Elaboração, Construção e Transição. 15

26 Na Iniciação são definidos, em poucos dias, quais os objetivos, requisitos básicos e as prioridades principais do projeto. Na Elaboração são listados e detalhados todos os requisitos do sistema, além de se iniciar o desenho da arquitetura dos módulos prioritários do sistema. Já na Construção é realizada a implementação do software tendo como base os artefatos gerados nas fases anteriores. Por fim, na Transição o software final é entregue e são realizados ajustes e correções de possíveis bugs que o sistema venha a apresentar. Figura 4 Fases e volume de atividades para cada atividade do RUP [RUP2008] 16

27 2.2 Métodos ágeis de desenvolvimento de software Neste capítulo vamos descrever a origem e as os princípios básicos dos métodos ágeis e descreveremos dois dos métodos ágeis (Scrum, XP) mais discutidos e utilizados atualmente, tanto no meio acadêmico quanto na indústria de software. Scrum e XP foram escolhidos para serem detalhados neste trabalho por serem métodos ágeis que podem ser utilizados em conjunto, já que Scrum tem como foco principal o gerenciamento de um projeto de desenvolvimento de software enquanto XP tem como foco principal definir as técnicas que serão utilizadas na fase de programação de um projeto de desenvolvimento de software. Também serão brevemente citados outros métodos ágeis de desenvolvimento de software e, caso haja interesse no aprofundamento dessas metodologias, mais detalhes poderão ser obtidos utilizando as referências citadas no texto. 17

28 2.2.1 Origem dos métodos ágeis de desenvolvimento de software Como visto anteriormente, os métodos tradicionais se baseavam fortemente em atividades predefinidas, com extensa documentação e processos prescritivos. Assim, utilizando as metodologias tradicionais de desenvolvimento de software o trabalho dos analistas de desenvolvimento se inicia com a coleta de todos os requisitos do software, com a elaboração de um projeto completo de alto nível, seguida da implementação e de testes, finalizando com a manutenção do software já pronto. Na década de 90 começaram a surgir novos métodos de desenvolvimento baseados em dois pontos principais: melhor comunicação entre a equipe e em processos que melhor se adaptam às mudanças dos requisitos. O primeiro ponto, que trata da melhor comunicação entre a equipe, foi abordado devido a constatação que grande parte da documentação gerada durante o processo inicial do desenvolvimento de software torna o processo de implementação muito burocrático, tirando a capacidade criativa dos desenvolvedores. Além disso, a manutenção dos documentos gerados durante o processo de análise dos requisitos se torna uma tarefa complexa caso haja mudanças de requisitos durante o processo de desenvolvimento, além de causar impacto em todos os processos que foram desenvolvidos baseados na documentação que foi alterada. A comunicação contínua entre os membros da equipe, gerando documentos menos complexos, mas com maior qualidade de informação, diminui o impacto das mudanças de requisitos durante o processo de desenvolvimento e aumenta o grau de entendimento do problema a ser resolvido, já que todos os membros da equipe estão em constante comunicação, trocando experiências e expondo lições aprendidas durante o desenvolvimento do software. Já o segundo ponto, que trata de processos que melhor se adaptam às mudanças dos requisitos, foi abordado devido a percepção da maioria dos especialistas em desenvolvimento de software de que, o melhor e mais eficaz método de coleta de requisitos de um sistema se dá de forma gradual, de acordo com o andamento do projeto e com o aprimoramento do entendimento do negócio o qual o software a ser desenvolvido se propõe a tratar por parte da equipe envolvida no projeto, além da grande quantidade de requisitos que se alteram durante o andamento do projeto. 18

29 A coleta total de requisitos no início do projeto é praticamente impossível, devido a falta de entendimento completo do negócio, além de ser custosa alteração dos requisitos durante o processo de desenvolvimento. Visto isso, pode-se dizer que os métodos ágeis de desenvolvimento de software utilizam métodos incrementais e iterativos e são aplicados a equipes auto gerenciáveis e auto organizáveis, onde todos os membros da equipe têm participação e voz ativa em todas as etapas do desenvolvimento, tendo como alicerce principal a troca de conhecimento entre todos os membros da equipe, aliado a uma documentação enxuta, mas de alto valor para o entendimento, manutenção e futura replicação do software a ser desenvolvido. Depois de muitos anos de experiência, dezessete especialistas em desenvolvimento de software, que não utilizavam os métodos tradicionais e sim métodos de desenvolvimento seguindo os dois pontos abordados anteriormente, verificaram que seus métodos de trabalho, além de serem mais eficazes e produzirem software com melhor qualidade, possuíam vários pontos em comum. Assim, em 2001, estes dezessete especialistas se reuniram durante um final de semana em uma estação de ski no estado de Utah, EUA, para discutir seus métodos de trabalho e proporem uma nova metodologia de desenvolvimento de software para substituir os métodos tradicionais. Durante a reunião, os dezessete especialistas não conseguiram definir uma metodologia de desenvolvimento, já que chegaram a conclusão que desenvolver software é uma tarefa extremamente complexa e é impossível defini-la em um único processo. De acordo com o que foi debatido, desenvolver software é uma tarefa que depende praticamente de pessoas em todas as suas etapas, além de ser composta de um número grande de variáveis que podem se alterar durante as etapas de desenvolvimento. Contudo, o grupo chegou a conclusão que uma série de princípios básicos deviam ser seguidos para garantir a qualidade do software a ser desenvolvidos. Ao final da reunião foram definidos doze princípios básicos para a obtenção de bons resultados no desenvolvimento de software. Estes doze princípios são: 1. A prioridade é satisfazer o cliente através de entregas contínuas e freqüentes; 2. Receber bem as mudanças de requisitos, mesmo em uma fase avançada do projeto; 3. Entregas com freqüência, sempre na menor escala de tempo; 19

30 4. As equipes de negócio e de desenvolvimento devem trabalhar juntas diariamente; 5. Manter uma equipe motivada fornecendo ambiente, apoio e confiança necessários; 6. A maneira mais eficiente da informação circular é através de uma conversa face-a-face; 7. Ter o sistema funcionando é a melhor medida de progresso; 8. Processos ágeis promovem o desenvolvimento sustentável; 9. Atenção contínua à excelência técnica e a um bom projeto aumentam a agilidade; 10. Simplicidade é essencial; 11. As melhores arquiteturas, requisitos e projetos provêm de equipes organizadas; 12. Em intervalos regulares, a equipe deve refletir sobre como se tornar mais eficaz. [ManifestoAgil2001] A partir desses doze princípios básicos, foi publicado o Manifesto Ágil, que os representa em quatro premissas: 1. Indivíduos e iterações são mais importantes do que processos e ferramentas 2. Software funcionando é mais importante do que documentação completa 3. Colaboração com o cliente é mais importante do que negociação de contratos 4. Adaptação a mudanças é mais importante do que seguir o plano inicial [ManifestoAgil2001] 20

31 2.2.2 Valores ágeis Neste capítulo serão recapituladas as quatro premissas básicas definidas no Manifesto Ágil. Para cada uma delas será dada a abordagem completa da sua essência e o porquê de serem definidas como pontos chave para melhor desenvolvimento de um software. Essas quatro premissas básicas também são conhecidas como valores ágeis de desenvolvimento de software. Primeiro valor ágil: Indivíduos e iterações são mais importantes do que processos e ferramentas. [ManifestoAgil2001] Este valor ágil vem de encontro com o primeiro ponto abordado no item : Quanto melhor for a comunicação e a troca de experiências e lições aprendidas entre os membros da equipe de desenvolvimento, mais rápido e melhor será o desenvolvimento do software. A mudança de foco do processo e das ferramentas de desenvolvimento para os indivíduos e suas interações causa uma grande desconfiança por parte dos analistas e desenvolvedores mais conservadores, pois se trata de uma mudança radical em relação aos métodos tradicionais de desenvolvimento, já que estes têm seu foco justamente em processos extremamente rígidos e predefinidos, que devem ser seguidos do início ao fim do projeto. Mas como já foi dito anteriormente, a burocracia causada pela grande quantidade de documentos gerados e a rigidez dos processos que devem ser seguidos ao se utilizar metodologias tradicionais não são o foco principal do desenvolvimento do software, segundo os formuladores do Manifesto Ágil. Pelo contrário, eles definem como essencial para o desenvolvimento a comunicação e a troca de experiências e lições aprendidas entre os integrantes da equipe de desenvolvimento. Segundo valor ágil: Software funcionando é mais importante do que documentação completa. [ManifestoAgil2001] Outro ponto que pode causar desconfiança por parte de analistas e desenvolvedores acostumados a desenvolver software utilizando métodos tradicionais é entregar constantemente para o cliente, mesmo que pequenos, módulos do software em funcionamento ao invés de gastar um longo período de tempo e esforço para preparar a documentação completa do software a ser desenvolvido. Entregando pequenos módulos do software funcionando em um curto intervalo de tempo mostra-se mais eficaz do que entregar a documentação completa do software de uma única vez e, após um longo período de tempo, entregar o software completo. Isto se deve ao fato de que software 21

32 funcionando gera para o cliente a sensação de que o projeto realmente está em pleno funcionamento, que suas necessidades estão sendo atendidas e que o problema a ser tratado pelo software está sendo resolvido. A cada nova entrega de um módulo de software funcionando, ele é integrada com os módulos que já havia sido entregues e integrados anteriormente. Assim, o cliente tem condição de sugerir melhorias do software durante a etapa de desenvolvimento e não apenas ao final de todo o seu ciclo, o que diminui o custo de manutenção e faz com que o cliente tenha, ao final do projeto, um software que atenda o mais próximo possível todas as suas necessidades iniciais. A Figura 5 mostra a diferença entre o custo de manutenção utilizando a metodologia tradicional Cascata [item ] e a metodologia ágil XP [item ]. Figura 5 Comparação de custo de mudança entre cascata e XP. [Filho2002] O que se pode verificar na Figura 5 é que na fase inicial do projeto, a metodologia XP tem maior custo de mudança em relação à metodologia Cascata. Isso se deve ao fato das constantes mudanças de requisitos e melhorias sugeridas pelo cliente durante a fase de desenvolvimento. Já na metodologia cascata, a mudanças de requisitos e as melhorias sugeridas pelo cliente só serão atendidas após a entrega do software pronto. Neste caso, qualquer alteração no software pode causar impacto em vários módulos do mesmo, aumentando a complexidade e o custo de qualquer modificação que tenha que ser realizada. Na pior das hipóteses, o cliente pode chegar à conclusão que o software desenvolvido não atende às suas necessidades, gerando o trabalho de se desenvolver praticamente todo o sistema novamente. Terceiro valor ágil: Colaboração com o cliente é mais importante do que negociação de contratos. [ManifestoAgil2001] Este terceiro valor ágil está fortemente ligado com o segundo valor ágil. Ele destaca o fato de que a colaboração e a interação constante com o cliente e muito mais importante e eficaz do que a negociação de contratos. 22

33 Para a equipe de desenvolvimento a constante colaboração do cliente faz com que a equipe tenha maiores e melhores condições de desenvolver o software que o cliente espera, já que o entendimento do negócio a ser tratado pode ser ampliado e melhor esclarecido a cada interação, além das constantes sugestões de melhorias que o cliente pode sugerir durante o desenvolvimento, o que faz com que o software esteja cada vez mais próximo do que o cliente espera receber. Para o cliente o constante contato com a equipe de desenvolvimento garante que o entendimento do problema a ser tratado pelo software a ser produzido esteja sempre em evolução, fazendo com que a equipe esteja alinhada com a linha de pensamento do cliente, não deixando para depois da entrega do software a percepção de que o que foi desenvolvido não atende as necessidades do cliente. Outro fator positivo para o cliente desse constante contato com a equipe de desenvolvimento é o fato do acompanhamento do projeto ser mais freqüente, fazendo com que possíveis mudanças no cronograma do projeto sejam melhor gerenciadas e discutidas em conjunto, minimizando assim possíveis desvios de custos e prazos de entrega de entrega do software. Quarto valor ágil: Adaptação a mudanças é mais importante do que seguir o plano inicial. [ManifestoAgil2001] O último valor ágil definido pelo método ágil é muito baseado em técnicas iterativas e incrementais, uma vez que sugere que, mais importante do que seguir a qualquer custo o plano inicial é estar sempre apto a se adaptar as mudanças surgem durante o ciclo de desenvolvimento. Coletar todos os requisitos de um software no início do projeto e garantir que estes requisitos não se alterem é praticamente uma utopia do desenvolvimento de software. A experiência de vários especialistas em desenvolvimento desde o início da computação garante que a identificação completa de todos os requisitos do sistema durante a fase inicial do projeto é praticamente impossível devido à dificuldade de entendimento de todo o problema a ser tratado pelo software a ser desenvolvido e também as constantes alterações dos requisitos do software devido a mudanças estratégicas da empresa durante o ciclo de desenvolvimento ou devido a evoluções tecnológicas que podem surgir durante este período. Estar em constante contato com o cliente, verificando possíveis alterações estratégicas que podem surgir; definir ciclos de desenvolvimento mais curtos, diminuindo e priorizando o escopo das iterações, garantindo que as possíveis alterações de um requisito não aconteçam durante a iteração em que se esteja desenvolvendo o módulo do sistema que trata especificamente do requisito alterado 23

34 e, após a alteração do requisito, identificar rapidamente quais módulos do software sofrem impacto com a alteração do requisito e devem ser alterado, são formas de diminuir o custo de manutenção do software e garantir que qualquer mudança que ocorra durante o ciclo de desenvolvimento venha a ser rapidamente adaptada ao software que está sendo construído. 24

35 2.2.3 Características comuns entre métodos tradicionais e métodos ágeis Algumas características são comuns entre os métodos tradicionais e os métodos ágeis de desenvolvimento de software. Neste item abordaremos algumas dessas características comuns entre os métodos, que podem ser utilizadas durante o projeto de desenvolvimento de um software independentemente do tipo do método definido para o projeto. Segundo [Filho2008], essas características comuns entre os métodos são: testes, desenvolvimento iterativo, desenvolvimento incremental, colaboração, estimativas, negociação e priorização. Neste trabalho serão abordados somente as seguintes características: testes, desenvolvimento iterativo e desenvolvimento incremental. Testes: Nos métodos tradicionais de desenvolvimento de software, a fase de testes e a fase de implementação são duas fases completamente distintas. Já nos métodos ágeis de desenvolvimento de software as duas fases são realizadas simultaneamente, já que a mesma pessoa que desenvolve o código do software também escreve os casos de teste e testa o software desenvolvido. A criação e a execução dos casos de teste já na fase inicial do desenvolvimento do software facilitam e identificam falhas no desenvolvimento em um estágio inicial do desenvolvimento, facilitando a sua correção e impedindo que o erro se propagasse ou afetasse outros módulos do software. O uso de testes automatizados desde o início do projeto também é outra característica dos métodos ágeis de desenvolvimento de software, facilitando a execução dos testes e garantindo que todos os requisitos são atendidos, mesmo após a implementação e integração com um novo módulo do software. Desenvolvimento iterativo: É uma característica utilizada em todos os métodos ágeis de desenvolvimento de software, mas não em todos os métodos tradicionais. Como visto neste trabalho, desenvolvimento iterativo é uma característica do método Espiral, mas não do método Cascata. Essa característica define que o desenvolvimento de software será realizado de forma iterativa, isto é, o desenvolvimento de software será realizado em partes e, ao final de cada parte, o novo módulo do software produzido é integrado com os módulos já finalizados. Desta forma é mais fácil a adaptação da equipe de desenvolvimento e menos 25

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 5 http://www.ic.uff.br/~bianca/engsoft2/ Aula 5-05/05/2006 1 Dúvidas da aula passada RUP (Rational Unified Process) é uma ferramenta ou um processo? Resposta: os dois. O

Leia mais

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças. METODOLOGIAS ÁGEIS SURGIMENTO As metodologias ágeis surgiram em resposta ao problema dos atrasos no desenvolvimento de software e aos cancelamentos, devido ao fato dos sistemas demorarem muito tempo para

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Profª Dra. Ana Paula Gonçalves Serra Engenharia de O Processo Uma Visão Genérica Capítulo 2 (até item 2.2. inclusive) Engenharia de - Roger Pressman 6ª edição McGrawHill Capítulo

Leia mais

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS O termo metodologia não possui uma definição amplamente aceita, sendo entendido na maioria das vezes como um conjunto de passos e procedimentos que

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr Engenharia de Software Apostila I >>> Introdução à ES - HEngholmJr Histórico de Revisões Data Versão Descrição Autor 12/08/2014 1.0 Criação da primeira versão HEngholmJr Agenda Introdução à Engenharia

Leia mais

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no 1.1 RATIONAL UNIFIED PROCESS (RUP) O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no processo que atende pelo nome de Processo Unificado (ou UP do inglês Unified

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia

Leia mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1. ARCO - Associação Recreativa dos Correios Sistema para Gerenciamento de Associações Recreativas Versão Histórico da Revisão Data Versão Descrição Autor Página

Leia mais

Sistemas de Informação I

Sistemas de Informação I + Sistemas de Informação I Processo de software I Ricardo de Sousa Britto rbritto@ufpi.edu.br + O que é Engenharia de Software n Definição dada pela IEEE [IEE93]: n Aplicação de uma abordagem sistemática,

Leia mais

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas. Métodos Ágeis Edes Garcia da Costa Filho edes_filho@dc.ufscar.br 1 Tópicos Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Extreme Programming (XP). Referências Bibliográficas. 2 Histórico

Leia mais

Pós Graduação Engenharia de Software

Pós Graduação Engenharia de Software Pós Graduação Engenharia de Software Ana Candida Natali COPPE/UFRJ Programa de Engenharia de Sistemas e Computação FAPEC / FAT Estrutura do Módulo Parte 1 QUALIDADE DE SOFTWARE PROCESSO Introdução: desenvolvimento

Leia mais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o

Leia mais

PROFESSOR: CRISTIANO MARIOTTI

PROFESSOR: CRISTIANO MARIOTTI PROFESSOR: CRISTIANO MARIOTTI Conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software; Considerado um dos principais mecanismos para se obter software de qualidade

Leia mais

1 Introdução 1.1. Motivação

1 Introdução 1.1. Motivação 9 1 Introdução 1.1. Motivação Ao longo das últimas décadas, observou-se um aumento enorme na complexidade dos sistemas de software desenvolvidos, no número de profissionais que trabalham nesta área, na

Leia mais

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis Profª Esp.: Maysa de Moura Gonzaga 2º Semestre / 2011 Extreme Programming (XP); DAS (Desenvolvimento Adaptativo de Software)

Leia mais

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 2 Processos de Software slide 1 Tópicos apresentados Modelos de processo de software. Atividades de processo. Lidando com mudanças. Rational Unified Process (RUP). Um exemplo de um processo de

Leia mais

Processos de Desenvolvimento de Software

Processos de Desenvolvimento de Software Processos de Desenvolvimento de Software Gerenciamento de Projetos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

Leia mais

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil Profª Esp.: Maysa de Moura Gonzaga 2º Semestre / 2011 O Processo Unificado dos autores Ivar Jacobson, Grady Booch e James

Leia mais

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como: Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: SIG Aula N : 11 Tema: Como desenvolver e

Leia mais

Capítulo 1. Extreme Programming: visão geral

Capítulo 1. Extreme Programming: visão geral Capítulo 1 Extreme Programming: visão geral Extreme Programming, ou XP, é um processo de desenvolvimento de software voltado para: Projetos cujos requisitos são vagos e mudam com freqüência; Desenvolvimento

Leia mais

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Engenharia de Software Parte I Introdução Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Mitos do Desenvolvimento de Software A declaração de objetivos é suficiente para se construir um software.

Leia mais

O modelo unificado de processo. O Rational Unified Process, RUP.

O modelo unificado de processo. O Rational Unified Process, RUP. Cursos: Sistemas de Informação Disciplina: Administração ADM Prof. Jarbas Avaliação: Prova B1, 5º/6º semestres Data: 27/09/2010 Nome: Gabarito RA: Assinatura: Turma: 1) Segundo as afirmações a seguir,

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

Processo de Desenvolvimento Unificado

Processo de Desenvolvimento Unificado Processo de Desenvolvimento Unificado Processo de Desenvolvimento de Software? Conjunto de atividades bem definidas; com responsáveis; com artefatos de entrada e saída; com dependências entre as mesmas

Leia mais

Engenharia de Software Processo de Desenvolvimento de Software

Engenharia de Software Processo de Desenvolvimento de Software Engenharia de Software Processo de Desenvolvimento de Software Prof. Edison A. M. Morais prof@edison.eti.br http://www.edison.eti.br Objetivo (1/1) Conceituar PROCESSO E CICLO DE VIDA, identificar e conceituar

Leia mais

Desenvolvimento Ágil de Software

Desenvolvimento Ágil de Software Desenvolvimento Ágil de Software Métodos ágeis (Sommerville) As empresas operam em um ambiente global, com mudanças rápidas. Softwares fazem parte de quase todas as operações de negócios. O desenvolvimento

Leia mais

Com metodologias de desenvolvimento

Com metodologias de desenvolvimento Sociedade demanda grande quantidade de sistemas/aplicações software complexo, sistemas distribuídos, heterogêneos requisitos mutantes (todo ano, todo mês, todo dia) Mas, infelizmente, não há gente suficiente

Leia mais

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com REVISÃO ENGENHARIA DO SOFTWARE Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Software Sequencia de Instruções a serem seguidas ou executadas Dados e rotinas desenvolvidos por computadores Programas

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Jonas de Souza H2W SYSTEMS

Jonas de Souza H2W SYSTEMS Jonas de Souza H2W SYSTEMS 1 Tecnólogo em Informática Fatec Jundiaí MBA em Gerenciamento de Projetos FGV Project Management Professional PMI Mestrando em Tecnologia UNICAMP Metodologia de apoio à aquisição

Leia mais

MASTER IN PROJECT MANAGEMENT

MASTER IN PROJECT MANAGEMENT MASTER IN PROJECT MANAGEMENT PROJETOS E COMUNICAÇÃO PROF. RICARDO SCHWACH MBA, PMP, COBIT, ITIL Atividade 1 Que modelos em gestão de projetos estão sendo adotados como referência nas organizações? Como

Leia mais

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software. Processos de Software Objetivos Apresentar os modelos de processo de software Conjunto coerente de atividades para especificar, projetar, implementar e testar s de software Descrever os diferentes modelos

Leia mais

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria Agenda Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria Introdução Processo de software é o conjunto de ferramentas, métodos

Leia mais

Gerenciamento de projetos. cynaracarvalho@yahoo.com.br

Gerenciamento de projetos. cynaracarvalho@yahoo.com.br Gerenciamento de projetos cynaracarvalho@yahoo.com.br Projeto 3URMHWR é um empreendimento não repetitivo, caracterizado por uma seqüência clara e lógica de eventos, com início, meio e fim, que se destina

Leia mais

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Engenharia de Software: Introdução Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Programa 1. O processo de engenharia de software 2. UML 3. O Processo Unificado 1. Captura de requisitos 2.

Leia mais

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr Metodologia de Desenvolvimento de Software Prof. M.Sc. Sílvio Bacalá Jr Objetivos Discutir aspectos de Engenharia de Software Aplicar um método de desenvolvimento para especificação e projeto de software

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Sistemas de Informação e Programação II Odorico Machado Mendizabal

Sistemas de Informação e Programação II Odorico Machado Mendizabal Sistemas de Informação e Programação II Odorico Machado Mendizabal Universidade Federal do Rio Grande FURG C3 Engenharia de Computação 16 e 23 de março de 2011 Processo de Desenvolvimento de Software Objetivos

Leia mais

Introdução ao Processo Unificado (PU)

Introdução ao Processo Unificado (PU) Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX Introdução ao Processo Unificado (PU) Prof. Fernando Maia da Mota Slides gentilmente cedidos por Profa. Dra. Maria Istela Cagnin

Leia mais

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho.

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho. - DSI DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho. Preocupação: Problema técnicos Mudança na natureza e conteúdo do trabalho

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 3 Teste Estático SUMÁRIO INTRODUÇÃO... 3 1. Definição... 3 2. Custo Versus Benefício...

Leia mais

Estratégia de TI. Posicionamento Estratégico da TI: como atingir o alinhamento com o negócio. Conhecimento em Tecnologia da Informação

Estratégia de TI. Posicionamento Estratégico da TI: como atingir o alinhamento com o negócio. Conhecimento em Tecnologia da Informação Conhecimento em Tecnologia da Informação Conhecimento em Tecnologia da Informação Estratégia de TI Posicionamento Estratégico da TI: como atingir o alinhamento com o negócio 2011 Bridge Consulting Apresentação

Leia mais

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva. juliocesar@tecnocracia.eti.br. Http://e-academy.com.br

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva. juliocesar@tecnocracia.eti.br. Http://e-academy.com.br Faculdade Pitágoras Engenharia de Software Prof.: Julio Cesar da Silva juliocesar@tecnocracia.eti.br Http://e-academy.com.br Evolução do Software (1950 1965) - O hardware sofreu contínuas mudanças - O

Leia mais

MODELO CMM MATURIDADE DE SOFTWARE

MODELO CMM MATURIDADE DE SOFTWARE MODELO CMM MATURIDADE DE SOFTWARE O modelo CMM Capability Maturity Model foi produzido pelo SEI (Software Engineering Institute) da Universidade Carnegie Mellon (CMU), em Pittsburgh, EUA, por um grupo

Leia mais

A Disciplina Gerência de Projetos

A Disciplina Gerência de Projetos A Disciplina Gerência de Projetos Atividades, Artefatos e Responsabilidades hermano@cin.ufpe.br Objetivos Apresentar atividades da disciplina Gerência de Projetos Discutir os artefatos e responsáveis envolvidos

Leia mais

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2 .:: Universidade Estadual de Maringá Bacharelado em Informática Eng. de Software III :. Sistema de Gerenciamento de Eventos - Equipe 09 EPSI Event Programming System Interface Metodologia e Gerenciamento

Leia mais

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas PIM PROGRAMA DE INTEGRAÇÃO COM O MERCADO GUIA DE CURSO Tecnologia em Sistemas de Informação Tecnologia em Desenvolvimento Web Tecnologia em Análise e Desenvolvimento de Sistemas Tecnologia em Sistemas

Leia mais

TI em Números Como identificar e mostrar o real valor da TI

TI em Números Como identificar e mostrar o real valor da TI TI em Números Como identificar e mostrar o real valor da TI João Maldonado / Victor Costa 15, Outubro de 2013 Agenda Sobre os Palestrantes Sobre a SOLVIX Contextualização Drivers de Custo Modelo de Invenstimento

Leia mais

5. Métodos ágeis de desenvolvimento de software

5. Métodos ágeis de desenvolvimento de software Engenharia de Software 5. Métodos ágeis de desenvolvimento de software Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Desenvolver e entregar software o mais rapidamente possível é hoje em dia um dos

Leia mais

Processos de Software

Processos de Software Processos de Software Prof. Márcio Lopes Cornélio Slides originais elaborados por Ian Sommerville O autor permite o uso e a modificação dos slides para fins didáticos O processo de Um conjunto estruturado

Leia mais

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

! Introdução.  Motivação para Processos de Software. ! Processo Unificado (USDP)  Definições  RUP x USDP  Características do Processo Unificado Agenda! Introdução " Motivação para Processos de Software! (USDP) " Definições " RUP x USDP " Características do! Descrição detalhada do! Processos Derivados! Templates simplificados! Conclusões 2 Processo

Leia mais

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES Implementação MPS.BR 26 de maio de 2008 4 horas de duração e-mail: (DEIXAR EM BRANCO) RESULTADO: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Nota INSTRUÇÕES Para a maioria das questões você tem mais de uma opção e

Leia mais

PLANEJAMENTO E PROJETOS. Lílian Simão Oliveira

PLANEJAMENTO E PROJETOS. Lílian Simão Oliveira PLANEJAMENTO E GERENCIAMENTO DE PROJETOS Lílian Simão Oliveira Contexto Gerentes lutam com projetos assustadores e com prazos finais difíceis de serem cumpridos Sistemas não satisfazem aos usuários Gastos

Leia mais

Gerenciamento de Riscos do Projeto Eventos Adversos

Gerenciamento de Riscos do Projeto Eventos Adversos Gerenciamento de Riscos do Projeto Eventos Adversos 11. Gerenciamento de riscos do projeto PMBOK 2000 PMBOK 2004 11.1 Planejamento de gerenciamento de riscos 11.1 Planejamento de gerenciamento de riscos

Leia mais

3 Qualidade de Software

3 Qualidade de Software 3 Qualidade de Software Este capítulo tem como objetivo esclarecer conceitos relacionados à qualidade de software; conceitos estes muito importantes para o entendimento do presente trabalho, cujo objetivo

Leia mais

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE Prof. Msc. Hélio Esperidião O QUE É UM ALGORITMO? É qualquer procedimento computacional bem definido que informa algum valor ou conjunto de valores como entrada

Leia mais

Porque estudar Gestão de Projetos?

Porque estudar Gestão de Projetos? Versão 2000 - Última Revisão 07/08/2006 Porque estudar Gestão de Projetos? Segundo o Standish Group, entidade americana de consultoria empresarial, através de um estudo chamado "Chaos Report", para projetos

Leia mais

Segurança de Aplicações Aula 6

Segurança de Aplicações Aula 6 Segurança de Aplicações Aula 6 Prof. Msc. Anderson da Cruz Apresentação Atividade Apresentação da atividade realizada na aula 4 2 Desenvolvimento de Software 3 Modelos de Desenvolvimento de Software Cascata

Leia mais

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS Elicitação Ciclo de Vida Clássico ou Convencional O Modelo Cascata Análise Ana Paula Terra Bacelo Blois Implementação Material Adaptado do Prof. Marcelo Yamaguti

Leia mais

Sistemas de Informação I

Sistemas de Informação I + Sistemas de Informação I Extreme Programming I Ricardo de Sousa Britto rbritto@ufpi.edu.br Você gostaria de trabalhar assim? Análise de Requisitos Longe de acordo Requerimentos Complexo Anarquia Perto

Leia mais

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques Modelo Cascata Alunos: Bruno Nocera Zanette Pedro Taques Principais Características Gerenciamento Simples das etapas Também conhecido como "Ciclo de Vida Clássico", sugere uma abordagem sistemática e sequencial

Leia mais

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro (cleviton@gmail.com)

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro (cleviton@gmail.com) SCRUM: UM MÉTODO ÁGIL Cleviton Monteiro (cleviton@gmail.com) Roteiro Motivação Manifesto Ágil Princípios Ciclo Papeis, cerimônias, eventos, artefatos Comunicação Product Backlog Desperdício 64% das features

Leia mais

Metodologias Ágeis. Aécio Costa

Metodologias Ágeis. Aécio Costa Metodologias Ágeis Aécio Costa Metodologias Ágeis Problema: Processo de desenvolvimento de Software Imprevisível e complicado. Empírico: Aceita imprevisibilidade, porém tem mecanismos de ação corretiva.

Leia mais

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT Disciplina: Modelagem a Programação Orientada a Objetos

Leia mais

MUDANÇAS NA ISO 9001: A VERSÃO 2015

MUDANÇAS NA ISO 9001: A VERSÃO 2015 MUDANÇAS NA ISO 9001: A VERSÃO 2015 Está em andamento o processo de revisão da Norma ISO 9001: 2015, que ao ser concluído resultará na mudança mais significativa já efetuada. A chamada família ISO 9000

Leia mais

Prof. Luiz A. Nascimento. As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software.

Prof. Luiz A. Nascimento. As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software. Prof. Luiz A. Nascimento As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software. Porque metodologias ágeis? A história dos fracassos no desenvolvimento de

Leia mais

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Pós-Graduação em Gerenciamento de Projetos práticas do PMI Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

Processo de Abertura de Projetosescritorio. Bizagi Process Modeler

Processo de Abertura de Projetosescritorio. Bizagi Process Modeler Processo de Abertura de Projetosescritorio Bizagi Process Modeler Índice PROCESSO DE ABERTURA DE PROJETOS-ESCRITORIO...1 BIZAGI PROCESS MODELER...1 1 PROCESSO DE ABERTURA DE PROJETOS...5 1.1 PROCESSO

Leia mais

Engenharia de Software II: Desenvolvendo o Orçamento do Projeto. Prof. Msc Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

Engenharia de Software II: Desenvolvendo o Orçamento do Projeto. Prof. Msc Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Engenharia de Software II: Desenvolvendo o Orçamento do Projeto Prof. Msc Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Sumário Criação do Plano de Gerenciamento de Custos do Projeto Estimar os Custos Determinar

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Professor: Curso: Disciplina:

Professor: Curso: Disciplina: Professor: Curso: Disciplina: Aula 1 Turma: Esp. Marcos Morais de Sousa Sistemas de informação Engenharia de Software I Dinâmica da disciplina, plano de curso e avaliação 03º semestre Prof. Esp. Marcos

Leia mais

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê? Significado de XP? Extreme Programming (Programação Extrema). Ideal para que tipo de empresa (equipe): pequena, média, grande? Pequenas e Médias. Em software onde os requisitos não são conhecidos é recomendado

Leia mais

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 3º PERÍODO - 5º MÓDULO AVALIAÇÃO A4 DATA 23/04/2009 ENGENHARIA DE SOFTWARE Dados de identificação do Acadêmico: Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA

Leia mais

APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2

APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2 APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2 Renan J. Borges 1, Késsia R. C. Marchi 1 1 Universidade Paranaense (UNIPAR) Paranavaí, PR Brasil renanjborges@gmail.com, kessia@unipar.br

Leia mais

Metodologia de Gerenciamento de Projetos da Justiça Federal

Metodologia de Gerenciamento de Projetos da Justiça Federal Metodologia de Gerenciamento de Projetos da Justiça Federal Histórico de Revisões Data Versão Descrição 30/04/2010 1.0 Versão Inicial 2 Sumário 1. Introdução... 5 2. Público-alvo... 5 3. Conceitos básicos...

Leia mais

Tecnologia em Gestão Pública Desenvolvimento de Projetos - Aula 9 Prof. Rafael Roesler

Tecnologia em Gestão Pública Desenvolvimento de Projetos - Aula 9 Prof. Rafael Roesler Tecnologia em Gestão Pública Desenvolvimento de Projetos - Aula 9 Prof. Rafael Roesler Introdução Objetivos da Gestão dos Custos Processos da Gerência de Custos Planejamento dos recursos Estimativa dos

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 3 http://www.ic.uff.br/~bianca/engsoft2/ Aula 3-29/04/2006 1 Monitoria Marina Albuquerque E-mail: monitoriaes2@yahoo.com.br Horário de Atendimento: Terça e quinta de 09:00

Leia mais

Notas de Aula 02: Processos de Desenvolvimento de Software

Notas de Aula 02: Processos de Desenvolvimento de Software Notas de Aula 02: Processos de Desenvolvimento de Software Objetivos da aula: Introduzir os conceitos de um processo de desenvolvimento de software Definir os processos básicos Apresentar as vantagens

Leia mais

Modelos de Maturidade. Porque estudar um Modelo de Maturidade? Descrevem as características de processos efetivos;

Modelos de Maturidade. Porque estudar um Modelo de Maturidade? Descrevem as características de processos efetivos; Versão 1.1 - Última Revisão 16/08/2006 Porque estudar um Modelo de Maturidade? Segundo o Standish Group, entidade americana de consultoria empresarial, através de um estudo chamado "Chaos Report", para

Leia mais

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

Processos Técnicos - Aulas 4 e 5

Processos Técnicos - Aulas 4 e 5 Processos Técnicos - Aulas 4 e 5 Trabalho / PEM Tema: Frameworks Públicos Grupo: equipe do TCC Entrega: versão digital, 1ª semana de Abril (de 31/03 a 04/04), no e-mail do professor (rodrigues.yuri@yahoo.com.br)

Leia mais

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Prof. Walter Cunha falecomigo@waltercunha.com http://waltercunha.com PMBoK Organização do Projeto Os projetos e o gerenciamento

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 3 Planejamento e Aula 8 do Projeto Aula 08 do Projeto SUMÁRIO INTRODUÇÃO... 3 ACOMPANHAMENTO DO PROJETO... 3 1. do Progresso...

Leia mais

3. Fase de Planejamento dos Ciclos de Construção do Software

3. Fase de Planejamento dos Ciclos de Construção do Software 3. Fase de Planejamento dos Ciclos de Construção do Software A tarefa de planejar os ciclos de construção do software pode partir de diretrizes básicas. Estas diretrizes visam orientar que os ciclos de

Leia mais

CHECK - LIST - ISO 9001:2000

CHECK - LIST - ISO 9001:2000 REQUISITOS ISO 9001: 2000 SIM NÃO 1.2 APLICAÇÃO A organização identificou as exclusões de itens da norma no seu manual da qualidade? As exclusões são relacionadas somente aos requisitos da sessão 7 da

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Resumo artigo Agile Modeling- Overview

Resumo artigo Agile Modeling- Overview Universidade Federal de Santa Catarina Centro Tecnológico Disciplina: Projetos I Aluno: Diogo Ludvig 0313812-7 Resumo artigo Agile Modeling- Overview Este trabalho se refere ao resumo do artigo Agile Modeling,

Leia mais

Capítulo 1 - Introdução 14

Capítulo 1 - Introdução 14 1 Introdução Em seu livro Pressman [22] define processo de software como um arcabouço para as tarefas que são necessárias para construir software de alta qualidade. Assim, é-se levado a inferir que o sucesso

Leia mais