Baixe o app para aproveitar ainda mais
Prévia do material em texto
WBA0446_v1.0 CASE: AS PRINCIPAIS FERRAMENTAS NO CICLO DE DESENVOLVIMENTO DE SOFTWARES APRENDIZAGEM EM FOCO 2 APRESENTAÇÃO DA DISCIPLINA Autoria: André Olímpio Leitura crítica: Marcilyanne Moreira Gois Caro aluno, O objetivo desta disciplina é apresentar um conteúdo abrangente, o qual fará com que você venha compreender a importância da utilização de ferramentas específicas que irão lhe auxiliar no processo de criação, estruturação e manutenção de um sistema de software. Estas ferramentas, chamadas de Case (Computer Aided Software Engineering, em português Engenharia de Software Auxiliada por Computador), têm por finalidade dar suporte, amplitude e profundidade à utilização dos conceitos pregados pela engenharia de software neste processo. Além disso, os conhecimentos adquiridos nessa disciplina também visam contribuir em diversos aspectos como a melhoria da qualidade nas rotinas e atividades que compõem o ciclo de desenvolvimento de software, reduzir a quantidade de horas gastas com ações de retrabalho, diminuir o tempo de execução de tarefas, ampliar o alcance de cada funcionalidade implementada, além de redução de gastos com recursos humanos, materiais e financeiros. Ao final desta disciplina, você estará apto a identificar, classificar e distinguir as ferramentas utilizadas nas etapas existentes no processo de desenvolvimento, como o Microsoft Azure para gerenciamento de projetos de software, o Astah para modelagem de sistemas utilizando diagramas da UML (Linguagem de Modelagem Unificada), NetBeans IDE para codificação e estrutura de softwares, e Apache JMeter para testabilidade de sistemas. 3 Cada uma dessas ferramentas possui necessidades distintas que exigem muita dedicação e compreensão por parte dos profissionais de Tecnologia da Informação envolvidos neste ciclo, tendo em vista que os sistemas atuais estão cada vez mais robustos e complexos, os usuários estão mais exigentes e a tecnologia não para de evoluir. INTRODUÇÃO Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira direta e assertiva, os principais conceitos inerentes à temática abordada na disciplina. Além disso, também pretende provocar reflexões que estimulem a aplicação da teoria na prática profissional. Vem conosco! TEMA 1 Ferramentas para o desenvolvimento de softwares ______________________________________________________________ Autoria: André Olímpio Leitura crítica: Marcilyanne Gois 5 DIRETO AO PONTO O desenvolvimento de um sistema de software é um dos segmentos mais relevantes e amplos contidos na área de Tecnologia da Informação. Todo sistema é criado com base em uma ou mais necessidades existentes no mundo real. Os profissionais de TI devem em um primeiro momento abstrair as variáveis necessárias para se chegar à solução de um problema, porém a realidade é extremamente complexa e rica em detalhes. É muito difícil separar deste emaranhado de possibilidades o que é realmente relevante para o sistema a ser implementado. Essas variáveis recebem o nome de requisito. Segundo Sommerville (2018), cada requisito corresponde a um aspecto abstraído do enunciado do problema e, assim que for transpassado para um sistema computacional, terá incidência direta no software a ser desenvolvido, seja como uma funcionalidade deste ou um componente que o permeia. Assim, o desenvolvedor deverá identificar, classificar e documentar da forma mais detalhada possível os requisitos. E a partir daí, iniciar o processo de implementação do software, ou seja, escrever o código-fonte por meio de uma linguagem de programação. Contudo, antes de efetivamente programar, é necessário criar uma estruturação robusta e ampla deste sistema, visando não somente a codificação como também as etapas subsequentes como testes, implantação e manutenção. Esta estruturação recebe o nome de modelagem, uma maneira de formalizar os requisitos, potencializar a qualidade ampliando as possibilidades de sucesso e dos resultados obtidos. Uma ferramenta Case tem como principal finalidade auxiliar os desenvolvedores na aplicação prática dos conceitos pregados pela engenharia de software que estuda um sistema desde a 6 sua concepção até o momento em que este se tornar obsoleto e necessitar de atualização ou ser substituído por um novo. Este tipo de ferramenta dará suporte aos profissionais, permitindo que o software seja visualizado de diferentes perspectivas em diferentes etapas do processo de seu desenvolvimento. O termo Case significa “Computer Aided Software Engineering”, que em português é “Engenharia de Software auxiliada por computador”. O ciclo de desenvolvimento de um sistema de software é dividido em seis etapas: levantamento e análise de requisitos, modelagem, implementação, testes, implantação e manutenção. Cada uma destas etapas apresenta um número muito grande de variáveis, e o profissional de TI tem que levar todas em consideração, ficando assim praticamente impossível de administrar o sistema por completo. A ferramenta Case serve de suporte para este gerenciamento, afinal foi criada exatamente para fazer isso. Cada etapa do ciclo possui ferramentas próprias, com finalidades específicas como modelar um banco de dados, criar um protótipo da interface com o usuário final da aplicação, estruturar o sistema por meio de diagramas UML (Unified Modeling Language, em português Linguagem de Modelagem Unificada), formatar a escrita do código-fonte deste software gerando rotinas com base em diagramas, detalhar os requisitos e documentar toda estrutura de modelagem deste sistema. Os requisitos obrigatoriamente precisam expressar de forma direta, completa e detalhada toda e qualquer funcionalidade operacional ou estrutural do sistema. Um software é composto por uma grande quantidade de funcionalidades, que serão implementadas pelo desenvolvedor durante a etapa de codificação. 7 Figura 1 - Requisitos – Visão geral Fonte: elaborada pelo autor. A Figura 1 ilustra que o domínio do problema aumenta conforme as necessidades do cliente sejam definidas e documentadas. Os requisitos são divididos em duas categorias: os funcionais, que expressam as regras de negócio, e os não funcionais, focados em fatores mais abstratos como a qualidade ou componentes externos que fazem parte do sistema. As necessidades do sistema são definidas como cada comportamento e recurso a ser implementado pelo software. O domínio da solução evolui de acordo com a construção do sistema, pois com o passar do tempo, a cada dia trabalhado, o desenvolvedor fica cada vez mais próximo de entregar a solução para o problema identificado no início do processo (PRESSMAN, 2016). Referências bibliográficas SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. 8 PARA SABER MAIS Outro ponto fundamental no processo de desenvolvimento de um sistema de software é a qualidade, que é definida com conformidade com requisitos, ou seja, se este sistema atende plenamente a todas as especificações existentes no contexto. A qualidade pode ser medida por meio do grau de satisfação em que as pessoas avaliam determinado produto ou serviço. No entanto, este termo é algo subjetivo, pois alguns indivíduos acreditam que algo de qualidade deve satisfazer suas questões pessoais, ou seja, fazem uma avaliação pelo ponto de vista emocional, o que é totalmente errado para este contexto. Para validar requisitos, verificar se um sistema os atende plenamente, é preciso ser racional, aplicar aspectos contidos em normas técnicas fundamentais para o processo de aferição. Existem normas técnicas específicas para sistemas de software, que definem as métricas pelas quais os padrões de qualidade serão mensurados, como testar e validar as funcionalidades, indicando os valores de resultados que serão utilizados como aceite. Essas normasseguem padrões internacionais como a ISO (Internacional Organization for Standardization), uma entidade que é responsável por criar as métricas de padronização e normatização de produtos e serviços. Cada país inclusive pode ter o seu representante local, o que permite adaptações para as diferentes culturas existentes no mundo; no Brasil, a ABNT (Associação Brasileira de Normas Técnicas) é a representante da ISO no país. Por exemplo, a Norma Técnica NBR ISO/IEC 25020 é utilizada para auxiliar os produtos de software em processo de desenvolvimento e aquisição com a especificação e avaliação dos requisitos de qualidade (ABNT, 2009) 9 Segundo Barreto (1997), a certificação é a emissão de um documento oficial indicando a conformidade com esta determinada norma ou padrão. É necessário realizar todo um processo de avaliação e julgamento de acordo com a norma em questão e assim aferir qualidade, seja em um produto, um serviço ou mesmo no processo de desenvolvimento. Ao se enquadrar totalmente em uma norma técnica, um software recebe um selo de qualidade, uma espécie de certificado que comprova em caráter mundial que passou por um processo rigoroso de testes e que foi plenamente aprovado em cada aspecto testado. Referências bibliográficas BARRETO, J. J. Qualidade de software. [S.l.: s.n.], 1997. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/ IEC 25020: Engenharia de Software – requisitos e avaliação da qualidade do produto de software (SQuaRE) – Guia e modelo para referência de medição. Rio de Janeiro, 2009. TEORIA EM PRÁTICA Reflita sobre a seguinte situação: você faz parte de uma equipe de desenvolvimento de sistemas de software, que é formada em sua maioria por profissionais jovens em início de carreira, inclusive você. O sistema a ser implementado é bem desafiador e complexo, é um sistema de parquímetros para uma cidade de 300 mil habitantes que apresenta uma frota aproximada de 100 mil carros circulando diariamente pelas ruas da cidade. A sua equipe venceu a licitação e deverá 10 Lorem ipsum dolor sit amet Autoria: Nome do autor da disciplina Leitura crítica: Nome do autor da disciplina fornecer aos munícipes um aplicativo pelo qual eles poderão creditar valores via cartão de crédito e utilizá-los para realizar pagamentos dos minutos utilizados quando estacionarem seus carros pelas ruas do centro da cidade e bairros adjacentes. Quais seriam os requisitos funcionais e não funcionais deste sistema? Como você utilizaria as ferramentas Case para auxiliá- lo na modelagem e estruturação do software? Quais e de que tipo seriam as integrações com outros sistemas que seriam necessárias para atender a demanda deste problema? Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 As normas técnicas para aferição de qualidade de software são atualizadas frequentemente, com o objetivo de estarem sempre inerentes com a demanda de exigências existentes atualmente no mundo, afinal os softwares precisam cada vez mais atender as necessidades das pessoas, e para tal, os resultados obtidos são mais complexos e desafiadores. Portanto, cabe ao desenvolvedor conhecer um pouco mais a fundo sobre o que uma norma técnica pode propiciar no processo de garantia da qualidade. Assim, é sugerida a leitura da norma ABNT NBR/ISO 25020, que indica requisitos e a avaliação da qualidade do produto de software. Para realizar a leitura, acesse a plataforma Target Gedweb disponível na Biblioteca Virtual da Kroton e busque pela norma. Indicações de leitura 11 ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBRISO/IEC25020. Engenharia de software. Requisitos e avaliação da qualidade de produto de software (SQuaRE). Guia e modelo de referência para medição. Mar. 2009. Indicação 2 É mais do que clara a necessidade de se identificar, classificar e documentar requisitos do sistema de software, pois eles são a base para garantir que este sistema venha de fato resolver o problema do mundo real. Com base neste pensamento, fica sugerido um texto do livro citado a seguir, no Capítulo 8 (páginas 131 a 165), que explica de maneira bem clara e completa o entendimento do conceito de requisito. Para realizar a leitura deste texto, acesse a plataforma Minha Biblioteca disponível na Biblioteca Virtual da Kroton. PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. Cap. 8, p. 131-165. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 12 1. O que é ferramenta Case? a. É a segunda etapa do processo de desenvolvimento de um sistema de software. b. É um conjunto de aplicativos que tem como finalidade auxiliar um profissional de Tecnologia da Informação a aplicar na prática os conceitos pregados pela engenharia de software. c. É uma estrutura de programação que permite exibir ao usuário um conjunto finito de ações que este poderá vir a selecionar durante a execução de uma aplicação. d. É um tipo de software específico para se fazer a modelagem de um sistema de banco de dados. e. É um sistema de ações corretivas aplicadas na elaboração e documentação de um conjunto de requisitos do sistema de software a ser desenvolvido. 2. O que é requisito funcional? a. É a descrição das necessidades do cliente que se tornarão as funcionalidades do sistema de software após sua implementação. b. É toda e qualquer ação preventiva existente no processo de desenvolvimento. c. É um tipo específico de ferramenta Case. d. É uma especificação técnica de como que o sistema irá se comportar em situações extremas e comportamento de risco. e. É a terceira etapa do ciclo de desenvolvimento de um sistema de software. 13 GABARITO Questão 1 - Resposta B Resolução: A sigla Case significa em português “Engenharia de Software Auxiliada por Computador”, portanto, uma ferramenta deste tipo serve para ajudar um profissional de TI a empregar os diversos conceitos de engenharia de software em seu dia a dia de trabalho. Questão 2 - Resposta A Resolução: Um requisito funcional deve atender as regras de negócio, que definem a descrição de um problema específico que o software irá resolver. Para isso será criada uma funcionalidade neste software com o objetivo de resolver este problema. TEMA 2 Ferramentas para modelagem de um sistema de software ______________________________________________________________ Autoria: André Olímpio Leitura crítica: Marcilyanne Gois 15 DIRETO AO PONTO A modelagem é a segunda etapa no ciclo de desenvolvimento de um sistema de software e é de fundamental importância para obter sucesso e atingir os objetivos traçados na etapa anterior. Infelizmente um número considerável de desenvolvedores negligenciam a modelagem, não a cumprindo da forma devida ou pior, simplesmente queimando esta etapa, indo diretamente à implementação. Este descumprimento ocorre porque estes profissionais acreditam ser perda de tempo estruturar um software, criar diagramas e projetar os componentes deste sistema antes de codificá-lo com o intuito de antecipar possíveis defeitos de lógica, ter uma visão mais ampla do problema e encontrar soluções mais robustas. Cada funcionalidade precisa se estruturar com completeza, idealizando todas as características e projetando seus resultados, podendo estes ser positivos ou negativos (OKUYAMA; GONSALES; MILETTO, 2014). Todo sistema de software exige uma quantidade grande de componentes que precisam ser analisados, revistos, tratadose direcionados, antes de começar a implementação do código fonte. Estes componentes são implementados e transformados em funcionalidades deste sistema. O objetivo é antever possíveis situações que venham a gerar falhas neste sistema durante sua execução no modo runtime e assim deixá-lo inoperante. A modelagem tem esse papel, de abrir o sistema em diferentes perspectivas, permitindo aos desenvolvedores uma abstração mais profunda de suas funcionalidades, ampliando a visão do alcance que este sistema possa vir a ter após sua implantação. Uma IDE (Integrated Development Environment, em português Ambiente Integrado de Desenvolvimento) é um tipo de ferramenta 16 Case que apresenta uma interface de implementação de código-fonte que permite a utilização de diferentes linguagens de programação no mesmo sistema. Figura1 - Estrutura de uma IDE Linguagem de Programação (DESKTOP) • C# • Delphi • C++ Linguagem de Programação (WEB) • PHP • ASP • JavaScript Linguagem de Programação (MOBILE) • Java • Swift Fonte: elaborada pelo autor. A modelagem utiliza diversos modelos para projetar um determinado sistema. Um modelo pode ser definido como uma simplificação da realidade, criado para facilitar o entendimento de sistemas complexos. Estes modelos podem abranger facilmente planos mais detalhados, assim como planos mais gerais com uma visão mais panorâmica deste sistema (BERTAGNOLLI; FRANCO; MACHADO, 2016). 17 Um dos melhores conceitos utilizados para modelagem é a UML, uma linguagem específica para este tipo de ação, que apresenta diagramas que possibilitam ao desenvolvedor ter esta abstração de diferentes perspectivas, já que cada um destes diagramas foi criado exatamente com este intuito. Por meio da UML, é possível visualizar um software de forma estática ou dinâmica, no ponto de vista do usuário ou do próprio sistema, prepará-lo para a implementação do código- fonte utilizando conceitos de orientação a objetos, identificar requisitos funcionais e não funcionais aplicados neste sistema, simular as diferentes saídas de dados após a implementação de uma funcionalidade específica, verificar o comportamento do software em situações de erro, estruturar um roteiro de diferentes tipos de teste, entre outras coisas. E tudo isso sem ter iniciado a etapa de codificação do sistema. Esta linguagem é ideal para o processo de modelagem de um software, devido a sua amplitude e poder de abstração, já que os 14 diagramas que possui têm como características abstrair o sistema por meio de diferentes pontos de vistas, antes mesmo de sua implementação. Vale ressaltar que todo problema a ser solucionado por meio de um sistema computacional é multidisciplinar, ou seja, os requisitos não são baseados apenas em uma área de conhecimento, mas sim em diferentes fatores de diferentes segmentos (OKUYAMA; GONSALES; MILETTO, 2014). As ferramentas Case utilizadas para modelagem são as mais variadas possível, tendo inclusive algumas que não são exclusivas para modelagem, mas que apresentam funcionalidades 18 específicas para se cumprir todos os trâmites necessários para esta etapa do ciclo de desenvolvimento de software. Dentre estas destacam-se o NetBeans, o Eclipe IDE e o Microsoft Visio. O NetBeans e o Eclipse são ferramentas opensource, multiplataforma, largamente utilizadas para implementação do código-fonte do software, utilizando diferentes linguagens de programação para tal, como por exemplo Java, C++, PHP e JavaScript. Também permitem o desenvolvimento de aplicações para ambiente web, mobile e desktop. Ambas apresentam plug-in específico que permite a construção de diagramas da UML com base em suas interfaces e integrá-los à codificação em linguagem Java (BERTAGNOLLI; FRANCO; MACHADO, 2016). O Microsoft Visio é uma ferramenta proprietária que é muito utilizada para desenvolvimento de modelos como fluxograma, organograma, diagramas de layout de redes, ambientes de redes industriais, modelagem de sistemas de banco de dados, entre outras coisas. E além de tudo isso, também permite a criação de diagramas da UML em sua interface. O Astah é uma ferramenta Case específica para se criar, manipular e administrar os diagramas da UML, ou seja, é um software exclusivo para modelagem de sistemas. A sua versão mais completa permite ainda a criação de códigos-fonte de linguagem Java com base nestes diagramas, principalmente no de classes. Estes códigos Java são exportáveis, podendo ser utilizados em ferramentas de implementação como o Netbeans e o Eclipse. A grande vantagem desta integração é criar códigos diretamente començando pela modelagem, fazendo que tudo faça parte do mesmo contexto, facilitando a programação e a manutenção do software a ser desenvolvido (OKUYAMA; GONSALES; MILETTO, 2014). 19 Referências bibliográficas OKUYAMA, F. Y.; GONSALES, A. D.; MILETTO, E. M. Desenvolvimento de software I: conceitos básicos. 1. ed. Porto Alegre: Bookman, 2014. BERTAGNOLLI, S. C.; FRANCO, M. H. I.; MACHADO, R. P. Desenvolvimento de software III: programação de sistemas web orientada a objetos em Java. 1. ed. Porto Alegre: Bookman, 2016. PARA SABER MAIS Além da UML, que é o padrão mundial de estruturação e modelagem de um sistema de software, é possível também utilizar outros conceitos para realizar esse processo. O ambiente web apresenta uma estrutura composta por páginas, dispositivos e tecnologias distintas que trocam informações entre si. As dificuldades de se ter este ambiente totalmente integrado fizeram com outras opções fossem criadas para suprir as limitações da UML em modelar este tipo de aplicação. O padrão XML (Extensible Markup Language) é visto como uma solução para minimizar essas questões. O XML pode ser definido como uma extensão do HTML utilizada como uma maneira de gerar padrões de marcação para necessidades especiais existentes em um sistema web, principalmente a troca de dados entre páginas. Apesar de apresentar alguns problemas como múltiplos padrões e semântica de marcações, é utilizada como uma excelente opção ao UML, possuindo componentes interessantes para tal. Dentre estes, destacam-se o XML Schema (1999) e RDF Schema. 20 O XML Schema (1999) refere-se a uma linguagem voltada para definição de regras de validação, chamadas de esquemas, gerando assim documentos no formato XML. Este modelo foi amplamente utilizado no desenvolvimento do sistema da nota fiscal eletrônica no Brasil (NF-e) e tem como output um arquivo chamado XSD (XML Schema Definition) (2001) contendo as definições além das declarações existentes neste esquema. O padrão XSD (2001) é apontado como uma referência na modelagem de objetos de negócios para aplicações desenvolvidas para ambiente web e sendo recomendação oficial do W3C, o órgão mundial de regulamentação e padronização da internet. Esse padrão fornece funcionalidades como construir tipos de dados próprios derivados de tipos básicos e realizar relacionamentos entre elementos de dados dentro do XML, algo similar aos relacionamentos entre tabelas de um banco de dados relacional. Já o RDF Schema é utilizado como um método geral para a descrição conceitual ou de modelagem de dados que são implementados em recursos de aplicações web, utilizando de sintaxes e formatos de serialização destes recursos. É também aplicado em sistemas voltados para gerenciamento do conhecimento que utilizam conceitos de Machine Learning e Internet das Coisas. Segundo Braganholo e Heuser (2015), o RDF também é recomendado pelo W3C, tendo seus arquivos como modelos de criação de dados que são utilizados como base para consultas robustas em ambiente web, reconhecendo informações provenientes de uma parte específica do código-fonte de uma página, os metadados, que são facilitadores de consulta, largamente utilizados pelos principais mecanismos de busca existentes. 21 Referências bibliográficas BRAGANHOLO, V. P.; HEUSER, C. A.; XML Schema, RDF(S) e UML: uma comparação.2015. TEORIA EM PRÁTICA Reflita sobre a seguinte situação. Você precisa fazer a modelagem de um sistema de gerenciamento de um caixa eletrônico. Vale lembrar que a arquitetura é formada por dois softwares distintos, um sendo executado diretamente na máquina alocada na agência bancária e outro que é a central do banco, no qual todos os dados referentes às contas dos clientes estão armazenados. O software da máquina tem que fazer validações do tipo “Leitura do cartão”, “Cédulas para saque” e “Autenticação por meio de biometria”. Já o da central do banco é bem mais robusto, pois se concentram todas as ações necessárias para administração da conta corrente, como “Verificação de saldo”, “Solicitação de extrato”, “Solicitação de empréstimos”, “Pagamento de contas”, entre muitas outras ações. Idealize o diagrama de casos de uso para este sistema, identificando os atores e as funcionalidades de cada um dos softwares existentes nesta arquitetura. Você aplicaria os conceitos de herança, include e extends neste diagrama? Idealizando a classe conta corrente, quais seriam os atributos e os métodos existentes nela? Vale lembrar que as contas podem ser de tipos diferentes como pessoa física e pessoa jurídica. 22 Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 O diagrama de classes da UML é a grande referência para desenvolvimento de uma aplicação quando se for utilizar uma linguagem de programação orientada a objetos para implementá-la. Por esta razão, os profissionais de TI definem este diagrama como o mais fundamental da UML, já que uma classe é estrutura base para se trabalhar com objetos e, assim, a criação deste diagrama durante o processo de modelagem se torna essencial. Com base neste pensamento, fica sugerida a leitura de um texto do Capítulo 2 (páginas 55 a 67) do livro citado, que explica de maneira bem clara e completa para enriquecer o entendimento do conceito deste diagrama. Para realizar a leitura, acesse a plataforma Minha Biblioteca disponível na Biblioteca Virtual da Kroton. FOWLER, M. UML Essencial – um breve guia para a linguagem -padrão de modelagem de objetos. 3. ed. São Paulo: Bookman, 2005. Cap. 2, p. 55-67. Indicação 2 É importante para um profissional de Tecnologia da Informação que busca se especializar em desenvolvimento de sistemas de Indicações de leitura 23 software conhecer e se aprofundar no conceito de modelagem, ou seja, a estruturação deste sistema com objetivo de ampliar a visão para ele, e para isso construir diagramas da UML que darão a possibilidade de enxergar este software por meio de pontos de vistas diferentes e consequentemente abstrações distintas. Com base neste pensamento, fica sugerido um texto do Capítulo 4 (página 42 a 59) do livro citado, que explica de maneira bem clara e completa para enriquecer o entendimento do conceito de modelagem. Para realizar a leitura deste texto, acesse a plataforma Biblioteca Virtual 3.0 disponível na Biblioteca Virtual da Kroton. SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Pearson, 2019. Cap. 4, p. 42-59. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. O que é uma IDE (Integrated Development Environment)? 24 a. Uma ferramenta de gerenciamento de projetos que permite fazer um cronograma de tarefas a serem realizadas, colocando-as em ordem e atribuindo prioridade de execução. b. Uma ferramenta exclusiva para modelagem de banco de dados. c. Uma ferramenta que permite entre outras coisas a criação de códigos-fonte de diferentes linguagens de programações em um sistema por meio de uma única interface. d. Uma ferramenta de controle de testes e versionamento de um sistema de software, utilizando linguagem de programação Java e PHP. e. Uma ferramenta de controle de acesso a dados em uma área restrita de uma rede local ou pública, permitindo inclusive o bloqueio de acesso em caso de suspeita de quebra de segurança. 2. O que é possível fazer com uma ferramenta Case voltada para modelagem de sistemas de software? a. Criar uma estrutura que será a base para a criação de códigos de definição de requisitos de um sistema de software. b. Criar uma estrutura que permita gerar arquivos em formato único para manipulação de metadados e acesso a redes sociais. c. Criar uma estrutura que, após a implementação, se tornará as funcionalidades do sistema de software. d. Criar uma estrutura que facilita a implementação de componentes de conectividades com dispositivos móveis. 25 e. Criar uma estrutura de registros de ações do usuário em um sistema operacional. GABARITO Questão 1 - Resposta C Resolução: IDE é uma ferramenta com foco em programação, que permite criar códigos em diferentes linguagens e utilizá-los no mesmo sistema de software. Questão 2 - Resposta C Resolução: Este tipo de ferramenta Case deve gerar uma estrutura que irá direcionar toda a implementação do software, modelando os itens que se tornarão as funcionalidades deste sistema, que são baseadas nos requisitos dele. TEMA 3 Ferramentas Case para gerenciamento de projeto de desenvolvimento de software ______________________________________________________________ Autoria: André Olímpio Leitura crítica: Marcilyanne Gois 27 DIRETO AO PONTO Um sistema de software é uma estrutura multidisciplinar, ou seja, é formado por diferentes áreas de conhecimento que estão integradas entre si. O resultado desta integração é uma solução computacional para resolver problemas do mundo real e fornecer valor agregado. Portanto, desenvolver um software requer conhecimentos que vão além da programação, cabe ao profissional compreender e aplicar na prática estes conceitos. Segundo Filho (2019), a codificação de um software é apenas parte do processo que envolve também a integração com outros conceitos relacionados à área de Tecnologia da Informação, como a engenharia de software, a inteligência artificial, os métodos de orientação a objetos, os métodos ágeis ou banco de dados, conforme visualizado na figura a seguir: Figura 1 - Arquitetura de integração de um sistema de software Fonte: elaborado pelo autor. Desenvolvimento de Software Engenharia de Software Métodos de Orientação à Objetos Métodos Ágeis Banco de Dados Inteligência Artificial 28 Esta arquitetura remete ao entendimento de que é necessário compreender, além dos requisitos do sistema, todos os fatores que permeiam este software, tendo em vista que estes fatores podem ter incidência direta nos resultados obtidos por meio das funcionalidades implementadas neste sistema (HUMBLE; FARLEY, 2013). Por exemplo: um sistema web de e-commerce que apresenta uma quantidade significativa de vendas diárias, mas pretende expandir os negócios com objetivo de aumentar o número de vendas. Para isso, utiliza-se de informações provenientes de redes sociais relacionadas a preferências pessoais dos usuários com intuito de obter novos clientes, tendo em vista que atualmente uma rede social é um canal de comunicação essencial quando se quer implementar uma estratégia de marketing eficaz. A escolha da tecnologia de banco de dados a ser utilizada para atender a esta demanda é um fator fundamental, tendo em vista que além do armazenamento, aspectos como performance e segurança são igualmente relevantes. A arquitetura relacional, composta por dados estruturados, buscas padronizadas e relacionamento entre tabelas, é a ideal para gerenciar asvendas de produtos. Porém, segundo Humble e Farley (2013), para gerenciar a coleta de dados vindos das redes sociais, a mais adequada é a arquitetura não relacional, tendo em vista que estes dados não são estruturados e nem formatados, necessitando assim de uma maneira mais eficaz de armazenamento, a qual possa permitir que sejam agrupados em registros sem as formatações sugeridas no modelo relacional e ainda apresentar alta performance e escalabilidade. A gestão de um projeto de software engloba os aspectos de armazenamento, segurança e performance, que são integrados ao desenvolvimento e que também precisam ser administrados 29 pelos profissionais de TI envolvidos neste processo. Fatores como controle de versionamento, monitoramento de tarefas, controle de cronograma, gerenciamento de custos e correção de bugs fazem parte da lista de incumbências das quais estes profissionais terão que lidar durante a criação do sistema de software. As ferramentas Case para gestão de projetos de software são aliadas poderosas, oferecendo uma robusta estrutura de gerenciamento, controle e monitoramento de tudo o que se faz necessário para que um sistema alcance os objetivos, que as funcionalidades nele implementadas atendam plenamente os requisitos aos quais se propõem a resolver. O GitHub (2008) é uma plataforma que faz controle de versão de arquivos em ambiente web. Trata-se de um grande repositório de dados, no qual os usuários podem hospedar arquivos, modificá- los e ter um registro completo de todas as alterações realizadas, evitando conflitos entre estas versões, permitindo inclusive que estes arquivos sejam compartilhados com outros usuários, assim facilitando o trabalho colaborativo entre eles. O GitHub Desktop é uma ferramenta Case que permite o acesso local aos dados contidos na nuvem, permitindo a troca de informações entre os dois ambientes por meio de comandos específicos e integrando todos os arquivos modificados em uma única estrutura. É uma ferramenta amplamente utilizada pelos profissionais de desenvolvimento de sistema de software. Já o Visual Studio Team System (VSTS) (2005) é uma plataforma online muito robusta para gerenciamento de projetos de sistema de software. Criada pela Microsoft em 2005 e rebatizada com o nome de Azure DevOps em 2010, é uma ferramenta bastante utilizada e muito bem aceita pelos profissionais da área, principalmente devido a sua amplitude e alcance, já que apresenta inúmeros recursos como controle de tarefas (tasks), cronograma 30 (schedule), código-fonte e além disso tem portabilidade com o GitHub, que também é administrado pela Microsoft. O Easy Redmine (2018) segue a mesma linha do Microsoft VSTS, já que também se trata de uma ferramenta de gestão de projetos de software. Apresenta uma interface bastante amigável, na qual os comandos são bastante simplificados e com integração a outras tecnologias como banco de dados e GitHub. Estas ferramentas apresentam como principal finalidade o auxílio no desenvolvimento de um software, facilitando assim a implementação das funcionalidades deste sistema, garantindo a qualidade das entregas e satisfazendo as expectativas dos clientes (HUMBLE; FARLEY, 2013). Referências bibliográficas EASY REDMINE. EasyRedmine: gerenciador online de projetos de software. Easy Software Ltd, 2018. Disponível em: http://www. easyredmine.com. Acesso em: 5 maio 2020. FILHO, W. P. P. Engenharia de software: projetos e processos. 4. ed. Rio de Janeiro: LTC, 2019. GITHUB. GitHub: controle de versionamento de software. GitHub Inc., 2008. Disponível em: http://www.github.com. Acesso em: 3 maio 2020. HUMBLE, J.; FARLEY, D. Entrega contínua: como entregar software de maneira rápida e confiável. 1. ed. Porto Alegre: Bookman, 2013. MICROSOFT AZURE. Visual Studio Team System: Gerenciador de projetos de software. Microsoft, 2005. Disponível em: http://azure.microsoft.com. Acesso em: 3 maio 2020. http://www.github.com http://azure.microsoft.com 31 PARA SABER MAIS Segundo Humble e Farley (2013), o Git é um sistema open source de controle de versão utilizado por muitos desenvolvedores de softwares. Com ele é possível criar todo histórico de alterações no código-fonte de um projeto e facilmente voltar para qualquer ponto para saber como o código estava naquela data. A estrutura do Git foi criada em 2005 por Linus Torvald, o criador do sistema operacional Linux. Já o GitHub pode ser considerado uma espécie de rede social para desenvolvedores e programadores. Ele possui diversas funcionalidades como feeds, followers (seguidores), wiki e um gráfico que mostra como os esses desenvolvedores estão contribuindo e trabalhando nas versões de repositórios que foram compartilhados com eles. Pois bem, o Git utiliza um conceito chamado CVS (Concurrent Version System, em português, Sistemas de Versões Concorrentes), que consiste em permitir o trabalho com diversas versões de códigos- fonte organizados em diretórios e localizados local ou remotamente, mantendo as versões antigas e os registros (logs) de quem manipulou estes códigos e quando isso ocorreu (HUMBLE; FARLEY, 2013). A partir do CVS foi criado o SVN (Subversion), uma tecnologia desenvolvida pela empresa Apache Software Foundation, por meio do projeto Apache Subversion (2010). Trata-se de uma arquitetura open source, multiplataforma que permite um controle de versionamento ampliado, oferecendo recursos para gerenciamento de projetos múltiplos que trabalham em cluster, suprindo assim limitações do CVS. O CVS é um tipo de controle de versionamento de software baseado em uma estrutura na qual os arquivos estão armazenados e são 32 acessados de forma distribuída, ou seja, não necessariamente no mesmo local físico. O SVN é voltado para uma estrutura de armazenamento centralizada. Existem ferramentas Case que dão suporte ao SVN localmente, que apresentam plug-ins que podem ser instalados, como o subclipse (2012), que pode ser integrado ao Eclipse IDE, e o JSVN (2008), que pode ser integrado ao Netbeans IDE. Empresas como Microsoft e Apple também possuem ferramentas para este tipo de tecnologia. O TortoiseSVN (2013) pode ser incorporado ao shell do Windows e ser utilizado via Internet Explorer, além de suportado no ambiente Azure DevOps. O AnkhSVN Windows (2014) pode ser integrado ao Visual Studio IDE. Já o svnX (2014) é incorporado ao MacOS e acessado via interfaces que permitem esse serviço dentro do sistema operacional. Referências bibliográficas AnkhSVN Windows: Ferramenta de subversão. Microsoft, 2014. Disponível em: http://www.ankhsvn.net. Acesso em: 4 maio 2020. ECLIPSE FOUNDATION. Eclipse IDE: ferramenta de desenvolvimento de software. Eclipse Foundation, 2001. Disponível em: http://www.eclipse.org. Acesso em: 3 maio 2020. ECLIPSE FOUNDATION. Subclipse: Uma ferramenta Eclipse de subversão. Eclipse Foundation, 2012. Disponível em: https://marketplace.eclipse.org/ content/subclipse. Acesso em: 4 maio 2020. HUMBLE, J.; FARLEY, D. Entrega contínua: como entregar software de maneira rápida e confiável. 1. ed. Porto Alegre: Bookman, 2013. JSVN: cliente Java para Subversion. Alternate Computing Software, 2013. Disponível em: http://www.jsvn.alternatecomputing.com. Acesso em: 4 maio 2020. http://www.eclipse.org https://marketplace.eclipse.org/content/subclipse https://marketplace.eclipse.org/content/subclipse http://www.jsvn.alternatecomputing.com 33 MACAPPSTORE. svnX: subversion tool plug-in for MacOS. Apple, 2014. Disponível em: http://www.macappstore.com. Acesso em: 5 maio 2020. TortoiseSVN: ferramenta de subversão. Microsoft, 2013. Disponível em: https://tortoisesvn.net. Acesso em: 4 maio 2020. TEORIA EM PRÁTICA Reflita sobre a seguinte situação: uma empresa de desenvolvimento de software sediada em Ottawa, no Canadá, está em expansão e busca no mercado brasileiro profissionais que possam suprir as suas necessidades técnicas e você foi contratado para fazer parte do rolde programadores desta empresa, trabalhando remotamente daqui do Brasil. Logo de cara, você já se depara com um grande desafio, tendo em vista que esta empresa fechou recentemente um contrato para desenvolvimento de um sistema para controle de segurança de um aeroporto, o qual deverá utilizar câmeras digitais inteligentes que poderão fazer reconhecimento facial das pessoas que transitam pelas dependências deste aeroporto. O objetivo é identificar pessoas foragidas da polícia ou que estejam no cadastro de desaparecidos. O sistema deverá ter integração com órgãos públicos do país, polícia internacional e departamento de segurança nacional. Como que uma ferramenta de controle de versões iria auxiliar o seu trabalho durante a execução deste projeto? Como que você agiria se houvesse a necessidade de rever estados anteriores de uma codificação feita por um colega de trabalho? Como que esta ferramenta ajudaria no trabalho colaborativo? E como que as plataformas online de gerenciamento de projetos de software poderiam ser úteis no controle e monitoramento das tarefas realizadas por você e seus colegas de trabalho? http://www.macappstore.com https://tortoisesvn.net 34 Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 DevOps é uma metodologia de desenvolvimento de software que utiliza a comunicação para integrar desenvolvedores (dev) de software e profissionais de infraestrutura (ops) de TI. Muitas empresas liberam novas versões de software com grande periodicidade, e, para conseguir a agilidade necessária para colocar as aplicações em produção, é imprescindível considerar as orientações DevOps. Essa metodologia ficou conhecida como implementação contínua ou entrega contínua porque, ao padronizar ambientes de desenvolvimento, também auxilia as empresas no gerenciamento do lançamento de novas versões, além de controlar e de documentar a emissão de relatórios com diversidade de granularidade. Como base neste pensamento, fica sugerido um texto que consta no Capítulo 3 (páginas 47 a 63) do livro citado, que explica de maneira bem clara e completa para enriquecer o entendimento do conceito de DevOps. Para realizar a leitura deste texto, acesse a plataforma Biblioteca Virtual 3.0 disponível na Biblioteca Virtual da Kroton. MUNIZ, A.; SANTOS, R.; IRIGOYEN, A.; MOUTINHO, R. Jornada DevOps – unindo a cultura ágil, lean, tecnologia para entrega de software com qualidade. 1. ed. Rio de Janeiro: Brasport, 2019. Cap. 3, 47-63. Indicações de leitura 35 Indicação 2 Muitos problemas de desenvolvimento de software são causados por falta de um controle adequado de versões. Atualmente existem ferramentas Case que fazem este trabalho de forma muito eficiente, eliminando qualquer tipo de situação adversa com relação a este conceito. Os problemas que podem ocorrer devido à falta deste controle de versionamento de software são os mais variados possíveis, por exemplo, um código ser sobrescrito acidentalmente, a perda de alterações realizadas, a dificuldade em identificar quais as alterações efetuadas no código, quando foram feitas ou então por quem foram feitas, a dificuldade em recuperar o código de uma versão anterior que está em produção e manter diferentes variações do sistema ao mesmo tempo. Como base neste pensamento, fica sugerida a leitura do Capítulo 2 (página 31 a 53) do livro citado, que explica de maneira bem clara e completa para enriquecer o entendimento do conceito de modelagem. Para realizar a leitura deste texto, acesse a plataforma Minha Biblioteca disponível na Biblioteca Virtual da Kroton. HUMBLE, J.; FARLEY, D. Entrega contínua: como entregar software de maneira rápida e confiável. 1. ed. Porto Alegre: Bookman, 2013. Cap. 2, p. 31-53. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. 36 Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. A arquitetura integrada de um sistema de software pode ser definida como: a. Um conjunto de fatores pré-determinados com objetivo comum de resolver problemas do mundo real por meio de funcionalidades específicas de um contexto sólido de dados alfanuméricos. b. Uma estrutura de sistemas computacionais gerados por meio de uma interface padrão de visualização de conteúdo em ambiente de rede. c. Um conjunto de dados coletados em redes sociais e disponibilizados por meio de dispositivos autônomos e inteligentes, sem a necessidade de interação humana. d. Uma estrutura que envolve a integração de diversos conceitos de desenvolvimento com conceitos de outros segmentos como engenharia de software, inteligência artificial, métodos de orientação a objetos, métodos ágeis e banco de dados. e. Uma infraestrutura de requisitos de regras de negócio apropriados para resolução de problemas por meio de ferramentas Case. 2. Uma ferramenta Case de gestão de projetos de software é capaz de: a. Controlar o versionamento de código-fonte, monitorar as tarefas da equipe de desenvolvimento, controlar o cronograma, gerenciar custos e efetuar correção de bugs. 37 b. Gerenciar o acesso de usuários ao sistema de controle de versões, mapear as unidades de rede existentes no software, monitorar a gestão da qualidade, integrar múltiplos sistemas e direcionar o conteúdo de dados relacionados à gestão de controle científico. c. Monitorar o controle de versionamento de arquivos, acessar internet banda larga de alto desempenho, registrar os dados dos clientes em ambiente de rede, gerenciar o conteúdo exibido na interface com o usuário final da aplicação e modelagem do sistema por meio de diagramas da UML. d. Efetuar o controle de entrada e saída de dados no ambiente de rede local, garantir a qualidade do processo de execução do software, controlar as tarefas realizadas pelos integrantes da equipe de desenvolvimentos e monitorar as funcionalidades de DevOps utilizadas na arquitetura do sistema. e. Analisar a compatibilidade dos dados em ambiente de rede, garantir a qualidade dos processos no ciclo de desenvolvimento, gerenciar o trabalho colaborativo, controlar as versões do código-fonte, gerenciar o acesso a dados restritos e monitorar os usuários do sistema após implantação. GABARITO Questão 1 - Resposta D Resolução: A arquitetura integrada refere-se à junção de conceitos de desenvolvimento, engenharia de software, banco de dados, inteligência artificial, além de métodos de orientação a objetos e ágeis, com a finalidade de resolver os problemas mais complexos e desafiadores existentes no mundo real atualmente. 38 Questão 2 - Resposta A Resolução: Uma ferramenta Case de gestão de projeto de software deve ser capaz de fazer todas as ações necessárias para que esta gestão ocorra de forma eficiente. Essas ações são: controle de versionamento de código-fonte, monitorar as tarefas da equipe de desenvolvimento, controlar o cronograma, gerenciar custos e efetuar correção de bugs. TEMA 4 Ferramentas Case para gerenciamento de projeto de desenvolvimento de software ______________________________________________________________ Autoria: André Olímpio Leitura crítica: Marcilyanne Gois 40 DIRETO AO PONTO Não é possível afirmar que um sistema de software irá funcionar plenamente, sem que apresente nenhuma ocorrência de erros durante sua execução. Este tipo de produção possui um grande número de estados distintos representados por meio de fórmulas matemáticas, atividades computacionais e algoritmos complexos. O tamanho deste sistema e a quantidade de pessoas envolvidas noprocesso aumentam ainda mais essa complexidade. Toda esta estrutura é passível de ser testada, mas é necessária a utilização de ferramentas Case, já que é humanamente impossível gerenciar os testes devido à quantidade impraticável de possibilidades. A qualidade do teste é diretamente relacionada à utilização destas ferramentas (SOMMERVILLE, 2018). Figura 1 - Princípio de defeito – erro – falha Fonte: elaborada pelo autor. A Figura 1 indica que um código defeituoso oferece a possibilidade de produzir situações de erro quando executado em situações 41 específicas. Quando esta situação ocorre, o software pode ter seu funcionamento interrompido, o que caracteriza uma falha. As falhas podem ser originadas por diversos motivos, com base na compilação de um código fonte defeituoso. Por exemplo, a especificação pode estar errada ou incompleta, ou pode conter requisitos impossíveis de serem implementados, devido a limitações de hardware ou software. A implementação também pode estar errada ou incompleta, como um erro de um algoritmo. Portanto, uma falha é o resultado de um ou mais defeitos em algum aspecto do sistema. O teste pode ser visto como uma parcela do processo de qualidade de software, tendo como objetivo principal detectar possíveis falhas neste sistema. A qualidade da aplicação pode e, normalmente, varia significativamente de um sistema para outro (NOGUEIRA, 2018). A execução do teste de software segue as etapas de um ciclo, conforme ordem a seguir: • Plano / estratégia de automação de testes. • Elaboração de ambientes / ferramentas para automação. • Construção dos scripts. • Execução dos scripts. • Apresentação de resultados. A primeira etapa deste processo é caracterizada pela criação de um plano de definição das ações a serem realizadas durante a automação de testes em um software. Após isso, é preciso criar um ambiente no qual estes testes deverão ocorrer e as 42 tecnologias necessárias para tal. A construção dos scripts refere-se à criação de tarefas a serem realizadas neste ambiente de teste, e a execução nada mais é do que a aplicação prática destas tarefas. E por fim, há a necessidade de apresentar os resultados obtidos e fazer a documentação deles. Segundo Sommerville (2018), para melhorar o processo de teste realizado em um sistema de software, utiliza-se templates para gerar documentos padronizados, facilitando assim o entendimento por parte dos profissionais envolvidos. Os modelos são importantes por definir uma estrutura de registros de todas as atividades realizadas no ambiente de teste, gerando indicadores que permitem uma visualização robusta dos dados e garantem que não haja lacunas no processo que permitam a execução do código-fonte em situações de erro. Independentemente do processo de desenvolvimento adotado ou da metodologia aplicada, o processo de teste de software está presente de forma expressiva e deve ser levado a sério. A grande prova desta afirmação são as diversas certificações disponíveis no mercado e a atenção que as empresas estão dando para esta atividade (NOGUEIRA, 2018). Referências bibliográficas NOGUEIRA, J. H. M. Engenharia de software: métodos orientados a objetos e ágeis. Fortaleza, CE: Amazon KDP, 2018. SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. 43 PARA SABER MAIS A manutenção é um processo que ocorre após a entrega da versão final do software. Engana-se quem acredite que os esforços em um sistema se encerram quando este é implantado no ambiente de trabalho do cliente. Este software pode apresentar a necessidade de correção de erros (bugs) ou então agregar novas funcionalidades. A etapa da manutenção é caracterizada pela modificação do software já entregue ao cliente, ou seja, é qualquer alteração no sistema após sua entrada em produção. Os defeitos não são introduzidos pelo tempo e nem pela carga de utilização, na verdade estes defeitos encontrados já existiam, algumas vezes até mesmo antes do software entrar em produção. Por alguma razão, não foram identificadas em fases anteriores, porém a manutenção não se configura apenas por correções (FABRIS; PERINI, 2014). Segundo Filho (2019), um sistema de software normalmente sofre mudanças mesmo após a sua implantação no ambiente do usuário, que ocorrem devido ao contexto em que estão inseridos. Neste cenário, estas mudanças acabam forçando os desenvolvedores a reescreverem partes do código-fonte da aplicação, com a finalidade de adequá-lo a estas novas diretrizes. Assim, a etapa de manutenção de software é dividida em quatro fases distintas, realizadas de acordo com as mudanças indicadas a serem concluídas no sistema. Essas fases são: introdução, crescimento, maturidade e declínio. As fases de maturidade e de crescimento do software são focadas em ajustes de direcionamento e não em profundas alterações na estrutura do código-fonte, ou seja, são realizadas melhorias na aplicação, aprimorando fatores como performance e segurança. 44 Durante o cumprimento destas fases, é necessário que sejam realizados testes de verificação de cumprimento de requisitos e consequentemente a atualização da documentação para avaliar as partes modificadas e acrescentadas no código. Já na fase de declínio, o software apresenta sintomas de desgaste e assim a necessidade de substituição deste por um novo sistema. Assim, segundo Fabris e Perini (2014), neste cenário este software está atingindo o final da vida útil e deve ser prontamente avaliado para determinar a retirada de operação. A avaliação deve ser feita com base em aspectos técnicos e também econômicos, gerando os relatórios necessários para pautarem a criação de um novo projeto de software que venha atender as necessidades do usuário e implementar funcionalidades que satisfaçam plenamente os requisitos, utilizando novos conceitos e recursos. Os testes de declínio também podem gerar resultado que permitem que o software venha a sofrer alterações mais profundas, como a substituição de tecnologias empregadas ou até mesmo para conseguir independência de fabricante. Este software é submetido a uma análise de viabilidade técnica e financeira, que irá direcionar a equipe de desenvolvimento sobre qual a melhor decisão a ser tomada, a fazer as alterações necessárias ou a criar um novo sistema. Referências bibliográficas FABRIS, P. P. G.; PERINI, L. C. Processos de software. 1. ed. Londrina: Editora e Distribuidora Educacional S.A., 2014. FILHO, W. P. P. Engenharia de software: projetos e processos. 4. ed. Rio de Janeiro: LTC, 2019. 45 TEORIA EM PRÁTICA Reflita sobre a seguinte situação: um empresário do ramo de venda de roupas possui um sistema e-commerce de loja virtual hospedado em seu website. Neste sistema existe uma estrutura de controle de fraudes em transações eletrônicas. Houve uma tentativa externa de acesso a esta estrutura do site. Aparentemente o software continua funcionando normalmente com exceção ao fato de haver problemas de conexão com dois dos três bancos nos quais a loja possui conta corrente utilizadas no processo de vendas online. Este comportamento incomum passou a acontecer após a tentativa de invasão. O empresário então entra em contato e deseja lhe contratar para verificar o funcionamento do sistema. Quais seriam as ferramentas Case adequadas para fazer este trabalho? Seguindo o ciclo de execução de caso de teste, elabore um test case para esta situação. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Os testes de um sistema de software são fundamentais para garantir que o cumprimento dos requisitos, a satisfação do cliente e a qualidade sejam mensuradas. Como base neste pensamento, fica sugerido um texto que se encontra no livro citado (Capítulo 22, páginas 466 a 472), no qual se explica de Indicações de leitura 46maneira bem clara e completa para enriquecer o entendimento do conceito testes de software. Para realizar a leitura deste texto, acesse a plataforma Biblioteca Virtual 3.0 disponível na Biblioteca Virtual da Kroton. PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. Cap. 22, p. 466- 472. Indicação 2 Um tipo de teste muito utilizado durante a etapa de desenvolvimento de um sistema de software é o TDD (Test Driven Development, em português: Desenvolvimento dirigido a testes), uma técnica de desenvolvimento de software que se relaciona com o conceito de verificação e validação e se baseia em um ciclo curto de repetições, no qual o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Como base neste pensamento, fica sugerido um texto que se encontra no livro citado (Capítulo 4, páginas 179 a 190), que explica de maneira bem clara e completa para enriquecer o entendimento do conceito testes de software. Para realizar a leitura deste texto, acesse a plataforma Biblioteca Virtual 3.0 disponível na Biblioteca Virtual da Kroton. NETO, R. M. Engenharia de software. 1. ed. Londrina: Editora e Distribuidora Educacional S.A., 2016. Cap. 4, p. 179-190. 47 QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. O princípio de Defeito – Erro – Falha baseia-se em: a. Um tratamento de situações de erro por meio de ferramentas Case de teste de sistema de software. b. Um código escrito de forma defeituosa pode gerar um erro quando for executado em uma situação específica. Posteriormente este erro pode gerar uma falha, fazendo com que o sistema fique inoperável e trave seu funcionamento no ambiente de execução. c. Uma condição específica de um sistema desenvolvido em linguagem de programação Java em ambiente de execução de testes de software. d. Um código fonte de origem duvidosa, escrito com situações de defeito que permitem a execução de um ambiente de geração de falhas do sistema. e. Uma versão de software capaz de anexar a tecnologia dos dados alfanuméricos em ambiente de execução de sistema de testes de software. 48 2. A estrutura de execução de casos de testes é composta por etapas que servem para definir, escrever, executar e documentar cada teste realizado no sistema de software. Sobre estas etapas, é possível afirmar que: a. A definição das etapas interfere diretamente na qualidade do software, do processo de desenvolvimento e na escolha da ferramenta Case a ser utilizada no processo de modelagem deste software. b. A equipe de desenvolvimento executa os testes de acordo com o caso de teste que é devidamente escrito pelos usuários do sistema. c. Deve-se antes de tudo estruturar uma dinâmica de como os membros da equipe irão utilizar para escrever os requisitos e efetuar o feedback de suas ações aos usuários do sistema. d. Primeiramente se define o caso de teste, depois se cria o ambiente para automação, escreve-se os scripts, executa-os e, por último, apresenta-se os resultados obtidos. e. Ocorre quando um sistema computacional é escrito com o intuito de resolver situações cotidianas do mundo real, a fim de se interpretar os problemas citados pelo usuário na etapa de levantamento de requisitos deste sistema. GABARITO Questão 1 - Resposta B Resolução: O código que apresenta algum defeito lógico, pode gerar, ao ser executado em uma situação específica, um estado de erro a um sistema. Este erro pode gerar uma falha deste, ou seja, quando este sistema simplesmente trava durante seu processo de execução. O objetivo é tratar os 49 códigos defeituosos para que estes não se transformem em um erro e, consequentemente, este erro se torne uma falha. Questão 2 - Resposta D Resolução: O primeiro passo é determinar o caso de teste, definindo o que deverá ser realizado neste processo. Após isso, criar um ambiente de execução destes testes, definindo as tecnologias a serem utilizadas. Os scripts são as tarefas a serem realizadas e a execução seria a aplicação prática de cada uma destas tarefas. Por fim, os resultados devem ser apresentados e devidamente documentados. Apresentação da disciplina Introdução TEMA 1 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 2 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 3 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 4 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito Botão TEMA 5: TEMA 2: Botão 158: Botão TEMA4: Inicio 2: Botão TEMA 6: TEMA 3: Botão 159: Botão TEMA5: Inicio 3: Botão TEMA 7: TEMA 4: Botão 160: Botão TEMA6: Inicio 4: Botão TEMA 8: TEMA 5: Botão 161: Botão TEMA7: Inicio 5:
Compartilhar