Escolar Documentos
Profissional Documentos
Cultura Documentos
Software
Editora
ENGENHARIA DE
SOFTWARE
Editora:
Editora
EXPEDIENTE
AUTOR(ES) COORDENAÇÃO,
PROJETO GRÁFICO E CAPA
José de Sousa Magalhães
João Guedes
Editora
Apresentação
Prezado aluno,
A
engenharia de software é o processo de analisar as
necessidades do usuário e, em seguida, projetar,
construir e testar aplicativos de usuário final que
satisfaçam essas necessidades através do uso de linguagens
de programação de software.
O termo desenvolvimento de software pode ser usado
para cada tipo de desenvolvimento de software, seja tão
simples quanto o básico visual para aplicativos Módulos
para Microsoft Word, Excel ou Access ou desenvolvendo
aplicativos grandes, caros e complicados para empresas ou
criando software para entretenimento de jogos.
Além disso, um engenheiro de software é aquele que
acompanha um processo sistemático que leva à compre-
ensão dos requisitos, trabalhando com equipes e diversos
profissionais a fim de criar o software de aplicativo ou com-
ponentes ou módulos que satisfazem as necessidades espe-
cíficas dos usuários com sucesso; que um programador de
computador pode trabalhar de forma independente, pois
ele entende algoritmos e sabe como criar códigos seguindo
as especificações dadas pelos engenheiros de software.
Desta forma, esta obra tem por objetivo apresentar os
conceitos teóricos e técnicos relacionados ao desenvolvi-
mento de softwares, passando pelo processo organizacio-
nal, humano e programável.
Para tanto, faremos isso apresentando os um pouco so-
bre a história do desenvolvimento de software, técnicas já
usadas e atuais, além de apresentar um exemplo simples
e prático de desenvolvimento de um sistema voltado para
área da saúde, onde são necessários seguir alguns passos
apresentados nesta obra.
Bons estudos!
SUMÁRIO:
UNIDADE 1:
ENGENHARIA DE SOFTWARE E PROCESSO DE SOFTWARE������1-1
CAPÍTULO 1:
CONCEITOS BÁSICOS DE ENGENHARIA DE SOFTWARE�������������� 1-2
EXERCÍCIOS PROPOSTOS������������������������������������������������� 1-10
CAPÍTULO 2:
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE������������������ 2-1
EXERCÍCIOS PROPOSTOS������������������������������������������������� 2-16
UNIDADE 2:
PRODUTO DE TRABALHO E ARQUITETURA DE SOFTWARE�������3-1
CAPÍTULO 3:
PRODUTO DE TRABALHO E DISCIPLINA DE COMPROMISSO�������� 3-2
EXERCÍCIOS PROPOSTOS������������������������������������������������� 3-13
CAPÍTULO 4:
ARQUITETURA DE SOFTWARE������������������������������������������ 4-1
EXERCÍCIOS PROPOSTOS������������������������������������������������� 4-17
UNIDADE 3:
GERENCIAMENTO DE REQUISITOS E CONFIGURAÇÃO������������5-1
CAPÍTULO 5:
GERENCIAMENTO DE REQUISITOS������������������������������������� 5-2
EXERCÍCIOS PROPOSTOS������������������������������������������������� 5-13
CAPÍTULO 6:
GERENCIAMENTO DE CONFIGURAÇÃO�������������������������������� 6-1
EXERCÍCIOS PROPOSTOS������������������������������������������������� 6-13
UNIDADE 4:
GERENCIAMENTO DE PROJETO E PLANEJAMENTO���������������7-1
CAPÍTULO 7:
GERENCIA DE PROJETOS����������������������������������������������� 7-2
EXERCÍCIOS PROPOSTOS������������������������������������������������� 7-17
CAPÍTULO 8:
ORGANIZAÇÃO DA EQUIPE���������������������������������������������� 8-1
EXERCÍCIOS PROPOSTOS������������������������������������������������� 8-15
UNIDADE 5:
TESTES E DESCRIÇÃO CMMI����������������������������������������9-1
CAPÍTULO 9:
TESTE��������������������������������������������������������������������� 9-2
EXERCÍCIOS PROPOSTOS������������������������������������������������� 9-19
CAPÍTULO 10:
CMMI�������������������������������������������������������������������� 10-1
EXERCÍCIOS PROPOSTOS������������������������������������������������ 10-11
UNIDADE 6:
METODOLOGIAS ÁGEIS E EXEMPLO PRÁTICO������������������� 11-1
CAPÍTULO 11:
METODOLOGIAS ÁGEIS������������������������������������������������ 11-2
EXERCÍCIOS PROPOSTOS������������������������������������������������ 11-16
CAPÍTULO 12:
EXEMPLO PRÁTICO DE PROJETO DE SISTEMA DE SOFTWARE��� 12-1
EXERCÍCIOS PROPOSTOS������������������������������������������������ 12-14
REFERÊNCIAS��������������������������������������������������������� 13-1
GABARITO������������������������������������������������������������� 14-1
DISCIPLINA:
Engenharia de
Software
UNIDADE 1:
ENGENHARIA DE SOFTWARE E
PROCESSO DE SOFTWARE
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Conteúdos da Unidade:
Nesta unidade, iremos conhecer um pouco sobre os conceitos básicos
de desenvolvimento de software, entender o que de fato é um programa
de computador e outras nuanças do processo; por fim, veremos algu-
mas definições sobre melhoria nos processos de software.
9 Conceitos básicos de Engenharia de Software
9 Processo de Desenvolvimento de Software
Acompanhe os conteúdos desta unidade. Se preferir, vá assinalando
os assuntos, à medida que for estudando.
Bons estudos!!!
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 1:
CONCEITOS BÁSICOS DE
ENGENHARIA DE SOFTWARE
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
1.1 FUNDAMENTOS
Como a programação é diferente de um programa de enge-
nharia? Nesse sentido, a primeira é algum tipo de atividade abstra-
ta e pode ocorrer em muitos contextos diferentes. Você pode pro-
gramar para se divertir, para aprender (por exemplo, na sala de
aula, em seminários na universidade), você pode programar
no âmbito do desenvolvimento científico. E você pode fazer pro-
gramação industrial. Via de regra, isso acontece em equipe, e com
certeza - para um cliente que paga pelo trabalho. Ao mesmo tempo,
é necessário entender exatamente o que o cliente precisa para con-
cluir o trabalho no prazo e o resultado deve ser da qualidade dese-
jada - que satisfaça o cliente e pelo qual ele pague. Para atender a
esses requisitos adicionais,a programação “cresce mais” várias
atividades adicionais: desenvolvimento de requisitos, planejamen-
to, teste, gerenciamento de configuração, gerenciamento de proje-
to, criação de várias documentações (design, usuário, etc.).
O desenvolvimento do código do programa é precedido de
análise e design (o primeiro significa a criação de um mode-
lo funcional do futuro sistema sem levar em conta a im-
plementação, para que os programadores entendam os
requisitos e expectativas do cliente; o segundo significa
um layout preliminar, esboço, planta do sistema em pa-
pel). O esforço envolvido na análise e design, bem como a forma
como os resultados são apresentados, variam muito dependendo
do tipo de projeto e das preferências dos desenvolvedores e clientes.
Esforços especiais também são necessários para organizar o
processo de desenvolvimento. Em geral, este é um modelo iterati-
vo-incremental, quando a funcionalidade necessária é criada em
porções que os gestores e o cliente podem avaliar e, portanto, existe
1-3
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
a possibilidade de gerenciar o andamento do desenvolvimento. No
entanto, este modelo geral tem muitas modificações e variações.
O desenvolvimento do sistema também deve ser realizado le-
vando em consideração a conveniência de sua posterior manuten-
ção, reutilização e integração com outros sistemas. Isso significa
que o sistema é dividido em componentes fáceis de desenvolver,
reutilizar e integrar. E também com as características de desempe-
nho necessárias. Para esses componentes, as interfaces são cuida-
dosamente projetadas. O próprio sistema é documentado em vá-
rios níveis, regras para o design do código do programa são criadas
- isto é, vários traços semânticos são deixados que ajudam a criar
e manter, manter uma arquitetura única e harmoniosa, estilo uni-
forme, ordem ...
Todas essas e outras atividades adicionais realizadas no pro-
cesso de programação industrial e necessárias ao sucesso da exe-
cução dos pedidos serão denominadas engenharia de software 1.
Acontece que é assim que designamos, em primeiro lugar, alguma
atividade prática e, em segundo lugar, uma área especial do co-
nhecimento. Ou em outras palavras, uma disciplina científica. Na
verdade, para facilitar a implementação de cada projeto individual,
ser capaz de usar uma variedade de experiências positivas alcança-
das por outras equipes e desenvolvedores, essa mesma experiência
está sujeita à compreensão, generalização e design adequado. É
assim que vários métodos e práticas (melhores práticas) apa-
recem - teste, design, trabalho em requisitos, etc., padrões de ar-
quitetura, etc. Bem como padrões e metodologias relativos a todo
o processo como um todo (por exemplo, MSF, RUP, CMMI,
Scrum). São essas generalizações que estão incluídas na engenha-
ria de software como um campo do conhecimento.
1-4
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
A necessidade da engenharia de software como área espe-
cializada do conhecimento foi reconhecida pela comunidade mun-
dial no final da década de 60 do século passado, mais de 20 anos
após o nascimento da própria programação, se considerarmos o
famoso relatório de von Neumann “First Draft de Relatório sobre
o EDVAC”, por ele promulgado em 1945. O nascimento da enge-
nharia de software é 1968 - a conferência OTAN de Engenharia de
Software, Garmisch (Alemanha), que foi inteiramente dedicada
à consideração dessas questões. A área de engenharia de softwa-
re cobre todas as questões e tópicos relacionados à organização e
melhoria do processo de desenvolvimento de software, a gestão da
equipe de desenvolvimento, o desenvolvimento e implementação
de ferramentas de software para apoiar o ciclo de vida de desen-
volvimento de software. A engenharia de software usa avanços
na ciência da computação, está intimamente relacionada à enge-
nharia de sistemas, frequentemente precedido por reengenharia
de negócios. Um pouco mais de detalhes sobre esse contexto de
engenharia de software.
Ciência da Computação (ciência da computação) é uma
coleção de ciências teóricas baseada na matemática e dedicada aos
fundamentos formais da computabilidade. Isso inclui lógica mate-
mática, teoria gramatical, métodos de construção do compilador,
métodos matemáticos formais usados na verificação e teste de mo-
delo, etc. É difícil separar estritamente a engenharia de software
da ciência da computação, mas em geral o foco dessas disciplinas
é diferente. A engenharia de software visa resolver problemas de
produção, a ciência da computação visa desenvolver abordagens
formais e matematizadas de programação.
Engenharia de sistemas (engenharia de sistema) combi-
na várias disciplinas de engenharia para o desenvolvimento de to-
dos os tipos de sistemas artificiais - usinas de energia, sistemas de
1-5
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
telecomunicações, sistemas embarcados em tempo real, etc. Mui-
tas vezes, o software passa a fazer parte de tais sistemas, desempe-
nhando a tarefa de controlar o equipamento correspondente. Esses
sistemas são chamados de software e hardware e, ao participarem
de sua criação, os programadores são forçados a compreender pro-
fundamente os recursos do hardware correspondente.
Reengenharia de negócios (reengenharia de negócios) -
em um sentido amplo, significa a modernização dos negócios em
uma determinada empresa, a introdução de novas práticas supor-
tadas por novos sistemas de informação apropriados. Ao mesmo
tempo, a ênfase pode ser tanto na reestruturação interna da empre-
sa quanto no desenvolvimento de um novo serviço de atendimen-
to ao cliente (via de regra, essas questões estão inter-rela-
cionadas). A reengenharia de negócios muitas vezes precede o
desenvolvimento e implementação de sistemas de informação em
uma empresa, uma vez que é necessário primeiro estabelecer uma
certa ordem no trabalho de escritório, e só então consolidá-la com
um sistema de informação.
1.2 Softwares
Definição: Entendamos por software (software) um con-
junto de prescrições lógicas que evoluem no tempo, com a ajuda das
quais um determinado grupo de pessoas controla e utiliza um siste-
ma multiprocessador e distribuído de dispositivos computacionais.
Esta definição, dada por Harald Mills, um renomado enge-
nheiro de software da IBM, é a seguinte.
1-6
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
sobre o funcionamento dos programas) e, mais
amplamente, um certo sistema de relações entre as pes-
soas que utilizam esses programas no quadro de um de-
terminado processo de atividade.
2. O software moderno é projetado, via de regra, para fun-
cionar simultaneamente com muitos usuários, que po-
dem ser significativamente removidos uns dos outros no
espaço físico. Assim, o ambiente computacional (com-
putadores pessoais, servidores, etc.) em que o sof-
tware opera é distribuído.
3. As tarefas resolvidas por softwares modernos muitas ve-
zes requerem diferentes recursos computacionais devi-
do às diferentes especializações dessas tarefas, devido à
grande quantidade de trabalho executado, bem como por
razões de segurança. Por exemplo, aparece um servidor
de banco de dados, um servidor de aplicação, etc.
4. O software se desenvolve ao longo do tempo: er-
ros são corrigidos, novas funções são adicionadas, novas
versões são lançadas, sua base de hardware muda.
1-7
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
funcionalidade semelhante é outro software. A ciência
clássica construiu modelos simples de fenômenos com-
plexos, e isso foi bem-sucedido, uma vez que a complexi-
dade não era uma característica dos fenômenos em con-
sideração. (A comparação da programação com a
ciência, e não com teatro, cinema, esportes e ou-
tras áreas da atividade humana, justifica-se, pois
surgiu, principalmente da matemática, e seus
primeiros frutos - computadores, linguagens de
programa - destinavam-se ao uso em cálculos
científicos. Além disso, a maioria dos programa-
dores tem formação científica, matemática ou
técnica. Assim, os paradigmas do pensamento
científico são amplamente utilizados na progra-
mação - explícita ou implicitamente.)
2. Consistência: O software não é baseado em premissas
objetivas (assim como vários sistemas na ciência
clássica são baseados em postulados e axiomas),
mas deve ser consistente com um grande número de in-
terfaces com as quais deve posteriormente interagir. Es-
sas interfaces são difíceis de padronizar porque são base-
adas em várias convenções humanas mal formalizadas.
3. Mutabilidade: O software é fácil de alterar e, como
resultado, os requisitos para ele mudam constantemen-
te durante o processo de desenvolvimento. Isso cria
muitas dificuldades adicionais em seu desenvolvimen-
to e evolução.
4. Intangibilidade: O software não pode ser visto, é virtu-
al. Portanto, por exemplo, é difícil tirar proveito de tecno-
logias baseadas na criação preliminar de desenhos, que
são utilizadas com sucesso em outras áreas industriais
1-8
Engenharia de Software 1
CONCEITO S B Á S IC O S D E EN G EN H A R IA D E SO FT WARE
(por exemplo, na construção, engenharia me-
cânica). Lá, nos desenhos, as formas geométricas dos
objetos que estão sendo criados são reproduzidas de
forma esquemática.
1-9
EXERCÍCIOS PROPOSTOS
1-10
3) Sobre O desenvolvimento do código do programa que é precedido de aná-
EX ER C ÍC IO S PR O PO STO S
lise e design é correto afirma que:
1-11
( ) -e) Em geral, este é um modelo iterativo-incremental, quando
a funcionalidade necessária não é criada em porções que os
EX ER C ÍC IO S PR O PO STO S
gestores e o cliente podem avaliar e, portanto, existe a possi-
bilidade de gerenciar o andamento do desenvolvimento.
( ) -a) MSF
( ) -b) Padrões de arquitetura
1-12
( ) -c) Generalizações
( ) -d) Engenharia da Computação
EX ER C ÍC IO S PR O PO STO S
( ) -e) CMMI
1-13
10) A respeito de Consistência podemos afirmar que:
EX ER C ÍC IO S PR O PO STO S
( ) -a) O software é fácil de alterar e, como resultado, os requisi-
tos para ele mudam constantemente durante o processo de
desenvolvimento.
( ) -b) O software não pode ser visto, é virtual.
( ) -c) O software não é baseado em premissas objetivas.
( ) -d) São utilizadas com sucesso em outras áreas industriais.
( ) -e) A ciência clássica construiu modelos simples de fenômenos
complexos, e isso foi bem-sucedido, uma vez que a com-
plexidade não era uma característica dos fenômenos em
consideração.
1-14
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 2:
PROCESSO DE
DESENVOLVIMENTO
DE SOFTWARE
Engenharia de Software 2
2-2
Engenharia de Software 2
2-3
Engenharia de Software 2
2-4
Engenharia de Software 2
2-5
Engenharia de Software 2
2-6
Engenharia de Software 2
2-7
Engenharia de Software 2
2-8
Engenharia de Software 2
2-9
Engenharia de Software 2
2-10
Engenharia de Software 2
Fonte: https://www.researchgate.net/profile/Joao-Sedraz/publica-
tion/327222517/figure/fig3/AS:663537412231168@1535211055722/
Figura-1-Modelo-Cascata-Fonte-SOMMERVILLE-2004-p38.png
2-11
Engenharia de Software 2
2-12
Engenharia de Software 2
2-13
Engenharia de Software 2
Fonte: https://miro.medium.com/max/1400/1*RkEarinR8m3rJh7cOLKPyg.png
2-14
Engenharia de Software 2
2-15
EXERCÍCIOS PROPOSTOS
( ) -a) Software.
( ) -b) Engenharia.
( ) -c) Código.
( ) -d) Processo.
( ) -e) Produtos.
2-16
3) Observe as afirmações abaixo:
EX ER C ÍC IO S PR O PO STO S
I) Não é aconselhável planejar o processo de trabalho antes de iniciar o
projeto, definindo os papéis e responsabilidades na equipe, os produtos do
trabalho intermediários e finais, o procedimento para participação dos mem-
bros da equipe no seu desenvolvimento, etc.
II) Microsoft Visual Tem System existe um modelo de processo que é criado
ou adaptado (no caso de usar um padrão antes de iniciar o desenvolvimento.
III) O VSTS tem predefinições para processos específicos com base no
CMMI.
Estão INCORRETAS:
( ) -a) I e III
( ) -b) I, somente
( ) -c) III, somente
( ) -d) II e III
( ) -e) II, somente
( ) -a) Processo.
( ) -b) Código.
( ) -c) Produtos.
( ) -d) Software
( ) -e) Processo padrão.
2-17
( ) -e) Também é possível padronizar o procedimento para o de-
senvolvimento de um processo específico.
EX ER C ÍC IO S PR O PO STO S
6) Observe as afirmações abaixo:
I) Muitas vezes, nas empresas, diferentes departamentos e projetos diferem
muito na maturidade do processo de desenvolvimento e também é difícil
reutilizar as melhores práticas.
II) Uma empresa utiliza várias ferramentas de desenvolvimento paralelas,
por exemplo, ferramentas de controle de versão DBMS.
III) Às vezes não é justificado por exemplo, esses são os requisitos do clien-
te, muitas vezes é necessário - por exemplo, Java .NET a maior competência
da empresa offshore permite receber uma gama mais ampla de pedidos.
Estão CORRETAS:
( ) -a) III, somente
( ) -b) I e II
( ) -c) I e III
( ) -d) II e III
( ) -e) II, somente
2-18
8) Podemos definir Melhoria de processos como:
EX ER C ÍC IO S PR O PO STO S
( ) -a) Modelos para documentos de design - especificações técni-
cas, especificações de design, planos de teste, etc.
( ) -b) Informações, regras de uso, documentação e pacotes de ins-
talação das ferramentas de desenvolvimento utilizadas nos
projetos da empresa.
( ) -c) Descrição das práticas de desenvolvimento - gerenciamento
de projetos, regras para trabalhar com um cliente, etc.;
( ) -d) É a atividade de alterar o processo existente tanto atual, no
âmbito de um projeto, e padrão, para toda a empresa, a fim
de melhorar a qualidade dos produtos criados e / ou reduzir
o preço e tempo de desenvolvimento.
( ) -e) Padronizar o procedimento para o desenvolvimento de um
processo específico.
2-19
( ) -b) A transição da empresa de ferramentas de desenvolvimento
estrutural para ferramentas orientadas a objetos.
EX ER C ÍC IO S PR O PO STO S
( ) -c) Uma rápida mudança nas tecnologias de desenvolvimento
de software está ocorrendo, exigindo o estudo e implemen-
tação de novas ferramentas de desenvolvimento.
( ) -d) As inovações que visam resolver problemas específicos da
empresa.
( ) -e) O impulso de tecnologia que é uma introdução em larga es-
cala de inovações a partir de considerações estratégicas.
2-20
DISCIPLINA:
Engenharia de
Software
UNIDADE 2:
PRODUTO DE TRABALHO E
ARQUITETURA DE SOFTWARE
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Conteúdos da Unidade:
Nesta unidade, iremos conhecer um pouco sobre produto de trabalho
e disciplina de compromisso, a relevância de se trabalhar em equipe, ar-
quitetura de software e os mais variados pontos de vista ao se analisar
um sistema.
9 Produto de Trabalho e Disciplina de Compromisso
9 Arquitetura de Software
Acompanhe os conteúdos desta unidade. Se preferir, vá assinalando
os assuntos, à medida que for estudando.
Bons estudos!!!
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 3:
PRODUTO DE TRABALHO E
DISCIPLINA DE COMPROMISSO
Engenharia de Software 3
3-3
Engenharia de Software 3
3-4
Engenharia de Software 3
3-5
Engenharia de Software 3
3-6
Engenharia de Software 3
● Dado voluntariamente;
● Não é fácil: trabalho, recursos, cronograma devem ser
cuidadosamente considerados;
● Entre as partes inclui o que será feito, por quem e em
que prazo;
● Formulado aberta e publicamente (ou seja, não é
um “conhecimento secreto”). Além do mais:
● O responsável procura cumprir as obrigações, mesmo que
seja necessária ajuda;
● Antes prazo, assim que fica claro que a obra não pode ser
concluída no prazo, novos compromissos são discutidos.
3-7
Engenharia de Software 3
3.4 Projeto
A clássica divisão operacional do trabalho vem de Adam
Smith e é a essência da produção industrial em massa. Ou seja,
existe um processo de trabalho bem estabelecido e existem áreas
de especialização - uma loja afia, outra planifica, a terceira recolhe,
a quarta tinta, etc. O rendimento de tal instalação de produção ex-
cede em muito o de uma pessoa ou uma equipe realizando todo o
trabalho. Assim, no século XIX, a divisão operacional do trabalho
tornou-se a base das manufaturas, suplantando a produção arte-
sanal individual. No início do século 20, essa estrutura de trabalho
foi transferida para a gestão - ou seja, vários gerentes controlavam
áreas individuais de trabalho.
No entanto, o alto nível de complexidade de uma série de
tarefas na indústria e nos negócios não permite (felizmente!)
Funcionar dessa forma em todos os lugares. São muitas as tare-
fas criativas e novas onde, talvez, no futuro, será possível criar
transportadores, mas no momento, sua solução requer uma con-
centração significativa de esforços e energia das pessoas, soluções
3-8
Engenharia de Software 3
3-9
Engenharia de Software 3
3-10
Engenharia de Software 3
Área de gerenciamento
Descrição
de projetos
Planejamento e monitora-
Integração e sincronização de planos
mento do projeto, planeja-
de projeto; organização de procedi-
mento do projeto / acom-
mentos e sistemas para gestão e moni-
panhamento / controle de
toramento de mudanças de projeto.
mudanças
Determinação e distribuição do esco-
po de trabalho (estrutura do projeto);
Gerenciamento do escopo
gerenciamento de compensação em
um projeto.
Elaboração de um calendário a partir
de estimativas de custos trabalhistas,
pedidos tarefas, mapeamento de recur-
Gestão de Cronograma
sos disponíveis para tarefas, aplicação
de métodos estatísticos, suporte da
programação do calendário.
3-11
Engenharia de Software 3
3-12
EXERCÍCIOS PROPOSTOS
3-13
( ) -a) I e II
( ) -b) II e III
EX ER C ÍC IO S PR O PO STO S
( ) -c) III, somente
( ) -d) II, somente
( ) -e) I e III
3-14
III) Fazer bons produtos de trabalho intermediários não é muito importan-
te para o sucesso de um projeto, mas requer trabalho adicional de seus
EX ER C ÍC IO S PR O PO STO S
autores.
Estão CORRETAS:
( ) -a) I e II
( ) -b) II, somente
( ) -c) II e III
( ) -d) I, somente
( ) -e) III, somente
3-15
( ) -a) II, somente
( ) -b) II e III
EX ER C ÍC IO S PR O PO STO S
( ) -c) III, somente
( ) -d) I, somente
( ) -e) I e III
( ) -a) CMMI
( ) -b) RUP
( ) -c) MSF
( ) -d) SOFTWARE
( ) -e) CNNI
3-16
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 4:
ARQUITETURA DE SOFTWARE
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
4.1 FUNDAMENTOS
Certa vez, um gerente estava explicando as ideias principais
de um projeto bastante grande que ele liderava. Ele desenhou três
cubos no quadro: frontend, backend, ferramentas. E ele disse que
essa é a estrutura principal do projeto. Quer ao nível da estrutura
interna do produto, quer ao nível da distribuição do trabalho da
equipa em três centros de desenvolvimento dispersos remotamen-
te. As tarefas de back-end são complexas, consomem muitos recur-
sos e são realizadas em lotes. Eles são separados da interface grá-
fica do produto (frontend), que também é complexa. O frontend
é uma interface de usuário: complexa, parametrizável, com vários
serviços de usuário integrados (em particular, o navegador de
informações) e também personalizável. Ambos os subsistemas
interagem entre si por meio de uma interface de programação bem
definida e detalhada: algoritmos de back-end são divididos em mé-
todos, que o frontend pode chamar de acordo com regras especiais,
com parâmetros, alinhando-se em uma cadeia para atingir seus
objetivos. “Do lado” de tudo isso estão as ferramentas adicionais.
Eles se integram ao front-end, mas não usam os métodos de back-
-end, mas implementam suas tarefas por conta própria. Essas ta-
refas não requerem processamento em lote complexo, mas visam a
interação interativa do usuário. Durante sua implementação, mui-
ta atenção foi dada à usabilidade.
Cada um dos três subsistemas exigiu habilidades específi-
cas dos desenvolvedores. No caso do backend, foi a habilidade e
experiência em implementar este tipo de algoritmos em lote, no
caso do frontend, foi a capacidade de criar uma interface de usu-
ário complexa, no caso de ferramentas, a arte era necessária no
projeto e implementação de ferramentas “leves” que fornecem aos
usuários do sistema recursos de serviço adicionais. Havia também
4-2
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
uma série de aspectos políticos para dividir o trabalho dessa for-
ma. Especificamente, a gerência de projetos queria ter o processo
de desenvolvimento da interface do usuário ao seu lado, em um
dos três centros de desenvolvimento que coincidiam com a matriz.
Acreditava-se que a aparência de um produto era muito importan-
te para o sucesso de sua venda e requeria atenção especial.
Como resultado do projeto (e tem se desenvolvido por
mais de 15 anos, alcançando seu apogeu até 150 pessoas
simultaneamente empregadas nele), tal estrutura clara mu-
dou um pouco - tão geograficamente, a interface quase “mudou”
para o centro onde o back-end foi desenvolvido. Mas, em geral,
essa divisão ponta a ponta do projeto em partes permaneceu por
muitos anos e foi o esqueleto principal de todo o desenvolvimento.
Este é um exemplo da arquitetura de um projeto de software.
4.2 Definição
Entendemos por arquitetura de software a estrutura interna
do produto (componentes e suas conexões), os fundamentos
da interface do usuário do produto, bem como a quintessência de
conhecimentos e soluções que são uma ferramenta para desenvol-
ver e gerenciar um projeto. Ou seja, a arquitetura é um conceito
ponta a ponta ou um conjunto daqueles para a superação da en-
tropia e do caos, buscando “engolir” o desenvolvimento tendo em
vista a complexidade, imaterialidade, consistência e variabilidade
do software. Ao mesmo tempo, não separamos o produto e o pro-
jeto, pois na prática ele é, via de regra, um todo, e esta “Passagem”,
se houver, é a “força” desse design.
Frequentemente, arquitetura é entendida como, por exem-
plo, apenas a estrutura interna do software, expressa em diagramas
4-3
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
UML. Aqui está uma piada sobre o fato de que a arquitetura não
pode ser entendida de forma unilateral. Foi perguntado a uma
emissora conhecida por que ela tinha exatamente 21 visualiza-
ções. Esperávamos ouvir uma lista sobre problemas algorítmicos
que conseguimos superar desta forma, algo sobre a eficiência es-
pecial dos algoritmos organizados desta forma, etc. Todos ficaram
surpresos com a resposta do mestre. Ele disse que exatamente es-
sas pessoas (ou seja, exatamente 21), ele tinha em sua equipe
de desenvolvimento.
Assim, a arquitetura do produto acaba sendo uma invariante
do projeto, ela ocorre e surge inesperadamente em suas diferentes
partes. Isso é um análogo dos postulados e leis “simples” das ciên-
cias naturais, cuja ausência no desenvolvimento de software, de
acordo com Brooks, é a razão da complexidade do software (no
sentido de caos, ou seja, complexidade “ruim”). Criar tais
estruturas não é uma tarefa fácil e requer muita arte. Mas esta é
precisamente a maneira de controlar o caos, aumentando a entro-
pia na forma de mudanças nos requisitos do sistema e a perda de
um entendimento claro pelos desenvolvedores de que tipo de siste-
ma eles estão criando. E é o desenvolvimento de tais estruturas que
proporciona verdadeiro prazer criativo ao desenvolver sistemas de
software. Modelos simples que não são fáceis de criar funcionam
bem. Eles acabam sendo o fio condutor do projeto, conduzindo-o
através do abismo do caos. Esses modelos têm essa propriedade.
Muitos projetos não criam uma arquitetura original, pois
são típicos e / ou pequenos e se baseiam em tecnologias prontas,
amostras arquitetônicas, modelos de equipe e na estrutura organi-
zacional do projeto.
No entanto, as equipes que se mostraram bem em tais pro-
jetos muitas vezes enfrentam o desafio de construir uma nova
4-4
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
arquitetura verdadeiramente original com base em desenvolvi-
mentos anteriores. Ou não é baseado - é apenas quantidade que
se esforça para se transformar em qualidade. Aqui, em primeiro
lugar, é importante notar essa transição, perceber que os antigos
métodos de trabalho não são adequados e uma experiência funda-
mentalmente nova é necessária. O que, muitas vezes, o coletivo e
seus dirigentes não.
4-5
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
E durante o teste, os detalhes de implementação são novamente
sem importância - o software é visto como uma caixa preta que
implementa (não importa de que maneira) um determinado
conjunto de funcionalidades do usuário. Quando implantado no
local do cliente, o software é visto como um conjunto de arquivos,
armazenamentos de dados, etc.
4-6
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
Figura 4-2: Diferentes especialistas analisando um sistema
4-7
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
Assim, diferentes tipos de atividades no desenvolvimento de
software, diferentes categorias de especialistas envolvidos em um
projeto de software e a singularidade de cada situação específica
durante o desenvolvimento - tudo isso leva à criação e utilização de
vários modelos feitos de diferentes pontos de vista.
Ponto de vista: é uma determinada visão do sistema, que
é realizada para realizar uma determinada tarefa por qualquer um
dos participantes do projeto. O ponto de vista deve ser claramente
compreendido ao criar modelos visuais, como um modelo de caso
de uso. É importante entender que pode ser diferente em cada caso
específico. As características mais importantes de uma perspectiva
de modelagem são o objetivo (por que o modelo é criado) e o
público-alvo (ou seja, a quem se destina).
Uma questão importante que você precisa responder hones-
tamente a si mesmo no início da modelagem é por que você usa
diagramas (em particular, UML). Esta é a definição do objetivo
da simulação. Porque essa é a maneira certa de criar modelos, é
necessário? E todos os problemas (mesmo aqueles sobre os
quais nada se sabe ainda) irão desaparecer magicamente, de-
saparecer? Muitas vezes, por exemplo, ao criar um modelo de caso
de uso, existe exatamente esse “propósito” de modelagem. E então
acontece que nenhum problema foi “curado”, mas, pelo contrário,
surgiram novos (por exemplo, ninguém entende ou aceita
os diagramas que criamos). E o próprio analista sente que os
diagramas são um tanto estranhos….
Ou talvez não seja nada disso. Por exemplo, o analista real-
mente se propôs a identificar os requisitos do sistema - não para
impor sua própria visão aos outros, mas para encontrar a infor-
mação necessária, modelar e apresentá-la de forma acessível. Para
fazer isso, ele usa diagramas de casos de uso. É importante para
4-8
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
ele que futuros usuários do sistema possam participar desse pro-
cesso, são traçados diagramas para eles, são compreensíveis e não
redundantes. E esses mesmos diagramas estruturam e esclarecem
informações para o próprio analista.
Na prática, existem muitas histórias semelhantes. É impor-
tante entender aqui que o propósito do modelo não é alguma tarefa
hipotética como “descrever a arquitetura, porque isso é tão neces-
sário, tão certo”, e o público-alvo não é uma abstração do tipo
“Pessoas que desejam se familiarizar com software.” Ambos
são algo muito específico, realmente existente no projeto ou próxi-
mo a ele. Afinal, os desenvolvedores de software não podem se dar
ao luxo de criar algo para todas as idades e para todas as pessoas
com o dinheiro do cliente. Tanto o objetivo de modelar quanto o
público que vai trabalhar com diagramas sempre existem, só é im-
portante entender claramente o que são ...
Esta é uma boa prática para direcionar o público-alvo ao qual
seu modelo se destina. Você pode escolher um representante desse
público - uma pessoa específica e conhecida - e criar diagramas
que sejam compreensíveis para ele. No entanto, é importante não
discutir demais sobre seus modelos com ele, pois isso pode criar
um contexto adicional do qual outros usuários dos modelos serão
privados. É útil imaginar essa pessoa trabalhando em modelos -
suas reações, dúvidas, perplexidades, etc. E, a partir disso, corrigir,
corrigir o que foi criado. E, claro, é útil testar suas suposições, mos-
trando a ele o que aconteceu.
Além disso, é importante que o ponto de vista seja “vivo”,
e não inventado por um analista ou copiado impensadamente de
livros e treinamentos na UML. Sem o conhecimento de si mes-
mo, o analista pode criar seu próprio projeto, seus próprios usuá-
rios do sistema, cliente, etc. Ou seja, o analista está gradualmente
4-9
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
impondo a si mesmo uma certa percepção das pessoas, tarefas
realmente existentes, distorcendo sobremaneira o real estado das
coisas. E é no contexto dessa situação imaginária que ele cria seus
modelos. Mas afinal, pessoas reais, situações reais têm originali-
dade, uma ampla gama de variabilidade. Nesse sentido, o analista
deve ter flexibilidade de consciência, um amplo leque de técnicas,
além de sensibilidade e um desejo sincero de tornar cada projeto
específico em que participa mais harmonioso e adequado.
4-10
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
Douglas Ross, que também propôs um método diagramático para
a análise e projeto de grandes sistemas artificiais.
Com o desenvolvimento de ferramentas de desenvolvimento
orientadas a objetos (final dos anos 80 - meados dos anos
90), a análise estrutural evoluiu para análise e design orientados a
objetos. Um grande número de metodologias apareceu e, gradual-
mente, uma única linguagem de modelagem foi desenvolvida, que
foi consagrada no padrão UML. Aconteceu em 1997.
Tipos de diagramas: O “esqueleto” da UML é a estrutura
diagramática. Cada tipo de diagrama é um tipo de modelo que im-
plementa um ponto de vista específico em um sistema de software.
As visualizações de diagrama não são estritamente necessárias na
UML - você pode misturá-las e criar suas próprias visualizações
de diagrama. No entanto, os tipos padrão de diagramas são uma
propriedade definitiva da engenharia de software, pois refletem a
experiência de muitos pesquisadores e profissionais.
4-11
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
● Os diagramas de estrutura composta são usados para mo-
delar os elementos estruturais compostos dos modelos -
colaborações, componentes compostos, etc;
● Os diagramas de implantação são projetados para mode-
lar o hardware do sistema com o qual o software está dire-
tamente conectado (hospedado ou interagido);
● Os diagramas de pacote são usados para quebrar modelos
3D em suas partes constituintes e também (tradicional-
mente) para agrupar classes de software simulado quan-
do houver muitos deles.
4-12
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
● Os diagramas de tempo são uma espécie de diagramas
de sequência e permitem que você visualize a dinâmica
interna da interação de um conjunto de componentes
do sistema.
Fonte: https://i.stack.imgur.com/hhTO9.jpg
4-13
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
Figura 4-4: Diagrama de Componentes
Fonte: https://support.content.office.net/pt-br/media/680f-
0334-8dfc-4ddd-bb6c-0ef7a1ecd92e.png
4-14
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
Figura 4-5: Diagrama de Máquina de Estado
Fonte: https://brunoduduhenrique.files.wordpress.com/
2012/12/estados.gif
4-15
Engenharia de Software 4
A R Q U ITETU R A D E SO FT WARE
Figura 4-6: Diagrama de Sequência
Fonte: https://sites.google.com/site/mindbitufrpe/_/
rsrc/1467427814583/diagramas/diagrama-de-sequencias/
Sequence%20Diagram%201%20-%20Login.png
4-16
EXERCÍCIOS PROPOSTOS
( ) -a) MSF
( ) -b) CMMI
( ) -c) RUP
( ) -d) SOFTWARE
( ) -e) UML
4-17
3) Observe as afirmações abaixo:
EX ER C ÍC IO S PR O PO STO S
I) A arquitetura do produto acaba sendo uma invariante do projeto, ela ocor-
re e surge inesperadamente em suas diferentes partes.
II) A maneira de controlar o caos, aumentando a entropia na forma de mu-
danças nos requisitos do sistema terá muita perda de um entendimento cla-
ro pelos desenvolvedores de que tipo de sistema eles estão criando.
III) Muitos projetos criam uma arquitetura original, pois são típicos e / ou
pequenos e se baseiam em tecnologias prontas, amostras arquitetônicas,
modelos de equipe e na estrutura organizacional do projeto.
Estão CORRETAS:
( ) -a) I e II
( ) -b) I, somete
( ) -c) II e III
( ) -d) III, somente
( ) -e) II, somente
4-18
5) Podemos conceituar Ponto de vista como:
EX ER C ÍC IO S PR O PO STO S
( ) -a) É uma determinada visão do sistema, que é realizada para
realizar uma determinada tarefa por qualquer um dos parti-
cipantes do projeto.
( ) -b) A razão da multiplicidade de menos pontos de vista no de-
senvolvimento de software.
( ) -c) A arquitetura do produto que acaba sendo uma invariante
do projeto.
( ) -d) Requisitos funcionais para software, é dada atenção a que
tipo de funcionalidade deve ser implementada, mas os prin-
cípios e detalhes de implementação são omitidos.
( ) -e) Uma caixa preta que implementa não importa de que manei-
ra um determinado conjunto de funcionalidades do usuário.
4-19
8) Observe as afirmações abaixo:
EX ER C ÍC IO S PR O PO STO S
I) Uma questão importante que você precisa responder honestamente a si
mesmo no início da modelagem é por que você usa diagramas em particular,
UML.
II) Muitas vezes, por exemplo, ao criar um modelo de caso de uso, não
existe exatamente esse “propósito” de modelagem.
III) É importante entender que o propósito do modelo não é alguma tarefa
hipotética como “descrever a arquitetura, porque isso é tão necessário, tão
certo”, e o público-alvo não é uma abstração do tipo.
Estão CORRETAS:
( ) -a) I e II
( ) -b) II, somente
( ) -c) I e III
( ) -d) III, somente
( ) -e) II e III
4-20
10) Frequentemente, o conceito de arquitetura é bastante reduzido, o que
EX ER C ÍC IO S PR O PO STO S
significa apenas uma descrição dos aspectos principais e importantes
do software, criados, por exemplo, por um arquiteto ao desenvolver um
projeto de sistema. Para tanto, é utilizada a linguagem de modelagem:
( ) -a) UML
( ) -b) MSF
( ) -c) CMMI
( ) -d) RUP
( ) -e) SOFTWARE
4-21
DISCIPLINA:
Engenharia de
Software
UNIDADE 3:
GERENCIAMENTO
DE REQUISITOS E
CONFIGURAÇÃO
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Conteúdos da Unidade:
Nesta unidade, iremos abordar sobre o levantamento de requisitos ao
se desenvolver um sistema; veremos suas etapas, bem como o que deve
ser feito para garantir que um software será entregue conforme plane-
jado; por fim, veremos um pouco sobre gerenciamento de configurações.
9 Gerenciamento de Requisitos
9 Gerenciamento de Configuração
Acompanhe os conteúdos desta unidade. Se preferir, vá assinalando
os assuntos, à medida que for estudando.
Bons estudos!!!
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 5:
GERENCIAMENTO
DE REQUISITOS
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
5.1 FUNDAMENTOS
5.1.1 Problema
Por exemplo, construtores constroem casas, embora sejam
diferentes: vários andares, chalés individuais, edifícios de escri-
tórios, etc. - no entanto, todo esse espectro pode muito bem ser
coberto por uma empresa. Mas tudo isso está em casa. Uma em-
presa de construção não precisa construir um disco voador, o hi-
perbolóide do engenheiro Garin, um rover lunar, um sistema de
teletransporte instantâneo etc. E os desenvolvedores de software,
em muitos aspectos, estão exatamente nesta posição.
Existe uma grande variedade de sistemas criados por uma
empresa, uma equipe. Embora agora existam tendências para a
especialização do mercado de desenvolvimento de software, no
entanto, as peculiaridades da economia mundial e muitos outros
motivos levam ao fato de que não existem tantas empresas estrita-
mente especializadas como gostaríamos. Muitas áreas enfrentam
uma grande escassez de programadores individuais e equipes in-
teiras e empresas que são bem versadas em suas especificidades.
Um exemplo de tal área é a televisão, onde o assunto é discutido
abertamente em reuniões de várias comunidades internacionais.
Além disso, o software continua a penetrar cada vez mais em
novas áreas da atividade humana e, neste caso, geralmente é uma
tarefa extremamente difícil formular requisitos adequados.
Mas mesmo se estamos falando de uma área específica, a por-
centagem de recursos novos e exclusivos de sistemas pertencentes
a esta área é alta: em termos de uma combinação de características
do usuário, em termos de recursos de tempo de execução e requisi-
tos de integração, em termos de distribuição de informações sobre
5-3
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
requisitos entre os funcionários da empresa cliente. Tudo isto tem
em si uma marca muito grande da individualidade do cliente - pes-
soal ou da sua empresa - está fortemente relacionada com as espe-
cificidades do seu negócio, utilizado nesta área de equipamentos.
Além disso, existem dificuldades de entendimento en-
tre o cliente e os programadores, e também na variabilida-
de do software (os requisitos tendem a mudar duran-
te o desenvolvimento).
Como resultado, está longe de ser óbvio que o sistema que
o cliente deseja possa ser feito. É difícil encontrar um gato pre-
to em um quarto escuro, especialmente se ele não estiver lá. Ou a
maneira como os desenvolvedores entenderam e implementaram
a tarefa será conveniente e exigida no mercado.
Os erros e discrepâncias que surgem ao identificar os requisi-
tos do sistema estão entre os mais caros. Requisitos são a compre-
ensão inicial do problema pelos desenvolvedores, que é a base de
todo o desenvolvimento.
Algumas palavras sobre a dificuldade de entendimento entre
o cliente e os desenvolvedores. Isso é afetado pela grande lacuna
entre os programadores e outras pessoas. Em primeiro lugar, por-
que para entender bem o que deve ser um sistema de automação
hospitalar e um sistema de suporte a experimentos químicos, é
necessário trabalhar na área pertinente por um período de tempo
suficiente. Ou, de alguma outra forma, aprender a ver os proble-
mas de uma determinada área de estudo por dentro. Em segundo
lugar, a especificidade da programação como campo de atividade
afeta. Para a maioria dos usuários e clientes, é extremamente difí-
cil articular o conhecimento exato de que os programadores preci-
sam. À pergunta, quantos tipos de análises existem no seu labora-
tório, o médico, na reflexão, responde: “43”. E só então, por acaso,
5-4
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
o programador esclareceu, existem outros tipos? Claro que existe,
o médico respondeu, apenas eles são raros e podem ser, em certo
sentido, qualquer coisa. Pela primeira vez, ele nomeou apenas al-
guns típicos. Mas, é claro, o sistema de informação deve armazenar
informações sobre todas as análises realizadas no laboratório.
Agora um pouco mais sobre a variabilidade do software e
suas causas.
5-5
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
5.2 Tipos e propriedades dos requisitos
Vamos dividir os requisitos em dois grandes grupos - funcio-
nais e não funcionais.
Requisitos funcionais são detalhados como uma descrição
do comportamento e serviços do sistema, sua funcionalidade. Eles
definem o que o sistema deve ser capaz de fazer. Os requisitos não
funcionais não são uma descrição das funções do sistema. Este tipo
de requisito descreve características do sistema como confiabilida-
de, recursos entrega (disponibilidade de um instalador, do-
cumentação), um certo nível de qualidade (por exemplo, para
nova máquina Java isso indicará que ele satisfaz o con-
junto de testes com suporte da Sun). Isso também pode in-
cluir requisitos para ferramentas e o processo de desenvolvimento
de sistema, requisitos para portabilidade, conformidade padrões,
etc. Requisitos desse tipo geralmente se aplicam a todo o sistema
como um todo. Na prática, especialmente especialistas novatos,
eles muitas vezes se esquecem de alguns importantes.
Vamos formular várias propriedades importantes
dos requisitos.
5-6
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
de descrição, uma forma de formalização: ou esta é uma
descrição das propriedades da área de assunto para a qual
o software se destina, ou esta é uma tarefa técnica que está
anexada ao contrato, ou esta é uma especificação de pro-
jeto que deve ser esclarecida no futuro, com projeto deta-
lhado. Ou é outra coisa. Também é importante ver e com-
preender claramente aqueles a quem esta descrição dos
requisitos se destina, caso contrário, mal-entendidos e di-
ficuldades subsequentes não podem ser evitados. Na ver-
dade, muitos especialistas diferentes estão envolvidos no
desenvolvimento de software - engenheiros, programado-
res, testadores, representantes do cliente, possivelmente
futuros usuários - e todos eles têm formação, habilidades
profissionais e especialização diferentes, frequentemente
falam línguas diferentes. Também é importante aqui que
os requisitos sejam tão abstratos e independentes de im-
plementação quanto possível.
● Rastreabilidade: é importante ver este ou aquele re-
quisito em vários modelos, documentos e, finalmente,
no código do sistema. E muitas vezes surgem perguntas
como - “Quem sabe por que decidimos que tal e tal módu-
lo deveria funcionar da seguinte maneira ...?”. A rastre-
abilidade dos requisitos funcionais é obtida dividindo-os
em requisitos elementares individuais, atribuindo iden-
tificadores a eles e criando um modelo de rastreamento
que, idealmente, deve se estender ao código do programa.
Por exemplo, gostaria de saber onde alterar o código se
esse requisito mudou. Na prática, a rastreabilidade formal
completa é difícil de alcançar, uma vez que a lógica e a
estrutura da implementação do sistema podem ser mui-
to diferentes daquelas para o modelo de requisitos. Como
5-7
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
resultado, um requisito acaba sendo fortemente “man-
chado” no código e uma ou outra parte do código pode
afetar muitos requisitos.
● Testabilidade e verificabilidade: é necessário que
existam formas de testar e verificar este requisito. Além
disso, ambos os aspectos são importantes, uma vez que
o cliente muitas vezes pode verificar algo, mas testar esse
requisito é muito difícil ou impossível devido ao acesso
limitado (por exemplo, por motivos de segurança) ao
ambiente do sistema para a equipe de desenvolvimento.
Portanto, procedimentos de verificação são necessários -
realização de testes, realização de inspeções, realização de
verificação formal de alguns dos requisitos, etc. Também
é necessário determinar a “barra” de qualidade (quanto
maior a qualidade, mais caro ela custa!) Do projeto esta-
vam claramente cientes do que foi testado e do que ainda
não foi testado.
● Modificabilidade: Define os procedimentos para fazer
alterações nos requisitos.
5-8
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
projeto de software, esse entendimento pode assumir represen-
tações muito diferentes. Cada apresentação de requisitos execu-
ta uma tarefa específica, por exemplo, serve como uma “ponte”,
fixando um acordo entre diferentes grupos de especialistas, ou é
usada para a gestão operacional de um projeto (é rastreado em
qual fase de implementação um determinado requisito é,
quem é responsável por isso, etc.), ou usado para verificação
e teste orientado a modelo. E no primeiro, no segundo e no terceiro
exemplo, estamos lidando com requisitos, mas eles serão formali-
zados de maneiras diferentes.
Assim, a formalização de requisitos em um projeto pode ser
muito diferente - depende do seu tamanho, do processo de desen-
volvimento adotado, das ferramentas utilizadas, bem como das ta-
refas que os requisitos formalizados resolvem. Além disso, várias
formalizações podem existir em paralelo que resolvem problemas
diferentes. Vamos considerar as opções.
5-9
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
● Requisitos de documentos: descrição da área de as-
sunto e suas propriedades, termos de referência como um
anexo ao contrato, especificações funcionais para desen-
volvedores, etc.
● Requisitos como um gráfico com dependências em uma
das ferramentas de suporte de requisitos. Essa visão é
conveniente quando os requisitos mudam com frequên-
cia, quando os requisitos são atendidos, quando as tarefas,
pessoas, testes e código estão “amarrados” aos requisitos.
Também é importante ser capaz de criar facilmente esses
gráficos a partir de documentos de texto e vice-versa, criar
documentos de apresentação para esses gráficos.
● Modelo de requisitos formais para verificação, teste base-
ado em modelo, etc.
5-10
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
o qual o sistema de software deve funcionar, não há glos-
sário de termos e definições de conceitos básicos, vários
sinônimos são usados, etc. Ou há muito preconceito em
relação à programação, o que torna esta especificação in-
compreensível para todos os não programadores.
● A liberação de aspectos importantes relacionados a requi-
sitos não funcionais, em particular, informações sobre o
ambiente do sistema, o momento da disponibilidade de
outros sistemas com os quais este deve interagir. Este úl-
timo ocorre, por exemplo, quando um determinado siste-
ma de software faz parte de um projeto maior. Os proble-
mas são típicos durante a criação de sistemas de software
e hardware, quando o hardware não tem tempo para ser
atempado e o software não pode ser testado, mas isso não
está previsto em termos e requisitos.
5-11
Engenharia de Software 5
G ER EN C IA MEN TO D E R EQ U ISI TO S
podem ser sistematicamente analisados, avaliados sob
diferentes pontos de vista e, em última instância, devem
ser aprovados como a formulação oficial dos requisitos
do sistema.
● Validação de requisitos, que resolve o problema de ava-
liar a inteligibilidade dos requisitos formulados e suas ca-
racterísticas necessárias para desenvolver softwares com
base neles, em primeiro lugar, a consistência e completu-
de, bem como o cumprimento dos padrões corporativos
de documentação técnica.
5-12
EXERCÍCIOS PROPOSTOS
5-13
( ) -a) I e II
( ) -b) II, somente
EX ER C ÍC IO S PR O PO STO S
( ) -c) II e III
( ) -d) III, somente
( ) -e) I, somente
5-14
( ) -b) Surgi problemas e dificuldades, devido aos quais a funciona-
lidade final muda modificada, cortada.
EX ER C ÍC IO S PR O PO STO S
( ) -c) O cliente pode mudar sua própria visão do sistema.
( ) -d) A volatilidade dos requisitos à medida que o desenvolvimen-
to avança
( ) -e) Clareza, não ambiguidade: compreensão inequívoca dos re-
quisitos por parte do cliente e dos desenvolvedores.
5-15
8) Cada apresentação de requisitos executa uma tarefa específica. Um
EX ER C ÍC IO S PR O PO STO S
exemplo disso é:
10) Além disso, várias formalizações podem existir em paralelo que resol-
vem problemas diferentes. Um exemplo dessas opções são:
5-16
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 6:
GERENCIAMENTO DE
CONFIGURAÇÃO
Engenharia de Software 6
6-2
Engenharia de Software 6
6-3
Engenharia de Software 6
6-4
Engenharia de Software 6
1. Documentação do usuário;
2. Documentação do projeto;
3. Códigos-fonte de software;
4. Pacotes de teste;
6-5
Engenharia de Software 6
6-6
Engenharia de Software 6
6-7
Engenharia de Software 6
6-8
Engenharia de Software 6
6-9
Engenharia de Software 6
6-10
Engenharia de Software 6
6-11
Engenharia de Software 6
6-12
EXERCÍCIOS PROPOSTOS
6-13
3) Observe as afirmações abaixo:
EX ER C ÍC IO S PR O PO STO S
I) Um programa totalmente testado funciona em testes demonstrativos
II) A funcionalidade que o cliente vinha solicitando e que finalmente foi adi-
cionada ao produto, e a nova versão foi cerimoniosamente enviada ao clien-
te, desapareceu misteriosamente do produto.
III) O programa funciona no computador do desenvolvedor, mas não no do
cliente.
Estão CORRETAS:
( ) -a) I e II
( ) -b) I, somente
( ) -c) I e III
( ) -d) III, somente
( ) -e) II e III
6-14
6) Cada unidade de gerenciamento de configuração deve ter:
EX ER C ÍC IO S PR O PO STO S
( ) -a) Um programa totalmente testado não funciona em testes
demonstrativos
( ) -b) A funcionalidade que o cliente vinha solicitando e que final-
mente foi adicionada ao produto, e a nova versão foi cerimo-
niosamente enviada ao cliente, desapareceu misteriosamen-
te do produto.
( ) -c) O programa funcionando no computador do desenvolvedor,
mas não no do cliente.
( ) -d) A prática de gerenciamento de configuração - quem e em
que modo, bem como em que lugar carrega uma nova ver-
são de um controle de configuração para uma ferramenta de
controle de versão, regras para nomear e comentar um item
nesta versão, manipulações posteriores com ele lá, etc.
( ) -e) Documentação do usuário.
6-15
( ) -a) I e III
( ) -b) III, somente
EX ER C ÍC IO S PR O PO STO S
( ) -c) II, somente
( ) -d) II e III
( ) -e) I, somente
( ) -a) V1.0
( ) -b) Controle de versão
( ) -c) NextP (V1.1)
( ) -d) Pacotes de teste
( ) -e) O programa
10) O V1.0 é:
( ) -a) Ramificação correspondente ao fix pack liberado para uma
versão específica.
( ) -b) O branch correspondente ao lançamento, que está sendo pre-
parado para lançamento e está em estágio de estabilização.
( ) -c) O branch correspondente ao release lançado.
( ) -d) Um ramo que corresponde à direção principal do desenvol-
vimento do projeto.
( ) -e) Um branch criado para testar alguma solução técnica, mu-
dar para uma nova tecnologia ou fazer um grande lote de
alterações que podem quebrar o código por um longo tempo.
6-16
DISCIPLINA:
Engenharia de
Software
UNIDADE 4:
GERENCIAMENTO DE
PROJETO E PLANEJAMENTO
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Conteúdos da Unidade:
Nesta unidade, iremos abordar sobre a importância do gerencia-
mento de projetos para o desenvolvimento de software. Estudaremos
as principais técnicas usadas para tal, além de entendermos o papel do
planejamento neste contexto.
9 Gerenciamento de Projetos
9 Organização da Equipe
Acompanhe os conteúdos desta unidade. Se preferir, vá assinalando
os assuntos, à medida que for estudando.
Bons estudos!!!
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 7:
GERENCIA DE PROJETOS
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
7.1 FUNDAMENTOS
Em várias fontes, você pode encontrar diferentes defi-
nições do conceito de “gerenciamento”:
7-3
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
projeto para tornar as ruas da cidade mais verdes, um projeto para
treinamento de pessoal, um projeto para reorganizar as atividades
de uma empresa, etc. Existem várias definições do projeto:
Um projeto é uma série arbitrária de ações ou tarefas com
um objetivo específico que será alcançado no âmbito de algumas
tarefas, caracterizado por certas datas de início e fim, limites de
financiamento e recursos.
Um projeto é um trabalho pontual que possui datas de início
e término específicas, objetivos claramente definidos, oportunida-
des e, como regra, um orçamento.
Um projeto é um esforço temporário usado para criar um
produto ou serviço exclusivo com uma data de início e término es-
pecífica que é diferente de atividades contínuas e repetidas e re-
quer melhoria de desempenho progressiva.
Essas definições refletem, em vários graus, as se-
guintes características definidoras do projeto:
7-4
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
● Recursos limitadosalocado para a implementação do
projeto (financeiro, humano, material).
● Complexidade... Para atingir os objetivos do projeto,
existem muitas tarefas a serem resolvidas. Os relaciona-
mentos entre as tarefas podem ser bastante complexos,
especialmente se houver muitas tarefas no projeto.
● Incerteza: A capacidade de atingir a meta dentro do pra-
zo especificado com os recursos alocados não é garantida
com antecedência.
● Previsibilidade... Conforme o projeto avança, a neces-
sidade de certos recursos muda. Essa mudança ocorre em
uma determinada sequência previsível determinada pelo
ciclo de vida do projeto.
7-5
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
o programa pode ser dividido em projetos separados: o
projeto Apollo, o projeto Soyuz, o projeto de construção
do canal Volga-Amu Darya, dentre outros.
● Executando um processo de estado estacionário:
atividades que são executadas repetidamente e continu-
amente: produção de esteira, processamento de pedi-
dos, contabilidade. Tem uma meta específica (liberação
da quantidade planejada de produtos, obtenção de lucro
definido, manutenção de registros) e recursos dedicados,
mas não é única ou complexa e não está associada a pra-
zos específicos. O gerenciamento de tais processos repeti-
tivos é relativamente simples. Alterar os parâmetros dos
processos estabelecidos pode se transformar em um pro-
jeto (aumentando a lucratividade da empresa) com metas
específicas (até 45%), prazos e recursos alocados.
● Resolvendo um problema criativo (científico ou artísti-
co). Há um objetivo específico, singularidade e comple-
xidade aqui, mas, via de regra, não há restrições de tem-
po e recursos (vamos unir os esforços de nossa equipe e
provar o teorema até o Ano Novo!). O grau de incerteza é
muito grande.
7-6
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
“Gerenciamento de Projetos (PM) é a ciência e a arte da liderança
e coordenação de recursos humanos e materiais ao longo do ciclo
de vida do projeto através da aplicação de modernos métodos e
técnicas de gestão para atingir os resultados definidos no projeto
em termos de âmbito e âmbito de trabalho, custo, prazo, qualidade
e satisfação dos participantes do projeto.
A gestão de projetos é baseada em dois pilares (princípios):
7-7
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
as propriedades e relações universais essenciais dos fenômenos da
realidade e da cognição. As categorias foram formadas como resul-
tado da generalização do desenvolvimento histórico do conheci-
mento e da prática: matéria e consciência, espaço e tempo, causali-
dade, necessidade e acaso, possibilidade e realidade, etc.
Semelhante às categorias filosóficas, no campo do gerencia-
mento de projetos existem categorias que refletem os conceitos
básicos desta área. Em geral, os seguintes grupos de catego-
rias são diferenciados:
7-8
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
qualidade do trabalho que estão sob a atenção constante do geren-
te de projetos. Eles também podem ser chamados de as principais
restrições impostas sobre projeto.
Fonte: encurtador.com.br/efzGN
7-9
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
conhecimento na área disciplinar (design e desenvolvimento
de software). Mas então o CONHECIMENTO e as HABILIDA-
DES sobre gerenciamento começaram a vir à tona.
Para ajudar nesta situação, será usado como exemplo de ex-
plicação, as 9 áreas de conhecimento do PMBOK.
PMBOK (Project Management Body of Knowledge) é
um padrão internacional para a composição do conhecimento em
gerenciamento de projetos, que é desenvolvido e desenvolvido pelo
Project Management Institute (PMI) [8]. PMBOK contém des-
crições da composição do conhecimento para as seguintes 9 seções
(áreas de conhecimento) de gerenciamento de projetos, cada
uma das quais é dividida em subseções correspondentes:
2. Gerenciamento do escopo
a) Iniciação: uma decisão formal para iniciar
um projeto.
b) (próxima fase do projeto).
c) ScopePlanning: desenvolvimento documento, des-
crevendo o escopo do trabalho.
d) Formalização do escopo de trabalho (Defini-
ção de Escopo): decomposição de todo o escopo de
trabalho (os principais resultados exigidos) em pe-
quenas tarefas mensuráveis.
7-10
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
e) Verificação do escopo: confirmação do escopo do
trabalho - verificação formal da aceitabilidade dos re-
sultados do trabalho.
f) Controle de mudança de escopo: controle e
aprovação de mudanças.
4. Gestão de custos
a) Planejamento de recursos: quais recursos e em
que quantidade são necessários para o trabalho.
b) Estimativa de custos: os recursos necessários
para o trabalho.
c) Elaboração do orçamento (Cost Budgeting):
orçamentação - alocação de custos aos componentes
do projeto.
d) Controle de custos: gerenciamento de mudanças
no orçamento.
5. Gestão da Qualidade
a) Planejamento de qualidade: definição de padrões
de qualidade e meios para alcançá-los.
b) Garantia de qualidade: avaliação de desempe-
nho planejada e regular - inspeção dos processos
de produção.
7-11
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
c) Controle de qualidade: monitorar os resultados
do projeto, determinar sua conformidade com as nor-
mas, identificar e eliminar as causas de não conformi-
dade da qualidade.
7. Gestão de Comunicações
a) Planejamento de comunicações: identificando
as necessidades de informações dos participantes do
projeto e planejando os fluxos de informações.
b) Distribuição de informações: fornecimento re-
gular e oportuno aos participantes do projeto das in-
formações necessárias.
c) Relatório de desempenho: coleta e divulgação de
relatórios sobre o estado atual do projeto, progresso
alcançado e resultados esperados.
d) Encerramento Administrativo: a criação, distri-
buição (destruição) de informações necessárias para
a conclusão formal do projeto / fase.
7-12
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
8. Gerenciamento de riscos
a) Planejamento de gerenciamento de risco.
b) Identificação de Risco.
c) Análise Qualitativa de Risco.
d) Análise Quantitativa de Risco.
e) Planejamento de Resposta a Riscos.
f) Monitoramento e controle de risco.
7-13
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
software deve possuir. A lista é dividida em três categorias princi-
pais: metodologia de desenvolvimento de produto, habilidades
de gerenciamento de projetos e habilidades de gerencia-
mento de recursos humanos:
7-14
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
2. Habilidades de gerenciamento de projetos:
7-15
Engenharia de Software 7
G ER EN C IA D E PR O JETO S
c) Organização de reuniões eficazes: planejamen-
to e condução.
d) Interação e comunicação: com desenvolvedores,
gestão e outras equipes.
e) Equipes de projeto de treinamento de liderança para
obter o melhor resultados.
f) Gerenciamento de mudanças: garantindo eficá-
cia da gestão em alterações.
g) Negociação bem-sucedida: Resolução de confli-
tos regente negociações.
h) Planejamento de carreira: estruturação e geren-
ciamento do curso de uma carreira.
i) Apresentação eficaz: usando habilidades
orais e escritas.
j) Recrutamento: recrutamento e entrevista de mem-
bros da equipe.
k) Seleção de uma equipe: especialistas alta-
mente competentes.
l) Formação de equipes: formando, orientando e
apoiando uma equipe eficaz.
7-16
EXERCÍCIOS PROPOSTOS
7-17
3) O objetivo do projeto e:
EX ER C ÍC IO S PR O PO STO S
( ) -a) Um empreendimento único que não se repetirá.
( ) -b) A presença de um resultado final, produção, produto bem
definido, definido em termos de custo, qualidade e prazo de
entrega.
( ) -c) Sua implementação requer uma concentração temporária de
recursos.
( ) -d) Para atingir os objetivos do projeto, existem muitas tarefas
a serem resolvidas.
( ) -e) A capacidade de atingir a meta dentro do prazo especificado
com os recursos alocados não é garantida com antecedência.
4) Ressalta-se que nem todo tipo de atividade pode ser classificado como
projeto. Não-projetos geralmente incluem:
( ) -a) Previsibilidade
( ) -b) Incerteza
( ) -c) Complexidade
( ) -d) Limitações de tempo
( ) -e) Programa
( ) -a) Software
( ) -b) Programa
( ) -c) PMI
( ) -d) PMT
( ) -e) Next
7-18
( ) -b) A solução de problemas científicos.
( ) -c) Atividades que são executadas repetidamente e continuamente:
EX ER C ÍC IO S PR O PO STO S
produção de esteira, processamento de pedidos, contabilidade.
( ) -d) Um programa de pesquisa espacial, um programa de recu-
peração de terras na Ásia Central.
( ) -e) Uma atividade bastante complexa que é difícil de gerenciar
devido à sua singularidade e recursos e tempo limitados.
7-19
9) Semelhante às categorias filosóficas, no campo do gerenciamento de pro-
EX ER C ÍC IO S PR O PO STO S
jetos existem categorias que refletem os conceitos básicos desta área.
Em geral, um dos seguintes grupos de categorias são diferenciados:
7-20
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 8:
ORGANIZAÇÃO DA EQUIPE
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
8.1 Peopleware
Como organizar o trabalho da equipe? Equipes de 10
e equipes de 500? Existem diferenças e quais são? É necessário or-
ganizar o trabalho de acordo com uma tecnologia rígida ou é neces-
sário dar liberdade de ação? É possível encontrar uma metodologia
(tecnologia) de implantação de projetos que garanta o sucesso?
Alistair Cowben, especialista na área de tecnologias para a
execução de projetos de TI, fornece dados de 23 projetos de diver-
sos graus de complexidade, realizados com diferentes tecnologias
e com resultados diversos. Tentando analisar os resultados da apli-
cação de várias tecnologias em determinadas condições, ele che-
ga à conclusão:
8-2
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
● Eles diferem em tipo: individualistas - membros
da equipe; geradores de ideias -performers; responsá-
vel - irresponsável.
● Constante e mutável: as pessoas, via de regra, mostram
a constância de seus hábitos e propriedades de caráter,
mas são capazes de exibir qualidades “opostas”: comando
individualista qualidade, performer - para gerar ideias.
● Diversos: é preciso entender que a diversidade das pes-
soas é a principal garantia da sobrevivência da humani-
dade em geral e da capacidade de realizar projetos de TI
em particular. Se todos fossem individualistas, ou todos
os comandantes, todos os geradores de idéias ou todos os
executores, dificilmente seria possível concluir pelo me-
nos um projeto, e o mundo se tornaria terrível.
8-3
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
última análise, a teoria é que a maioria das pessoas prefere ouvir o
que fazer e não ter que decidir por si mesmas.
Características do modelo:
8-4
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
8.1.2 Modelo administrativo (teoria Y)
O modelo do caos é baseado na Teoria Y, que é o oposto da
Teoria X. A tese principal da Teoria Y: o trabalho é uma ativi-
dade natural e prazerosa e a maioria das pessoas é, de fato, muito
responsável e não se intimida do trabalho.
As características do modelo do caos são:
8-5
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
As desvantagens do modelo estão relacionadas ao fato de
que, sob certas condições, uma equipe de fuga pode se tornar uma
equipe de falha. Os motivos da falha podem ser:
8-6
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
do grupo como um todo. As normas culturais de uma determinada
empresa têm um impacto adicional.
O princípio básico do modelo pode ser formulado da seguin-
te forma: “Trabalhamos com calma. Nós trabalhamos juntos.” Os
recursos deste modelo são:
8-7
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
8.2 Comunicação da Equipe
O principal fator no desenvolvimento de software é a capa-
cidade de comunicação (comunicação entre os participantes
do projeto). A comunicação pode ser realizada de várias formas,
desde estritamente formalizada (documentação padronizada)
até completamente não formalizada (pergunta e resposta a um
vizinho, discussão em ambiente informal).
Deve-se lembrar que as comunicações em uma equipe são
determinadas pelo número de participantes (conexões de tra-
balho): com dois participantes, esta é uma conexão, com n par-
ticipantes - n (n-2) / 2. Ao mesmo tempo, qualquer uma dessas
conexões pode funcionar mal e não são transitivas: do fato de que
o participante A está em bom contato com B e B está em bom con-
tato com C, isso não significa que A está em contato com V. Isso
é, a comunicação informal “ao vivo” é eficaz apenas em equipes
relativamente pequenas e bem organizadas (bem organizadas).
8-8
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
(opinião coletiva) - uma opinião geral para um determinado
grupo. Qual é a diferença?
Compromisso:
9 Esta é uma solução média, que pode ser (e, via de regra,
acaba sendo) pior do que cada uma das opções.
9 Obtido por concessões mútuas (concordaremos com sua
opção de interface se concordar com nossa organização
de banco de dados).
9 Pode ser adotado por maioria (votação).
Consenso:
9 Esta é a solução ideal combinando o melhor das op-
ções propostas.
9 Alcançado através de discussão, análise e geração de no-
vas ideias.
9 Aceito por acordo geral (todos concordam que uma solu-
ção melhor foi encontrada).
8-9
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
a equipe e uma arte especial de gerenciamento de equipe. Neste
caso, recomenda-se aderir aos seguintes princípios e regras:
Crença na construção de consenso: cada membro da
equipe deve confiar nos outros que a discussão levará à busca de
uma solução ótima, e não a uma disputa de opiniões pessoais.
Criar essa atmosfera de confiança mútua é essencial para criar uma
equipe eficaz.
Deve ser entendido que a confiança mútua não surge por si
mesma, mas é o resultado de:
8-10
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
9 Separação de fatos e opiniões. Os fatos são indica-
dores objetivos, expressos na maioria dos casos
quantitativamente (mas não necessariamente):
desempenho, tempo de resposta. Opiniões são aquelas
que não são baseadas em fatos. Opiniões não devem ser
desconsideradas como muitas vezes se baseiam na expe-
riência, na intuição.
8-11
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
do projeto. Acompanhar o andamento do plano permite
avaliar a possibilidade de dar continuidade ao projeto.
9 O projeto tem um elemento de incerteza. Aqueles. É im-
possível prever tudo com antecedência, em virtude do que
os planos originais geralmente não são cumpridos. Mas
no caso de circunstâncias anteriormente não explicadas,
os planos podem e devem ser ajustados. Para manter o
projeto previsível. O plano não é nada. O planejamen-
to é tudo.
8-12
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
você os perceba com antecedência (caso se concretizem) e
se prepare para enfrentá-los.
9 Sinalização de problemas. O desvio do plano é um sinal
de que surgiu um problema. Planos não são dogmas que
devem ser seguidos incondicionalmente. Para o gerente
de projeto, são suposições mais prováveis e uma base de
comparação. Se a implementação do projeto não atender
às expectativas, é necessário fazer o ajuste corresponden-
te ao plano.
8-13
Engenharia de Software 8
O R G A N IZAÇÃO D A EQ U I PE
Se houver vários planos, também é elaborado um plano diretor
(plano diretor), que reflete os principais indicadores do proje-
to como um todo: os principais (sem detalhamento) tipos de
obras, prazos, recursos, financiamentos.
8-14
EXERCÍCIOS PROPOSTOS
8-15
a mudanças na situação - novos tipos de projetos, o uso de
novas tecnologias, uma resposta rápida às mudanças no
EX ER C ÍC IO S PR O PO STO S
mercado.
( ) -b) Clareza, simplicidade, previsibilidade.
( ) -c) O papel do gestor: planejamento, controle, tomada de deci-
sões importantes.
( ) -d) Pirâmide de poder - as decisões são tomadas de cima para
baixo.
( ) -e) Uma distribuição clara de funções e responsabilidades.
8-16
( ) -c) Peopleware
( ) -d) Triângulo de Restrição de projetos
EX ER C ÍC IO S PR O PO STO S
( ) -e) Arquitetura aberta (teoria Z)
8-17
( ) -b) Falta de especialização - os participantes mudam de papéis
e funções e podem substituir uns aos outros, se necessário.
EX ER C ÍC IO S PR O PO STO S
( ) -c) Pelo número de participantes (conexões de trabalho): com
dois participantes, esta é uma conexão, com n participantes
- n (n-2) / 2.
( ) -d) Dinâmica da composição dos grupos de trabalho em função
das tarefas atuais.
( ) -e) Responsabilidade distribuída - todos que discutiram, traba-
lharam, aceitaram são responsáveis.
8-18
DISCIPLINA:
Engenharia de
Software
UNIDADE 5:
TESTES E DESCRIÇÃO CMMI
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Conteúdos da Unidade:
Nesta unidade, iremos abordar sobre testes e controle de qualidades
no desenvolvimento de softwares, além de entendermos um pouco sobre
CMMI, Capability Maturity Model Integration.
9 Teste
9 CMMI
Acompanhe os conteúdos desta unidade. Se preferir, vá assinalando
os assuntos, à medida que for estudando.
Bons estudos!!!
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 9:
TESTE
Engenharia de Software 9
T ESTE
9.1 Controle de Qualidade
O desenvolvimento do mercado mundial levou ao fato de que
muitos bens e serviços começaram a se espalhar pelo mundo, os
serviços globais começaram a se desenvolver, em particular, te-
lecomunicações, bancos. Com o objetivo de eliminar as barreiras
técnicas à indústria, ao comércio e aos negócios, surgidas pelo fato
de em diferentes países para as mesmas tecnologias e produtos es-
tarem em vigor diferentes normas, começaram a ser criados comi-
tês de normas nacionais e internacionais. Vamos nos deter nos
comitês internacionais mais famosos.
9-3
Engenharia de Software 9
T ESTE
2. 1946: é criada a organização ISO (International Or-
ganization for Standardization). O objetivo é pro-
mover o desenvolvimento da padronização, bem como
das atividades correlatas no mundo, com o objetivo de
assegurar o intercâmbio internacional de bens e serviços,
promovendo e desenvolvendo a cooperação nos campos
intelectual, científico, técnico e econômico. Até o momen-
to, cerca de 17.000 padrões foram criados em várias áreas
da indústria - alimentos e outros bens, vários equipamen-
tos, serviços bancários, etc. Aqui estão alguns padrões.
○ Uma série de normas ISO 9000. Tem como objetivo a
padronização da qualidade de bens e serviços. Defini-
ção da qualidade, definição de um sistema de suporte
da qualidade em todas as fases da vida de um produto,
produto, serviço (concepção, desenvolvimento, comer-
cialização, instalação e manutenção), descrição dos
procedimentos para melhorar as actividades da em-
presa, produção industrial.
○ ISO / IEC 90003: 2004 - adaptação das normas ISO
9000 à produção de software em linha com a garantia
da qualidade no ciclo de vida do software.
○ ISO 9126: 2001 - definição de software de qualidade e
vários atributos que descrevem essa qualidade.
9-4
Engenharia de Software 9
T ESTE
3. 1988: formação da organização ETSI (European Te-
lecommunications Standards Institute), com sede
em Sophia Antipolis (França). É uma organização in-
dependente, sem fins lucrativos, de padronização da in-
dústria de telecomunicações (OEMs e operadoras de
rede) na Europa. Os padrões mais famosos são GSM, o
sistema de rádio móvel profissional TETRA.
9-5
Engenharia de Software 9
T ESTE
Estados Unidos. Agora, o IEEE é uma associação inter-
nacional sem fins lucrativos de técnicos, líder mundial no
desenvolvimento de padrões para eletrônica e engenha-
ria elétrica. Com sede nos Estados Unidos, existem vá-
rias divisões em vários países, incluindo a Rússia. O IEEE
publica um terço da literatura técnica mundial sobre a
aplicação de rádio eletrônica, computadores, sistemas
de controle, engenharia elétrica, incluindo (janeiro de
2008) 102 periódicos científicos revisados por pares e 36
periódicos comerciais para especialistas, realiza mais de
300 conferências importantes por ano , participou do de-
senvolvimento de cerca de 900 padrões atuais.
3. 1989: Um grupo de empresas americanas de TI (in-
cluindo Hewlett Packard, Sun Microsystems,
Canon) organizou o OMG (Object Management
Group). Agora inclui cerca de 800 empresas associadas.
A direção principal é o desenvolvimento e promoção de
tecnologias e padrões orientados a objetos, inclusive para
a criação de aplicativos de software independentes de
plataforma em nível empresarial. Padrões CORBA, UML
e MDA bem conhecidos.
9-6
Engenharia de Software 9
T ESTE
um processo de qualidade. A garantia de qualidade é o contexto
mais geral para o teste.
A qualidade de um produto ou serviço destinado a um con-
sumidor é definida na norma ISO 9000: 2005 como o grau em
que suas características atendem aos requisitos - obrigatórios
ou implícitos.
Sem pretender ser absolutamente completos, listamos os vá-
rios métodos de controle de qualidade usados na prática no desen-
volvimento de software:
Configurando um processo de qualidade: em outras
palavras, melhoria de processos. Para uma melhoria abrangente
dos processos da empresa (abordagem de tecnologia push),
as empresas de desenvolvimento de software usam os padrões
CMM / CMMI, bem como os padrões ISO 9000 (com subse-
quente certificação oficial). Também são utilizadas estratégias
locais, que são menos caras e mais focadas na resolução de proble-
mas específicos (a abordagem pull da organização).
Métodos Formais: a utilização de formalismos matemá-
ticos para comprovação de correção, especificação, verificação de
conformidade formal, geração automática, etc.
9-7
Engenharia de Software 9
T ESTE
● Teste baseado em modelo: geração automática de tes-
tes e ambiente de teste de acordo com as especificações
formais dos requisitos do sistema), etc.
9-8
Engenharia de Software 9
T ESTE
estrutura torna-se confusa e difícil de entender. Refatorar
é uma atividade regular de reescrever código, não com o
objetivo de adicionar nova funcionalidade, mas para me-
lhorar sua estrutura. A refatoração apareceu no contexto
de métodos “ágeis” e atualmente é ativamente suportada
por vários ambientes de desenvolvimento de software.
● Várias opções para inspeção de código, por exemplo, a
técnica de revisão de código por pares. A última é que o
código de cada participante do projeto, seletivamente,
seja lido e discutido em reuniões especiais (reuniões de
revisão de código), e isso é feito regularmente. A prática
mostra que o código geral está ficando melhor.
● Também existe uma abordagem como a “revisão” do có-
digo, usada, por exemplo, no desenvolvimento de siste-
mas críticos de tempo real. Os desenvolvedores também
estão envolvidos, mas sua função neste projeto é a revi-
são, não o desenvolvimento.
9.2 Testando
É uma verificação da correspondência entre o comportamen-
to real do programa e seu comportamento esperado em condições
artificiais especialmente dadas. Vamos analisar essa definição
em partes.
O comportamento esperado do programa. A informação ini-
cial para teste é o conhecimento sobre como o sistema deve se com-
portar, ou seja, os requisitos para ele ou para sua parte separada. O
9-9
Engenharia de Software 9
T ESTE
método de teste mais comum é o teste caixa preta, ou seja, quando
a implementação do sistema não está disponível para os testadores
e apenas sua interface é testada. Frequentemente, isso é reforçado
pela organização da equipe - os testadores acabam sendo funcio-
nários separados e, em algumas empresas, eles nem mesmo se co-
municam com os desenvolvedores, em princípio, a fim de conhecer
os detalhes de implementação o menos possível e atuar como uma
autoridade de teste tão completamente quanto possível. Há um
teste de caixa branca quando o código o software está disponível
para os testadores e é usado como fonte de informações sobre o
sistema. Seu diagrama é mostrado na figura 9-1.
9-10
Engenharia de Software 9
T ESTE
Nesta figura, você pode ver que com base nos requisitos do
sistema, uma implementação e um modelo de teste do sistema são
criados. O teste é uma comparação dessas duas visões para revelar
suas inconsistências. Quanto mais independentes essas represen-
tações forem umas das outras, maior será o benefício de sua com-
paração. Caso contrário, se os testadores fizerem uso significativo
de informações sobre a implementação do sistema ao escrever tes-
tes, eles podem inadvertidamente introduzir erros de implemen-
tação nos testes. A discrepância encontrada durante o teste ainda
não é um erro, porque os próprios testadores podem interpretar
mal os requisitos, pode haver erros nos testes e nas ferramentas
de teste.
Essa abordagem também se consolida na organização de
equipes de programadores - os testadores, via de regra, são sepa-
rados dos desenvolvedores. Essas são pessoas diferentes, funções
incompatíveis em MSF. Os autores ouviram uma história sobre
uma empresa americana onde desenvolvedores e testadores sen-
taram em andares diferentes, usaram roupas diferentes (testado-
res em ternos, desenvolvedores em suéteres) e os chefes
não encorajaram relacionamentos não profissionais entre esses
grupos. Isso, é claro, é um extremo, mas mais uma vez enfatiza o
quão importante é para os testadores terem um ponto de vista di-
ferente sobre o sistema daquele dos desenvolvedores. Mas, é claro,
ambos devem partir da visão geral do sistema - seus requisitos.
Especialmente dado, condições artificiais, - as condições em
que o teste é realizado. Ao mesmo tempo, o posto-chave aqui é a
presença de testes - etapas reproduzíveis de manipulação com o
sistema, levando ao seu funcionamento incorreto. O conceito do
teste é muito importante, pois é necessário não apenas detec-
tar o comportamento incorreto do sistema, mas criar e corrigir
um algoritmo de reprodução do erro - a fim de que repita para o
9-11
Engenharia de Software 9
T ESTE
desenvolvedor ou para que o próprio desenvolvedor possa repro-
duzir o bug. Se o erro não for reproduzido, não há como corrigi-lo.
Os testes podem ser “manuais” e automatizados. Um teste
“manual” é uma sequência de ações de um testador que ele (ou
um desenvolvedor) pode reproduzir e ocorrerá um erro. Nor-
malmente, em controles de erro, essas sequências de ações estão
contidas na descrição do erro. Um teste automático é um programa
que afeta o sistema e verifica uma ou outra de suas propriedades.
Um teste automático, comparado a um teste “manual”, pode ser
facilmente reproduzido sem intervenção humana. Você pode criar
suítes de teste e executá-los com frequência, por exemplo, no modo
de teste de regressão. Além disso, testes automatizados podem ser
gerados de acordo com especificações de nível superior, por exem-
plo, de acordo com requisitos de sistema formalmente descritos. E,
por exemplo, testes para compiladores podem ser gerados a par-
tir de uma descrição formal de uma linguagem de programação.
Assim, as vantagens dos testes automatizados sobre os “manuais”
são óbvias.
Agora vamos falar sobre as dificuldades dos tes-
tes automatizados.
Primeiro, para que os testes sejam executados automatica-
mente, são necessários produtos de software apropriados, que
também são parte integrante das condições artificiais especial-
mente especificadas que estamos discutindo agora. Vamos cha-
má-los de ferramentas de teste. A tarefa deles é executar um teste
no sistema, ou seja, “Execução” de todo um pacote de testes, bem
como análise dos resultados obtidos e seu processamento. Além
disso, uma tarefa importante das ferramentas de teste é fornecer
acesso de teste ao sistema por meio de algumas de suas interfa-
ces. O acesso ao sistema pode ser difícil, por exemplo, devido a
9-12
Engenharia de Software 9
T ESTE
circunstâncias políticas, quando um subsistema de algum sistema
estratégico é feito por desenvolvedores terceirizados e os desenvol-
vedores limitam severamente o acesso a este sistema abrangente.
Ou, devido às limitações de hardware, é difícil “subir” no hardware
onde o código-alvo está sendo executado.
Além disso, muitas vezes é difícil testar perfeitamente um
sistema com impacto mínimo e, ao mesmo tempo, analisar todos
os aspectos de sua operação. De modo geral, configurar e imple-
mentar ferramentas de teste de terceiros geralmente é caro e as-
sustador. Desenvolver suas próprias ferramentas de teste também
não é fácil.
Em segundo lugar, geralmente há um problema de recursos
de teste automatizados. Especialmente com a geração automáti-
ca de testes: muitas vezes é possível gerar automaticamente um
grande número de testes, portanto, se você ainda os executa regu-
larmente, em modo de integração contínua, os recursos de sistema
disponíveis não serão suficientes. Ao mesmo tempo, a qualidade
dos testes pode acabar sendo insatisfatória - erros raramente são
encontrados ou não são encontrados. O fato é que o número de to-
dos os estados possíveis de um sistema de software é muito grande
e os testes não podem cobrir todos eles. Na prática, em projetos
reais, são determinados critérios de teste que determinam o “pa-
drão” de qualidade que deve ser alcançado neste projeto. Afinal,
boa qualidade custa caro e é óbvio que software diferente tem qua-
lidade diferente, por exemplo, sistema de controle do reator nu-
clear e editor de texto. Na prática, muitas vezes, a qualidade do
software é determinada pelo orçamento do projeto para seu desen-
volvimento. Além disso, devido aos recursos limitados para teste,
geralmente é aconselhável determinar os aspectos do software que
são mais importantes - tanto para o desempenho geral do sistema
quanto para o cliente. Por exemplo, ao testar um aplicativo da Web
9-13
Engenharia de Software 9
T ESTE
que fornece um serviço de criação de anúncios para a venda de
imóveis, estes critérios foram:
9-14
Engenharia de Software 9
T ESTE
importante, uma vez que diferentes componentes podem ser cria-
dos por diferentes pessoas, em diferentes momentos, usando di-
ferentes tecnologias. Esse tipo de teste, é claro, deve ser aplicado
pelos próprios programadores, a fim de, pelo menos, ter certeza
de que tudo convive em uma primeira aproximação. Além disso,
os meandros da integração podem ser investigados por testadores.
Deve-se notar que este tipo de erro - “Erros de articulação” não
são fáceis de detectar e corrigir. Durante o desenvolvimento, nem
todos os componentes estão prontos juntos, a integração é atrasa-
da e, no final, bugs difíceis são descobertos (no sentido de que
corrigi-los requer um trabalho significativo). A saída aqui
é a integração inicial do sistema e o uso posterior da prática de
integração contínua.
Teste de sistema: este teste de todo o sistema como um
todo, geralmente por meio de sua interface de usuário. Ao mesmo
tempo, testadores, gerentes e desenvolvedores se concentram em
como o software parece e funciona como um todo, se é convenien-
te, se ele atende às expectativas do cliente. Ao mesmo tempo, po-
dem surgir vários defeitos, como inconvenientes no uso de certas
funções, requisitos esquecidos ou “mal” compreendidos.
Teste de regressão: teste do sistema no processo de seu
desenvolvimento e manutenção para não regressão. Ou seja, ve-
rifica-se que as mudanças no sistema não agravaram a funcionali-
dade já existente. Para isso, são criados pacotes de teste de regres-
são, que são executados em intervalos regulares - por exemplo, em
modo batch, associado ao procedimento de integração contínua.
Teste de Estresse: testar o sistema para operação correta
com grandes quantidades de dados. Por exemplo, verificar bancos
de dados para o processamento correto de um grande (limitan-
te) volume de registros, estudar o comportamento do software de
9-15
Engenharia de Software 9
T ESTE
servidor com um grande número de conexões de clientes, experi-
mentando a limitação de tráfego para sistemas de rede e telecomu-
nicações, abrindo um grande número de arquivos, projetos, etc. ao
mesmo tempo.
Teste de estresse: testar o sistema quanto à resistência a
situações imprevistas. Este tipo de teste não é necessário para to-
dos os sistemas, pois implica um alto nível de qualidade.
Teste de aceitação: testes realizados após a aceitação do
sistema do cliente. Além disso, vários padrões geralmente incluem
suítes de teste de aceitação. Por exemplo, existe um grande conjun-
to de testes mantidos pela Sun Microsystems que são necessários
para a execução de todas as novas implementações de máquina
Java. Acredita-se que somente depois que todos esses testes forem
aprovados com sucesso, a nova implementação poderá ser chama-
da de Java.
9-16
Engenharia de Software 9
T ESTE
Figura 9-2: Exemplo de Trabalhos com Bugs
9-17
Engenharia de Software 9
T ESTE
os erros encontrados no último mês, todos os erros pelos
quais este desenvolvedor é responsável, etc.;
9 Acesso à rede, à medida que os projetos são cada vez
mais distribuídos;
9 Uma interface de software para os recursos de integração
de software de tais sistemas com outro software que su-
porte o desenvolvimento de software (por exemplo, com
ferramentas de integração contínua - eles podem inserir
automaticamente os erros encontrados durante a execu-
ção automática de testes no banco de dados).
9-18
EXERCÍCIOS PROPOSTOS
( ) -a) ISDN
( ) -b) ADSL
( ) -c) OSI
( ) -d) SDL
( ) -e) ITU
9-19
( ) -d) Adaptação das normas ISO 9000 à produção de software em
linha com a garantia da qualidade no ciclo de vida do software.
EX ER C ÍC IO S PR O PO STO S
( ) -e) Definição da qualidade, definição de um sistema de suporte
da qualidade em todas as fases da vida de um produto.
( ) -a) ITU
( ) -b) OSI
( ) -c) SDL
( ) -d) ISO
( ) -e) ISDN
9-20
7) Para uma melhoria abrangente dos processos da empresa abordagem de
EX ER C ÍC IO S PR O PO STO S
tecnologia push, as empresas de desenvolvimento de software usam os
padrões CMM / CMMI, bem como os padrões:
9-21
10) É o método mais comum de controle de qualidade de software, apresen-
EX ER C ÍC IO S PR O PO STO S
tado, de fato, em todo projeto de software:
( ) -a) Teste
( ) -b) Métodos Formais
( ) -c) Configurando um processo de qualidade
( ) -d) Tomada de decisão
( ) -e) Planejamento e Controle
9-22
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 10:
CMMI
Engenharia de Software 10
CM M I
10.1 Conceitos básicos
O CMMI é uma descrição do processo de desenvolvimen-
to de software ideal, oferece algum modelo do processo. Ou seja,
o processo destaca e descreve cuidadosamente alguns dos princi-
pais componentes do ponto de vista do CMMI. Essa perspectiva
do CMMI é melhorar os processos de desenvolvimento. Ou seja,
essas partes significativas do processo são áreas para melhorias. O
CMMI distingue entre os seguintes grupos de áreas de melhoria:
gestão de processos, gestão de projetos, áreas de engenharia, áreas
de serviço. Nesse caso, todas as áreas são especificadas na forma
de requisitos que determinam não como eles são implementados,
mas os requisitos de interface. Isso tem duas consequências.
10-2
Engenharia de Software 10
CM M I
Corolário 2. O CMMI é usado para certificar empresas
quanto à maturidade de seus processos. Inicialmente, no final dos
anos 80 e início dos 90, o CMM (então ainda não CMMI) foi
criado precisamente como um meio de certificar subcontratados
federais. E só mais tarde, tendo se difundido no mundo, passou a
ser utilizado e a focar na melhoria de processos.
Vamos observar mais uma característica importante do
CMMI. Não se destina apenas ao desenvolvimento de sistemas
de software. Muitas grandes empresas não produzem software,
mas visam produtos, nos quais o software é incluído como parte
integrante. Por exemplo, aviação, indústria aeroespacial. Ou seja,
o desenvolvimento de software ocorre junto com outros tipos de
trabalho de engenharia. E muitas vezes acontece que mais de dois
tipos diferentes de engenharia estão envolvidos em um projeto. A
tarefa do CMMI é fornecer a esses projetos e empresas uma plata-
forma única para organizar o processo de desenvolvimento.
O CMMI foi projetado para ajudar a melhorar o desempe-
nho, fornecendo às empresas tudo o que precisam para desenvol-
ver consistentemente melhores produtos e serviços. Mas o CMMI
é mais do que um modelo de processo; também é um modelo com-
portamental. As empresas podem usar o CMMI para enfrentar a
logística de melhorar o desempenho desenvolvendo benchmarks
mensuráveis, mas o CMMI também pode ajudar a criar uma es-
trutura para incentivar comportamentos produtivos e eficientes
em toda a organização.
10-3
Engenharia de Software 10
CM M I
modelo de Software CMM desenvolvido entre 1987 e 1997. CmMI
Versão 1.1 foi lançado em 2002, seguido pela Versão 1.2 em
2006, e versão 1.3 em 2010; V1.3 foi substituído por V2.0 em
março de 2018.
Em sua primeira iteração como o Software CMM, o modelo
foi adaptado para a engenharia de software. As versões seguintes
do CMMI tornaram-se mais abstratas e generalizadas, permitindo
que ele fosse aplicado ao desenvolvimento de hardware, software e
serviços em todos os setores. Com o lançamento do V2.0, o proces-
so foi simplificado — o CMMI abordou anteriormente três áreas
de interesse, incluindo desenvolvimento de produtos e serviços,
estabelecimento de serviços e aquisição de produtos e serviços,
mas todas elas foram incorporadas em um modelo autônomo.
Cada iteração do CMMI visa ser mais fácil para as empresas
entenderem e usarem do que a última, e cada modelo foi proje-
tado para ser mais econômico e mais fácil de integrar ou implan-
tar. Incentiva as empresas a se concentrarem na qualidade sobre
a quantidade, estabelecendo benchmarks para vetar fornecedores
e fornecedores, identificar e resolver problemas de processo, mini-
mizar riscos e construir uma cultura corporativa que apoie o mo-
delo CMMI.
10-4
Engenharia de Software 10
CM M I
arbitrária. Aqui, vamos nos concentrar no modelo sequencial.
Possui 5 níveis de maturidade do processo, conforme mostrado
na Figura 10-2:
Fonte: https://audir.files.wordpress.com/2012/11/niveis-cmmi1.png
10-5
Engenharia de Software 10
CM M I
de ativos de processo - modelos de documentos, mode-
los de ciclo de vida, ferramentas de software, práticas,
etc. Qualquer processo específico é obtido eliminando
este padrão.
4. Gerenciado: quantitativamente (nível de maturida-
de 4) implica o surgimento de um sistema de medições na
empresa, que se dá com base em um processo padroniza-
do e permite o controle quantitativo do desenvolvimento.
5. Otimizando: (nível de maturidade 5) implica me-
lhoria contínua dos processos de desenvolvimento, tanto
incrementais, passo a passo e revolucionários. Ao mesmo
tempo, essas mudanças não são forçadas, mas problemas
e dificuldades antecipatórias. O processo está se aprimo-
rando e constantemente - ou seja, os mecanismos apro-
priados foram implementados.
10-6
Engenharia de Software 10
CM M I
Nível Áreas de melhoria
Desenvolvimento de requisitos
Solução técnica
Montagem e entrega do produto
Verificação do produto para conformidade com os requisi-
tos (verificação)
Verificação do produto para a finalidade pretendida (validação)
Foco nos processos organizacionais
Definição de processos organizacionais
Organização de treinamento
3
Gestão integrada de projetos
Gestão de riscos
Gestão de equipe conjunta
Gestão abrangente de fornecedores
Tomada de decisão: avaliando alternativas
Crie um ambiente colaborativo em sua organização
Desenvolvimento de requisitos
Solução técnica
Montagem e entrega do produto
Estabelecer indicadores de desempenho para os processos
4 da organização
Gestão quantitativa de projetos
Seleção e implementação de melhorias na organização
5 Análise das causas dos problemas e prevenção de sua
ocorrência no futuro
10-7
Engenharia de Software 10
CM M I
10.5 Atualização do CMMI
A versão mais recente do CMMI, Versão 2.0, foca mais
fortemente no desempenho e em como o desempenho impacta
os negócios e como entender as necessidades de desempenho de
uma organização. Há informações sobre como estabelecer metas
de desempenho e, em seguida, rastrear essas metas para garan-
tir que elas sejam alcançadas em todos os níveis de maturidade
dos negócios.
A versão 2.0 também se integra melhor com processos ágeis
e Scrum, com foco em segurança e segurança. Se você já tem uma
prática ágil, o CMMI V2.0 vai ajudá-lo a contornar ou melhorar
processos estabelecidos que já funcionam para o seu negócio. O
CMMI V2.0 também visa reduzir o custo global das avaliações e
encurtar o tempo necessário para avaliar e organização. O CMMI
V2.0 também reduziu a quantidade de conhecimento técnico in-
cluído, por isso é mais fácil para quem está fora da indústria tec-
nológica ler e entender. Há também uma plataforma online onde
os usuários podem construir e projetar um modelo que atenda às
necessidades específicas da organização.
O Instituto CMMI também incluiu mais informações sobre
como demonstrar o ROI, para que os líderes possam colocar ou-
tros executivos a bordo. Os benchmarks de desempenho e as metas
descritas no CMMI podem ajudar as empresas a garantir que to-
dos os projetos e processos sejam econômicos ou rentáveis. A ver-
são mais recente também é mais fácil de implantar em toda uma
organização com linguagem menos técnica e plataformas e ferra-
mentas on-line atualizadas e personalizáveis que fornecerão orien-
tação para adotar o CMMI ou fazer a transição para o V2.0 a partir
do V1.3. Também está disponível em vários idiomas traduzidos.
10-8
Engenharia de Software 10
CM M I
10.6 Certificações CMMI
As certificações CMMI são oferecidas diretamente através
do Instituto CMMI, que certifica indivíduos, avaliadores, ins-
trutores e praticantes. O Instituto CMMI oferece as seguin-
tes certificações:
10-9
Engenharia de Software 10
CM M I
10.7 Ferramentas CMMI
O Instituto CMMI autoriza organizações terceirizadas a ven-
der ferramentas e serviços CMMI, a lista de fornecedores apro-
vados é extensa e você pode pesquisar por produto, localização e
idioma no site do Instituto CMMI.
O tipo de ferramentas CMMI que funcionarão melhor para
sua organização dependerá das necessidades do seu negócio. Se-
guindo o CMMI, você identificará as melhores ferramentas duran-
te o Nível de Maturidade 2 ou 3; neste ponto, seu consultor CMMI
oferecerá recomendações ou ajudará você a projetar ferramentas
personalizadas com base em extensas pesquisas. A categoria
mais comum de ferramentas que você precisará conside-
rar inclui:
10-10
EXERCÍCIOS PROPOSTOS
( ) -a) SDL
( ) -b) CMMI
( ) -c) ITU
( ) -d) ISDN
( ) -e) OSI
10-11
3) Observe as afirmações abaixo:
EX ER C ÍC IO S PR O PO STO S
I) Vamos observar mais uma característica importante do CMMI. Não se
destina apenas ao desenvolvimento de sistemas de software. Muitas gran-
des empresas não produzem software, mas visam produtos, nos quais o
software é incluído como parte integrante.
II) E muitas vezes acontece que mais de dois tipos diferentes de engenha-
ria estão envolvidos em um projeto. A tarefa do CMMI é fornecer a esses
projetos e empresas uma plataforma única para organizar o processo de
desenvolvimento.
III) O CMMI não foi projetado para ajudar a melhorar o desempenho, forne-
cendo às empresas tudo o que precisam para desenvolver consistentemente
melhores produtos e serviços.
Estão INCORRETAS:
( ) -a) I e II
( ) -b) II, somente
( ) -c) I e III
( ) -d) III, somente
( ) -e) I, somente
( ) -a) CMM
( ) -b) CMMI
( ) -c) OSI
( ) -d) SDL
( ) -e) ITU
10-12
III) Cada iteração do CMMI visa ser mais fácil para as empresas entende-
rem e usarem do que a última, e cada modelo foi projetado para ser mais
EX ER C ÍC IO S PR O PO STO S
econômico e mais fácil de integrar ou implantar.
Estão Corretas:
( ) -a) I e II
( ) -b) II e III
( ) -c) I e III
( ) -d) III, somente
( ) -e) II, somente
( ) -a) Inicial
( ) -b) Otimizando
( ) -c) Gerenciado
( ) -d) Definido
( ) -e) Repetível
10-13
( ) -c) Versão 2.0
( ) -d) Versão 1.2
EX ER C ÍC IO S PR O PO STO S
( ) -e) Versão 1.5
10-14
DISCIPLINA:
Engenharia de
Software
UNIDADE 6:
METODOLOGIAS ÁGEIS E
EXEMPLO PRÁTICO
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Conteúdos da Unidade:
Nesta ultima unidade, iremos abordar sobre alguns modelos de me-
todologias ágeis a serem adotadas no desenvolvimento de software,
bem como sobre a importância de seu uso; por fim, será apresentado
um exemplo prático de projeto de sistema de software.
9 Metodologias Ágeis
9 Exemplo prático de projeto de Sistema de Software
Acompanhe os conteúdos desta unidade. Se preferir, vá assinalando
os assuntos, à medida que for estudando.
Bons estudos!!!
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 11:
METODOLOGIAS ÁGEIS
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
11.1 Conceitos básicos
Métodos ágeis de desenvolvimento de software surgiram
como uma alternativa aos métodos formais e Metodologias pesa-
das como CMM e RUP. Programadores talentosos não querem fa-
zer do desenvolvimento de software uma rotina, eles querem ter o
máximo de liberdade e prometer alta eficiência em troca. Por outro
lado, a prática mostra que Metodologias “pesadas” são ineficazes
em um número significativo de casos. Os principais pontos dos
métodos Ágeis consagrados no Manifesto Ágil em 2007
são os seguintes:
11-3
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
O modelo de processo XP parece uma sequência frequente
de lançamentos de produtos, o mais frequente possível. Mas, ao
mesmo tempo, é imperativo que o lançamento inclua uma funcio-
nalidade totalmente nova. A seguir estão os princípios básicos de
organização do processo XP.
11-4
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
correspondente seja implementada. O cliente cria tes-
tes funcionais.
11. Integração contínua. O próprio desenvolvimento é apre-
sentado como uma sequência de lançamentos.
12. Semana de trabalho de 40 horas.
11.3 Kaban
O Método Kanban é um meio de projetar, gerenciar e melho-
rar sistemas de fluxo para o trabalho de conhecimento. O método
também permite que as organizações comecem com seu fluxo de
trabalho existente e impulsionem mudanças evolutivas. Eles po-
dem fazer isso visualizando seu fluxo de trabalho, limitar o traba-
lho em andamento (WIP) e parar de iniciar e começar a terminar.
O Método Kanban recebe seu nome a partir do uso de kanban
– mecanismos de sinalização visual para controlar o trabalho em
andamento para produtos de trabalho intangíveis.
Kanban pode ser usado em qualquer configuração de traba-
lho de conhecimento, e é particularmente aplicável em situações
em que o trabalho chega de forma imprevisível e/ou quando você
11-5
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
quer implantar o trabalho assim que ele está pronto, em vez de
esperar por outros itens de trabalho.
As equipes que aplicam a Kanban para melhorar os
serviços que oferecem abraçam os seguintes valores:
11-6
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
9 Respeito: Valor, compreensão e demonstração de consi-
deração pelas pessoas.
11-7
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
Tornar as políticas explícitas: Políticas explícitas aju-
dam a explicar um processo além apenas da listagem de diferentes
etapas no fluxo de trabalho. As políticas devem ser esparsas, sim-
ples, bem definidas, visíveis, sempre aplicadas e facilmente mutá-
veis pelas pessoas que trabalham no serviço. Exemplos de políticas
incluem: Limites de WIP, alocação de capacidade, definição de
feito e outras regras para itens de trabalho existentes em várias
etapas do processo.
Implementar loops de feedback: Os loops de feedba-
ck são um elemento essencial em qualquer sistema que procura
proporcionar mudanças evolutivas. Os loops feedback usados em
Kanban são descritos na seção Ciclo de vida.
Melhorar de forma colaborativa, evoluir experimentalmente:
Kanban começa com o processo como ele existe atualmente e apli-
ca melhoria contínua e incremental em vez de tentar alcançar uma
meta final predefinida.
Dada a abordagem de Kanban para começar com o seu pro-
cesso existente e evoluí-lo, não há papéis explicitamente solicita-
dos ao adotar Kanban. Use os papéis que você tem atualmente em
sua equipe.
Existem dois papéis que surgiram na prática que servem a
propósitos particulares. É muito provável que essas funções sejam
preenchidas por alguém em uma função existente como mencio-
nado abaixo.
Gerente de Solicitação de Serviço: Entende as necessidades e
expectativas dos clientes, e facilita a seleção e o pedido de itens de
trabalho na Reunião de Reposição. Essa função é frequentemente
preenchida por um gerente de produto, proprietário de produto ou
gerente de serviços.
11-8
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
Gerente de Entrega de Serviços: Responsável pelo fluxo de
trabalho para entregar itens selecionados aos clientes. Facilita o
Planejamento de Reunião e Entrega kanban. Outros nomes para
esta função incluem gerenciador de fluxo, gerenciador de entrega
ou mestre de fluxo.
Como os itens de trabalho tendem a fluir através de um sis-
tema kanban em fluxo de peça única, e cada sistema é diferente em
relação às etapas em seu fluxo de trabalho, a melhor maneira de
descrever o ciclo de vida do método Kanban é através dos loops de
feedback envolvidos.
Esses loops de feedback (cadências) são:
Revisão de Estratégia (Trimestral): Selecione os servi-
ços a fornecer e o contexto em que esses serviços são apropriados.
Revisão de Operações (Mensal): Entenda o equilíbrio
entre e entre os serviços, incluindo a implantação de pessoas e re-
cursos para maximizar a entrega de valor.
Revisão de Risco (Mensal): Entenda e responda aos ris-
cos de entrega nos serviços.
Revisão de entrega de serviços (Bissemanal): Exami-
ne e melhore a eficácia de um serviço. Isso é semelhante a uma
retrospectiva focada em melhorar o sistema kanban.
Reunião de Reposição (Semanal): Identifique itens em
que a equipe trabalhará e determine quais itens de trabalho podem
ser selecionados em seguida. Isso é análogo a uma reunião de pla-
nejamento para um sprint ou iteração.
O Encontro Kanban (Diário): Uma equipe trabalhando
em um serviço coordena suas atividades para o dia. Isso é análogo
a um standup diário.
11-9
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
Reunião de Planejamento de Entrega (Cadência por
entrega): Monitore e planeje entregas aos clientes.
11.4 Scrum
Scrum é a estrutura ágil mais utilizada em todo o mundo.
Quando questionados sobre quais estruturas ágeis, metodologias
ou práticas que utilizam, quase três quartos (72%) das empresas
que participaram da 13ª Pesquisa Anual do Estado Do Ágil, afirma-
ram que o Scrum é seu quadro de escolha. Mais da metade (54%)
dos entrevistados disse que só usa Scrum, enquanto outro quin-
to (18%) usa uma estrutura híbrida, combinando Scrum com XP
ou Kanban.
Em 1986, os especialistas japoneses Hirotaka Takeuchi e
Ikujiro Nonaka publicaram uma mensagem sobre uma nova abor-
dagem para o desenvolvimento de novos serviços e produtos (não
necessariamente software). A abordagem foi baseada no tra-
balho unido de uma pequena equipe universal que desenvolve o
projeto em todas as fases. Uma analogia foi dada com o rugby,
onde toda a equipe se move em direção ao gol do adversário como
um todo, passando (passando) a bola para seus jogadores para
frente e para trás. No início dos anos 90, essa abordagem começou
a ser aplicada na indústria de software e adquiriu o nome de Scum
(um termo do rugby, que significa scrum), em 1995 Jeff Su-
therland e Ken Schwaber apresentaram uma descrição dessa abor-
dagem no OOPSLA ‘95 - um dos as conferências de maior auto-
ridade na área de programação. Desde então, o método tem sido
usado ativamente na indústria e muitas vezes descrito na literatura.
O método Scrum permite a flexibilidade de desenvolver pro-
jetos em equipes pequenas (7 pessoas mais / menos 2) em uma
11-10
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
situação de mudança de requisitos. Ao mesmo tempo, o processo
de desenvolvimento é iterativo e oferece muita liberdade para a
equipe. Além disso, o método é muito simples - é fácil de aprender
e aplicar na prática. Seu circuito é mostrado na figura 11-2:
11-11
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
com o gerenciamento e o cliente ocorre após o final da iteração. A
iteração só pode ser interrompida em casos especiais.
Existem apenas três tipos de funções no Scrum:
Proprietário do produto (Product Owner) é um ge-
rente de projeto que representa os interesses do cliente no projeto.
Suas responsabilidades incluem o desenvolvimento dos requisitos
iniciais para o produto (Product Backlog), sua mudança opor-
tuna de requisitos, a atribuição de prioridades, datas de entrega,
etc. É importante que ele não participe da implementação da pró-
pria iteração.
Scrum Masters (Scrum Master) garante a máxima efici-
ência e produtividade do trabalho da equipe - tanto na execução do
processo Scrum quanto na solução de tarefas econômicas e admi-
nistrativas. Em particular, sua tarefa é proteger a equipe de todas
as influências externas durante a iteração.
Time Scrum (Equipe Scrum) - um grupo de cinco a nove
programadores proativos e independentes. A primeira tarefa da
equipe é definir para a iteração realmente realizável e tarefas prio-
ritárias para o projeto como um todo (com base no Backlog do
projeto e com a participação ativa do product owner e do
Scrum-master). A segunda tarefa é concluir esta tarefa a todo
custo, dentro do prazo estipulado e com a qualidade declarada. É
importante que a própria equipe participe da formulação da tarefa
e ela mesma a execute.
Scrum define as seguintes práticas:
Reunião de planejamento do Sprint: Realizado no iní-
cio de cada Sprint. Primeiro, o proprietário do produto, o Scrum-
-master, a equipe, bem como os representantes do cliente e ou-
tras partes interessadas, determina quais requisitos do Backlog do
11-12
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
projeto são de maior prioridade e devem ser implementados den-
tro deste Sprint. Sprint Backlog está sendo formado. Em seguida,
o Scrum Master e o Time Scrum determinam como os objetivos
acima do Sprint Backlog serão alcançados. Para cada elemento do
Sprint Backlog, uma lista de tarefas é determinada e sua complexi-
dade é estimada.
Reunião Daily Scrum: uma reunião diária de quinze mi-
nutos com o objetivo de compreender o que se passou desde a reu-
nião anterior, adequando o plano de trabalho à realidade de hoje
e identificando formas de resolver os problemas existentes. Cada
membro da equipe Scrum responde a três perguntas: o que fiz des-
de a reunião anterior, meus problemas, o que farei antes da pró-
xima reunião? Qualquer parte interessada pode participar desta
reunião, mas apenas os membros da equipe Scrum têm o direito de
tomar decisões. A regra se justifica pelo fato de terem a obrigação
de atingir a meta, e só isso dá confiança de que será alcançada. Eles
são responsáveis por suas próprias palavras, e se alguém de fora
intervém e toma decisões por eles, ele remove a responsabilidade
pelo resultado dos membros da equipe. Essas reuniões mantêm a
disciplina de comprometimento na equipe Scrum, ajudam a man-
ter o foco nas metas de iteração e ajudam a resolver os problemas
pela raiz. Normalmente, essas reuniões são realizadas em pé, por
15-20 minutos.
Reunião de revisão de sprint: Realizado no final de
cada Sprint. Primeiro, a equipe Scrum demonstra o trabalho do
Dono do Produto realizado durante a Sprint, que por sua vez lide-
ra essa parte da reunião e pode convidar todos os representantes
do cliente interessados a participar. O Product Owner determina
quais requisitos do Sprint Backlog foram atendidos e discute com
a equipe e os clientes a melhor forma de priorizar o Sprint Backlog
para a próxima iteração. Na segunda parte da reunião, é realizada
11-13
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
a análise do sprint anterior, que é conduzida pelo Scrum master.
A equipe Scrum analisa os aspectos positivos e negativos da cola-
boração no último Sprint, tira conclusões e toma decisões impor-
tantes para trabalhos futuros. A equipe Scrum também está procu-
rando maneiras de aumentar a eficácia do trabalho futuro. Então
o ciclo se repete.
11-14
Engenharia de Software 11
METO D O LO G IAS ÁG EI S
A certificação EXIN Agile Scrum Foundation é perfeita para
iniciantes de carreira, membros da Equipe de Desenvolvimento e
qualquer pessoa envolvida em projetos scrum. Está disponível em
dez idiomas diferentes e uma ampla gama de opções de estudo.
Para começar com o processo de aprendizagem, inscreva-se em
nossa introdução gratuita curta ao Agile e Scrum.
As certificações de nível avançado EXIN Agile Scrum Master
e EXIN Agile Scrum Product Owner são especificamente adapta-
das às funções. O que diferencia essas certificações de outras cer-
tificações de nível avançado são as habilidades práticas que você é
obrigado a mostrar antes de obter certificação.
Para scrummers experientes que desejam crescer sua carrei-
ra além disso, há uma certificação Agile Coach disponível. Com a
continuação da adoção e aplicação do Scrum e do Agile, ambos os
domínios têm muitas oportunidades de crescimento.
11-15
EXERCÍCIOS PROPOSTOS
( ) -a) Kaban
( ) -b) Scrum
( ) -c) Scrum Masters
( ) -d) Daily Scrum
( ) -e) XP
11-16
3) O modelo de processo XP parece uma sequência frequente de lançamen-
EX ER C ÍC IO S PR O PO STO S
tos de produtos, o mais frequente possível. Mas, ao mesmo tempo, é im-
perativo que o lançamento inclua uma funcionalidade totalmente nova.
Um dos princípios básicos de organização do processo XP e:
( ) -a) XP
( ) -b) Daily Scrum
( ) -c) Scrum Masters
( ) -d) Kaban
( ) -e) Scrum
11-17
( ) -d) II, somente
( ) -e) I, somente
EX ER C ÍC IO S PR O PO STO S
6) As equipes que aplicam a Kanban para melhorar os serviços que ofere-
cem abraçam um dos seguintes valores:
( ) -a) Scrum
( ) -b) XP
( ) -c) Daily Scrum
( ) -d) Scrum Masters
( ) -e) Kaban
11-18
( ) -c) A flexibilidade de desenvolver projetos em equipes peque-
nas (7 pessoas mais / menos 2) em uma situação de mudan-
EX ER C ÍC IO S PR O PO STO S
ça de requisitos.
( ) -d) Reagir às mudanças em vez de seguir um plano.
( ) -e) Planning Game, que parte do princípio de que o desenvolvi-
mento de software é um diálogo entre possibilidades e dese-
jos, e ambos vão mudar.
11-19
DISCIPLINA:
Engenharia de
Software
CAPÍTULO 12:
EXEMPLO PRÁTICO DE PROJETO
DE SISTEMA DE SOFTWARE
Engenharia de Software 12
12-2
Engenharia de Software 12
12-3
Engenharia de Software 12
12.2.4 Brackets
Esse será o ambiente de desenvolvimento usado para codifi-
cação da aplicação. Este trata-se de um editor de texto leve e que
organiza de maneira simples os códigos digitados nele. É possível
trabalhar com pastas, codificações de texto, além de outros recur-
sos específicos do desenvolvedor. Outro fator importante, é o fato
de este ser de código aberto.
Fonte: http://brackets.io/img/hero@2x.png
1 Tradução do autor.
12-4
Engenharia de Software 12
12-5
Engenharia de Software 12
12-6
Engenharia de Software 12
Código Descrição
O usuário deve ser capaz de registrar e gerenciar seus
RF01
compromissos online a qualquer momento.
O banco de dados deve armazenar todas as informações
RF02
de forma eficiente, sem qualquer perda de informações.
O usuário deverá poder buscar os médicos por especiali-
RF03
dade, nome, horário de trabalho e / ou sexo.
O usuário pode alterar as informações do seu perfil a
RF04
qualquer momento
Os médicos podem gerenciar todos os compromissos
RF05
marcados com ele em sua conta.
12-7
Engenharia de Software 12
12-8
Engenharia de Software 12
12-9
Engenharia de Software 12
No caso de uso acima, o usuário deve criar seu login para que
possa ter acesso aos recursos do sistema. Vale ressaltar que é pos-
sível criar uma conta apenas como paciente, os doutores têm con-
tas feitas direto pelo banco de dados. Cada tipo de usuário, possui
seus devidos recursos para acesso.
12-10
Engenharia de Software 12
12-11
Engenharia de Software 12
12-12
Engenharia de Software 12
12-13
EXERCÍCIOS PROPOSTOS
( ) -a) Relacional
( ) -b) Não relacional
( ) -c) Programável
( ) -d) Que não possui linguagem
( ) -e) N.R.A
( ) -a) MySQL
( ) -b) SqlServer
( ) -c) Wampserver
( ) -d) Brackets
( ) -e) VisualCode
12-14
4) A IDE, ou seja, um ambiente de desenvolvimento é fundamental para o
EX ER C ÍC IO S PR O PO STO S
desenvolvimento de qualquer sistema. No caso do exemplo apresentado,
a IDE escolhida foi:
( ) -a) Wampserver
( ) -b) Brackets
( ) -c) Sublime Text
( ) -d) Visual Code
( ) -e) N.R.A
12-15
( ) -a) Case de Interface 01
( ) -b) Caso de Uso 01
EX ER C ÍC IO S PR O PO STO S
( ) -c) Caso de Unidade 01
( ) -d) Caso de Unificação 01
( ) -e) Case of UX 01
( ) -a) Desenvolvedores
( ) -b) Gerentes de projeto
( ) -c) Usuários
( ) -d) Visitantes
( ) -e) N.R.A
12-16
REFERÊNCIAS
13-1
KULYAMIN, V.V. Tecnologia de programação. Abordagem de
componentes. Moscou: Internet University of Information Technolo-
R EFER ÊN CI AS
gies; BINOMIAL. Laboratório de Conhecimento, 2007.
PHP, Site oficial da empresa. O que é o php?. Disponível em: < https://
www.php.net/manual/pt_BR/intro-whatis.php> Acesso em 18 out. 2021.
13-2
" GABARITO
Capítulo 1:
1) (b) 6) (a)
2) (d) 7) (c)
3) (c) 8) (b)
4) (a) 9) (a)
5) (e) 10) (c)
Capítulo 2:
1) (d) 6) (b)
2) (a) 7) (a)
3) (b) 8) (d)
4) (e) 9) (b)
5) (c) 10) (b)
Capítulo 3:
1) (c) 6) (b)
2) (a) 7) (a)
3) (b) 8) (c)
4) (e) 9) (d)
5) (d) 10) (a)
14-1
Capítulo 4:
G ABAR I TO
1) (a) 6) (b)
2) (e) 7) (d)
3) (b) 8) (c)
4) (d) 9) (b)
5) (a) 10) (a)
Capítulo 5:
1) (b) 6) (c)
2) (a) 7) (d)
3) (c) 8) (a)
4) (b) 9) (c)
5) (e) 10) (e)
Capítulo 6:
1) (a) 6) (d)
2) (c) 7) (b)
3) (e) 8) (c)
4) (b) 9) (a)
5) (a) 10) (c)
Capítulo 7:
1) (a) 6) (a)
2) (d) 7) (d)
3) (b) 8) (b)
4) (e) 9) (a)
5) (b) 10) (c)
14-2
Capítulo 8:
G ABAR I TO
1) (a) 6) (e)
2) (c) 7) (b)
3) (b) 8) (b)
4) (d) 9) (c)
5) (a) 10) (e)
Capítulo 9:
1) (a) 6) (a)
2) (e) 7) (c)
3) (b) 8) (a)
4) (d) 9) (e)
5) (b) 10) (a)
Capítulo 10:
1) (b) 6) (d)
2) (a) 7) (b)
3) (d) 8) (c)
4) (a) 9) (a)
5) (c) 10) (e)
Capítulo 11:
1) (a) 6) (e)
2) (e) 7) (b)
3) (b) 8) (a)
4) (d) 9) (c)
5) (a) 10) (a)
14-3
Capítulo 12:
G ABAR I TO
1) (c) 6) (b)
2) (a) 7) (b)
3) (c) 8) (c)
4) (b) 9) (e)
5) (a) 10) (c)
14-4
1º EDIÇÃO - 2021
Editora
SÃO PAULO/ SP