Escolar Documentos
Profissional Documentos
Cultura Documentos
CASE: AS PRINCIPAIS
FERRAMENTAS NO CICLO DE
DESENVOLVIMENTO DE
SOFTWARES
Andre Olimpio
Londrina
Editora e Distribuidora Educacional S.A.
2020
2
© 2020 por Editora e Distribuidora Educacional S.A.
Presidente
Rodrigo Galindo
Conselho Acadêmico
Carlos Roberto Pagani Junior
Camila Braga de Oliveira Higa
Carolina Yaly
Giani Vendramel de Oliveira
Henrique Salustiano Silva
Juliana Caramigo Gennarini
Mariana Gerardi Mello
Nirse Ruscheinsky Breternitz
Priscila Pereira Silva
Tayra Carolina Nascimento Aleixo
Coordenador
Henrique Salustiano Silva
Revisor
Marcilyanne Moreira Gois
Editorial
Alessandra Cristina Fahl
Beatriz Meloni Montefusco
Gilvânia Honório dos Santos
Mariana de Campos Barroso
Paola Andressa Machado Leal
ISBN 978-65-87806-09-9
CDD 005
____________________________________________________________________________________________
Jorge Eduardo de Almeida CRB: 8/8753
2020
Editora e Distribuidora Educacional S.A.
Avenida Paris, 675 – Parque Residencial João Piza
CEP: 86041-100 — Londrina — PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/
3
CASE: AS PRINCIPAIS FERRAMENTAS NO CICLO DE
DESENVOLVIMENTO DE SOFTWARES
SUMÁRIO
Ferramentas para o desenvolvimento de softwares__________________ 05
4
Ferramentas para o
desenvolvimento de softwares
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois
Objetivos
• Identificar os diferentes tipos de ferramentas
existentes no mercado atual para desenvolvimento
de sistemas de software.
5
1. Introdução
6
componentes, gerando documentos robustos e completos, necessários
para compreensão e estruturação de todo esse processo.
Uma ferramenta CASE pode ser classificada em três tipos: upper case,
lower case e integrated case.
7
aplicativo de gerenciamento de arquivos multimídia (áudio e vídeo). Em
outras palavras, atualmente, existem estruturas voltadas para resolução
de problemas de diferentes naturezas. Nesse cenário, é permitido aos
desenvolvedores utilizar a criatividade para gerar programas cada vez
mais robustos e eficientes. Porém, segundo Sommerville (2019), mesmo
tendo particularidades, as linguagens são iguais em sua essência, já que
a estrutura lógica é a mesma para todas. Desse modo, fazem parte desta
estrutura conceitos como: verificação condicional, laços de repetição,
rotinas e sub-rotinas, comandos de entrada e saída de dados, além de
armazenamento não permanente de dados (variáveis).
8
Em programação existem dois ambientes: design mode e runtime
mode. O design mode, é conhecido como modo de desenvolvimento
ou lado do desenvolvedor, trata-se de um ambiente onde o código-
fonte e toda estruturação interna do software são produzidos. Somente
os responsáveis pela programação deste sistema tem acesso a este
modo, ou seja, o usuário final da aplicação não o visualiza e tampouco
o manipula. Já o runtime mode, conhecido como modo de execução ou
lado do usuário, refere-se ao ambiente no qual corresponde a todos os
elementos que são visualizados na tela do computador após a execução
do código-fonte da aplicação inicializada no design mode. Assim, toda
ferramenta de desenvolvimento, por mais simples que seja, apresenta
uma funcionalidade da qual realiza o processo de execução dessa
aplicação.
Uma aplicação é permeada por itens que são essenciais para atender
a todos os requisitos do sistema. A Figura 1 ilustra a arquitetura que é
composta pela aplicação propriamente dita, computadores, dispositivos
móveis, servidores, software de gerenciamento de banco de dados, o
usuário final e profissionais de TI:
9
Figura 1– Componentes da arquitetura de um sistema de software
Aplicação
(Desktop / Web / SGBD
Mobile)
Usuário
Final
Servidor de
Banco de Dados
Desenvolvedor / DBA
Programador Administrador do
Banco de Dados
Por sua vez, uma aplicação para ambiente web é acessada através
de um browser (navegador), que é uma ferramenta requisitada para
acessar sites disponibilizados na Internet. Os browsers mais conhecidos
atualmente são: Microsoft Internet Explorer, Mozilla Firefox, Apple Safari
e Google Chrome. As linguagens de programação mais utilizadas para
10
desenvolver aplicações para esse tipo de ambiente são: JavaScript, PHP,
ASP, Java, Python e Ruby.
11
conseguir implementá-lo em sua essência, já que cada etapa apresenta
características e conhecimentos específicos que interligados formam a
solução do problema identificado no início deste ciclo.
Esse ciclo permite, inclusive, que uma etapa possa ter suas atividades
refeitas ou, até mesmo, voltar às etapas anteriores, possibilitando que
correções sejam realizadas, mudanças sejam agregadas, garantindo um
bom nível de qualidade do produto final entregue. Após a conclusão
de cada etapa, é fundamental que alguma entrega do sistema seja
realizada. Essa entrega pode ser uma funcionalidade, uma interface,
um documento, algo que possa ser mensurado e apresentado para o
solicitante desse sistema. A figura a seguir representa as etapas desse
ciclo.
12
Figura 2 – Etapas do ciclo de desenvolvimento de software
13
uma funcionalidade do sistema. De acordo com Pressman (2016), um
requisito pode ser conceituado como toda e qualquer característica
desejada para que um sistema computacional venha resolver com base
em problemas do mundo real, sendo divididos em duas categorias:
funcional e não funcional.
14
se Utdalls RE-Tools (2016), Atlassian Jira (2017) e Visure Requirements
Management Tool (2018).
15
Jira (2017) e com aplicativos do Microsoft Office. No entanto, ela não
possui versão gratuita, porém é possível fazer o download de uma
versão de testes disponível no site oficial da empresa Visure Solutions.
16
uma abstração muito clara e bem abrangente de como será a versão
final da interface. Assim, ela permite a criação de protótipos de baixa
ou de alta fidelidade com os requisitos do sistema, variando de
acordo com a necessidade do desenvolvedor, sendo possível modelar
tipos diferentes de interfaces, desde websites mais simples até
estruturas mais robustas como um game. Além disso, ela possibilita o
compartilhamento do projeto para que haja uma colaboração remota
em tempo real.
17
1.5 Banco de dados
O ERwin (2017), por fim, é uma ferramenta CASE para modelagem que
simplifica bastante o processo de estruturação de um banco de dados.
18
Além de permitir que o desenvolvedor defina as necessidades e normas
corporativas de um modelo, ele gera um modelo prático a ser facilmente
implementado no SGBD do qual estiver conectado. Sendo, também,
utilizado para modelar bancos de dados de grande porte que são
chamados de data warehouse.
19
Para se fazer uma modelagem de sistemas utilizando conceitos de
orientação a objetos, portanto, utiliza-se ferramentas com suporte
a UML (Unified Modeling Language, em português, Linguagem de
Modelagem Unificada), que é o padrão internacional para modelagem
de software, no qual apresenta diversos diagramas que representam
um sistema através de diversas perspectivas. Entre eles, há o diagrama
de classes, que é apontado como o principal da UML e, também, é a
base para a criação e manipulação de um objeto. Logo, nesse cenário,
destacam-se as seguintes ferramentas: o Visual Paradigm (2018), o
LucidChart (2008) e o Poseidon.
20
Quadro 4 – Ferramentas para modelagem de código orientado a
objetos
Versão de
Ferramenta Licença Plataforma
testes
Não.
Visual Paradigm Proprietária Multiplataforma
Versão
community
Browsers
LucidChart Proprietária compatíveis com Não
HTML5
Poseidon Opensource Multiplataforma Não
Referências Bibliográficas
ARTERO, M. A. Gestão de projetos de software. Londrina: Editora e Distribuidora
Educacional S.A., 2016.
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo:
Pearson Education do Brasil, 2019.
FABRIS, P. P. G.; PERINI, L. C. Processos de software. Londrina: Editora e
Distribuidora Educacional S.A., 2014.
NETO, R. M. Engenharia de software. Londrina: Editora e Distribuidora Educacional
S.A., 2016.
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.
WERLICH, C. Modelagem de dados. Londrina: Editora e Distribuidora Educacional
S.A., 2018.
21
Ferramentas para modelagem de
um Sistema de Software
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois
Objetivos
• Identificar os diferentes tipos de ferramentas
existentes no mercado atual para modelagem de
softwares.
22
1. Introdução
23
1.1 O processo de modelagem
24
Desse modo, a modelagem está relacionada aos aspectos externos de
um software e não somente à sua visão interna. O desenvolvimento de
diagramas permite aos profissionais de TI obter uma ampla abstração
do sistema antes mesmo de implementá-lo, o que permite a criação de
uma espécie de roteiro para a programação do software, traçando uma
linha de raciocínio, um direcionamento na forma de codificar.
25
• Para facilitar a discussão e o entendimento sobre o sistema;
1.2 UML
26
dedicar tempo demais no processo de estruturação de um software
(HUMBLE; FARLEY, 2013).
27
O termo UML significa Unified Modeling Language, em português significa
“Linguagem de Modelagem Unificada”, que atualmente encontra-se na
versão 2.5 e apresenta 14 diagramas que representam o sistema em um
ponto de vista diferente. Porém, a primeira versão da UML foi publicada
em outubro de 1994, quando Booch e Rumbaugh, que na época
trabalhavam na mesma empresa, unificaram seus métodos que eram
aceitos mundialmente. Apenas em 1995 o modelo OOSE de Jacobson
foi incorporado aos outros dois. Assim, há ferramentas CASE que são
utilizadas para criar esses diagramas, como o Astah e o Microsoft
Visio, que são voltadas para modelagem. Além disso, existem algumas
ferramentas de desenvolvimento que tem integrado o recurso de
criação de diagramas através de plug-ins específicos, como o NetBeans e
o Eclipse.
28
Figura 2 – Classificação dos diagramas da UML
29
são utilizados alguns outros conceitos importantes, como: herança,
associação, agregação, composição e multiplicidade.
30
A agregação é um tipo especial de associação na qual demonstra
que as informações de uma classe (chamada de todo) precisam ser
complementadas por outras contidas em uma ou mais classes (parte).
Uma composição é semelhante, representando a relação todo-parte, no
entanto, uma classe todo é responsável por criar e destruir suas partes,
assim uma parte não pode se associar a mais de um todo.
31
software e não ações realizadas pelo usuário, sendo a representação de
uma funcionalidade desse sistema.
32
Fonte: elaborada pelo autor.
Uma ação do tipo include indica que ela sempre será realizada pelo
sistema quando outra ação anterior for executada pelo sistema, como
o registro de uma venda e a emissão de comprovante dessa venda, que
sempre será realizada pelo sistema toda vez em que a ação de registro
for executada. Uma ação include é realizada de forma automática,
sem que haja a solicitação do usuário. Já uma ação do tipo extends é
semelhante a include, diferindo pelo fato de que o caso de uso somente
será realizado após a execução de uma ação anterior em situações
especiais. Por exemplo, o bloqueio de acesso de um usuário ao sistema
quando ele digitar a senha errada por três vezes consecutivas.
Esse diagrama deve ser desenvolvido para cada caso de uso existente
na modelagem, porém somente para os que estejam vinculados
diretamente a um ator. Ou então, para cada situação do caso de uso,
33
ou seja, todas as possibilidades existentes de retorno para cada ação do
sistema. Nesse contexto, vale ressaltar que não é possível desenvolver
o diagrama de sequência sem que os de casos de uso e de classes
estejam prontos, pois ele utiliza os elementos empregados nestes dois
anteriores.
Fonte: ribkhan/iStock.com.
1.3 ASTAH
34
características é a integração total com a linguagem de programação
JAVA, o que garante a portabilidade com a JVM (máquina virtual) para
desenvolvimento de códigos fonte, permitindo inclusive a transformação
de diagramas da UML para estruturas Java de forma automática, sendo
uma ferramenta multiplataforma, que possui uma versão completa que
é paga. Além disso, há também uma versão para comunidade, voltada à
fins acadêmicos, que está disponível no site oficial do projeto.
O Astah, portanto, possui uma versão chamada Community que pode ser
baixada gratuitamente do site oficial do produto (astah.net).
35
modelagem de dados, UML, layout de redes, plantas baixas, mapas 3D e
cartazes (FABRIS; PERINI, 2014).
O Visio possui licença paga, podendo ser adquirido através do site oficial
da Microsoft.
36
1.5 NetBeans
37
Figura 8 – Diagrama de classes utilizando Netbeans IDE
1.6 Eclipse
38
Figura 9 – Diagrama de classes utilizando Eclipse IDE
Por fim, sua versão completa está disponível para download no site
oficial da empresa Eclipse Foundation.
Referências Bibliográficas
BERTAGNOLLI, S. C.; FRANCO, M. H. I.; MACHADO, R. P. Desenvolvimento de
software III: programação de sistemas Web orientada a objetos em Java. Porto
Alegre: Bookman, 2016.
FABRIS, P. P. G.; PERINI, L. C. Processos de software. Londrina: Editora e
Distribuidora Educacional S.A., 2014.
HUMBLE, J.; FARLEY, D. Entrega contínua: somo entregar software de maneira
rápida e confiável. Porto Alegre: Bookman, 2013.
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.
OKUYAMA, F. Y.; GONSALES, A. D.; MILETTO, E. M. Desenvolvimento de software I:
conceitos básicos. Porto Alegre: Bookman, 2014.
WERLICH, C. Modelagem de dados. Londrina: Editora e Distribuidora Educacional
S.A., 2018.
39
Ferramentas CASE para
gerenciamento de projeto de
desenvolvimento de software
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois
Objetivos
• Identificar os diferentes tipos de ferramentas
existentes no mercado atual para modelagem de
softwares.
40
1. Ferramentas CASE para gerenciamento de
projeto de desenvolvimento de software
41
também, que esteja de acordo com os requisitos definidos pelo cliente.
Essa necessidade se deve ao fato de que o processo de desenvolvimento
esteja sempre sujeito às restrições de qualidade, tempo e orçamento.
Além disso, segundo Sommerville (2018), devido à natureza flexível de
um software e a tendência de mudanças, uma boa prática é adotar um
processo padronizado para administrar toda a ampla arquitetura e a
implementação das funcionalidades do sistema, com a finalidade de que
ambas sejam adequadamente tratadas.
1.1 GitHub
42
é possível criar ramificações (branch) de partes menores do código-
fonte do projeto, reagrupar (merges) as ramificações após a realização
das alterações necessárias, criar cópias (clones) para download e
serem utilizadas em diferentes estações de trabalho, fazer atualização
local (pull), enviar as alterações realizadas local para o servidor web
(push) e também fazer um clone (fork) no próprio ambiente web.
Logo, essa estrutura foi construída com a finalidade de permitir que
sejam realizadas alterações no código-fonte de um software de forma
simultânea por diferentes programadores, eliminando totalmente a
possibilidade de conflitos ou redundâncias (GIT HOW TO, 2019).
43
Figura 1–Tela do site do GitHub.com
44
Figura 2 -Tela inicial do GitHub Desktop
46
pela Microsoft, ele permite o controle de versão de código-
fonte com portabilidade à serviços do GitHub, elaboração de
relatórios, gerenciamento de requisitos, estruturação automatizada de
código, administração de recursos de testes, além de fazer controle de
tarefas e canais de estruturas de pipeline de dados. O VSTS abrange
todo o ciclo de vida de um software, habilitando recursos do DevOps
e pipeline de dados, que no Azure são utilizados como back-end para
diversos ambientes de desenvolvimento integrado (IDE).
47
Figura 5 –Tela inicial do Microsoft Azure DevOps
48
A Figura 7, por sua vez, ilustra uma interface que permite vincular o
projeto atual com um repositório hospedado no GitHub (2018), além de
oferecer a possibilidade de se utilizar seus comandos principais como
pull, merge, fork e push.
49
Ao criar uma estrutura de pipeline de dados neste projeto, o Azure
DevOps apresenta uma interface bastante clara e amigável para
gerenciar as entradas e saídas existentes nesta estrutura, fornecendo
inclusive a possibilidade de editar a mesma em ambientes de
programação como o Visual Studio e o Eclipse.
50
O Azure Boards faz um gerenciamento de projetos de software,
fornecendo um conjunto robusto de recursos, incluindo o suporte
nativo para métodos como Scrum e Kanban, além de estrutura gráfica
personalizável e integração com relatórios. Logo, ele permite iniciar
com rapidez e facilidade o rastreamento de histórias de usuários (user
stories), gerenciamento de controle de itens de lista de pendências,
tarefas, recursos e bugs associados ao projeto.
1.3 Redmine
51
de dados, ou seja, aplicações baseadas em estruturas pré-definidas
com conectividade com a maioria dos bancos de dados existentes
no mercado. Além disso, ele apresenta total integração com serviços
disponibilizados no GitHub.
52
diferentes etapas do processo de desenvolvimento de um sistema de
software. Segundo Humble e Farley (2013), um dos maiores desafios
existentes na gestão de projetos é o monitoramento eficiente das
tarefas realizadas e consequentemente seu controle de qualidade. O
EasyRedmine consegue, através de uma única interface, listar dados
importantes com relação a cada tarefa do processo, como os integrantes
que a acessam e que são responsáveis, a progressão de execução em
tempo real, a quantidade de tempo produtivo (billable time) e o status
atual desta tarefa, conforme é ilustrado na figura a seguir:
53
Figura 11 –Tela de cronograma (schedule) do site EasyRedmine.com
Referências Bibliográficas
FABRIS, P. P. G.; PERINI, L. C. Processos de Software. Londrina: Editora e
Distribuidora Educacional S.A., 2014.
HIRAMA, K. Engenharia de software: qualidade e produtividade com tecnologia.
Rio de Janeiro: Elsevier, 2011.
54
HUMBLE, J.; FARLEY, D. Entrega contínua: como entregar software de maneira
rápida e confiável. Porto Alegre: Bookman, 2013.
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.
PÁDUA FILHO, W. P. Engenharia de software: projetos e processos. 4. ed. Rio de
Janeiro: LTC, 2019. .
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 8. ed.
Porto Alegre: AMGH, 2016.
EasyRedmine: gerenciador on-line de projetos de software. Easy Software Ltd,
2018. Disponível em: http://www.easyredmine.com. Acesso em: 5 maio 2020.
Git How to: Tutorial guiado de GIT. 2019. Disponível em: http://www.githowto.
com/pt-Br. Acesso em: 12 maio 2020.
GITHUB: Controle de versionamento de software. GitHub Inc., 2008. Disponível
em: http://www.github.com. Acesso em: 3 maio 2020.
Visual Studio Team System: Gerenciador de projetos de software. Microsoft,
2005. Disponível em: http://azure.microsoft.com. Acesso em: 3 maio 2020.
55
Ferramentas para automação de
testes de software
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois
Objetivos
• Identificar os diferentes tipos de ferramentas
existentes no mercado atual para modelagem de
softwares.
56
1. Ciclo de liberação e automação de testes de
software
57
Figura 1 – Representação das etapas finais do ciclo de
desenvolvimento de software
58
Durante a realização dos testes, as tarefas realizadas são focadas
no cumprimento dos requisitos realizados nas funcionalidades do
sistema. Após concluídos os testes, o software se encontra liberado
para que possa ser instalado no ambiente do usuário. Essa liberação,
também conhecida como release, é o momento de lançamento de uma
nova versão oficial do produto de software. Cada vez que um produto
de software é criado ou modificado, a equipe de desenvolvimento
decide sobre como distribui-lo a seus usuários. O sistema é produzido,
identificado e liberado sob uma versão de programa, que é a
identificação que garante que este sistema seja diferente a qualquer
outra versão anterior ou posterior.
59
Além disso, há, ainda, outros tipos de testes que são realizados em um
sistema de software, entre os quais destacam-se: funcional e gama. O
teste funcional se refere às ações nas quais tem por objetivo identificar
se a aplicação consegue atender plenamente os requisitos funcionais
definidos no início do processo de desenvolvimento. Já o teste gama é
uma verificação de uma aplicação considerada como mal testada em
ambiente de desenvolvimento, cabendo ao usuário final realizar os
devidos testes e oferecer feedback ao fabricante do software.
1. Selenium
60
Figura 2 – Interface do Selenium IDE
61
posteriormente para se realizar testes mais elaborados. Ele apresenta
também um complemento para os navegadores Google Chrome (2008)
e Mozilla Firefox (2004), que fará a gravação e reprodução simples de
interações com o navegador.
62
e o intervalo entre cada execução. Essa configuração é muito utilizada na
realização de testes de estresse.
63
Figura 3 – Interface do Apache JMeter
64
validações durante o processo de testes; variáveis de script de teste
para deixar o teste o mais próximo do cenário real onde o sistema será
implantado; objetos para criar e executar testes funcionais e em banco
de dados.
1.2 Appium
65
Figura 4 – Interface do Appium
Essa ferramenta, por sua vez, foi projetada para atender às necessidades
de automação mobile, fazendo testes de desempenho em aplicações
desenvolvidas para dispositivos móveis, respeitando uma filosofia
descrita por quatro princípios:
66
1.3 Cucumber
67
Figura 5 – Interface do Cucumber
1.4 Robotium
68
Android, permitindo a escrita de cenários de teste de função, sistema e
aceitação, abrangendo várias atividades para aplicações mobile.
69
Figura 6 – Interface do Robotium
70
repetição de teste a determinada funcionalidade todas as vezes que ela
sofrer alguma alteração. Como o procedimento está automatizado, o
esforço é minimizado sempre que necessário, poupando horas e horas
de trabalho de uma equipe inteira de analistas de teste.
Referências Bibliográficas
FABRIS, P. P. G.; PERINI, L. C. Processos de software. Londrina: Editora e
Distribuidora Educacional S.A., 2014.
HIRAMA, K. Engenharia de software: qualidade e produtividade com tecnologia.
Rio de Janeiro: Elsevier, 2011.
HUMBLE, J.; FARLEY, D. Entrega contínua: como entregar software de maneira
rápida e confiável. Porto Alegre: Bookman, 2013.
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.
PÁDUA FILHO, W. P. Engenharia de software: projetos e processos. 4. ed. Rio de
Janeiro: LTC, 2019. PRESSMAN, R. S. Engenharia de software: uma abordagem
profissional. 8. ed. Porto Alegre: AMGH, 2016.
Apache JMeter: Suite de teste de software
Apache Foundation, 1999. Disponível em: http://jmeter.apache.org. Acesso em: 11
maio 2020.
APPIUM: software para automação de testes
Appium JS Foundation, 2011. Disponível em: http://appium.io. Acesso em: 11 maio
2020.
Cucumber: ferramenta de automação de testes de software
Cucumber SmartBear Software, 2014. Disponível em: http://cucumber.io. Acesso
em: 11 maio 2020.
Robotium: suite de teste para aplicações mobile
Robotium Tech., 2014. Disponível em: http://robotiumtech.com. Acesso em: 11 maio
2020.
71
Bons estudos!
72