Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidade I
Engenharia de Software e Processos de Apoio
1
MORENO, Edson Quedas
41 p. : il.
5
1. FUNDAMENTOS DA ENGENHARIA DE SOFTWARE
6
Esses componentes devem ser implementados de modo que possam ser
reusados, ou seja, que possam ser adaptados a novas plataformas e ambientes
operacionais. O reuso de um componente é uma atividade natural no processo de
engenharia. A reusabilidade do software é uma métrica de qualidade usada para avaliar
o quanto um programa ou parte dele pode ser usada em outras aplicações.
O software é o produto mais importante desta última era. Devido a sua dualidade
com o hardware que com o passar do tempo melhora o desempenho, diminui o
tamanho e reduz o custo, um software bem elaborado permite que sua evolução
produza sistemas mais sofisticados. O software possui um duplo papel na
produção, não só pode constituir um produto completo, como também pode ser o
veículo de melhora de outro produto.
Exemplos:
Como produto de software – podemos citar toda a linha de software que
normalmente são comercializados, tais como software de sistema e de aplicação. Um
exemplo simples seria o produto Word da Microsoft.
Existem dois tipos de produtos de software (SOMMERVILLE, 2006):
1. Produtos genéricos – são sistemas do tipo stand-alone, produzidos e
comercializados no mercado a qualquer cliente.
2. Produtos sob encomenda (ou personalizados) – são sistemas
encomendados por um cliente em particular, que é desenvolvido com base em
requisitos específicos para um determinado negócio.
7
produtos, sejam por necessidade, correções ou melhorias, são feitas por substituições
de peças ou concerto. Os problemas de qualidade ou manutenção do hardware
podem ser corrigidos pela manufatura, o que não ocorre com o software.
O software não “se desgasta”, mas “se deteriora”! O software não é suscetível aos
males ambientais, que causam desgaste do hardware, mas sim devido às mudanças que
ocorrem no ciclo de vida do software (PRESSMAN, 2011).
Figura 1 – Gráficos comparativos da curva de falhas do hardware em relação à curva de falhas do software
9
Software de tempo real: é um software que monitora / analisa / controla
eventos do mundo real, exige um controle / saída que responde ao ambiente externo
e um componente de monitoração que coordena todos os demais componentes de
forma a obter resposta em tempo real (que, tipicamente, varia de 1 milissegundo até
1 minuto) possa ser mantido. O termo “tempo real” difere do “interativo” ou “time-
sharing” que podem exceder o tempo de resposta sem resultados desastrosos;
Softwares empresariais: de maior área de aplicação. Distintos “sistemas
de informação” que processam folhas de pagamentos, contas a pagar e a receber,
estoques etc. Os tipos mais comuns de sistemas de informação estão na categoria do
e-business (negócios eletrônicos). São eles: ERP (Enterprise Resource Planning) –
Planejamento dos Recursos Empresariais; CRM (Customer Relationship
Management) – Gerenciamento das Relações com o Cliente; e SCM (Supply Chain
Management) – Gerenciamento da Cadeia de Suprimentos.
Software para web: as páginas da Web recuperadas por um browser
constituem software que incorpora instruções executáveis (p. ex., CGI, HTML, Pearl
ou Java) e dados (p. ex., hipertexto e uma variedade de formatos visuais e de áudio).
Com esses recursos tecnológicos, surgem os sistemas e aplicações baseados na
Web, as WebApps. Nessa categoria estão também o comércio eletrônico (e-
commerce), estruturado pelas tecnologias: B2B (business to business), B2C
(business to consumer) e C2C (consumer to consumer). E a tecnologia cloud
computing (computação em nuvem).
Software científico e de engenharia: é caracterizado por algoritmos de
processamento de números. As aplicações variam da astronomia a vulcanologia, da
análise de fadiga de mecânica à dinâmica orbital de naves espaciais recuperáveis, e
da biologia molecular à manufatura automatizada.
Software embutido: O software embutido (embedded software) reside na
memória ROM e é usado para controlar produtos e sistemas para mercados industriais
e de consumo. Pode ser usado para controlar também funções muito limitadas, tais
como o controle de um forno de micro-ondas e funções digitais de automóveis.
Software aplicativo para microcomputadores: Processamento de
textos, planilhas eletrônicas, computação gráfica, diversões, gerenciamento de banco
de dados etc. De fato, o software de computador pessoal continua a representar os
mais inovadores projetos de interfaces com seres humanos de toda a indústria de
software.
Software de inteligência artificial (Artificial Intelligence – AI). Faz uso
de algoritmos não numéricos para resolver problemas complexos que não sejam
favoráveis à computação ou à análise direta. Atualmente, a área de AI mais ativa é a
dos sistemas especialistas, também chamados sistemas baseados em conhecimento.
Outras áreas de aplicação: são o reconhecimento de padrões (voz e imagem), jogos
e demonstração de teoremas. Atualmente a chamada rede neural artificial simula a
estrutura dos processos cerebrais e pode levar a uma nova classe de software que
consegue reconhecer padrões complexos e aprender com a “experiência” passada.
10
1.3. Qualidade, processos, métodos e ferramentas
(PRESSMAN, 2011; 2002)
FERRAMENTAS
MÉTODOS
PROCESSOS
FOCO NA QUALIDADE
11
Construção – constitui a tarefa de codificação (geração do código),
depuração (exame e limpeza dos dados, do código e da interface) e geração de
diagnósticos.
Implementação / Implantação – é a entrega do software ao cliente, que
por sua vez fornece feedbacks de avaliação, validação e aceite do produto de
software.
12
Essas e muitas outras perguntas manifestam a preocupação relativa ao
software e à maneira pela qual ele é desenvolvido, o que leva à prática da engenharia
de software. Com base nessas questões, Sommervillle (2003) descreve: “atualmente
a engenharia de software enfrenta três principais desafios”:
1 – O desafio do legado
Atualmente uma grande parte dos sistemas de software em utilização foi
desenvolvida no passado, em uma época em que as linguagens não eram nem
orientada a objetos, mas esses sistemas ainda operam importantes funções
corporativas e controlam grandes quantidades de eventos em uma grande massa de
dados. O desafio do legado é fazer a manutenção e atualização desses sistemas
a custos baixos, com qualidade e prosseguir com a prestação de serviços
corporativos essenciais.
2 – O desafio da heterogeneidade
Exige-se cada vez mais que os sistemas operem como sistemas distribuídos
atuando por meio de redes que possuem diferentes tipos de arquiteturas de
computadores e diferentes tipos de sistemas operacionais. O desafio da
heterogeneidade é desenvolver técnicas para construir sistemas confiáveis e
flexíveis o bastante para lidar com essa heterogeneidade.
3 – O desafio do fornecimento
Muitas técnicas de engenharia de software tradicionais são muito demoradas,
nos dias atuais existe uma demanda enorme de sistemas que sejam desenvolvidos
no menor tempo possível e com facilidade de adaptação as mudanças. O desafio do
fornecimento é entregar sistemas grandes e complexos, com a qualidade
desejada e em curto espaço de tempo.
Mitos de gerenciamento
13
Mito: se estamos atrasados com prazo, podemos adicionar mais usuários
ou programadores?
o Realidade: o desenvolvimento de software não é um processo
manufaturado.
Mito: temos software de última geração e compramos os mais novos
computadores. Por que ainda estamos atrasados?
o Realidade: é preciso muito mais do que o último modelo de computador
para se trabalhar com um software de alta qualidade. As operações com os novos
softwares / sistemas são mais importantes do que o hardware para se conseguir boa
qualidade e produtividade, tais operações dependem do treinamento do pessoal.
14
1.6. Exercício discursivo comentado
15
2. PROCESSO DE SOFTWARE
Estruturar as funcionalidades
com base nos requisitos, dados
e atividades da organização.
16
Sistema (System Development Life Cycle – SDLC)”. Que é um roteiro que ajuda a
criar a tempo um resultado de alta qualidade. Os Modelos de Processos de Software
englobam um conjunto de atividades, métodos, práticas e transformações, a serem
empregadas no desenvolvimento e manutenção do software. Fornecem estabilidade,
controle e organização para as atividades.
17
Figura 4 – Modelo básico do processo
PROCESSO
(*) Funcionalidade: uma ou várias funções que empregam recursos e lógicas similares,
tecnologias comuns e que capacitam o produto software a prover funções que atendam
as necessidades externas e internas do software / sistema.
Atividades de estrutura
Conjunto de tarefas
Tarefa
18
O grupo SQA mostrado na figura 5 acompanha os resultados de cada tarefa,
cada atividade e consequentemente de cada processo do desenvolvimento do
software. O grupo SQA cuida para que os resultados qualitativos e quantitativos não
desviem de seus objetivos e metas, garantindo a eficácia de cada item.
De acordo com o escopo do projeto, o processo é estruturado em vários módulos
(ou componentes), com base: no tamanho do processo, sua complexidade, qualidade
exigida e tecnologia a ser implementada. A figura 6 mostra como é a estrutura genérica
de um processo e os elementos que a compõem.
PROCESSO
PROCEDIMENTO 1 PROCEDIMENTO 2
19
2.1.3. Análise dos recursos para o projeto do processo
21
Figura 7 – Modelo de estrutura organizacional para o desenvolvimento do software
PLANEJAMENTO
Nesta fase são levantados os requisitos do software com
base nas arguições sobre os negócios, necessidades dos
clientes/usuários e restrições do sistema.
22
desenvolvimento do software, se dá de forma sequencial encadeada e
refletem as atividades fundamentais do desenvolvimento (PRESSMAN,
2011).
Figura 8 – Modelo Cascata para o desenvolvimento do software com suas principais atividades
DEFINIÇÃO DE
REQUISITOS
PROJETO DE SISTEMAS
E DE SOFTWARE
IMPLEMENTAÇÃO E
TESTES DE UNIDADES
INTEGRAÇÃO E
TESTES DE SISTEMAS
OPERAÇÃO E
MANUTENÇÃO
2.3.2. Prototipagem
Figura 9 – Maquete produzida para uma obra, desenhada pela arquitetura com uso de computação gráfica
24
Segunda abordagem – a entrega da prototipação concisa deve conter
definições do sistema e especificações para o usuário final. Como consequência, o
envolvimento e satisfação do usuário final são fortemente aumentados.
Última abordagem – a prototipação possibilita testar rapidamente o
ambiente de desenvolvimento voltado para a funcionalidade, desempenho e interface
de dados.
Dentro dessa visão, o projeto passa por várias investigações para garantir que
o desenvolvedor, usuário e cliente cheguem a um consenso sobre o que é necessário
e o que deve ser proposto. Como muitos usuários não possuem uma visão ampla
sobre a tecnologia, esse método de desenvolvimento é bastante interessante,
permitindo que o usuário interaja significativamente no sistema.
As atividades da prototipagem podem ser determinadas a partir do
paradigma de prototipagem, apresentado por Pressman (2002), como é mostrado na
figura 10. Um procedimento do analista a ser seguido, é mostrado no diagrama abaixo:
O cliente testa
o protótipo
25
Vantagens da prototipagem
Desvantagens da prototipação
O cliente não sabe que o software que está testando ainda não foi concluído
e não o considera no desenvolvimento, a qualidade global e a manutenibilidade a
longo prazo.
A prototipação pode dar ao usuário a impressão que praticamente qualquer
sugestão pode ser implementada, não importa qual estágio do processo de
desenvolvimento está. Além disso, para os usuários não está claro o porquê da
demora em entregar a aplicação final, depois que uma versão demo do sistema foi
exibida. A cliente não aceita bem a ideia de que a versão final do software ainda vai
ser construída e “força” a utilização do protótipo como produto final.
26
Figura 11 – Modelo de processo incremental
Funcionalidade
n Incrementos
Incremento 2 Comunicação
Incremento 1 Comunicação Planejamento
Comunicação Planejamento Modelagem
Implantação
Modelagem Construção
Construção Implantação
Implantação Entrega do
Incremento 2
Entrega do
Incremento 1
Fonte: adaptado de Pressman (2007). Tempo
27
Redistribuição contínua de tarefas para os envolvidos ao longo do projeto.
Encoraja a participação ativa dos usuários.
Identifica falhas, riscos e dúvidas no projeto.
Identifica inconsistência entre a análise, projeto e implementação.
28
O modelo espiral basicamente é dividido em quatro setores
ATIVAÇÃO Define-se os objetivos específicos, identificam-se as restrições para o
processo e é preparado um plano de gerenciamento detalhado. Identificam-se também
os riscos sem os analisar profundamente (foco da próxima fase).
ANÁLISE de RISCOS Com base nos riscos identificados na fase anterior são
realizadas análises detalhadas, e tomadas providências para amenizar esses riscos.
Criam-se várias versões de protótipos para apoiar essa fase.
DESENVOLVIMENTO Fundamentado pelas fases anteriores escolhe-se o modelo
mais adequado para o desenvolvimento do Sistema. A bagagem profissional e a vivência
do desenvolvedor em outros sistemas, são estratégicas para essa fase. Dependendo da
complexidade do Sistema, às vezes, é necessária a presença de um consultor
especialista.
PLANEJAMENTO O projeto é revisto nessa fase, e é tomada uma decisão de realizar
um novo ciclo na espiral ou não. Se continuar com o aperfeiçoamento do Sistema, é traçado
um plano para a próxima fase do projeto. Um diferencial nesse modelo comparado com
outros, é a explícita consideração de riscos dentro do projeto como um todo. Para tanto, criou-
se uma fase específica de Análise de Riscos nesse modelo.
29
Figura 13 – Plataforma de trabalho RUP pela Web
30
Tendo como base o desenvolvimento iterativo é possível acomodar novos
requisitos ou mudanças, aperfeiçoar o entendimento do projeto a cada refinamento
sucessivo, endereçando os itens de risco e permitindo identificar e atenuar os riscos
que circundam o projeto.
Cada iteração pode corresponder a um novo release do sistema, e isso diminuir o
risco do projeto, permitindo ao cliente uma avaliação do progresso do projeto e de sua
gerência (KRUCHTEN, 2001).
Gestão de requisitos
Documentar apropriadamente é crucial para o sucesso de um grande projeto.
O RUP é conduzido por Casos de Uso e sustentado em outros diagramas da UML.
O RUP descreve como documentar as funcionalidades, restrições do sistema,
restrições do projeto e requisitos através de Casos de Uso (Use Cases), desde a
análise de requisitos até o teste do sistema finalizado. “Os casos de uso e cenários
são exemplos de artefatos do processo, que se mostram altamente eficazes para
documentar os requisitos funcionais” (KRUCHTEN, 2000).
31
2.4.2. Fases e workflow (ou disciplinas de trabalho)
Cada ciclo do RUP se divide em fases e o ciclo resulta numa nova geração do
produto ou parte dele. Cada fase se divide em iterações a definir em cada projeto
concreto. O RUP possui quatro fases, seis disciplinas de trabalho e três
disciplinas gerenciais.
Na figura 14 as fases são apresentadas na dimensão horizontal e o workflow
na dimensão vertical, como disciplinas.
As atividades são
agrupadas em O desenvolvimento é
workflows expresso em ciclos, fases e
iterações.
Estrutura dinâmica
32
destas fases se verifica se os objetivos da fase foram concluídos. Após completar as
quatro fases, uma versão release do software está completa, e para cada nova versão
o software passará por todas as fases novamente (desenvolvimento evolucionário).
Iniciação/concepção (inception/conception)
o Definir o escopo e as fronteiras do sistema (contrato com o cliente).
o Elaborar casos de uso críticos ao sistema (atores e requisitos).
o Elaborar o business case do sistema, que deve incluir os critérios de
sucesso, avaliação de riscos, uma estimativa de recursos e um cronograma dos
pontos mais importantes.
o No final: obter concordância dos stakeholders, compreensão dos
requisitos e credibilidade nas estimativas. O projeto pode ser cancelado ou
fortemente reformulado se falhar este marco.
Construção (construction)
o Minimizar custos através da utilização ótima de recursos.
o Desenvolver versões utilizáveis.
o Completar os processos de análise, projeto, implementação e testes das
f uncionalidades do sistema.
o Desenvolver de maneira iterativa e incremental um produto que esteja
pronto para ser entregue aos usuários, um manual e uma descrição da versão
corrente.
o Decidir se o software, o site e os usuários estão prontos para a implantação do
sistema.
o No final: a disponibilização pode ser adiada se os critérios não forem
cumpridos.
Transição / implantação (transition) – Atividades de entrega do software
o Testar para validar o novo sistema.
o Treinar usuários e pessoas responsáveis pela manutenção.
33
o Iniciar as tarefas de marketing e distribuição.
o No final: obter satisfação dos clientes, gastos e custos dentro do aceitável.
Estrutura estática
Na estrutura estática, o RUP é representado por suas 9 disciplinas (seis
disciplinas de trabalho e três disciplinas gerenciais). Cada uma delas utiliza quatro
elementos primários de modelagem: papéis, atividades, artefatos e workflows.
Papéis
o Descreve o comportamento e responsabilidades de um indivíduo ou grupo
de indivíduos de uma equipe.
o O comportamento de cada papel é dado pelo conjunto de atividades
desempenhadas por ele.
o As responsabilidades de cada papel estão associadas a artefatos que
devem ser desenvolvidos ao longo do processo.
o Exemplo de papéis: especificador de casos de uso, arquiteto de softwares,
projetista de interface, gerente de projetos.
Atividades
o Realizadas pelos papéis, consistem em ações que atualizam ou geram
artefatos.
o A granularidade de uma atividade é expressa em horas ou dias.
o As atividades são divididas em etapas de tarefas: entendimento, realização,
revisão.
Atividade Papel
Artefatos
o Informações produzidas, modificadas ou utilizadas ao longo do
desenvolvimento de software.
o São utilizados como entrada para atividades e são produzidos como saída.
Exemplos: modelos (de caso de uso, projetos), documentos (plano de
negócios, conjunto de artefatos, plano de projeto), código-fonte.
34
Workflow
o Define uma sequência de atividades que produzem resultados
observáveis na forma de artefatos.
o Podem ser expressos em forma de diagramas de sequência, colaboração,
atividades.
o O workflow é apresentado em seis disciplinas de trabalho e três disciplinas
gerenciais, descritas a seguir.
Disciplinas de trabalho
Disciplinas gerenciais
35
2.5. Modelos de processo pessoal e de equipe
36
A proposta do PSP como mostra a figura 15 é interagir com as práticas organizacionais
da qualidade (por exemplo: ISO 9001 e ISO 9126) e de modelos de qualidade (por exemplo:
CMMI e SPICE), de forma que os processos pessoais sejam conhecidos, controlados e
melhorados.
PSP0 – Processo referencial: estabelecer práticas de medidas e alguns
formatos de relatórios que constituem o referencial para a implantação da melhoria
contínua pessoal. Não afeta as práticas de projeto, codificação e teste; apenas mede.
PSP1 – Processo de planejamento pessoal: acrescenta um relatório
sobre testes e práticas de estimativa de tamanho e recurso. Depois introduz o
planejamento de tarefas e a elaboração de cronogramas.
PSP2 – Processo de gestão pessoal da qualidade: introduz as técnicas
de inspeção e revisão para detecção de erros mais cedo.
PSP3 – Processo pessoal cíclico: os níveis 0 a 2 são aplicáveis a
pequenos programas. Para grandes projetos, é preciso usar os princípios contidos no
nível PSP3.
Conceito e estrutura
37
A equipe planeja o próprio trabalho, acompanha o progresso e gerencia as
tarefas do dia a dia.
Cada membro da equipe tem papéis e responsabilidades definidos.
Todos os membros participam do planejamento do projeto e da tomada de
decisões chave.
A equipe é proprietária dos seus processos e pode mudá-los sempre que
necessário.
Os processos da equipe são baseados em sua experiência, conhecimento
e maturidade.
As equipes aplicam práticas do Nível 5 do CMMI.
38
De acordo com Pressman, a engenharia de software é uma tecnologia em
camadas e que deve se apoiar num compromisso organizacional com o foco na
qualidade. Explique as camadas da engenharia de software e de pelo menos um
exemplo de tecnologia da engenharia de software para cada camada.
Resposta:
Processo – mantém integradas as camadas de tecnologia, permitindo o
desenvolvimento racional e oportuno do software. Os processos formam a base para
o controle gerencial de projetos de software e estabelecem os métodos técnicos, os
produtos de trabalho (modelos, documentos, dados, relatórios, formulários), marcos
de referência, asseguram a qualidade e modificações geradas adequadamente.
Exemplo: Processo de Configuração do Software.
Métodos – fornecem a técnicas de como fazer para construir software.
Incluem um amplo conjunto de tarefas que abrangem análises de requisitos, projeto,
modelagem, construção de programas, testes e manutenção.
Exemplo: Métodos Ágeis de Software.
Ferramentas – fornecem apoio automatizado ou semiautomatizado para o
processo e para os métodos.
Exemplo: ferramenta CASE – Computer-aided Software Enginnering.
39
REFERÊNCIAS
40
https://www.docsity.com/en/cyclic-personal-process-software-quality-lecture-
slides/80929/. Acesso em: nov. 2017.
Project Management Body of Knowledge (PMBOK). Um guia do conhecimento em
gerenciamento de projetos (Guia PMBOK). 4. ed. Atlanta, USA: Project
Management Institute, Inc. 2010.
PRESSMAN, Ph.D. Roger S. Engenharia de software. 6. ed. Rio de Janeiro:
McGraw-Hill, 2007.
REZENDE, Denis Alcides. Engenharia de software e sistemas de informação. 3. ed.
Rio de Janeiro: Brasport, 2005.
O’BRIEN, JAMES A. Sistemas de informação e as decisões gerenciais na era da
internet. São Paulo: Saraiva, 2002.
ROCHA, Roberto dos Santos. Modelagem do processo de desenvolvimento e
manutenção de software para a UINFOR/UESB. Bahia: UINFOR/UESB, 2006.
Artigo.
SERRA, Ana Paula. Modelos de processo pessoal e de equipe. São Paulo:
Conferência da Qualidade de Software, 4., Universidade São Judas.
SOMMERVILLE, Ian. Engenharia de software. São Paulo: Addison-Wesley, 2003.
STAIR, Ralph M.; REYNOLDS, George W. Princípios de sistemas de informação:
uma abordagem gerencial. 6. ed. São Paulo: Pioneira – Thomson Learning, 2006.
41