Você está na página 1de 50

WBA0446_v1.

APRENDIZAGEM EM FOCO

CASE: AS PRINCIPAIS
FERRAMENTAS NO CICLO
DE DESENVOLVIMENTO
DE SOFTWARES
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.

2
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!

3
TEMA 1

Ferramentas para o
desenvolvimento de softwares

INÍCIO
______________________________________________________________
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois

TEMA 1
TEMA 2
TEMA 3
TEMA 4
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

5
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.

6
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.

7
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 normas seguem 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)

8
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á

9
Lorem ipsum dolor sit amet
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
Autoria: Nome do autor da disciplina
carros pelas ruas do centro da cidade e bairros adjacentes.
Leitura crítica: Nome do autor da disciplina
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ções de leitura

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.

10
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.

11
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.

12
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.

13
TEMA 2

Ferramentas para modelagem de


um sistema de software

INÍCIO
______________________________________________________________
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois

TEMA 1
TEMA 2
TEMA 3
TEMA 4
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, tratados
e 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

15
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
• C#
de
Programação • Delphi
(DESKTOP)
• C++

Linguagem
• PHP
de
Programação • ASP
(WEB)
• JavaScript

Linguagem
de
• Java
• Swift
Programação
(MOBILE)

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).

16
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

17
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).

18
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.

19
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.

20
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.

21
Para conhecer a resolução comentada proposta pelo
professor, acesse a videoaula deste Teoria em Prática no
ambiente de aprendizagem.

LEITURA FUNDAMENTAL
Indicações de leitura

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

22
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)?

23
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.

24
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.

25
TEMA 3

Ferramentas Case para


gerenciamento de projeto de

INÍCIO
desenvolvimento de software
______________________________________________________________
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois

TEMA 1
TEMA 2
TEMA 3
TEMA 4
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

Engenharia
de Software

Métodos de
Inteligência
Orientação à
Artificial
Objetos
Desenvolvimento
de Software

Banco de Métodos
Dados Ágeis

Fonte: elaborado pelo autor.

27
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 as vendas
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

28
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

29
(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.

30
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

31
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.

32
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 rol
de 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?

33
Para conhecer a resolução comentada proposta pelo
professor, acesse a videoaula deste Teoria em Prática no
ambiente de aprendizagem.

LEITURA FUNDAMENTAL
Indicações de leitura

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.

34
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.

35
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.

36
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.

37
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.

38
TEMA 4

Ferramentas Case para


gerenciamento de projeto de

INÍCIO
desenvolvimento de software
______________________________________________________________
Autoria: André Olímpio
Leitura crítica: Marcilyanne Gois

TEMA 1
TEMA 2
TEMA 3
TEMA 4
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 no processo 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

40
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

41
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.

42
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.

43
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.

44
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ções de leitura

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

45
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.

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.

46
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.

47
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

48
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.

49

Você também pode gostar