O documento discute fundamentos da engenharia de software, incluindo a definição de software e engenharia de software, a crise do software, categorias de software, e mitos comuns sobre engenharia de software.
2
Bibliografia
MAITINO NETO, Roque.Engenharia de Software.
Londrina: Editora e Distribuidora Educacional S.A., 2016.
SOMMERVILLE, Ian. Engenharia de software. 8. ed. São
Paulo: Pearson, 2007
PADUA FILHO, Wilson de Paula. Engenharia de
software: fundamentos, métodos e padrões. 3. ed. Rio
de Janeiro: LTC – Livros Técnicos e Científicos, 2009
PRESSMAN, Roger S. Engenharia de software : uma
abordagem
Profissional. 7ª. ed 2011.
3.
Engenharia de Software
▪Unidade 1: Fundamentos da Engenharia de Software:
▪ O que veremos nesta aula:
▪ Seção 1.1 – Introdução à Engenharia de software:
aspectos gerais, objetivos, evolução do software e
crise do software.
3
4.
4
Engenharia de Software
Oque é um software?
▪ O software é o conjunto de vários artefatos e não
apenas o código fonte (SOMMERVILLE).
▪ São instruções que, quando executadas, produzem a
função desejada pelo usuário.
▪ São estruturas de dados que possibilitam que os
programas manipulem as informações.
5.
5
Engenharia de Software
Comparaçãoentre Software e Hardware:
▪ O software pode ser desenvolvido (é a parte lógica do
computador) e o hardware se compra (é a parte física).
▪ Ao passar do tempo o software fica deteriorado,
ultrapassado e sua manutenção torna-se mais cara.
▪ Já para o hardware, realizar a manutenção é
simplesmente trocar à peça que esta em desgaste.
6.
6
Engenharia de Software
Oque é Engenharia de Software?
▪ Engenharia de software é uma disciplina cujo objetivo é
produzir software:
▪ isento de falhas,
▪ entregue dentro do prazo e orçamentos previstos,
▪ e que atenda às necessidades do cliente.
▪ O software desenvolvido deve ser fácil de ser
modificado quando as necessidades dos usuários
mudarem.
7.
7
Engenharia de Software
Oque é Engenharia de Software?
▪ A IEEE Computer Society (2004) define Engenharia de
software como: “A aplicação de uma abordagem
sistemática, disciplinada e quantificável de
desenvolvimento, operação e manutenção do software,
além do estudo dessas abordagens".
▪ “Engenharia de Software é a profissão dedicada a
projetar, implementar e modificar software, de forma que
ele seja de alta qualidade, a um custo razoável,
manutenível e rápido de construir.“ (LAPLANTE)
8.
8
Engenharia de Software
Oque é Engenharia de Software?
▪ Fica claro, então, que o objetivo da Engenharia de
Software é:
▪ a entrega de produto de qualidade,
▪ respeitados os prazos e
▪ os limites de despesas de recursos humanos e
financeiros.
10
Engenharia de Software
Crisedo Software:
▪ Na década de 1960, alguns atores do processo de
desenvolvimento de software cunharam a expressão
“Crise do Software” na intenção de evidenciar o
momento adverso que a atividade atravessava.
▪ A crise de indicava um estado de incerteza ou
declínio e, de fato, esse era o retrato de um setor
inapto a atender demanda crescente por produção
de software.
11.
11
Engenharia de Software
Crisedo Software:
▪ Eram entregues programas que não funcionavam
corretamente, construídos por meio de processos
falhos e que não podiam passar por manutenção
facilmente.
▪ Tinham incerteza causada pela imprecisão nas
estimativas de custo e prazo afetava a confiança
das equipes e principalmente dos seus clientes.
12.
12
Engenharia de Software
Vamosrefletir nesta afirmação:
▪ “Com o crescimento desse segmento
(desenvolvimento de softwares) muitas empresas
possuem mais especialistas em TI em que cada
um tem sua responsabilidade no
desenvolvimento de software e é diferente de
antigamente que era um único profissional de
software que trabalhava sozinho numa sala.”
(PRESSMAN, 2006)
13.
13
Engenharia de Software
▪Ao passar do tempo, ninguém imaginava que o
software tornaria um elemento muito importante
para o mundo e teria a capacidade de manipular a
informação.
▪ Como muitos elementos computacionais tiveram
mudanças até hoje e continuam tendo.
▪ Este crescimento computacional, levam a criação
de sistemas perfeitos e problemas para quem
desenvolvem softwares complexos.
14.
14
Engenharia de Software
▪As preocupações dos engenheiros de software para
desenvolverem os software sem defeitos e
entregarem estes produtos no tempo marcado,
assim leva a aplicação da engenharia de
software.
▪ O software é caro porque torna se uma atividade
difícil e trabalhosa de ser realizado pelo engenheiro
de software (JALOTE, 2005).
15.
15
Engenharia de Software
Algunsaspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Abstração:
Para resolver um problema, deve-se separar
os aspectos que estão ligados a uma
realidade particular, visando representá-lo em
forma simplificada e geral.
▪ Formalidade:
Significa seguir uma abordagem rigorosa e
metódica para resolver um problema.
16.
16
Engenharia de Software
Algunsaspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Dividir para conquistar:
Resolver um problema complexo dividindo-o
em um conjunto de problemas menores e
independentes que são mais fáceis de serem
compreendidos e resolvidos.
▪ Organização hierárquica:
Organizar os componentes de uma solução
em uma estrutura hierárquica tipo árvore.
Assim, a estrutura pode ser compreendida e
construída nível por nível, cada novo nível
com mais detalhes.
17.
17
Engenharia de Software
Algunsaspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Ocultação:
Esconder as informações não essenciais.
Permitir que o módulo "veja" apenas a
informação necessária àquele módulo.
▪ Localização:
Colocar juntos os itens relacionados
logicamente (o usuário não pensa como o
analista!).
18.
18
Engenharia de Software
Algunsaspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Integridade conceitual:
Seguir uma filosofia e arquitetura de projeto
coerentes.
▪ Completeza:
Checar para garantir que nada foi omitido.
19.
19
Engenharia de Software
Categoriasde softwares, classificadas segundo a
aplicação:
▪ Software básico:
Apoio a outros programas. Forte interação
como hardware.
Exemplos: compiladores, device drivers,
componentes de sistema operacional.
20.
20
Engenharia de Software
Categoriasde softwares, classificadas segundo a
aplicação:
▪ Software em tempo real:
Trata-se de um tipo de software que monitora
eventos por meio de coleta e análise de
dados, tais como temperatura, pressão, vazão,
entre outros.
Usa-se a expressão “tempo real” por conta da
resposta imediata (um segundo ou menos)
que o software deve fornecer.
21.
21
Engenharia de Software
Categoriasde softwares, classificadas segundo a
aplicação:
▪ Software comercial:
Caracteriza-se pela manipulação de grande
volume de dados e uso em aplicações
comerciais.
Exemplos: folha de pagamento, estoque,
recursos humanos.
Forte interação com banco de dados.
▪ Software científico:
Algoritmos de processamento numérico.
Usados na astronomia, mecânica e projeto
auxiliado por computador.
22.
22
Engenharia de Software
Categoriasde softwares, classificadas segundo a
aplicação:
▪ Software de computador pessoal:
Forte interação com o ser humano.
Deve ser fácil e amigável.
Exemplos: Planilhas, editores de texto,
browsers.
23.
23
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um bom manual, repleto de padrões e regras,
fornecerá a equipe tudo que ela precisa saber?
▪ Desenvolvimento não é uma receita de bolo!
▪ Os clientes são diferentes, os projetos são
diferentes, os programadores são diferentes,
as prioridades dependem do projeto.
Basicamente, TUDO é diferente.
24.
24
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um bom manual, repleto de padrões e regras,
fornecerá a equipe tudo que ela precisa saber?
▪ Um site de e-commerce desenvolvido para a
empresa X, provavelmente não valerá para a
empresa Y.
▪ O planejamento é fundamental e só então você
poderá levantar os requisitos necessários e
trabalhar em cima de um novo projeto.
25.
25
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Caso ocorra atraso no cronograma este poderá
ser contornado alocando-se mais
programadores ao projeto?
▪ Por mais que exista o conceito de “Fábrica de
Software” não podemos pensar no processo
de desenvolvimento como uma linha de
produção.
▪ Ao se inserir um programador em um projeto,
ele levará algum tempo para se familiarizar
com o código e com o que está sendo feito,
para então, começar de fato a produzir.
26.
26
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Caso ocorra atraso no cronograma este poderá
ser contornado alocando-se mais
programadores ao projeto?
▪ Desta maneira, alocar programadores para
resolver um problema de cronograma poderá
surgir efeito contrário, causando mais
problemas!
27.
27
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Será que dá certo?
▪ Uma grávida demora 9 meses para gerar um
bebe...
▪ Se juntarmos 9 grávidas eu vou ter um bebê
em um mês?
28.
28
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Terceirizar um projeto é garantia de
tranquilidade e nenhum trabalho?
▪ Quando um projeto é muito trabalhoso, requer
know-how maior do que a sua equipe possui
ou o cronograma está apertado, muitos optam
pela terceirização achando que esta é uma
garantia de tranquilidade e nenhum trabalho.
29.
29
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Terceirizar um projeto é garantia de
tranquilidade e nenhum trabalho?
▪ Cuidado: Se a empresa X contratou você, você
é o responsável pelo trabalho que está
entregando. Aí fica a pergunta:
▪ A terceirização fez o serviço direito?
▪ Comentou o código?
▪ Documentou o que foi feito?
▪ Sua equipe tem pessoal para trabalhar
nesse código?
30.
30
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Terceirizar um projeto é garantia de
tranquilidade e nenhum trabalho?
▪ Pense bem antes de terceirizar algo que não
poderá trabalhar bem no futuro.
▪ É melhor recusar um projeto do que fazê-lo
mal feito.
31.
31
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um software pode ser construído observando-se
o seu propósito geral – os detalhes podem ser
levados em conta posteriormente?
▪ Se você é desenvolvedor já deve ter se
deparado com um usuário que só queria um
ajustizinho no sistema:
“só adicione um botão que faça isso e busque
aquilo e faça isso ficar cor de rosa e brilhar
girando”.
32.
32
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um software pode ser construído observando-se
o seu propósito geral – os detalhes podem ser
levados em conta posteriormente?
▪ Desenvolvedores geralmente não gostam de
destruir algo para faze-lo de outra forma, pois
o cliente mudou de ideia. Aliás, ninguém
gosta.
33.
33
Engenharia de Software- mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Se o programa funciona, nosso trabalho está
completo?
▪ Se o programa ainda não está finalizado e
“rodando”, não posso avaliar sua qualidade?
▪ O único produto que entregarei ao cliente é o
código executável?
▪ O processo de planejamento fará com que
criemos documentação volumosa que atrasará a
execução do projeto, atrasando o cronograma?