Buscar

2 Conceitos de Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Conceitos de Engenharia de 
Software
O software
O software
• É a mais importante tecnologia do cenário mundial, ótimo exemplo
da lei das consequências não intencionais
• A manutenção de software absorve mais pessoas e recursos que a 
criação do mesmo
• As pessoas apostam seu conforto, sua segurança, seu 
entretenimento, suas decisões e suas próprias vidas em software. 
Tomara que estejam certas!
A natureza do software
• Ele tem duplo papel: é o produto e também o veículo de distribuição
do produto.
• Ele distribui o produto mais importante da nossa era: a informação.
• Ex.: Ele transforma a informação de quanto você tem na conta para dinheiro 
físico.
• Com a evolução do hardware, e a criação de variadas opções de
entrada, o software foi se tornando cada vez mais complexo,
sofisticado (e problemático).
Questões a serem respondidas ainda hoje
Mesmo com toda a tecnologia moderna:
• Por que a conclusão de software leva tanto tempo?
• Por que os custos de desenvolvimento são tão altos?
• Por que não conseguimos encontrar todos os erros antes de 
entregarmos o software ao cliente?
• Por que gastamos tanto tempo e esforço realizando a manutenção de
programas existentes?
• Por que ainda temos dificuldades de medir o progresso de 
desenvolvimento e a manutenção de um software?
A natureza do software
• O “problema” de se lidar com software é que ele é mais um produto 
lógico que um produto físico.
• Ele não se “desgata”, mas certamente se deteriora. (Curva da 
banheira para hardware [muitos defeitos no início e no fim da vida]/ 
curva da taxa de defeitos para software [defeitos no início e 
estabilidade no resto da vida {?})
• O desgaste contraditório vem por causa das modificações pelas quais 
o software passará.
• Quando um hardware se desgasta, substituímos. Software não.
E por fim, grandes desafios.
• Softwares baseados na internet com todas as restrições de rede
• Aplicativos para celular que devem “caber” em muitos tipos de 
dispositivos móveis
A engenharia de software
Fatos a se considerar
• Software está profundamente incorporado em praticamente todos os 
aspectos de nossas vidas, o que faz com que tenha milhões de 
pessoas interessadas nos seus serviços.
• Então: é preciso compreender o problema dessas pessoas antes de 
desenvolver o software.
• Software se tornou muito complexo, muitas vezes desenvolvido por 
equipes grandes de profissionais com experiências diferentes e 
modos diferentes de trabalhar.
• Então: projetar é essencial.
Fatos a considerar
• Pessoas, negócios e governos dependem de software para sobreviver. 
• Então, software deve ter uma qualidade elevada.
• Se uma aplicação se tornar essencial à vida de pessoas, empresas e 
governo, sua longevidade também deve ser grande.
• Então, software tem se ser passível de manutenção.
• Ou seja, software precisa passa por processos de engenharia.
Como tudo começa? 
• Todo projeto de software é motivado por alguma necessidade de 
negócios –
1. a necessidade de corrigir um defeito em uma aplicação existente; 
2. a necessidade de adaptar um sistema legado a um ambiente de 
negócios em constante transformação; 
3. a necessidade de ampliar a funções e os recursos de um aplicação 
existente ou
4. a necessidade de criar novo produto, serviço ou sistema. 
A pirâmide de Pressman
Sobre engenharia de software
• O principal foco da engenharia sempre vai ser a qualidade.
• O processo é a base. Define metodologias a serem seguidas para a 
produção de artefatos, o desenvolvimento racional e a entrega no 
prazo.
• Métodos são tarefas técnicas a serem executadas (comunicação, 
análise de requisitos, modelagem de projeto, construção de 
programa, testes e suporte)
• Ferramentas fornecem suporte automatizado ou semi automatizado 
para o processo e para os métodos.
O processo de software
• Um processo define quem está fazendo o quê, quando e como para atingir 
determinado objetivo.” – Ivar Jacobson, Grady Booch e James Rumbaugh
• Processo é o conjunto de atividades, ações e tarefas (nomes do 
vocabulário do engenheiro) para a produção de artefatos.
• A atividade se concentra em objetivos amplos (comunicar, projetar, 
construir, etc.). 
• Sempre vai existir, em qualquer projeto.
• A ação resulta em artefatos de software fundamentais (ex.: modelo 
arquitetural, lista de requisitos, protótipo)
• A tarefa se concentra em objetivos pequenos e definidos (ex.: realizar 
testes de unidades, construir casos de uso, etc.)
Processo de software
• É apenas um guia, não uma prescrição rígida de como-se-deve-fazer.
Metodologias de Processo
• Também chamado de framework
• Conjunto de atividades metodológicas aplicáveis a todos os projetos 
de software, independente do tamanho ou complexidade.
• Engloba também atividades de apoio aplicáveis a todo processo de 
software
• As atividades metodológicas genéricas são: comunicação, 
planejamento, modelagem, construção e entrega.
Atividades metodológicas genéricas
• Comunicação: entender os objetivos dos envolvidos (stakeholders) e reunir 
os requisitos dos clientes. O que desenvolver?
• Planejamento: Criar um “mapa” (projeto de software), onde se define o 
trabalho de engenharia de software, descreve as tarefas técnicas a serem 
conduzidas, os riscos produzidos, os produtos resultantes e um 
cronograma de trabalho.
• Modelagem: criar um “esboço” para que se possa ter ideia do todo e o 
refina até que se tenha uma compreensão boa do problema.
• Construção: Geração de código e testes.
• Entrega: implementação do software, treinamento e feedback do cliente.
Atividades de apoio
• São complementos das atividades metodológicas
• Se concentram principalmente em gerenciamento, acompanhamento 
e controle do projeto.
• São elas: Controle e acompanhamento do projeto, Administração de 
riscos, Garantia de qualidade de software, Revisões técnicas, 
Medição, Gerenciamento da configuração de software, 
Gerenciamento de capacidade de reutilização, Preparo e produção de 
artefatos de software.
A essência da prática
• Segundo George Polya, no livro How to solve it (Como resolver 
problemas), a solução de problema é (aplicável a Engenharia de 
Software):
• Compreender o problema (comunicação e análise)
• Planejar uma solução (modelagem e projeto de software)
• Executar o plano (geração de código)
• Examinar o resultado para ter precisão (testes e garantia de qualidade)
1º passo: Compreenda o problema
Tente responder a essas perguntas:
• Quem tem interesse na solução do problema? (os stakeholders?)
• Quais são as incógnitas? (dados, funções e recursos necessários para 
resolver o problema?)
• O problema pode ser compartimentalizado? (problemas menores, 
mas fáceis de serem compreendidos?)
• O problema pode ser representado graficamente? (É possível criar um
“esboço” [modelo analítico]?)
2º passo: Planeje a solução
• Você já viu problemas semelhantes anteriormente? (Existem padrões 
ou algum software já projetado que resolva o problema?)
• Algum problema semelhante já foi resolvido? (Existem elementos da 
solução que podem ser reutilizados?)
• É possível definir subproblemas? (Existem soluções óbvias e imediatas 
pra eles?)
• É possível criar um modelo pra esse problema?
3º passo: Leve o plano adiante
• Obs.: O projeto elaborado serve como um mapa, mas ele não é 
exaustivo. Existem desvios que provavelmente teremos que fazer, no 
entanto segui-lo nos permite não nos perder.
• A solução é adequada ao plano?
• Todas as partes componentes da solução estão provavelmente 
corretas? (O projeto e o código gerado foram revisados?)
4º passo: examine o resultado
Obs.: Não existe perfeição, mas existe uma quantidade suficiente de 
testes.
•É possível testar cada parte componente da solução?
• A solução produz resultados adequados aos dados, às funções e às 
características necessárias? (O software foi validado em todas as 
exigências do cliente?)
Princípios gerais (no maior nível de abstração)
• A razão de existir: O software existe sempre para agregar valor para 
seus usuários. Se algo não agrega valor real ao sistema, não o faça.
• KISS (Simplifique!): O sistema deve ser o mais simples possível, mas 
isso não significa que ele deve abdicar de funções essenciais, nem 
que deva existir gambiarras nele.
• Mantenha a visão: Manter o objetivo inicial coeso e claro é 
importantíssimo para que o sistema não vire uma bagunça. É aqui
que entra o arquiteto.
• O que um produz, o outro consome: Sempre especifique, projete e 
implemente ciente de que alguém mais terá que entender o que você 
está fazendo.
Princípios gerais
• Esteja aberto para o futuro: O sistema tem que ser implementado 
para ser longevo, portanto deve ser adaptável a mudanças e nunca 
ser limitado e “final”. (Principalmente WebApps)
• Planeje com antecedência, visando reutilização: Ao planejar algo para 
ser reutilizável, há ganhos no tempo, no esforço e também nos custos 
para este projeto e para projetos futuros.
• Pense!: Sempre analise algo antes de fazer. Se mesmo assim der 
errado, isso se tornará uma valiosa experiência.
Mitos do desenvolvimento de software 
(meias verdades)
Gerenciamento
• Já temos um livro cheio de padrões e procedimentos para 
desenvolver software. Ele não supriria meu pessoal com tudo o que 
precisam saber?
• Se o cronograma atrasar, poderemos acrescentar mais programadores 
e ficar em dia.
• Se eu decidir terceirizar o projeto, eu posso simplesmente relaxar e 
deixar a outra empresa realiza-lo.
Mitos de desenvolvimento de software
Clientes
• Uma definição geral dos objetivos é suficiente para começar a
escrever programas – podemos preencher os detalhes 
posteriormente.
• Os requisitos de software mudam continuamente, mas as mudanças 
podem ser facilmente assimiladas, pois o software é flexível.
Mitos de desenvolvimento de software
Profissionais da área
• Uma vez que o programa foi feito e colocado em uso, nosso trabalho 
está terminado.
• Até que o programa esteja em execução, não há como avaliar sua 
qualidade.
• O único produto passível de entrega é o programa em
funcionamento.
• A engenharia de software nos fará criar documentação volumosa e 
desnecessária e, invariavelmente, vai nos retardar.
Resumo do conteúdo
• A engenharia de software engloba processos, métodos e ferramentas 
para a construção de software com qualidade e dentro do prazo.
• São cinco atividades metodológicas genéricas da engenharia de 
software: comunicação, planejamento, modelagem construção e 
entrega
• A prática de engenharia de software serve para resolver problemas e 
segue um conjunto de princípios básicos
• Mitos em relação à engenharia de software continua a levar gerentes 
e profissionais por um mau caminho, mesmo com todo o 
conhecimento facilitado sobre esse assunto, por isso devem ser 
derrubados.

Outros materiais