Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Carlos Helmar Duarte
ENGENHARIA DE SOFTWARE I
1ª edição
Ipatinga – MG
2023
2
FACULDADE ÚNICA EDITORIAL
Este livro ou parte dele não podem ser reproduzidos por qualquer meio sem Autorização
escrita do Editor.
Ficha catalográfica elaborada pela bibliotecária Melina Lacerda Vaz CRB – 6/2920.
3
Menu de Ícones
Com o intuito de facilitar o seu estudo e uma melhor compreensão do conteúdo
aplicado ao longo do livro didático, você irá encontrar ícones ao lado dos textos. Eles
são para chamar a sua atenção para determinado trecho do conteúdo, cada um
com uma função específica, mostradas a seguir:
4
SUMÁRIO
01 1.1
1.2
1.3
1.3.1
HISTÓRIA E CONCEITO DE SOFTWARE ............................................................. 8
CONTEXTO HISTÓRICO DO SOFTWARE............................................................ 9
TRABALHANDO OS CONCEITOS BÁSICOS DA ENGENHARIA DE SOFTWARE
......................................................................................................................... 12
Conceitos iniciais.................................................................................................12
1.3.2 Sistemas sociotécnicos.......................................................................................13
1.4 ENGENHARIA DE SOFTWARE NOS DIAS ATUAIS ............................................ 16
FIXANDO O CONTEÚDO ................................................................................. 20
02
2.1 MODELOS DE PROCESSOS DE SOFTWARES.................................................... 24
2.2 CICLOS DE VIDA DE UM SOFTWARE............................................................... 26
2.2.1 Modelo em Cascata ..........................................................................................27
2.2.2 Prototipação ........................................................................................................28
2.2.3 Modelo de desenvolvimento Baseado em Componentes ........................29
2.2.4 Entrega Incremental ...........................................................................................31
2.2.5 Modelo Espiral......................................................................................................32
2.3 ATIVIDADES DE PROCESSO DE SOFTWARE .................................................... 34
2.3.1 Especificação de software ...............................................................................34
2.3.2 Implementação de software ............................................................................35
2.3.3 Validação de software ......................................................................................36
2.3.4 Evolução (manutenção) de software ............................................................38
FIXANDO O CONTEÚDO ............................................................................. 2044
03
3.1 VISÃO GERAL E CONCEITOS DO GERENCIAMENTO DE PROJETOS ................ 46
3.2 ATIVIDADES, PLANEJAMENTO E CRONOGRAMA DE PROJETOS DE SOFTWARES
............................................................................................................................ 49
3.2.1 Visão geral das atividades de gerenciamento de projeto de software.....50
3.2.2 Visão geral do planejamento de gerenciamento de projeto de software
...................................................................................................................................51
3.2.3 Visão geral do cronograma de gerenciamento de projeto de software ..53
3.3 ANÁLISE DE RISCOS ........................................................................................... 55
FIXANDO O CONTEÚDO .................................................................................... 59
04
4.1 ESTUDOS DE REQUISITOS: CONCEITOS E IMPORTÂNCIA ................................. 63
4.1.1 Importância do estudo de requisitos .................................................................64
4.1.2 Engenharia de Requisitos .....................................................................................65
4.2 REQUISITOS DE UM SOFTWARE: CARACTERÍSTICAS GERAIS, REQUISITOS
FUNCIONAIS E NÃO FUNCIONAIS .................................................................... 67
4.2.1 Características gerais ............................................................................................67
4.2.2 Requisitos Funcionais .............................................................................................68
4.2.3 Requisitos Não funcionais .....................................................................................70
4.3 ELICITAÇÃO E ANÁLISE DE REQUISITOS............................................................ 73
4.3.1 Levantamento de requisitos ................................................................................74
4.3.2 Análise de requisitos ..............................................................................................76
4.3.3 Documentação de requisitos ..............................................................................78
4.4 Validação de requisitos ................................................................................... 79
FIXANDO O CONTEÚDO .................................................................................... 82
5
UNIDADE INTRODUÇÃO AO ESTUDO DE PROJETOS ORIENTADO A OBJETOS (UML -
UNIFIED MODELING LANGUAGE) ........................................................... 86
05
5.1 VISÃO GERAL DA MODELAGEM ORIENTADA A OBJETOS............................... 86
5.2 CLASSES, ATRIBUTOS E OPERAÇÕES ................................................................. 88
5.2.1 Classes ......................................................................................................................88
5.2.2 Atributos ...................................................................................................................89
5.2.3 Operações ..............................................................................................................90
5.3 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE COM UML ...................... 93
5.3.1 Contexto de sistema e modelos de uso ............................................................94
5.3.2 Projeto de arquitetura ...........................................................................................95
5.3.3 Identificação dos objetos principais do sistema ..............................................96
5.3.4 Modelo de projetos ...............................................................................................97
5.3.5 Especificar interfaces de objetos ........................................................................97
FIXANDO O CONTEÚDO .................................................................................... 99
06
6.1 CONCEITOS E MODELOS ................................................................................. 103
6.2 DIAGRAMAS ESTRUTURAIS ............................................................................... 104
6.2.1 Diagrama de Classes ......................................................................................... 105
6.2.2 Diagrama de Objetos ........................................................................................ 107
6.3 DIAGRAMAS COMPORTAMENTAIS ................................................................. 108
6.3.1 Diagrama de Caso de Uso ............................................................................... 109
6.3.2 Diagrama de Atividades ................................................................................... 112
6.3.3 Diagramas de interação ................................................................................... 115
FIXANDO O CONTEÚDO ............................................................................................. 118
REFERÊNCIAS................................................................................. 123
6
CONFIRA NO LIVRO
7
ENGENHARIA DE SOFTWARE: UNIDADE
CONTEXTUALIZAÇÃO HISTÓRICA E
CONCEITOS BÁSICOS
01
1.1 HISTÓRIA E CONCEITO DE SOFTWARE
O software é responsável pelo produto mais importante nas relações dos seres
humanos atualmente, a informação. Para contexto apresentado, e visando os
objetivos iniciais dessa unidade de contextualização e caracterização do termo
software, é importante descrever o significado de sistema. Na engenharia de
software, sistema pode ser definido como sendo “um conjunto intencional de
componentes inter-relacionados que funcionam juntos para atingir certo objetivo”
(SOMMERVILLE, 2007, p.14). Para o autor essa definição de sistema abrange um vasto
universo de sistemas, desde os mais simples aos mais complexos.
Após as definições de software e sistema, é ilustrado na figura 1 um esquema
que resume o sistema de software.
8
Figura 1: Definição de sistema de Software
9
Figura 2: Evolução software/hardware
10
Para entender mais sobre o sistema de processamento em lotes, recomenda-se a leitura
das páginas 26 e 27 do livro, Sistemas operacionais: projeto e implementação de Andrew
S. Tanenbaum, Albert S. Woodhull. O livro está disponível na biblioteca virtual, no link:
https://shre.ink/HZ2Y. Acesso em: 20 jan. 2023.
11
Para saber mais sobre a história e desempenho de computadores, sugerimos a leitura da
parte I, capítulo 2 “Evolução e desempenho do computador” (páginas 12 a 45) do livro
“Arquitetura e organização de computadores: Projeto para o desempenho” de William
Stallings, disponível na biblioteca virtual no endereço eletrônico https://abrir.link/FVKNj.
Acesso em: 20 jan. 2023.
12
aprofundada sobre as atividades de desenvolvimento dos softwares nas últimas
décadas. Esses fatores estão diretamente relacionados, primeiro, com às altas
complexidades do sistema que surgiram com a evolução do processamento das
imagens e sons que foram integradas aos hardwares de pequeno porte; e segundo
com as integrações, as quais ficaram cada vez mais evidentes nos diversos tipos de
hardwares e de sistemas operacionais, seja para o uso no computador doméstico ou
científico.
13
Figura 3: Visão geral dos Sistemas Sociotécnicos
14
Nesse ponto é importante diferenciar a engenharia de sistema de engenharia de
software, para Sommerville (2007, p. 6) a “engenharia de sistemas é uma disciplina mais
antiga que a engenharia de software”. Ao longo dos anos a pessoa tem realizado a
especificação de sistemas complexos, com a evolução da tecnologia o número de
softwares utilizados teve um expressivo aumento na produção de sistemas, dessa forma a
técnica de engenharia de software tem sido usada no processo de engenharia de
sistemas. O quadro 1 da seção 1.3 apresenta mais informações em relação as
características e diferenciações da engenharia de software e engenharia de sistemas.
15
com as demandas do mercado.
Os sistemas desenvolvidos com base em softwares legado possuem hardware,
software, processos e procedimentos baseado em tecnologias mais antigas e
obsoletas. Os sistemas legados incluem processos de negócios, software de
aplicação, software de apoio e hardware de sistema. São “velhas formas de fazer
coisas que dificilmente são mudadas porque estão baseadas em software legado”.
(SOMMERVILLE, 2007, p.25). Os responsáveis pela empresa, associados a elaboração
de políticas e procedimentos organizacionais, na maioria dos casos não substituem
esse tipo de sistema por acreditarem que é grande o risco de perda de dados e
informações.
16
processamento e análise de dados a partir de estratégias bem definidas, identificar
possíveis falhas no software e elaborar soluções para resolvê-las.
O quadro 1, mostra uma comparação entre as grandes áreas de formação
em relação à tecnologia atualmente, situando a Engenharia de Software no
contexto atual.
17
compete ao engenheiro de software as atribuições previstas no art. 7°
da Lei nº 5.194, de 1966, combinadas com as atividades 1 a 18 do art.
5º, §1º, da Resolução nº 1.073, de 19 de abril de 2016, referentes a
requisitos de software, sistemas e soluções de software, evolução de
software, integração local e remota de sistemas de software.
18
E o desafio da confiança, nesse ponto o autor reforça que é necessário
“desenvolver técnicas que demonstrem que o software pode ter a confiança dos
seus usuários” (SOMMERVILLE, 2007, p.10).
Em resumo, a unidade I, contextualizou a história e apresentou o conceito de
software e de engenharia de software. Foi descrito também a relação da engenharia
de software com etapas de desenvolvimento e produção de um projeto de software.
No final da unidade foi apresentado um pouco sobre a profissionalização do
engenheiro de software, descrevendo a legislação que regulamentou a profissão e
desafios nos dias atuais da área de engenharia de software.
A seguir são propostas algumas questões sobre o conteúdo da unidade 01.
19
FIXANDO O CONTEÚDO
20
3. A Resolução nº 1.100 de 24 de maio de 2018 indica em seu texto que as atribuições
do engenheiro de software estão previstas no art. 7° da Lei nº 5.194, de 1966. De
acordo com essa informação, analise as proposições abaixo:
I. Estudos, projetos, análises, avaliações, vistorias, perícias, pareceres E divulgação
técnica;
II. Contração de pessoal para composição da equipe de projeto;
III. Fiscalização de obras e serviços técnicos;
IV. Direção de obras e serviços técnicos;
V. Execução de obras e serviços técnicos.
São atribuições do engenheiro de software:
a) I, II, III, IV e V.
b) I, III, IV e V.
c) II, III, IV e V.
d) II, III e IV.
e) III e V.
21
d) II e III.
e) II, III e IV.
22
e) A geração de computadores dos sistemas operacionais avançados.
23
CONCEITOS E MODELOS DE UNIDADE
PROCESSO DE SOFTWARE
24
Em relação aos processos de software, para Sommerville (2007, p. 42), “os
processos de software são complexos e, como todos os processos intelectuais e
criativos, dependem de julgamento humano”. Apesar das muitas tentativas do uso
de ferramentas para a automatização dos processos de software, os resultados são
bastante limitados, isso por causa dos fatores relacionados à decisão nos projetos, ou
seja, o uso do julgamento e da criatividade.
Pressman (2011, p. 40) descreve que no contexto da engenharia de software,
podemos dizer que o processo de desenvolvimento de software não é um processo
fixo, rígido, estático, “ao contrário, é uma abordagem adaptável que possibilita às
pessoas (a equipe de software) realizar o trabalho de selecionar e escolher o conjunto
apropriado de ações e tarefas”.
Existem vários tipos de processos de software, desta forma, um bom
entendimento sobre o funcionamento desses processos auxilia na elaboração dos
projetos. Existem algumas atividades que são comuns aos diversos tipos de processo,
assim, é importante entende-las para uma melhor escolha do tipo que será
selecionado para executar o projeto. Isso porque, confirma afirma Pfleeger (2004),
“A estrutura do processo orienta nossas ações, permitindo-nos examinar, entender,
controlar e aprimorar as atividades que compõem” (p.37), ou seja, é fundamental
que o processo esteja alinhado a metodologia proposta no projeto de software. A
figura 7 ilustra as atividades comuns no processo de software.
25
Figura 7: Atividades fundamentais e comuns no processo de software
A figura 7 permite concluir que seja qual for o processo escolhido para compor
o projeto de software, é necessário um processo que contenha a especificação,
implementação, validação e evolução (manutenção) do projeto de software. As
seções 2.2 e 2.3 dessa unidade descrevem conceitos e caracterizam os
processos/ciclos de vida de um software.
Para saber mais sobre o processo de software sugerimos a leitura do capítulo 4 do livro
Engenharia de Software do autor Ian Sommerville (2007), páginas 42-49. O livro está
disponível na Biblioteca Virtual: https://abrir.link/slcpS. Acesso em: 20 jan. 2023.
26
Quadro 2: Modelos de Processos de Software
Modelo em Prototipação Engenharia de Entrega Desenvolvimento
Cascata Software Incremental Espiral
Baseada em
Componentes
Especificação, Tem o Essa abordagem A especificação, O
desenvolvimento, objetivo de é baseada na o projeto e a desenvolvimento
validação e mostrar ao existência de um implementação do sistema evolui
evolução (Fases usuário, antes número de software são em espiral para
de processos da entrega significativo de divididos em uma fora a partir de
separados). do produto componentes série de um esboço inicial
final, um reusáveis. incrementos até o sistema
protótipo do desenvolvidos final.
sistema. um de cada vez.
27
Figura 8: Modelo de processo de software em Cascata
2.2.2 Prototipação
28
Figura 9: O modelo da prototipação
29
palavra reusar, significa, “utilizar novamente”. Dessa forma podemos dizer que o
processo de Engenharia de Software Baseado em componentes utiliza-se de vários
softwares para a elaboração de outro software. Esse modelo de processo, “depende
de uma grande base de componentes de softwares reusáveis e algum framework de
integração desses componentes”. (SOMMERVILLE, 2007, p. 46)
De acordo com Pressman (2011, p. 69) o modelo baseado em componentes
possui as seguintes etapas no seu desenvolvimento:
A redução de custos e riscos é uma das vantagens desse modelo, isso porque
reduz a quantidade de software a ser produzido. A desvantagem é que o
desenvolvimento baseado em uma entrega mais rápida compromete a descrição
dos requisitos, e consequentemente a possibilidade da entrega de um software que
não atenda às necessidades reais dos usuários.
30
2.2.4 Entrega Incremental
31
outros incrementos. adequado.
Existe um risco menor de falha geral do A maior parte dos sistemas requer um
projeto, principalmente nas partes mais conjunto de recursos básicos usados por
importantes do sistema. diferentes partes do sistema.
Dificuldades na identificação dos recursos
comuns exigidos por todos os incrementos.
Fonte: Adaptado de Sommerville (2007, p. 48).
32
Figura 13: Modelo em espiral do processo de software
O Rational Unified Process – RUP, idealizado durante o início dos anos 1990, por James
Rumbaugh, Grady Booch e Ivar Jacobson é um bom exemplo de modelo híbrido de
processo, ele traz elementos dos modelos iterativos, em cascata, baseado em
componentes, evolucionário e a prototipação, a partir de uma perspectiva dinâmica,
(mostra as fases do modelo) estática (Mostra as atividades realizadas) e prática (sugere
boas práticas a serem realizadas).
33
Para entender um pouco mais sobre o RUP, leia as páginas 54 a 56 do livro Engenharia de
software do autor Ian Sommerville. O livro está disponível na biblioteca virtual:
https://abrir.link/slcpS. Acesso em: 20 jan. 2023.
34
O produto final, portanto, do processo de especificação de software é
denominado documento de requisito e aborda o conteúdo sobre a especificação
do sistema. O modelo está ilustrado na figura 14.
35
Figura 14: Processo de especificação de um software
36
Figura 15: Processo de Validação de Software
37
2.3.4 Evolução (manutenção) de software
38
Manutenção de software
As alterações feitas no software podem ser simples mudanças para correção de erros de
codificação, até mudanças mais extensas para correção de erros de projeto, ou
melhorias significativas para corrigir erros de especificação ou acomodar novos requisitos.
As mudanças são implementadas por meio da modificação de componentes do sistema
existente e, quando necessário, por meio da adição de novos componentes
(SOMMERVILLE, 2007, p. 327).
39
A engenharia de software auxiliada por computador – CASE (Computer-Aided Sofware
Enginnering) refere-se aos softwares utilizados para dar apoio às atividades do projeto de
software, a partir da automação de algumas atividades referente ao processo.
Para saber mais sobre ferramenta CASE, sugerimos a leitura do título: “Engenharia de
software auxiliada por computador” páginas 56 e 57 do livro engenharia de software de
Ian Sommerville. O livro está disponível na biblioteca virtual: https://abrir.link/slcpS. Acesso
em: 20 jan. 2023.
40
FIXANDO O CONTEÚDO
41
sistemática para o desenvolvimento de software.
Estão corretas:
a) I, IV e V.
b) I, II, III e V.
c) I, III, IV e V.
d) II, IV e V.
e) II, III e IV.
A sequência CORRETA é:
a) I-E, II-A, III-C, IV-B, V-D.
b) I-B, II-A, III-E, IV-C, V-D.
42
c) I-B, II-A, III-D, IV-E, V-C.
d) I-E, II-B, III-D, IV-B, V-C.
e) I-A, II-B, III-E, IV-D, V-C.
a) Evolução de software.
b) RPU.
c) Validação de software.
d) Projeto de implementação de software.
e) Análise de requisitos.
43
7. Observe o recorte da imagem:
I. Um dos principais pontos do modelo espiral, é que o modelo parte do princípio que
a forma de desenvolvimento do software precisa ser completamente determinada
de antemão.
II. Um dos ciclos no modelo espiral refere-se a avaliar alternativas com relação aos
objetivos e restrições, e identificar as principais fontes de riscos.
III. No modelo espiral, a estratégia para se descobrir os problemas é a prototipação,
que é vista como um meio de redução de riscos.
IV. Na etapa de planejamento da próxima fase, configura-se uma atividade
preventiva, tendo em vista que o projeto poderá ser abortado se apresentar um alto
fator de risco.
44
Estão corretas:
a) I, II e IV.
b) I, II e III.
c) I e IV.
d) II, III e IV.
e) II, III e IV.
45
INTRODUÇÃO AO UNIDADE
GERENCIAMENTO DE PROJETOS
46
Figura 17: Contexto de iniciação do projeto
47
Gerenciamento de projetos eficazes Projetos mal gerenciados ou ausência de
gerenciamento
eliminarem projetos com problemas;
Gerenciarem restrições
Equilibrarem a influência de restrições do
projeto e
Gerenciarem melhor as mudanças
Fonte: Guia PMBOK, (2017, p. 10).
48
Figura 18: Os processos de gerenciamento das partes interessadas do projeto são:
O conceito abordado nessa seção teve como objetivo descrever uma visão
geral do termo projeto e do gerenciamento de projeto. No próximo capítulo será
abordada uma visão geral das etapas específicas do gerenciamento de projeto de
software.
49
um mau gerenciamento de projeto, pode resultar em falha grave nos projetos. Dessa
forma, é importante que a seleção da pessoa responsável pelo controle e
coordenação desse tipo de projeto seja realizada com responsabilidade e critério.
No gerenciamento de projetos de software, os profissionais responsáveis pelo
desenvolvimento de planos e cronograma dos projetos são os gerentes de software.
Além dessa função, eles também “supervisionam o trabalho para assegurar que ele
esteja sendo realizado dentro dos padrões exigidos e monitoram o progresso para
verificar se o desenvolvimento está no prazo e dentro do orçamento” SOMMERVILLE
(2007, p.61).
50
Figura 19: Esboço das atividades de gerenciamento de software
51
Quadro 7: Tipos de planos de ação
Plano Descrição
Descreve os procedimentos e os padrões de
Plano de qualidade
qualidade usados no projeto.
Descreve a abordagem, os recursos e o
Plano de validação
cronograma usado para a validação do sistema.
Plano de gerenciamento de Descreve os procedimentos e a estrutura de
configuração gerenciamento de configuração a serem usados.
Prevê os requisitos de manutenção do sistema, os
Plano de manutenção
cultos de manutenção e o esforço necessário.
Plano de desenvolvimento de Descreve como as habilidades e a experiência dos
pessoal membros da equipe de projeto será desenvolvida.
Fonte: Sommerville (2007, p. 64).
52
Um conceito importante e que tem relação direta com as atividades é o termo
“marco”. Diferente de atividade, o marco, pode ser definido como sendo “um ponto
final reconhecível de uma atividade do processo e software” SOMMERVILLE (2007, p.
65). Para Pfleeger (2004), na relação entre marco e atividade, pode-se afirmar que
“uma atividade tem um começo e um fim, ao passo que o marco é o fim de uma
atividade – um momento específico no tempo”.
A figura 21 ilustra o conceito e as relações entre atividade e marco no
planejamento de projeto de software, observe na figura a descrição do marco e sua
finalização em uma atividade.
Figura 21: Atividade e marcos no processo de requisitos
53
638) afirma que:
o objetivo das ferramentas de cronograma de projeto é permitir que
o gerente defina as tarefas; estabeleça suas dependências; atribua
recursos humanos às tarefas e desenvolva uma variedade de cartas,
diagramas e tabelas que ajudem a acompanhar e controlar o projeto
de software.
54
Em resumo, três informações importantes sobre cronograma, de acordo com PRESSMAN
(2004, p. 629)
Por que é importante? Para criar um sistema complexo, muitas tarefas de engenharia de
software ocorrem em paralelo, e o resultado do trabalho executado durante uma tarefa
pode ter um profundo efeito sobre o trabalho a ser executado em outra tarefa. Essas
interdependências são muito difíceis de entender sem um cronograma. É também
praticamente impossível avaliar o progresso em um projeto de software de tamanho
moderado ou grande sem um cronograma detalhado.
55
Figura 22: Categoria de riscos
56
Quadro 8: Estágios do processo de gerenciamento de riscos
Tipo de risco Identificação dos riscos Análise dos riscos Monitoração dos
riscos
Tecnologia Software e Hardware Defeitos no Hardware e software
usados para componente de de apoio entregues
desenvolver o sistema. software com atraso.
Problemas no banco
de dados no processo
de transações.
Pessoal Associados a pessoas Pessoal qualificado Problemas no
da equipe de Equipe incompleta – relacionamento dos
desenvolvedores pessoal com membros da equipe –
problemas de saúde pessoal e financeiro
Falta de treinamento
do pessoal
Organizacional Ambiente Troca de gerente do Ausência do gerente
organizacional onde o projeto de projeto
software é Reduções no Boatos negativos na
desenvolvido orçamento organização
Ferramenta Ferramentas CASE e Código da Resistência da equipe
outros softwares de ferramenta CASE é para o uso de
apoio insuficiente determinados
Não possibilidade de equipamentos
integração de dados Demanda por
tecnologias mais
avançadas
Requisitos Mudança de requisitos Mudanças de Reclamações do
pelo cliente ou no requisitos – retrabalho cliente
processo de Falta de Muitas solicitações de
gerenciamento entendimento dos mudança de
clientes quanto a requisitos
mudança de
requisitos
Estimativas Estimativas de Cálculo errado no Falha no
gerenciamento e de prazo de cumprimento do
recursos na desenvolvimento cronograma e em
elaboração no sistema. Cálculo errado na eliminar defeitos
taxa de reparto do instalados
sistema
Cálculo errado na
previsão do tamanho
do software
Fonte: Adaptado de Sommerville (2007, p. 70-73)
57
As atividades de gerenciamento de riscos geram custos adicionais para o
projeto, mas pode evitar prejuízos tanto financeiros quanto estrutural, tendo em vista
o caráter preventivo das suas atividades. O controle de riscos está diretamente
relacionado com a redução, o planejamento e a resolução de riscos. De acordo
com Pfleeger (2004, p.96), três estratégias para redução de riscos são indicadas:
Tendo como base a leitura do quadro 8 deste livro, analise: você é um gerente de uma
empresa e está desenvolvendo um projeto de software. O software em desenvolvimento
é um aplicativo para controle de entradas e saídas de documentos do setor de protocolo
da empresa. Como seria a tabela de riscos para esse projeto?
58
FIXANDO O CONTEÚDO
59
e) Na manutenção do sistema.
60
6. Observe as proposições abaixo sobre os planos que fazem parte do planejamento
de projeto:
I. Plano de manutenção: Realizar planilhas referente aos gastos em relação a
proposta de manutenção do sistema.
II. Plano de validação: Elaborar planilha de atividades e a previsão do tempo
para realiza-las.
III. Plano de qualidade: Elaborar documento com informações sobre o perfil da
equipe, para a realização das atividades, visando à qualidade do projeto.
IV. Plano de gerenciamento de configuração: Definir documento de requisitos
proposto no projeto.
Está (ão) correta(s):
a) I, II e III.
b) I e III.
c) I e II.
d) Somente I.
e) Somente II.
7. Observe o trecho:
“Você selecionou um modelo de processo apropriado, já identificou as tarefas de
engenharia de software que precisam ser executadas, estimou a mão de obra e o
número de pessoas, conhece os prazos e até já considerou os riscos. Agora chegou
a hora de ligar os pontos. Isto é, tem de criar uma rede de tarefas de engenharia de
software que lhe permitirá terminar o trabalho no prazo.” (PRESSMAN, 2011, p. 629)
O Trecho acima se refere ao próximo passo na elaboração do projeto de software,
marque a alternativa abaixo que se refere a essa etapa.
a) Definição das Atividades
b) Definição dos Marcos
c) Realização da Análise de riscos
d) Verificação de erros
e) Realização do Cronograma
61
associados a cada risco.
II. Construir um produto que não se encaixa no plano estratégico da empresa pode
ser considerado um “Risco de Negócio”.
III. “Riscos imprevisíveis” são apontados a partir de experiências em projetos
anteriores. Rotatividade de pessoal é um exemplo desse tipo de risco.
IV. Comprar um equipamento para compor o software, sem o devido estudo da
necessidade é um risco de produto.
V. Erros na elaboração do cronograma e investimentos de recursos no projeto são
considerados um risco de projeto.
Estão corretos:
a) I, II, III, IV e V.
b) I, II, IV e V.
c) II, III e IV.
d) II e V.
e) IV e V.
62
ENGENHARIA DE REQUISITOS UNIDADE
63
O Institute of Electrical and Electronic Engineers – IEEE é considerada uma das maiores
organizações profissionais técnica do mundo para o avanço da tecnologia. Para saber
um pouco mais sobre o instituto acesse https://www.ieee.org/. O IREB (International
Requirements Engineering Board) é o Conselho Internacional de Engenharia de Requisitos.
O conselho elaborou um glossário de terminologia de engenharia de requisitos, o qual
contém conceitos de termos importantes na área. Para acessar o dicionário na sua versão
original, acesse o link: https://www.ireb.org/en/cpre/basics/. A empresa a T&M Testes Ltda
realizou a tradução do glossário no ano de 2011, o arquivo está disponível no site da IBQTS
ibqts – Instituto Brasileiro de Qualidade em Software, http://ibqts.com.br/. O site também
é uma boa fonte de pesquisa sobre o assunto requisito.
64
Figura 23: Principais problemas na fase de elaboração de requisitos
A fase de análise dos requisitos combinada com outras partes do projeto está
diretamente relacionada com o sucesso do projeto de software. A redução de custos é
um dos principais benefícios. Quais outros benefícios podem pensar?
65
O processo de Engenharia de Requisitos é um elemento fundamental no
contexto da engenharia de software, pois estabelece um conjunto de interações
entre as demandas dos clientes, na elaboração do projeto de software e na equipe
que irá desenvolvê-lo. A partir dessas relações a engenharia de requisitos fornece
subsídios à modelagem nos projetos.
Para Sommerville (2007), principal objetivo da engenharia de requisitos é “criar
e manter um documento de requisitos do sistema” (p.95). Para que isso seja possível
é preciso entender os processos de viabilidade, elicitação e análise, a especificação
e a validação de requisitos, conforme é ilustrado na figura 24.
66
requisitos de usuários e de sistemas. Como exemplo, podemos citar a elaboração de
documentos em relação aos requisitos funcionais e não funcionais que serão
abordados no sistema, esses conceitos serão explicitados no item 4.2 desse livro.
A validação dos requisitos é a fase final, e abordam itens importantes, como
as revisões, prototipação e a geração de casos de testes. Nessa fase serão revisados
erros, conflitos e contradições que são apontados pelos revisores.
Engenharia de Requisitos
Quem realiza? Engenheiros de software (algumas vezes conhecidos no mundo da TI
como engenheiros de sistemas ou “analistas”) e outros interessados no projeto (gerentes,
clientes, usuários finais), todos participam da engenharia de requisitos.
Por que é importante? Projetar e construir um programa de computador elegante que
resolva o problema errado não atende às necessidades de ninguém. É por isso que é
importante entender o que o cliente quer antes de começar a projetar e construir um
sistema baseado em computador.
Qual é o artefato? O objetivo da engenharia de requisitos é fornecer a todas as partes
um entendimento escrito do problema. Isso pode ser alcançado por meio de uma série
de artefatos: cenários de uso, listas de funções e características, modelos de análise ou
uma especificação.
Como garantir que o trabalho foi realizado corretamente? Os artefatos da engenharia
de requisitos são revisados com os interessados para garantir que aquilo que você
entendeu é realmente aquilo que eles queriam dizer. Um alerta: mesmo depois de todas
as partes terem entrado em acordo, as coisas vão mudar e continuarão mudando ao
longo de todo o projeto (PRESSMANN, 2011, p. 125).
67
Quadro 9: Requisitos de usuário e requisitos de sistema.
Requisitos de Usuários Requisitos de Sistema
Utilizados para declarar os requisitos Utilizados para indicar a descrição detalhada
abstratos de alto nível, ou seja, de fácil do que o sistema deverá fazer. Portanto,
compreensão pelos usuários do sistema que estabelecem detalhadamente as funções e
não têm conhecimentos técnicos. as restrições de sistemas.
68
funcional e a ênfase na ação em relação ao software e comportamento do sistema
buscando o objetivo de elaboração de um requisito completo e consistente.
69
Quadro 10: Exemplo de um Requisito Funcional
Identificador RF001
Nome Gerar relatório de cpf para bloqueios de pagamentos
Módulo Gerencial
Data da 15/05/2022 Responsável João do ABC
Elaboração
Data da Última N/A Responsável N/A
alteração
Versão 1.0 Prioridade Essencial
Descrição O sistema permitirá que os gerentes emitam relatórios de acordo com
os dados informados na solicitação do relatório.
Na entrada o usuário deverá realizar o preenchimento do campo do
mês e ano.
Após a inserção do mês e do ano, o sistema irá apresentar na tela,
uma lista com dados (nome, cpf, endereço, telefone) de pessoas
que ainda não foram informadas pelo sistema da realização de uma
atualização cadastral.
O Gerente terá a opção de fazer a leitura na tela, ou imprimir em
papel.
Fonte: Elaborado pelo autor
Nos conceitos sobre requisitos funcionais trabalhados nesse tópico é possível identificar
que a realização de uma funcionalidade pode estar relacionada a mais de um requisito
funcional. Imagine um sistema que possui uma tela “Cadastro de usuários”, o qual
controla os dados cadastrais dos perfis dos usuários do sistema. Nessa tela é possível incluir,
alterar, consultar e excluir usuários, ou seja, uma única funcionalidade. Quantos e quais
requisitos podem ser realizados por essa funcionalidade?
70
funcionais como sendo “restrições sobre os serviços ou funções oferecidas pelo
sistema. Eles incluem restrições de timing, restrições sobre de desenvolvimento e
padrões”. Pfleeger (2004) completa afirmando que os requisitos não funcionais,
também denominados de restrições, “descrevem uma restrição no sistema que limita
nossas opções para criar uma solução para o problema” (p.115).
Um exemplo de requisito não funcional está descrito no quadro 11, o formulário
apresenta os dados de um requisito externo, da categoria de requisitos legais do tipo
“requisito de segurança”.
71
Figura 25: Tipos de requisitos não funcionais
72
Para aprofundar o assunto sobre requisitos funcionais e não funcionais, recomenda-se a
leitura da parte 2, capítulo 6 do livro “Engenharia de software” do autor Ian Sommerville
(2007), páginas 77-94. O livro está disponível na biblioteca virtual, no link:
https://abrir.link/slcpS. Acesso em: 20 jan. 2023.
73
Nas seções seguintes, serão discutidos os recursos metodológicos proposto na
elicitação de requisitos para a coleta e análise de dados e informações para a
construção de um sistema.
Para saber mais sobre a relação dos engenheiros de requisitos e os Stakeholders, leia a
página 49 do capítulo 3 do livro: “Fundamentos da Engenharia de Requisitos”, de POHL e
RUPP (2012).
74
instrumentos para a coleta de dados nessa fase do projeto.
75
Técnica/Definição Pontos Positivos Pontos de Atenção
partir da observação de observador e a
situações, através do superficialidade decorrente
contato direto com as da pouca exposição o
pessoas envolvidas na universo que está sendo
elaboração do projeto de observado.
software.
Análise de documentos
Consiste na identificação de
requisitos por meio da
Facilidade de acesso e
análise de documentos, Dispersão das informações e
volume de informações.
manuais envolvidos no volume de trabalho
processo, análise de
informações e/ou estudos de
mercado.
Fonte: Adaptado de Fernandes (2017, p. 36-46)
76
A figura 26 ilustra os elementos de modelo de análise sugerido por Pressman, a
proposta do autor é apresentar um conjunto de elementos genéricos que são
comuns à maioria dos modelos de análise.
Arlow e Neustadt (2002), citado por Presmann (2011) sugerem uma série de regras práticas
que devem ser seguidas ao se criar o modelo de análise:
1. O modelo deve enfocar as necessidades visíveis no domínio do
problema ou do negócio; o nível de abstração deve ser
relativamente elevado;
2. Cada elemento do modelo de requisitos deve contribuir para o
entendimento geral dos requisitos de software e fornecer uma
visão do domínio de informação, função e comportamento do
sistema;
3. Postergue considerações de infraestrutura e outros modelos não
funcionais até a fase de projeto;
4. Minimize o acoplamento do sistema;
5. Certifique-se de que o modelo de requisitos agrega valor a
todos os interessados. (p.152)
As regras citadas acima são consideradas básicas, mas que podem ajudar no momento
que a equipe realiza a análise de requisitos.
77
4.3.3 Documentação de requisitos
78
Quadro 27: Estrutura para elaboração do documento de requisitos
79
Os requisitos devem ser aprovados para uso nas demais partes do
desenvolvimento do projeto;
O objetivo é descobrir erros nos requisitos recomendados;
É preciso considerar o documento para todas as demais atividades do
desenvolvimento, evitando proliferação de erros e por último,
É preciso realizar a verificação dos riscos legais no contrato entre cliente e
contratado.
Os detalhes que são trabalhados nas verificações do processo de validação
de requisitos, esquematizado na figura 28, a partir das ideias de Sommerville (2007),
resume as etapas e características desse processo.
80
É importante que os problemas detectados na fase da validação de requisitos
sejam tratados o mais rápido possível, principalmente identificando a causa principal
do erro. Quando o trabalho é realizado de forma preventiva, o erro é acertado onde
ele ocorreu e também em todas as outras partes da produção do software, inclusive
em outros projetos diferentes.
81
FIXANDO O CONTEÚDO
82
3. (CS-UFG – 2017 – Adaptado) Uma dimensão para a classificação de requisitos de
software é a distinção entre requisitos funcionais e não funcionais. É um exemplo de
requisito não funcional:
a) “A inclusão de um empregado não pode demorar mais de dois segundos”.
b) “Um empregado não pode ter salário superior ao do seu supervisor".
c) “Dois empregados não podem ter o mesmo salário”.
d) “A exclusão de um empregado resulta na exclusão de seus dependentes”.
e) “A exclusão de um empregado, inclui automaticamente o benefício de vale
transporte”.
83
d) II, III e IV.
e) III e IV.
Analise os itens:
I. A elaboração é guiada pela criação e pelo refinamento de cenários que
descrevem como o usuário (e outros atores) vão interagir com o sistema.
II. A negociação é o conjunto de atividades que ajuda a equipe de projeto a
identificar, controlar e acompanhar as necessidades e suas mudanças à
medida que o projeto prossegue.
III. A especificação pode ser um documento por escrito, um conjunto de modelos
gráficos, um modelo matemático formal, um conjunto de cenários de uso, um
protótipo ou qualquer combinação dos fatores citados.
IV. O levantamento define quais são os objetivos para o sistema ou produto, o
que deve ser obtido, como o sistema ou produto atende às necessidades da
empresa e, por fim, como o sistema ou produto deve ser utilizado no dia a dia.
V. A validação examina a especificação para garantir que todos os requisitos de
84
software tenham sido declarados de forma não ambígua, que inconsistências,
omissões e erros tenham sido detectados e corrigidos, e que os artefatos
estejam de acordo com os padrões estabelecidos para o processo, projeto e
produto.
Estão corretos:
a) I, III e IV.
b) I, II e IV.
c) I, III, IV e V.
d) II, III e IV.
e) III e IV.
85
INTRODUÇÃO AO ESTUDO DE UNIDADE
PROJETOS ORIENTADO A OBJETOS
(UML - UNIFIED MODELING
LANGUAGE)
05
5.1 VISÃO GERAL DA MODELAGEM ORIENTADA A OBJETOS
86
Figura 29: Modelagem de dados
As alterações são mais fáceis de processar nos sistemas orientados por objetos
do que outras abordagens, por causa da independência dos próprios objetos. Na
seção seguinte serão abordados alguns conceitos fundamentais para a abordagem
87
orientada a objeto.
5.2.1 Classes
88
O nome de uma classe pode ser um texto composto por qualquer número de caracteres
e determinados sinais de pontuação (exceto alguns sinais, como os dois pontos, utilizados
para separar o nome da classe e o nome do pacote que a contém) e pode se estender
por várias linhas. Na prática os nomes das classes são substantivos ou expressões breves,
definidos a partir do vocabulário do sistema cuja modelagem está sendo feita.
Tipicamente, aparece como maiúsculo o primeiro caractere de cada palavra existente
no nome da classe Booch, Rumbaugh e Jacobson (2005, p.51).
5.2.2 Atributos
89
as classes de objeto, ou seja, o nome do atributo pode ser um texto. O nome é um
substantivo ou expressão que está diretamente relacionado com a classe
correspondente.
5.2.3 Operações
90
Como podemos observar na figura 32, o nome das operações, tem como
regra ser um verbo ou locução verbal breve, representando a classe correspondente.
Na classe Carros, por exemplo, uma operação que será gerada é a de vender, ou
seja, todo carro estará disponível para venda. A UML “usa o termo operações para
definir a especificação de uma ação e o termo método para se referir a
implementação de uma operação” (SOMMERVILLE, 2007, p. 210).
Observe a figura 32, imagine mais dois objetos para cada classe, após essa inserção,
pense: é necessário alterar os atributos e operações após essa inclusão?
91
objetos.
92
Quadro 16: Significados de Multiplicidade
Multiplicidade Significado Relacionamento
0..1 No mínimo zero e no máximo um. Possui Não-Obrigatoriedade
(zero ou um) um relacionamento de não
obrigatoriedade.
1..1 ou 1 Um somente um. No relacionamento, Um objeto da classe se
(somente um) um objeto da classe se relaciona com relaciona com um objeto da
um objeto da outra. (Obrigatoriedade) outra.
0..* Ou * Mínimo nenhum e no máximo muitos -
(maior ou
igual a zero)
m..n Mínimo m e no máximo n. -
(sequência
especificada)
Fonte: Elaborado pelo autor (2023)
93
provavelmente, terá de modificá-lo” (p.235).
Pressman (2011) apresenta alguns conceitos importantes para o entendimento
dos processos de desenvolvimento software com UML. O quadro 18 ilustra o resumo
desses conceitos.
94
ao fato de que o contexto do sistema é um modelo estático que descreve os outros
sistemas nesse ambiente. O segundo refere-se ao modelo de uso de sistema é um
modelo dinâmico que descreve como o sistema realmente interage com seu
ambiente (SOMMERVILLE, 2007, p.215).
A figura 34 ilustra um exemplo fictício da empresa X em relação ao contexto
de sistemas e modelos de uso.
95
Figura 35: Exemplo de um diagrama simples de parte do projeto de arquitetura de um
sistema
96
Com base na estrutura da figura 32, e nos elementos da figura 35, pense e escreva as
classes, objetos e operações no diagrama exibido para a empresa X da figura 34.
97
Para saber um pouco mais sobre os processos de projeto orientado a objetos,
recomenda-se a leitura das páginas 213-223 do livro “Engenharia de software” do
autor Ian Sommerville (2007), páginas 77-94. O livro está disponível na biblioteca
virtual, no link: https://abrir.link/slcpS. Acesso em: 20 jan. 2023.
98
FIXANDO O CONTEÚDO
2. Observe a figura:
99
entidade do mundo real” (PRESSMANN, 2011, P. 745). O conceito acima se refere
à:
a) classe.
b) objeto.
c) atributo.
d) requisito.
e) herança.
5. As classes devem interagir umas com as outras para atingir os objetivos do projeto,
dessa forma há ações importantes que estimula a ocorrência de algum
comportamento no objeto receptor. O comportamento ocorre quando uma
operação é executada.
O texto acima se refere a:
a) Mensagem.
b) Polimorfismo.
c) Classes de projeto.
100
d) Primitivismo.
e) Herança.
101
8. Observe as imagens e analise as proposições a seguir:
Estão corretos:
a) I, II, III, IV e V.
b) I, II, IV e V.
c) II, IV e V.
d) II, III, IV e V.
e) III e V.
102
MODELAGEM BÁSICA: UNIDADE
DIAGRAMAS UML
103
Figura 36: Estrutura de diagramas UML
A figura 37 ilustra de uma forma geral na visão dos autores, a classificação dos
diagramas estruturais.
104
Figura 37: Tipos de diagramas estruturais da UML
105
Figura 38: Exemplo de um diagrama de classes
Tendo como base a figura 31, que ilustra os “relacionamentos em UML” e também tendo
como referência a atividade reflexiva proposta na seção 5.3.3 desse livro, analise a figura
36 e pense: quais as classes, objetos, atributos e operações do sistema? Por que há um
relacionamento de composição entre a classe “Empresa ABC” e “Departamento de
pessoal” e “Filial”? E a relação de dependência apresentada na figura, o que significa?
O que podemos dizer sobre relacionamento entre matriz e filial?
106
p.118).
107
pela organização e sua localização.
De acordo com Booch, Rumbaugh, e Jacobson (2005, p.194), um diagrama
de objetos bem-estruturado apresenta, dentre outros itens, um:
108
Figura 40: Tipos de diagramas Comportamentais da UML
109
Figura 41: Exemplo de diagrama de caso de uso
110
Figura 42: Exemplo de relacionamentos em diagramas de caso de uso
111
Imagine um sistema de solicitação de documentação para um determinado órgão
governamental. A partir dos itens citados abaixo, pense e faça um rascunho de como
seria o diagrama de caso de uso.
112
Figura 43: Exemplo de diagrama de atividades.
113
Quadro 21: Conceitos envolvidos no diagrama de atividades
Elementos Conceito/função
Ações Criar uma operação, enviar um sinal, criar ou destruir um objeto.
Nó de Unidade organizacional dentro de uma atividade. Grupos de ações
atividade aninhados ou outros nós de atividades aninhados.
Fluxos Quando uma ação ou nó de atividade está completo, o fluxo de controle
passa imediatamente a próxima ação ou nó de atividade.
Ramificações Caminhos alternativos, tomados como base alguma expressão booleana.
Valores de Representa o fluxo de um valor de objeto de uma ação para outra.
objetos
Fonte: Adaptado de Booch, Rumbaugh e Jacobson (2005)
114
Figura 44: Recorte de um Diagrama de atividades exibindo as partições
115
apresenta também menos opções de notação.
Nessa seção será descrito como exemplo do diagrama de interação, o
diagrama de comunicação.
Diagramas de comunicação
O diagrama de comunicação, também conhecido como diagramas de
colaboração, tem como objetivo enfatizar “os vínculos de dados entre os vários
participantes na interação”, exibem vínculos que são instâncias de associações e
vínculos transitórios, que surgem somente no contexto da interação (FOWLER, 2004,
P.129).
A figura 45 e 46 ilustram diagramas completos de comunicação, para controle
centralizado e com numeração decimal aninhada, respectivamente. Observem que
na representação é possível verificar como os participantes estão vinculados,
inclusive os vínculos transitórios, que aparecem somente no momento da interação.
Importante destacar que os diagramas para controle centralizado não são válidos
para a linguagem UML (FOWLER, 2004, P.129). Se a especificação exigir uma notação
em linguagem UML oficial, deverá ser utilizado o diagrama com numeração decimal
alinhada (figura 46).
116
Figura 46: Diagrama de Comunicação com numeração decimal aninhada
117
FIXANDO O CONTEÚDO
118
3. (TJ-MG 2021 - ADAPTADO) O Diagrama de Casos de Uso é um dos Diagramas
Comportamentais da UML (Unified Modeling Language – Linguagem de Modelagem
Unificada), contendo três elementos principais; assinale-os.
a) Ações; Evento; e, Linhas de vida.
b) Transições; Atividades; e, Ações.
c) Linhas de vida; Mensagens; e, Atores.
d) Atores; Casos de uso; e, Relacionamentos.
e) Atores; Atividades; e, Transições
Com base nas classes e relacionamentos modelados, é correto afirmar que a(s):
119
a) classe G realiza a classe B;
b) classes B, C e D formam um GeneralizationSet;
c) classe F tem uma associação indireta com a classe A;
d) classe G depende da classe B para relacionar-se com a classe F;
e) classe E tem responsabilidade pela existência e armazenamento da classe F.
7. Observe a figura:
120
executado, suas atividades serão realizadas e as atividades de D não serão
realizadas.
Está (ão) correto (s):
a) I, II e III.
b) I e II.
c) II e III.
d) Somente I.
e) Somente II.
121
RESPOSTAS DO FIXANDO O CONTEÚDO
UNIDADE 01 UNIDADE 02
QUESTÃO 1 C QUESTÃO 1 C
QUESTÃO 2 D QUESTÃO 2 A
QUESTÃO 3 B QUESTÃO 3 C
QUESTÃO 4 E QUESTÃO 4 C
QUESTÃO 5 A QUESTÃO 5 E
QUESTÃO 6 E QUESTÃO 6 A
QUESTÃO 7 D QUESTÃO 7 A
QUESTÃO 8 E QUESTÃO 8 D
UNIDADE 03 UNIDADE 04
QUESTÃO 1 C QUESTÃO 1 D
QUESTÃO 2 E QUESTÃO 2 C
QUESTÃO 3 A QUESTÃO 3 A
QUESTÃO 4 A QUESTÃO 4 A
QUESTÃO 5 C QUESTÃO 5 B
QUESTÃO 6 C QUESTÃO 6 B
QUESTÃO 7 E QUESTÃO 7 C
QUESTÃO 8 B QUESTÃO 8 E
UNIDADE 05 UNIDADE 06
QUESTÃO 1 C QUESTÃO 1 A
QUESTÃO 2 C QUESTÃO 2 E
QUESTÃO 3 A QUESTÃO 3 D
QUESTÃO 4 D QUESTÃO 4 A
QUESTÃO 5 A QUESTÃO 5 E
QUESTÃO 6 B QUESTÃO 6 D
QUESTÃO 7 E QUESTÃO 7 B
QUESTÃO 8 C QUESTÃO 8 D
122
REFERÊNCIAS
Guia PMBOK. 6a. ed. – EUA: Project Management Institute, 2017. BORGES, Carlos;
ROLLIM, Fabiano.
123
SOMMERVILLE, Ian. Engenharia de Software. Tradução Selma Shin Melnikoff; Reginaldo
Arakaki; Edilson de Andrade Barbosa. 8. ed São Paulo: Persson, 2007.
124