Prévia do material em texto
Prof. Me. Edson Moreno UNIDADE III Fundamentos de Engenharia de Software Na Unidade II foram apresentados vários modelos de processos de software, que em boa parte precisam de muita documentação e burocracia, acarretando demora e alto custo. Em contraponto são apresentadas na Unidade III as principais metodologias ágeis de desenvolvimento do software: XP, SCRUM, FDD, DSDM, Crystal e AM. Na Unidade III também serão abordadas as melhores práticas da engenharia de requisitos, que permitem a concepção do projeto de software. Serão abordados os principais requisitos do software a serem registrados, bem como a atividade da análise e a modelagem do projeto e do produto software. Nesse contexto, a Unidade III, da disciplina Fundamentos de Engenharia de Software, trata das metodologias ágeis e engenharia de requisitos. Introdução Com emprego de técnicas consideradas eficientes no desenvolvimento do software, elas passaram a se chamar de metodologias ágeis. Nesse capítulo serão abordados os seguintes itens: Manifesto para desenvolvimento ágil de software. Metodologias ágeis: XP, SCRUM, FDD, DSDM, Crystal e AM. 5 Metodologias ágeis Fonte: ALMEIDA, Ricardo. IBM adotando Metodologia Ágil?. Disponível em: https://manifestonaweb.wordpress.com/2008/06/20/metodol ogia-agil-na-ibm/, 20/06/2008. Acesso em: 21 dez. 2020. A IBM, fornecedora do RUP e concorrente, reconhece a importância das metodologias ágeis. Por meio do Manifesto for Agile Software Development (Manifesto para Desenvolvimento Ágil de Software), publicado nos dias 11 a 13 de fevereiro de 2001, Kent Beck e mais dezesseis notáveis desenvolvedores se reuniram para defender as seguintes regras: Manifesto para desenvolvimento ágil de software I Manifesto para Desenvolvimento Ágil de Software “Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Por meio desse trabalho, passamos a valorizar: Indivíduos e interações mais que processos e ferramentas. Software em funcionamento mais do que documentação abrangente. Colaboração com o cliente mais do que negociação de contratos. Responder a mudanças mais que seguir um plano.” Fonte: BECK, Kent, et al. Manifesto para Desenvolvimento Ágil de Software, 2001. Disponível em: https://agilemanifesto.org/iso/ptbr/manifes to.html, 2001. Acesso em: 30 jun. 2020. A frase que finaliza esse manifesto é: “Mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda” (BECK, 2001). Pode ser explicada com base na figura abaixo. Enquanto o RUP (lado direito da figura) é extremamente rígido com altos níveis de controle e forte documentação, as metodologias ágeis (no centro e lado esquerdo da figura) caminham ao contrário e, mesmo assim, as metodologias ágeis não infringem uma sólida prática da Engenharia de Software. Manifesto para desenvolvimento ágil de software II Fonte: Moreno (2020). Manifesto para desenvolvimento ágil de software – princípios Princípios Descrição Envolvimento do cliente O cliente fornece e prioriza novos requisitos. Entrega incremental Os requisitos são incluídos em incrementos sucessivos. Pessoas, não processos Habilidades e comunicação informal são exploradas. Aceitar as mudanças Os requisitos sempre mudam. Manter a simplicidade Sem complexidade no processo de software. Fonte: Sommerville (2011). A Extreme Programing (Programação Extrema) emprega uma abordagem orientada a objetos como paradigma preferido e envolve um conjunto de regras e práticas constantes no contexto de quatro atividades metodológicas: planejamento, projeto, codificação e testes (PRESSMAN, 2011). Metodologia ágil Extreme Programming (XP) Fonte: Pressman (2011). Fonte: JOURNEY. Metodologia XP (Extreme Programming) – Desenvolvimento Ágil. Disponível em: https://acordocoletivo.org/2018/01/01/metodologia-xp- extreme-programming-desenvolvimento-agil/, 01/01/2018. Acesso em: 30 jun. 2020. Valores das histórias de usuários, critérios de teste de aceitação e plano de iteração Projeto simples cartões CRC Soluções pontuais protótipos Fabricação Teste de unidades integração contínua Teste de aceitação Versão Programação em dupla Incremento de software velocidade de projeto registrado (computada) Metodologia ágil Extreme Programming (XP) – distribuição de tarefas Fonte: Moreno (2020). O modelo ágil mais conhecido é o XP. Grande ênfase na programação em duplas. Figura: porcentagem estimada de distribuição de tarefas na metodologia ágil XP. Planejamento (12,5%) Usuários são selecionados Projeto (12,5%) Documentação Responsabilidades Detalhes das tarefas Plano de detalhes do projeto Codificação (50,0%) Implementação, teste, integração e qualidade Teste (25,0%) Qualidade, bugs e depuração Projeto 12,5% Codificação 50,0% Planejamento 12,5% Teste 25,0% O Manifesto for Agile Software Development (Manifesto para Desenvolvimento Ágil de Software) foi criado, em 2001, por Kent Beck e mais dezesseis notáveis desenvolvedores que se reuniram para defender algumas regras. Assinale a alternativa considerada uma regra no desenvolvimento ágil de software: a) Acompanha o modelo de processo balbúrdia. b) Não possui documentação, mas tem uma comunicação eficaz. c) Os métodos são específicos para o uso da UML. d) Propõe sistemas somente se estiver integrado e adaptado a outros sistemas ágeis. e) Software em funcionamento mais do que documentação abrangente. Interatividade O Manifesto for Agile Software Development (Manifesto para Desenvolvimento Ágil de Software) foi criado, em 2001, por Kent Beck e mais dezesseis notáveis desenvolvedores que se reuniram para defender algumas regras. Assinale a alternativa considerada uma regra no desenvolvimento ágil de software: a) Acompanha o modelo de processo balbúrdia. b) Não possui documentação, mas tem uma comunicação eficaz. c) Os métodos são específicos para o uso da UML. d) Propõe sistemas somente se estiver integrado e adaptado a outros sistemas ágeis. e) Software em funcionamento mais do que documentação abrangente. Resposta BECK, Kent, et al. Manifesto para Desenvolvimento Ágil de Software, 2001. Disponível em: https://agilemanifesto.org/iso/ptbr/manifest o.html, 2001. Acesso em: 30 jun. 2020. Conheça as regras do Manifesto Ágil. O nome SCRUM vem da atividade de jogadores de rugby, no trabalho de deslocar a bola estando “fortemente” juntos. Com base nesse contexto, Jeff Sutherland, na década de 1990, desenvolveu o método ágil SCRUM, que segue os mesmos princípios básicos do Manifesto Ágil. Metodologia ágil SCRUM A metodologia é baseada em princípios semelhantes aos do XP Equipes pequenas. Requisitos pouco estáveis ou desconhecidos. Iterações curtas para promover visibilidade para o desenvolvimento. Metodologia ágil SCRUM – sprint Características do SCRUM O SCRUM promove reuniões diárias de 15 minutos em que todos respondem às questões: O que você realizou desde o último SCRUM? Você está tendo alguma dificuldade? O que você irá fazer até a próxima reunião? Benefícios: Maior integração entre os membros da equipe. Rápida solução de problemas. Promove o compartilhamento de conhecimento: Progresso medido continuamente. Minimização de riscos. Metodologia ágil SCRUM – fases Fonte: Moreno (2020); Pressman (2011). Backlog – registro pendente de trabalhos. Sprints – unidades de trabalho para atingir os requisitos. Reuniões SCRUM – diárias de 15 minutos. Demos – entrega de funcionalidades. Metodologia ágil Feature Driven Development (FDD) Fonte: Deluca (2008). Conceito do termo “característica” usado no FDD A “característica” é uma função relativamente pequena alinhada com o cliente: As “características” podem ser pequenos blocos de funções ou uma funcionalidade. Esse recurso permiteum melhor controle e entendimento do processo. As “características” são organizadas com base na hierarquia ou prioridades relacionadas ao negócio. A equipe estabelece metas para o desenvolvimento de novas “características”. FDD é a metodologia ágil que mais enfatiza a gestão de projetos. Mais forma que conteúdo Modelo de objetos Mais conteúdo na forma Plano de Desenvolvimento Progresso Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por Feature Construir por Feature Detalhar por Feature Pacotes de trabalho Metodologia ágil Dynamic Systems Development Method (DSDM) Fonte: Moreno (2020). O Método Dinâmico de Desenvolvimento de Sistemas (DSDM) surge como uma extensão do modelo RAD. O DSDM possui nove princípios fundamentais 1. Envolvimento ativo do usuário. 2. Equipes capacitadas (com poderes). 3. Entrega frequente. 4. Aptidão para negócios. 5. Desenvolvimento incremental. 6. Alterações reversíveis. 7. Linha de base para os requisitos. 8. Teste integrado. 9. Colaboração das partes interessadas. Os focos do DSDM são a especificação do sistema e a integração de seus componentes e testes. Viabilidade Estudos de revisão Modelo funcional de iteração Implementação Projeto e construção da iteração Crystal/Clear faz parte de um conjunto completo de metodologias criadas com intuito de fazer uma analogia com os cristais geológicos, apresentados na natureza com sua própria cor, forma e dureza. Premissas apresentadas para a existência do conjunto de metodologias: Todo projeto tem necessidades e metodologias diferentes. O funcionamento do projeto é influenciado por fatores humanos, e há melhora nele quando os indivíduos produzem melhor. Comunicação melhor e lançamentos frequentes reduzem a necessidade de construir produtos intermediários do processo. Metodologia ágil Crystal Fonte: Coimbra (2020). Manobrabilidade – termo usado no Crystal para escolha de metodologias. Trabalho em equipe Comunicação Simplicidade Reflexão Ajustes frequentes Melhorar processos A Modelagem Ágil (AM) é uma metodologia baseada na prática para modelagem e documentação efetiva de sistemas baseados em software. A Modelagem Ágil dispõe de múltiplos modelos para descrever software, é uma coleção de valores, princípios e práticas de modelagem de software aplicados a um projeto de modo efetivo e leve. Metodologia ágil AM (Agile Modeling) AM. Agile Modeling. Modelagem Ágil (AM). Disponível em: http://agilemodeling.com. Acesso em: 30 jun. 2020. A expressão “viajar leve” é muito usada na Modelagem Ágil. Orienta que conserve apenas os modelos que fornecerão valor a longo prazo e demais modelos devem ser descartados. Conheça os modelos da metodologia AM. Um analista de sistemas na atividade da engenharia de software precisa incluir em seu projeto equipes especializadas no desenvolvimento ágil do software, que apresentem os perfis: 1. Entender o projeto e determinar as atividades do desenvolvimento. 2. Fazer levantamento de escopo e normatizar reuniões. 3. Para a codificação e testes de artefatos do software, selecionar pequenas equipes com duas pessoas. Assinale abaixo, respectivamente, os métodos ágeis correspondentes às principais áreas ou atividades de desenvolvimento listadas acima: a) FDD; 2. SCRUM; 3. XP. b) FDD; 2. XP; 3. SCRUM. c) SCRUM; 2. FDD; 3. XP. d) SCRUM; 2. XP; 3. FDD. e) XP; 2. FDD; 3. SCRUM. Interatividade Um analista de sistemas na atividade da engenharia de software precisa incluir em seu projeto equipes especializadas no desenvolvimento ágil do software, que apresentem os perfis: 1. Entender o projeto e determinar as atividades do desenvolvimento. 2. Fazer levantamento de escopo e normatizar reuniões. 3. Para a codificação e testes de artefatos do software, selecionar pequenas equipes com duas pessoas. Assinale abaixo, respectivamente, os métodos ágeis correspondentes às principais áreas ou atividades de desenvolvimento listadas acima: a) FDD; 2. SCRUM; 3. XP. b) FDD; 2. XP; 3. SCRUM. c) SCRUM; 2. FDD; 3. XP. d) SCRUM; 2. XP; 3. FDD. e) XP; 2. FDD; 3. SCRUM. Resposta A concepção para o projeto de software constitui os procedimentos para criar o documento de requisitos do software. Nesse documento se definem: requisitos do usuário, requisitos do sistema, requisitos funcionais e não funcionais. A engenharia de requisitos contempla as principais atividades e práticas no estudo de viabilidade do sistema, elicitação, análise, especificação, modelagem e validação para o processo, o projeto e o produto software. 6 Engenharia de requisitos Nesse capítulo serão abordados os seguintes itens: Processo da engenharia de requisitos do software. Elicitação e análise de requisitos. Especificação, documentação e modelagem dos requisitos. O software começa aqui. A Engenharia de Requisitos do Software é um processo que envolve todas as atividades exigidas para criar e manter o documento de requisitos do software/sistema (SOMMERVILLE, 2003). Uso desse documento: Contratos e licitações para o desenvolvimento de software. Escolha de fornecedores de componentes do sistema. Acompanhamento de mudanças. Especificação do software. Processo de engenharia de requisitos do software Atividades do processo da engenharia de requisitos do software/sistema Estudo da viabilidade do sistema; Elicitação; Análise; Especificação; Modelagem; Validação. A figura mostra o fluxo do processo da engenharia de requisitos do software/sistema. O desenvolvimento do sistema só ocorre após a validação dos requisitos. Caso os requisitos não sejam validados ocorre uma iteração, o que significa que todo o processo será revisto, incluindo as abordagens para levantamento dos requisitos. Processo de engenharia de requisitos – modelo do processo Fonte: Moreno (2020). Elicitação e Análise de requisitos Estudo da Viabilidade do sistema Validação Especificação, Modelagem e Documentação Início Nova Iteração Desenvolvimento do Sistema O estudo de viabilidade é breve e é direcionado a responder algumas perguntas: 1. O sistema proposto contribui para os objetivos gerais da organização? 2. São consideradas se as regras de negócio estão de acordo com a organização? 3. O sistema pode ser implementado com tecnologia atual dentro do custo e prazo? 4. O que o cliente quer está dentro do orçamento e do prazo para entrega do sistema? 5. O sistema pode ser integrado com os outros sistemas já em operação? Qual o impacto das mudanças no ambiente operacional do cliente? 6. A tecnologia a ser implementada é adaptável ao sistema do cliente (se esse existir)? Estudo da viabilidade do sistema Elicitação dos requisitos é a tarefa de se comunicar com os usuários e os clientes para determinar quais são os requisitos. Técnicas de elicitação: Organizar reuniões, entrevistas com objetivo de criar a lista de requisitos. Prototipação e casos de uso. Métodos: Questionários dirigidos; Perguntas abertas e Brainstorming; Grupos de desenvolvimento de sistemas do tipo JAD. Elicitação e análise de requisitos – elicitação IEEE. Enhanced Facilitated Application Specification Techniques (eFAST). Institute of Eletrical and Eletronics Engineers (IEEE). Disponível em: https://ieeexplore.ieee.org/document/1651985. Conheça a técnica de elicitação e Fast. Processo de levantamento e análise de requisitos. Elicitação e análise de requisitos – levantamento e análise de requisitos Fonte: Sommerville (2003). Entrada do processo Verificação de requisitos Compreensão do domínio Coleta de requisitos Classificação Resolução de conflitos Definição das prioridades Documento de requisitos Especificação de requisitos A especificação e a modelagem são os produtos do trabalho final produzidos pelo engenheiro de requisitos. Na especificaçãosão descritas a função e o desempenho do sistema e as restrições que acompanharam seu desenvolvimento. A especificação pode ser um documento escrito, um modelo gráfico, um modelo matemático formal, casos de uso, protótipos ou qualquer combinação desses elementos. Acesse BAHN e saiba como especificar o software dentro das normas: Especificação, documentação e modelagem dos requisitos BAHN, Christy. 830-1998. Prática recomendada do IEEE para especificações de requisitos de software. Comitê de Normas de Engenharia de Software e Sistemas, 20/10/1998, reafirmado em 09/12/2009. Disponível em: https://standards.ieee.org/standard/830-1998.html. Acesso em: 29 jun. 2020. Principais grupos de requisitos Requisitos do Usuário; Requisitos do Sistema; Requisitos Funcionais; Requisitos Não Funcionais. A Especificação de Requisitos de Software (SRS – Software Requirements Specification) captura todos os requisitos de software para o sistema ou para uma parte do sistema. A especificação é a declaração oficial do que é exigido dos desenvolvedores de sistema. Especificação, documentação e modelagem dos requisitos – documento Modelo de especificação de requisitos Sumário Histórico de revisão 1. Introdução 2. Descrição geral 3. Características do sistema 4. Requisitos de interfaces externas 5. Requisitos não funcionais 6. Outros requisitos Referências Apêndice A: Glossário Apêndice B: Modelos de análise Apêndice C: Lista de problemas São várias as atividades da engenharia de software, contudo algumas delas são específicas da engenharia de requisitos. Avalie as atividades abaixo e assinale a alternativa correspondente às atividades específicas da engenharia de requisitos do software: Alternativas: a) (I), (III), (VI), (VII), (VIII). b) (II), (III), (IV), (V), (VI). c) (II), (III), (V), (VII), (XI). d) (III), (IV), (VI), (IX), (X). e) (IV), (VI), (IX), (X), (XI). Interatividade I – Análise do negócio V – Especificação IX – Suporte técnico II – Elicitação VI – Projeto X – Treinamento III – Análise do sistema VII – Modelagem XI – Validação IV – Prototipação VIII – Manutenção São várias as atividades da engenharia de software, contudo algumas delas são específicas da engenharia de requisitos. Avalie as atividades abaixo e assinale a alternativa correspondente às atividades específicas da engenharia de requisitos do software: Alternativas: a) (I), (III), (VI), (VII), (VIII). b) (II), (III), (IV), (V), (VI). c) (II), (III), (V), (VII), (XI). d) (III), (IV), (VI), (IX), (X). e) (IV), (VI), (IX), (X), (XI). Resposta I – Análise do negócio V – Especificação IX – Suporte técnico II – Elicitação VI – Projeto X – Treinamento III – Análise do sistema VII – Modelagem XI – Validação IV – Prototipação VIII – Manutenção São declarações em linguagem natural, formulários e diagramas simples, sobre as funções que o sistema/software deve fornecer e as restrições sobre as quais deve operar. Os requisitos do usuário são descritos de forma compreensível para que o stakeholder tenha um bom entendimento do que se quer do sistema a ser construído. A modelagem do negócio é aplicada nesse processo. É um modelo de fácil interpretação, que se utiliza normalmente um modelo construído com o diagrama de atividade da UML. Requisitos do Usuário (RU) OMG. Categoria de modelagem de negócios – especificações associadas. OMG – Object Management Group®. Disponível em: https://www.omg.org/spec/category/busine ss-modeling/. Acesso em: 29 jun. 2020. Modelagem do negócio. Veja como funciona. Requisitos funcionais são declarações detalhadas dos requisitos do usuário com uma especificação completa de toda a funcionalidade ou serviços que se espera que o sistema forneça. A atividade de elaboração dos requisitos funcionais consiste em extrair dos casos de uso as funções necessárias que irão operar no sistema. O objetivo é preparar um material detalhado para que possa ser passado para a codificação. A tabela mostra a especificação de requisitos. Requisitos Funcionais (RF) Requisito Funcional (RF) Especificação RF01 Chamada de menu: relatórios – deverá exibir o menu de relatórios disponíveis. RF01.1 Função: relatório de compras – relatório com as compras efetuadas no período desejado. Exibindo: fornecedor, produto comprado, quantidade e valor. RF01.2 Função: relatório de pagamentos efetuados – relatório com os pagamentos efetuados a fornecedores no período desejado. Exibindo: fornecedor, produto comprado, quantidade e valor pago. Os requisitos não funcionais são requisitos que não estão diretamente relacionados com os serviços específicos oferecidos pelo sistema a seus usuários (SOMMERVILLE, 2003). Os requisitos não funcionais determinam a qualidade do software. Na figura são mostrados os tipos de requisitos não funcionais. Requisitos Não Funcionais (RNF) Fonte: Sommerville (2003). Requisitos do Produto Requisitos de Entrega Requisitos de Usabilidade Requisitos de Eficiência Requisitos de Confiabilidade Requisitos de Portabilidade Requisitos de Desempenho Requisitos de Espaço Requisitos de Padrões Requisitos de Implementação Requisitos Organizacionais Requisitos Externos Requisitos de Interoperabilidade Requisitos Éticos Requisitos Legais Requisitos de Segurança Requisitos de Privacidade São descrições detalhadas dos requisitos do usuário com o foco no sistema, com uma especificação completa de todos os componentes do sistema. Os componentes podem ser divididos em dois grupos: 1. Visão estática da arquitetura – visão da organização e integração dos componentes do software com elementos de dados (banco de dados, arquivos-texto etc.), com o hardware e outros ambientes operacionais. 2. Visão dinâmica da arquitetura – visão comportamental do sistema e de seus componentes. São definidos como os componentes reagem a eventos e a forma como se comunicam (ou trocam mensagens). Requisitos do Sistema (RS) I Tabela de requisitos do sistema: Requisito Sistema (RS) Especificação RS01 Computador cliente, modelo PC com médio desempenho. RS02 Sistema operacional do computador cliente – Windows. Ver RS01 RS03 Navegador para internet. A aplicação irá funcionar em uma rede intranet. Na elaboração do projeto, o projetista precisa praticar a diversificação e depois a convergência (PRESSMAN, 2007). Requisitos do Sistema (RS) II Fonte: Moreno (2020) (adaptado) Fonte: Moreno (2020). Diversificação Convergência Cliente – SO Windows Cliente – Browser Server – Gerenciador de telas Server – Gerenciador de contas (Login) Server – SOR Windows Server – SOR Linux Web Server – Microsoft lls Web Server – Apache/Tomcat Server – SGBD SQL Microsoft Server – SGBD MySQL Server – App Controle de Estoque (JPS) Cliente – PC Computer Nó1 – Server Computer 1 Nó2 – Server Computer 2 Cliente – PC Computer Cliente – SO Windows Cliente – Browser <<HTML>> Nó – Server Computer 1 Server – SOR Linux Web – Server – Microsoft lls <<HTML>> Server – Gerenciador de telas <<HTML>> Server – Gerenciador de contas <<MySQL>> Nó2 – Server Computer 2 Web – Server – Apache/Tomcat Server – SOR Windows <<TCP/IP>> <<HTTP>> <<TCP/IP>> <<DNS>> <<JSP>> <<JSP>> Server – App-Controle de Estoque <<MySQL>> Server – SGBD MySQL A validação é a última fase do processo da engenharia de requisitos. É a tarefa de apresentar o documento de requisitos em reunião com a participação do grupo formado pelos interessados no sistema. O objetivo é aprimorar, incluir mudanças propostas e aprovar o início do projeto e desenvolvimento do software/sistema. O cliente valida os requisitos como compromisso das informações fornecidas e reconhecimento dos elementos que irão permitir a construção do sistema, bem como custos e prazos acordados com o desenvolvedor. Na validação, os desenvolvedores se comprometemem desenvolver o sistema com o custo e o prazo determinados. Validação dos requisitos Referente aos requisitos de software listados abaixo, responda à alternativa correspondente aos tipos desses requisitos: I. São declarações em linguagem natural, formulários e diagramas simples, sobre as funções que o sistema deve fornecer e as restrições sobre as quais deve operar. II. São declarações com uma especificação completa dos serviços que se espera que o sistema forneça. Alternativas: a) Domínio e usuário. b) Funcionais e não funcionais. c) Sistema e não funcionais. d) Sistema e funcionais. e) Usuário e funcionais. Interatividade Referente aos requisitos de software listados abaixo, responda à alternativa correspondente aos tipos desses requisitos: I. São declarações em linguagem natural, formulários e diagramas simples, sobre as funções que o sistema deve fornecer e as restrições sobre as quais deve operar. II. São declarações com uma especificação completa dos serviços que se espera que o sistema forneça. Alternativas: a) Domínio e usuário. b) Funcionais e não funcionais. c) Sistema e não funcionais. d) Sistema e funcionais. e) Usuário e funcionais. Resposta BECK, Kent; et al. Manifesto para Desenvolvimento Ágil de Software, 2001. Disponível em: https://agilemanifesto.org/iso/ptbr/manifesto.html. Acesso em: 30 jun. 2020. COIMBRA. Agile Methods: DSDM. Disponível em: https://projetoseti.com.br/agile-methods- dsdm. Acesso em: 30 jun. 2020. DELUCA, J. A importância da engenharia de software: FDD Feature-Driven Development. Disponível em: http://engenheirosdosoftware.blogspot.com/2008/10/fdd-feature-driven- development.html. Acesso em: 30 jun. 2020. PRESSMAN, Roger S. Ph.D. Engenharia de Software: Uma Abordagem Profissional. 7. ed. Rio de Janeiro: McGraw-Hill, 2011. SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011. Referências ATÉ A PRÓXIMA!