Escolar Documentos
Profissional Documentos
Cultura Documentos
2
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
Núcleo de Educação a Distância
O Grupo Educacional Prominas é uma referência no cenário educacional e com ações voltadas para
a formação de profissionais capazes de se destacar no mercado de trabalho.
O Grupo Prominas investe em tecnologia, inovação e conhecimento. Tudo isso é responsável por
fomentar a expansão e consolidar a responsabilidade de promover a aprendizagem.
3
Prezado(a) Pós-Graduando(a),
Um abraço,
4
5
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
Olá, acadêmico(a) do ensino a distância do Grupo Prominas!..
6
O texto abaixo das tags são informações de apoio para você ao
longo dos seus estudos. Cada conteúdo é preprarado focando em téc-
nicas de aprendizagem que contribuem no seu processo de busca pela
conhecimento.
Cada uma dessas tags, é focada especificadamente em partes
importantes dos materiais aqui apresentados. Lembre-se que, cada in-
formação obtida atráves do seu curso, será o ponto de partida rumo ao
seu sucesso profisisional.
7
Tivemos o surgimento da Engenharia de Software com o mar-
co ao longo da história do software, que foi a crise de software, na dé-
cada de 70, que tinha problemas como: a falta de um processo de
desenvolvimento do software, a ausência de uma estrutura para nortear
as equipes, a falta de mão de obra capacitada para atender a demanda.
Conforme o conceito da IEEE - Institute for Electrical and Electronics
Engineers, a Engenharia de Software, é definida de modo abrangente,
como um campo da ciência que fornece todo o modelo para a criação
e manutenção de software. Neste módulo iremos estudar sobre a En-
genharia de Software, bem como toda sua contextualização, princípios
e estrutura. No decorrer dos capítulos será discorrido sobre os tipos
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
8
Apresentação do Módulo ______________________________________ 11
CAPÍTULO 01
INTRODUÇÃO À ENGENHARIA DE SOFTWARE
Recapitulando _________________________________________________ 27
Recapitulando _________________________________________________ 49
CAPÍTULO 03
REQUISITOS DE ENGENHARIA DE SOFTWARE
9
Recapitulando _________________________________________________ 68
Referências ____________________________________________________ 76
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
10
Com a evolução da tecnologia e dos softwares ao logo do tem-
po, temos a Engenharia de Software, ciência que surgiu para contri-
buir no processo de desenvolvimento do software, que ainda é definida
como um processo, que contém um conjunto de métricas e práticas,
tendo ferramentas que permitem aos profissionais criarem software de
boa qualidade.
Sendo assim, é de suma importância na área tecnológica es-
tudar sobre a Engenharia de Software, trazendo sua contextualização,
importância e avanço ao longo do tempo. Além também entender sobre
os seus princípios, fundamentações e seus processos, que contribuem
para produzir softwares com qualidade e atender assim às necessidades
e demandas do mercado.
Desse modo, o capítulo 1 abordará a introdução sobre Enge-
nharia de Software, trazendo um breve histórico e a contextualizando;
o capítulo 2 versará sobre os modelos de desenvolvimento de software,
trazendo os tipos, exemplificando cada um, finalizando com a concei-
tuação do software como produto; e por fim, o capítulo 3 abordará so-
bre o levantamento de requisitos e as técnicas para adquiri-los, como
também versará sobre os pontos para viabilizar um desenvolvimento de
software e a contextualização da fase de implantação e manutenção.
11
INTRODUÇÃO À
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
ENGENHARIA DE SOFTWARE
CONTEXTUALIZAÇÃO E HISTÓRICO
Que por mais que tenha dito uma a crise de software na déca-
da 60, que motivou a criação da Engenharia de Software, isso não im-
plica afirmar que agora não existe mais problemas no desenvolvimento
do software.
14
Temos assim, que a Engenharia de Software trabalha com al-
gumas camadas e está diretamente relacionada à qualidade, ao apri-
moramento dos procedimentos, assim como a melhorias da disciplina.
Esta fornece assim material para a criação dos produtos de software,
independente da área trabalhada. Abaixo temos a figura que ilustra es-
sas camadas.
FERRAMENTAS
MÉTODOS
PROCESSOS
FOCO NA QUALIDADE
PROBLEMAS ATUAIS
RELEVÂNCIA NA ÁREA DE TI
Atuação profissional
A área de atuação dos engenheiros de software é de suma
importância, pois, estes profissionais têm a responsabilidade de realizar
e garantir que aconteçam os processos e as práticas que envolvidas
neste procedimento.
Vale ressaltar que as Diretrizes Curriculares de Computação
definem as aptidões técnicas para o engenheiro de software, algumas
delas são práticas como: de analisar, especificar, desenvolver, testar e
realizar a manutenção de software, como também de escolher tecno-
logias apropriadas para a criar um software (Sociedade Brasileira de
Computação, 2015).
As Diretrizes Curriculares de Computação definem as compe-
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
20
1. PÚBLICO — Engenheiros de software precisam atuar con-
forme a necessidade do público.
2. CLIENTE E EMPREGADOR — Engenheiros de software
precisam atuar de modo que satisfaçam à necessidade de seu cliente e
empregador e conforme a necessidade do público.
3. PRODUTO — Engenheiros de software precisam viabilizar,
de modo confiante, que seus produtos e alterações solicitados alcan-
cem um elevado padrão profissional.
4. JULGAMENTO — Engenheiros de software precisam ter
uma postura profissional garantindo a integridade e a independência.
5. GERENCIAMENTO — Gerentes e líderes de Engenharia de
Software precisam primar e motivar por uma postura ética para realizar
o trabalho de gerenciar e dar suporte ao software.
6. PROFISSÃO — Engenheiros de software precisam aperfei-
çoar a postura e a imagem da profissão conforme a necessidade do
público.
7. COLEGAS — Engenheiros de software precisam se dispor
a ajudar e ser íntegros.
8. SI PRÓPRIO — Engenheiros de software precisam promo-
ver sua aprendizagem contínua durante toda a vida, e sempre primar
por uma postura ética para viver a profissão.
PROCESSO DO SOFTWARE
25
• Manutenção: esta fase se trata de realizar alterações que po-
dem ser necessárias após a entrega do software. Podem ser solicita-
da algumas manutenções como corretivas para corrigir algo, evolutivas
referente a algumas funcionalidades novas a serem implementadas e
adaptativa para ajustar alguma funcionalidade do software. Estes são
exemplos de manutenção que possam ser requisitadas no processo do
software.
Com isto, temos que os modelos de processo ou ciclo de vida,
de modo genérico, envolvem as fases análise e especificação de requi-
sitos, projeto, implementação, testes, entrega e implantação. Porém, a
decisão de um modelo de processo é intensamente condicionada às
particularidades do projeto.
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
26
QUESTÕES DE CONCURSOS
QUESTÃO 1
Ano: 2020 Banca: Quadrix Órgão: Prefeitura de Canaã dos Carajás
- PA Prova: Prefeitura de Canaã dos Carajás Cargo: Analista Admi-
nistrativo - Administração
Acerca do programa de navegação Google Chrome, em sua versão
mais recente, e dos conceitos de organização e de gerenciamen-
to de arquivos e programas, julgue o item. Desde que se utilize o
programa correto, um arquivo PDF poderá ser dividido em dois ou
mais arquivos PDF.
( ) Certo
( ) Errado
QUESTÃO 2
Ano: 2020 Banca: IBADE Órgão: Prefeitura de Linhares - ES Pro-
vas: Prefeitura de Linhares – ES Órgão: Educador Físico
Alguns desenvolvedores de software oferecem cópias gratuitas,
que funcionam por um determinado período de tempo, para que
sejam testados. A esse tipo de cópia chamamos:
QUESTÃO 3
Ano: 2019 Banca: FCC Órgão: METRÔ-SP Prova: Analista Desen-
volvimento Gestão Júnior – Ciências da Computação
Considere as seguintes abordagens no contexto da Engenharia de
Software.
I. Intercala as atividades de especificação, desenvolvimento e va-
lidação. O sistema é desenvolvido como uma série de versões, de
maneira que cada versão adiciona funcionalidade à anterior.
II. Indivíduos e interações mais que processos e ferramentas; Sof-
tware em funcionamento mais que documentação abrangente; Co-
laboração com o cliente mais que negociação de contratos e Res-
ponder a mudanças mais que seguir um plano.
III. Tem por referência a matriz Fase versus Fluxos de Trabalho. São
alguns destes fluxos: Modelagem de negócios, Requisitos, Análise
e Projeto, Implementação, Teste e Implantação.
27
IV. Processo dirigido a planos em que se deve planejar e progra-
mar todas as atividades do processo antes de começar a trabalhar
nelas. Seus principais estágios são: Análise e definição de requisi-
tos; Projeto de sistema e de software; Implementação e teste unitá-
rio; Integração e teste de sistema e Operação e manutenção.
Correspondem, correta e respectivamente, às abordagens
a) Model Driven Architecture, Rational Unified Process, Desenvolvimen-
to Incremental e Modelo em Cascata.
b) Engenharia de Software Orientada a Reuso, Manifesto Ágil, Modelo
Espiral e Desenvolvimento Incremental.
c) Unified Modeling Language, Capability Maturity Model, Engenharia
de Software Orientada a Reuso e Modelo em Cascata.
d) Modelo Espiral, Manifesto Ágil, Model Driven Architecture e Capabi-
lity Maturity Model.
e) Desenvolvimento Incremental, Manifesto Ágil, Rational Unified Pro-
cess e Modelo em Cascata.
QUESTÃO 4
Ano: 2018 Banca: IBADE Órgão: IPM - JP Prova: Analista Previden-
ciário - Analista de Redes e Comunicação
No que diz respeito à Engenharia de Software, um modelo de pro-
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
QUESTÃO 5
Ano: 2018 Banca: CESGRANRIO Órgão: Transpetro Prova: Analista
de Sistemas Júnior - SAP
A etapa do projeto unificado e a sua correspondente característica
são, respectivamente:
a) Concepção – levantamento de requisitos sistêmicos primários do ciclo
b) Construção – implementação dos elementos de maior risco e criticidade
c) Elaboração – mitigação dos problemas de alto risco do projeto
d) Incremento – diferenciação entre as entregas de duas etapas subse-
quentes
28
e) Transição – geração de um subconjunto executável do produto final
TREINO INÉDITO
Cada dia mais percebemos que são exigidos softwares mais robustos e
com alta performance, à medida que a tecnologia avança, vai crescen-
do a cobrança e a necessidade de software mais complexo. Entende-
mos que o surgimento da Engenharia de Software veio agregar valor e
contribuições ao processo de desenvolvimento do software.
Conhecemos alguns princípios que fazem parte da Engenharia de Sof-
tware, selecione qual assertiva apresenta alguns destes princípios:
a) Rigor, abstração e modularidade;
b) Abstração, ferramenta e antecipação de mudanças;
c) Rigor, abstração e método;
d) Processo, método e generalidade;
NA MÍDIA
“PROFISSÃO DO FUTURO”
“De acordo com dados da Associação Brasileira das Empresas de Sof-
tware (ABES), o Brasil foi o 9° país do mundo em investimentos na área
de tecnologia de informação (TI) em 2017, com valores que giram em
torno de 38 bilhões de dólares. Os números mostram que o mercado de
tecnologia segue em alta e pode ser uma excelente opção para estu-
dantes que buscam profissões que serão cada vez mais importantes.”
A reportagem traz a importância do curso de nesta área e a necessida-
de do mercado destes profissionais. Ressaltando que o engenheiro de
software pode atuar na criação de aplicativos e sistemas e na gestão
em todas as etapas do processo de desenvolvimento, garantindo a qua-
lidade do software a ser idealizado.
Fonte: (Portal G1)
Data: 29/11/2018
Leia a notícia na íntegra: <https://g1.globo.com/pr/parana/especial-pu-
blicitario/puc-pr/profissionais-do-amanha/noticia/2018/11/29/profissao-
-do-futuro.ghtml> Disponivel:11 de Abril de 2020
29
NA PRÁTICA
Lendo o artigo cujo o tema é:” Uma Proposta para o Ensino de Engenha-
ria de Software a partir da Resolução de Problemas”, o estudo trata de
analisar como o mercado de trabalho requer profissionais que demons-
trem, além de conhecimento específico, habilidades como proatividade,
iniciativa, capacidade de autoaprendizagem e trabalho em equipe. Mos-
trando a contribuição das características, o curso de Engenharia de Sof-
tware (ES) da Instituição X, que foi idealizado com base na abordagem
de ensino-aprendizagem ABP (Aprendizagem Baseada em Problemas).
Acesse o link: <https://www.br-ie.org/pub/index.php/rbie/article/
view/1391>
30
MODELOS DE PROCESSOS
que essa é uma das principais decisões para o projeto o software, deci-
dir o modelo adotado e quais abordagens se encaixam melhor. Inclusive
existe atributos que qualificam um bom software, como: facilidade de
manutenção, nível de confiança, eficiência e facilidade de uso.
Ademais, os principais modelos de processo de software po-
dem ser ajuntados em três categorias principais: modelos sequenciais,
modelos incrementais e modelos evolutivos. Nas seções abaixo serão
descritos esses modelos, com exemplificação de cada um.
Modelo sequencial
O modelo sequencial tem uma estrutura organizada no proces-
so em uma sequência linear de fases. Um exemplo de modelo sequen-
cial é o modelo cascata no ano de 1970, que foi proposto por Winston
Walker Royce, também conhecido como ciclo de vida clássico.
Vale expor que este é um dos mais antigos e que foi bastante
utilizado na Engenharia de Software, tendo como característica uma
estrutura sistemática e sequencial. Em que uma tarefa só é começada
quando a anterior for completada na sua totalidade, neste modelo itera-
ções no ciclo não são previstas. (CORTÉS,2013)
A figura abaixo representa como funciona o modelo cascata,
onde cada fase é realizada sequencialmente.
32
Figura 3 - Modelo cascata
33
Figura 4 - Modelo V
Análise e Especificação Teste de Aceitação
de Requisitos (Entrega e Implantação)
Projeto de Teste de
Arquitetura Sistema
Teste de
Projeto de Detalhado
Unidade e
Integração
Implementação
Modelo incremental
Este modelo foi idealizado por Mills em 1980 e trabalha divi-
dindo o desenvolvimento do software em módulos, em que cada um é
desenvolvido conforme as fases do modelo cascata. Assim, tem como
uma característica oferecer versões do código a cada incremento, con-
tudo, precisa atenção no planejamento.
Em suma, este modelo usa os elementos do Modelo em Cas-
cata executando de modo iterativo, isso significa que de modo gradativo
acontecem incrementos em que ocorrem consecutivos aprimoramentos
de cada iteração (PRESSMAN, 2006).
Temos assim o modo incremental, que é uma boa opção para
sistemas de grande porte, pois, oferece uma versão do software, por
partes, mostrando resultados importantes já no início do projeto. Abaixo
é apresentada a figura 5, que ilustra este modelo.
34
Figura 5 : Modelo incremental
Modelo Espiral
Podemos citar como um exemplo deste modelo é o espiral,
que foi elaborado por Barry Boehm, e este trata-se de conectar a carac-
terística iterativa da prototipação com os elementos sistemáticos e de
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
36
Figura 6: Modelo Espiral
37
Modelo de Prototipagem
Modelo de Prototipagem é baseado no desenvolvimento do
software acelerado de uma versão antecipada do software, ou protóti-
po, desenvolvido, principalmente, para ajudar a compreender melhor o
problema e a necessidade do cliente.
Usualmente, o protótipo auxilia no processo de levantamento
de requisitos de software, principalmente com relação quando cliente já
tem especificado todos objetivos gerais do software.
Assim, temos este modelo iniciando com o cliente o ciclo de
prototipagem, realizando o levantamento dos requisitos gerais do sis-
tema, elaborado com isto o projeto rápido. Uma característica para ser
citada é que o protótipo não fundamentalmente será responsável por
modelar todas as funções do sistema, pois, esta seleção de funcionali-
dades precisa ser estipulada pelos clientes.
Por mais que o principal objetivo do protótipo consista em com-
preender os requisitos do usuário, este ainda pode ser utilizado para
fomentar teste e evidenciar definições do software. Podemos ter por
exemplo, um protótipo que tenha a função de gerar teste para alteração
ou ajuste de uma determinada tecnologia e a requisição do projeto.
Assim, o processo da prototipação parte da comunicação entre
os clientes e envolvidos no projeto, definindo objetivos e especificando
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
38
Figura 7: Modelo de prototipagem
39
PROCESSOS ÁGEIS
40
nadores,
desenvolvedores e usuários deveriam ser capazes de manter um ritmo cons-
tante
indefinidamente.
9. Atenção contínua a excelência técnica e a um bom projeto aumentam a
agilidade.
10. Simplicidade é essencial.
11. As melhores arquiteturas, requisitos e projetos provêm de equipes
12. A intervalos regulares, a equipe se avalia para ver como tornar-se mais
eficiente, então sintoniza e ajusta seu comportamento (AMBLER, 2004, p.
38).
XP - eXtreme Programing
O Extreme Programming (XP) é um modelo de desenvolvimen-
to de software ágil, idealizado em 1996, por Kent Bech, no Departa-
mento de Computação da montadora de carros Daimler Crysler. Este
modelo é formado por cinco valores que servem como base de trabalho
de seus métodos, esses são comunicação, simplicidade, retorno, co-
ragem e respeito. Esses valores são utilizados como uma direção das
atividades, ações e tarefas próprias do processo XP.
Comunicação: XP tem ênfase em construir uma compreensão
entre os envolvidos do problema, com a utilização mínima de documen-
tação formal e com a utilização máxima de interação entre os envolvi-
dos no projeto. Ocorre práticas de XP como programação em pares,
testes e comunicação.
Simplicidade: XP tem foco em optar pelo mais simples para
solucionar os problemas e que possibilite que os custos de alteração
41
sejam baixos. E esse processo tem intuito de evitar a construção pre-
matura de funcionalidade.
Feedback: trata de um valor do processo XP que é importante
porque oferece um retorno para os programadores sobre o projeto, até
mesmo, para dar ideia da criação dos testes. Para os clientes, oferece
retorno dos testes criados e das funcionalidades como todo. Dessa for-
ma assim, ajuda aos envolvidos no projeto, a entender mais o sistema
e corrigir quando necessário, promovendo um aperfeiçoamento dos sis-
temas.
Coragem: trata de um valor do processo XP, que é de suma
importância no processo XP, pois, é necessário que os programadores
tenham coragem para poder fazer com que o projeto atenda às neces-
sidades do cliente do melhor modo. Também possibilita o programador
não ter receio, em alterar o código quando preciso ou até mesmo ter
que recomeçar do zero.
O método XP também determina um conjunto de princípios que
contribuem na seleção de opções de solucionar problemas que surjam
no decorrer do projeto. Os princípios fundamentais são: feedback rápi-
do, assumir simplicidade, mudança incremental, abraçando mudanças
e trabalho de qualidade.
• Feedback rápido: consiste da ideia de que no XP os envolvidos
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
Processo unificado
Este Processo Unificado (PU) é um modelo de ciclo de vida
evolucionário de desenvolvimento de software que engloba os proces-
sos iterativo e incremental para a criação de software. Este também
pode ser compreendido como um framework que pode ser persona-
lizado conforme as particularidades e recursos disponíveis para cada
projeto (SCOTT, 2003).
Nisto o PU condiz a um bloco de tarefas precisas para modificar
os requisitos do usuário de um software. Vale salientar que o processo
44
unificado é formado por três definições seguintes: dirigido pelo caso de
uso; centralizar na arquitetura; iterativo e incremental. O Processo Uni-
ficado trabalha a criação do software no decorrer do tempo, de modo
iterativo e incremental, em que ao finalizar, cada iteração é suscitada
uma versão nova do produto. Este usa Linguagem de Modelagem Uni-
ficada (Unified Modeling Language – UML) na organização de todos os
artefatos do sistema.
Este processo é formado pelos 4PS: pessoa, projeto, produto
e processo:
• Pessoa: referente a quem gerência, desenvolve, financia, e
realiza os teste de software.
• Projeto: referente as pessoas que irão trabalhar no projeto e
com os artefatos (qualquer tipo de informação criado por uma pessoa,
exemplo diagrama UML, texto e modelos).
• Produto: referente ao código fonte, classes, diagramas.
• Processo: referente a descrever esses pontos: de quem pos-
sui o papel, quem está fazendo o quê, como será realizada a atividade
e quando será feito.
Abaixo temos as fases que compreendem esse processo:
(PRESSMAN,2010)
• Fase de concepção: esta fase é relacionada com a tarefa
45
Model Driven Architecture (MDA)
Partindo da compreensão Model Driven Development (MDD)
é uma subárea inserida na Engenharia de Software que incentiva a
utilização de modelos como artefatos importantes no processo de
desenvolvimento de software. Tendo como intuito de obter a proposta
de MDD, apareceram vários padrões, ferramentas e abordagens (Kle-
ppe, 2003).
Dentre elas a mais conhecida é Model Driven Architecture
(MDA) que é denominada como um framework conceituado pela Object
Management Group (OMG), esta arquitetura contém suas definições
básicas com intuito explorar a hipótese fundamental sobre o proces-
so de desenvolvimento de software orientado a modelos. Trabalhando
com a ênfase maior a questão da modificação de modelos por meio de
metamodelos. Esta técnica promove a automação do processo ao se
utilizar tecnologias de transformações modelo-modelo. Em suma, abai-
xo é apresentando definições básicas para facilitar o entendimento da
arquitetura orientada a modelos, o padrão MDA: (Object Management
Group, 2003)
• Metamodelos – se refere a apresentar como podem ser cria-
dos os modelos. É semelhante a uma gramática que determina uma
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
linguagem de programação.
• Modelos: representam as instâncias dos metamodelos;
• Dirigido a Modelos MDA: isto implica em afirmar que é dire-
cionado a modelos, com objetivo de usar os modelos para guiar o an-
damento do entendimento, projeto, construção, distribuição, operação,
manutenção e modificação.
• Arquitetura: é a representação do que compõe, juntamente
com os conectores, como também, as regras de interação dessas par-
tes usando os conectores.
• Transformações: refere-se a uma junção de regras que deter-
mina um modelo de entrada que pode ser modificado em outro modelo
de saída.
• Ponto de vista: refere-se a uma técnica de abstração, usada
num conjunto selecionado de conceitos arquiteturais e regras de es-
truturação que visam focar ou representar um aspecto (característica)
dentro desse sistema. O termo abstração é usado para significar o pro-
cesso de suprimir (esconder) um detalhe selecionado para estabelecer
um modelo simplificado.
• Plataforma: uma plataforma é um conjunto de subsistemas e
tecnologias que provê um conjunto coerente de funcionalidades através
de interfaces e padrões de uso especificado, que qualquer aplicação
46
(sistema) suportada por essa plataforma pode usar, sem ter que conhe-
cer os detalhes de como essa funcionalidade provida pela plataforma é
implementada.
• Modelos MDA: refere-se a dividir os vários níveis de abstra-
ção de um software e incentivar contribuições recomendados pelo pro-
cesso de desenvolvimento para dirigir os modelos. A arquitetura MDA
aborda modelos distribuídos em quatro camadas a seguir:
• Computational Independent Model (CIM): Este modelo da ca-
mada está relacionado à visão geral do sistema sem focar na compu-
tação, também é denominado modelo negócio. Assim, esse modelo é
adquirido no momento da documentação e de especificar os requisitos.
• Platform Independent Model (PIM): Este modelo é composto
pelo requisito computacional do sistema, porém, é independe da plata-
forma adotada na implementação.
• Platform Specific Model (PSM): Este modelo que adicionado
ao PIM e detalha implementação da plataforma, na qual o sistema será
executado. Com ele também é permitida a modificação do mesmo no
código da aplicação.
• Código – Este é a sintaxe real, que é trazida a partir do PSM.
Porém, permite também gerar o código por meio de um PIM, mesmo
com a complexidade alta relacionada à transformação.
48
QUESTÕES DE CONCURSOS
QUESTÃO 1
Ano: 2020 Banca: IBFC Órgão: TRE-PA Prova: Analista Judiciário -
Análise de Sistemas
Para aplicar valores e princípios do XP (Extreme Programming),
durante os processos e práticas ágeis de desenvolvimento de sof-
tware, se propõe uma série específica de práticas. Assinale a alter-
nativa que apresenta algumas dessas “boas práticas” utilizadas
tradicionalmente em projetos, usando XP.
a) Reformation – Pair Programming - PlayStation Game
b) Refactoring – Pair Programming - Planning Game
c) Reformation – Pair Production - Planning Game
d) Refactoring – Pair Production - PlayStation Game
QUESTÃO 2
Ano: 2019 Banca: INSTITUTO AOCP Órgão: EMPREL Prova: Ana-
lista de Sistemas
Em se tratando de desenvolvimento de software, o termo qualida-
de é bastante subjetivo. Entretanto, no desenvolvimento ágil, é cla-
QUESTÃO 3
Ano: 2019 Banca: INSTITUTO AOCP Órgão: EMPREL Prova: Ana-
lista de Sistemas
Assinale a alternativa que apresenta uma das características do
Scrum referente ao Scrum Team (Time Scrum).
a) O time valida com o cliente as características (features) ou requisitos
do produto.
49
b) Um líder determina como é a distribuição das tarefas e a programa-
ção aos pares.
c) O líder do time Scrum deve priorizar as funcionalidades que serão
desenvolvidas.
d) É auto-organizável e não ultrapassa sete pessoas em sua composi-
ção.
e) Reuniões diárias são realizadas para possibilitar a interatividade das
tarefas.
QUESTÃO 4
Ano: 2020 Banca: FADESP Órgão: UEPA Prova: Técnico de Infor-
mática
Um dos princípios do Manifesto Ágil é o de que os indivíduos e
interações são mais importantes que processos e ferramentas. Um
outro princípio é o de que
a) o usuário é a principal fonte de informação de requisitos de software.
b) os contratos são mais importantes que a colaboração com os clientes.
c) o software funcionando é mais importante do que a documentação
completa e detalhada.
d) seguir o plano inicial é mais importante que a adaptação a mudanças.
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
QUESTÃO 5
Ano: 2019 Banca: CS-UFG Órgão: UFG Prova: Técnico de Tecnolo-
gia da Informação
O desenvolvimento de software baseado em abordagem ágil esti-
mula
a) a produção de planos detalhados.
b) a realização de atividades de desenvolvimento em cada iteração.
c) a valorização da equipe de operação em detrimento daquela de de-
senvolvimento.
d) a aplicação de métodos formais de desenvolvimento de software
TREINO INÉDITO
NA MÍDIA
NA PRÁTICA
INDICAÇÕES BIBLIOGRÁFICAS
Leia mais em:
<http://www.scielo.br/scielo.php?script=sci_arttext&pid=S1415-655520
18000300443>, que diz respeito a Concursos Públicos Docentes em
uma Universidade Federal: Proposta de Melhorias em Software.
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
52
REQUISITOS DE
53
REQUISITO DE ENGENHARIA DE SOFTWARE: CONCEITUAÇÃO
Entrevistas
A entrevista é uma das técnicas de levantamento de requisitos
mais adotada. Esta pode ser percebida quando o membro da equipe do
projeto de software tem a responsabilidade de discutir com os usuários
e/ou clientes com objetivo de fazer o levantamento dos requisitos, por
meio da discussão de ideais sobre o sistema a ser desenvolvido. Para
obter os requisitos, utilizam de elaboração de questões, para serem
abordadas com cliente, a fim de que, depois possa ser feito um filtro, do
que se tornará possíveis requisitos do sistema.
Sommerville (2007) afirma que existe, de modo básico, dois
tipos de entrevistas: as entrevistas estruturadas, perguntas são criadas
antecipadamente e o stakeholder (pessoas interessadas no projeto) irá
respondê-la do modo como foram idealizadas; já as entrevistas aber-
tas não correspondem a nenhum itinerário predefinido de questões, a
pessoa delegada explana vários temas, de acordo com a finalidade de
encontrar um maior entendimento sobre operações do stakeholder.
Questionário
Outra técnica bastante comum para o levantamento de requisi-
tos é questionário, que pode ser aplicado em grande escala por meio de
sua estrutura. A utilização deste além de colaborar com grande número
de pessoas também é pertinente utilizá-lo quando não é possível en-
contro físico, ou até mesmo quando é necessária uma amostra estática
da quantidade de pessoas que usaram o software, por exemplo.
Uma das contribuições dos questionários é pode adquirir um
retorno de muitas pessoas sobre o sistema requisitado, porém, existem
algumas desvantagens nesta técnica, que justamente sua elaboração
que não é nada fácil, por necessitar ser elaborado por perguntas obje-
57
tivas, claras e sem ambiguidades sobre o sistema. É necessário adotar
uma metodologia para a elaboração das questões, personalizada con-
forme o perfil dos usuários, evitando o uso de termos técnicos.
Análise de observação
A técnica da análise de observação é bem interessante, pois,
permite que a inclusão do desenvolvedor do projeto na atmosfera de
trabalho em que o usuário ou grupo de usuários estão inseridos, na
qual este desenvolvedor observará as atividades cumpridas pelo usuá-
rio, sem intervir no ambiente de trabalho.
O objetivo é poder encontrar os requisitos por meio desta ob-
servação e análise das atividades realizadas pelo usuário. Até mesmo
é uma boa técnica para poder obter, de modo eficaz, o levantamento de
informações que, caracteristicamente, poderiam passar despercebidas
se fossem utilizadas outras técnicas.
Prototipação
A utilização desta técnica é apresentar ao usuário uma amostra
de uma versão do software, para que ele possa utilizar fazendo uma
experiência e uma avaliação para analisar o que está faltando. Esta
técnica é interessante porque possibilita que usuário possa ter uma vi-
são mais ampla do sistema, antes mesmo deste estar pronto, podendo
assim avaliar o que necessita, o que tem e o que precisa ser feito.
Alguns benefícios desta técnica é poder validar os requisitos
encontrados com os usuários e também contribuir na idealização do
projeto de interface, pois, os usuários podem validar o que foi apresen-
tado e dar sugestões de melhorias.
Um ponto crítico de utilizar este processo para o levantamento
de requisitos é usar essa estrutura para a primeira versão do software,
Casos de uso
Outra técnica muito utilizada para o levantamento de requisito
é o modelo de caso de uso. Esta modelagem se baseia em uma nota-
ção gráfica objetiva e uma representação em linguagem natural, o que
permite uma facilidade de comunicação para o usuário, fornecendo uma
modelagem simplificada para encontrar os requisitos.
Com isto, temos que o conjunto de casos de uso representa,
de modo visual, todas as possibilidades de interação que serão defini-
59
das nos requisitos de sistema. O modelo de caso de uso é formado por
atores, que representam pessoas ou outros sistemas, são ilustrados
como figuras “de bonecos em formato de palito”. Em que cada classe
de interação é ilustrada por uma elipse. As linhas conectam os atores e
a interação. Como opção, pontas de flechas podem ser acrescentadas
às linhas para demonstrar como a interação se inicia (SOMMERVILLE,
2011). Abaixo temos a figura 8 que ilustra um modelo de caso, conforme
descrevemos aqui.
DOCUMENTO DE REQUISITOS
“Documentação descreve cada parte do código fonte, uma função, uma clas-
se, um trecho ou módulo. Podemos dizer que a documentação consiste em
um conjunto de manuais gerais e técnicos, podendo ser organizado em for-
ma de textos e comentários, utilizando ferramentas do tipo dicionários, dia-
gramas e fluxogramas, gráficos, desenhos, dentre outros.”
Rastreabilidade de requisitos
A rastreabilidade é a característica de especificar requisitos
que demonstra a facilidade de descobrir os requisitos relacionados
(SOMMERVILLE, 2007). Nisto compreende que essa técnica funciona
como um procedimento de detectar e registrar o elo que circunda um
determinado requisito, para que possa rastrear de onde é originado,
como os componentes ligados ao mesmo e aos outros requisitos pro-
priamente dito.
Porém, para um requisito ser considerado rastreável, ele ca-
rece de algumas condições, como ter um identificador. Assim que con-
seguimos identificar os requisitos, tabelas de rastreamento são elabo-
radas.
Nisto essas tabelas catalogam os requisitos identificados a um
ou mais elementos de sistema ou de sua atmosfera. No meio das várias
tabelas de rastreamento admissíveis podemos ter os seguintes exem-
plos:
• Características: referindo-se à evidência como os requisitos
pode se comporta no sistema na visão do cliente;
62
• Fonte: referindo-se a detectar a origem de cada requisito;
• Dependência: demonstra como os requisitos estão se com-
portando, ou seja, se relacionam;
• Subsistemas: refere-se aos requisitos determinados pelos
subsistemas que eles geram;
• Interface: trata da relação dos requisitos entre as interfaces,
sejam internas e/ou externas do sistema (PRESSMAN, 2006).
Algumas contribuições geradas por essa técnica são: ter uma
avaliação de impacto, de modo acelerado e simplificado, o que possi-
bilita poder realizar a estimativa de alterações em cronogramas e em
despesas com o projeto.
Possibilita ainda encontrar lacunas e falta de consistência nos
requisitos, como também validar se a resolução de uma função está
coerente com que foi proposto, tem uma grande importância ainda na
gestão de riscos, pois, requisitos que tenham muita dependência ofere-
cem um risco maior.
Outras características dessa técnica são os tipos relacionados
com a capacidade de rastrear, em que temos o tipo de rastrear para
frente, que corresponde à aptidão de rastrear um requisito até seus apri-
moramentos, e outro tipo de rastrear para trás, que corresponde a ras-
trear até sua origem. Esses dois tipos precisam ser atuantes em todos
Implantação de software
Esta fase de implantação de software tem a responsabilidade
de possibilitar a instalação do software ao ambiente requisitado de pro-
dução. Assim, temos que nesta etapa o projeto é apresentado para os
envolvidos no projeto e aos clientes, e é avaliado se necessita de algu-
ma observação, de modificações ou refinamento do produto, caso haja
será retornando após o ajuste, depois de ser aprovado.
Porém, após à aprovação do cliente e da equipe de desenvol-
vimento, começa a preparação de manuais e são planejados os treina-
mentos.
Assim, temos as seguintes tarefas realizadas nesta fase de im-
plantação:
• O treino dos usuários;
66
• A configuração do ambiente de produção;
• E a realização, se preciso, da conversão da base de dado;
Manutenção do software
Após o sistema ser entregue ao cliente e colocado em execu-
ção, começa a fase de manutenção ou também chamada de evolução
do software. Levando em consideração os altos custos envolvidos no
processo de adquirir o produto de software, esta fase de manutenção
é um investimento para a empresa, pois, pode ser adotada apenas por
um determinado período de tempo, que for necessária ser realizada.
A necessidade de manutenção pode ser solicitada caso haja
uma mudança de ambiente de software, sendo necessário fazer mo-
dificações para outro ambiente requisitado, isto ocorre por conta dos
sistemas de software terem um acoplamento forte com ambiente.
Outra perspectiva para realizar manutenção é a alteração de
algum componente do sistema, como também adição de algum atributo
às funções já criadas, ou adição de novas funções. Temos as seguintes
fases de manutenção, os passos das fases de definição e o desenvol-
vimento são reaplicados, mas agora no contexto de um software exis-
tente.
67
QUESTÕES DE CONCURSOS
QUESTÃO 1
Ano: 2020 Banca: IBFC Órgão: TRE-PA Prova: Analista Judiciário -
Análise de Sistemas
Uma das técnicas mais comuns utilizadas para o desenvolvimento/
execução de testes de software é chamada de Caixa-Preta. Selecio-
ne os tipos de teste que são aplicáveis essa técnica:
A - unitário.
B - integração.
C - sistema/funcional.
D - aceitação.
Assinale a alternativa correta.
a) da relação apresentada somente o A, B e C
b) da relação apresentada somente o A, C e D
c) da relação apresentada somente o B, C e D
d) da relação apresentada todos são aplicáveis essa técnica
QUESTÃO 2
Ano: 2020 Banca: IBFC Órgão: TRE-PA Prova: Analista Judiciário -
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
Análise de Sistemas
No TDD (Test Driven Development) o desenvolvimento deve ser
guiado a testes, onde um teste unitário deve ser escrito antes que
uma funcionalidade do sistema o seja. Assinale a alternativa que
apresenta a que ciclo de vida o processo interativo do TDD deu
origem.
a) green-yellow-refactor
b) red-green-refactor
c) black-white-refactor
d) green-yellow-red-refactor
QUESTÃO 3
Ano: 2018 Banca: IBADE Órgão: IPM - JP Prova: Analista Previden-
ciário - Analista de Informática - Analista de Sistemas e Programação
No âmbito dos testes de integração, a atividade de reexecução de
um mesmo subconjunto dos que já foram executados para asse-
gurar que alterações não tenham propagado efeitos colaterais in-
desejados é conhecida como teste de:
a) unidade.
b) regressão.
c) validação.
68
d) verificação.
e) classe.
QUESTÃO 4
Ano: 2018 Banca: IBADE Órgão: IPM - JP Prova: Analista Previden-
ciário - Analista de Informática - Analista de Sistemas e Programação
Uma estratégia de teste de software pode englobar diferentes tipos
de testes para assegurar a qualidade do software. Os que propor-
cionam a garantia final de que o software satisfaz todos os requi-
sitos informativos, funcionais, comportamentais são conhecidos
como testes:
a) de validação.
b) de unidade.
c) de integração.
d) totais.
e) globais.
QUESTÃO 5
Ano: 2020 Banca: CESPE Órgão: TJ-PA Prova: Analista Judiciário
- Programador
No teste de software orientado a objetos, como a condição de um
TREINO INÉDITO
a) Entrevista
b) Questionário
c) Prototipação
d) Modelo de caso de uso
e) Análise da observação
NA MÍDIA
NA PRÁTICA
FONTE:<https://becode.com.br/etapas-de-um-projeto-de-software/>
71
Finalizando o presente módulo, espera-se que o aluno tenha
adquirido um conhecimento efetivo na área de Engenharia de Software
e possa ter a capacidade de entender seus princípios e métodos.
Inclusive que os alunos possam sair com a compressão da
grande importância de um bom planejamento de projeto, quando se tra-
balha com processo desenvolvimento de software, levando em conta
a boa comunicação, um bom planejamento e a escolha adequada do
processo de software.
Ainda espera-se que o conteúdo explanado possa levar você
a ser um profissional qualificado e comprometido com a qualidade de
produzir, manter e avaliar bons softwares. Como também deseja trazer
com os temas abordados, que no futuro possa ser um profissional que
tome boas decisões, de acordo com os conhecimentos adquiridos. Po-
demos constatar a importância da Engenharia de Software no mercado
e como é necessária a existência de profissionais qualificados nesta
área.
Em suma, almejamos que todos os temas explanados sejam
de grande valia para o seu crescimento profissional, bem como pessoal,
e que contribua como inspiração para viabilizar a garantia de um bom
desempenho, em uma carreira de sucesso.
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
72
GABARITOS
CAPÍTULO 01
QUESTÕES DE CONCURSOS
01 02 03 04 05
Certo B E E C
TREINO INÉDITO
73
CAPÍTULO 02
QUESTÕES DE CONCURSOS
01 02 03 04 05
B E D C B
TREINO INÉDITO
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
74
CAPÍTULO 03
QUESTÕES DE CONCURSOS
01 02 03 04 05
D B B A E
75
AMBLER,Scott W. Modelagem ágil: práticas eficazes para a progra-
mação extrema e o processo unificado.Trad. Acauan Fernandes.
Porto Alegre Bookman, 2004. 351p.
ACM.The association for Computing Machinery, Inc. and the Institute for
Electrical and Electronics Engineers.1999. Disponível ;http://www.di.ubi.
pt/~sebastiao/Ensino/UBI/2016-2017/API/CodigoEticaACM-IEEE.pdf.
Acesso em: 10 abril 2020.
76
PRESS. SUH, N. P. (1990). The Principles of Desgin. New York: Ox-
ford University
OMG. MDA Guide Version 1.0.1. 2003. Disponível em: <http:// www.
omg.org/docs/omg/03-06-01.pdf>. Acesso em: 10 abril 2020
77
ENGENHARIA DE SOFTWARE: HISTÓIRIA, CONCEITOS E FUNDAMENTOS - GRUPO PROMINAS
78