Buscar

Engenharia de Software I

Prévia do material em texto

Unidade I 
 
 
ENGENHARIA DE SOFTWARE I 
 
 
 
Prof. André Luiz 
O papel evolutivo do software 
 
 
 Passado: 
Programador solitário 
Atualmente, 
equipes de especialistas 
em software, cada um se 
concentrando em uma 
parte da tecnologia 
necessária para produzir 
um sistema. 
Globalização, 
Sociedade da Informação, 
Internet 
... 
Fonte: Ilustrações do clip-art. 
Porém, muitas questões ainda não têm respostas 
 Por que se leva tanto tempo para construir um software? 
 Por que os custos de desenvolvimento são tão altos? 
 Por que não podemos achar todos os erros antes de entregar 
o software para os clientes? 
 Por que gastamos tanto tempo e esforço mantendo programas 
existentes? 
São estas perguntas que a engenharia de software tenta 
responder para minimizar impactos. 
Evolução do software 
1950 1960 1970 1980 1990 2000 
1 
2 
3 
4 
5 
1. 
sistemas batch 
distribuição limitada 
software dedicado 
2. 
sistemas multiusuário 
tempo real 
bancos de dados 
produto de software 
3. 
sistemas distribuídos 
hardware de baixo 
custo 
inteligência local 
4. 
tecnologia orientada a 
objetos 
Internet 
“onda” do desktop 
sistemas especialistas 
5. 
sistemas portáteis 
 TVs etc. 
 
Fonte: do autor. 
O que é software? 
Algumas definições básicas de software: 
 São instruções (programas de computadores) que, quando 
executadas, fornecem as características, funções e 
desempenho desejados. 
 Estruturas de dados que permitem aos programas manipular 
adequadamente a informação. 
 Documentos que descrevem a operação e o uso dos 
programas. 
 
 
 
 
 
O que é software? 
Software não é somente o programa, mas também os conjuntos 
de dados, arquivos de configuração, diagramas e documentação 
necessários para que o software funcione corretamente. 
 
Características de um software 
 Software é desenvolvido e não fabricado. 
 Software não se desgasta, mas evolui. 
 Apesar da tendência de utilização de pacotes, uma grande 
parte dos softwares continua a ser construída sob encomenda. 
Curva de falhas para o software 
 
Fonte: do autor. 
Cenário atual do desenvolvimento de software 
Segundo o Chaos Report, relatório do Standish Group: 
 Pesquisa sobre desenvolvimento de software, iniciada em 1994: 
 
 
 
 
 
 
 
 
 
 
Fonte: www.standishgroup.com 
Fatores que levaram à melhoria dos projetos 
 Maior utilização de práticas ágeis, que hoje representam 10% 
do total de projetos. 
 Redução do número de implantações de pacotes de ERP e 
CRM. 
 Redução da utilização do processo tradicional de 
desenvolvimento chamado de cascata, que já representou 
50% do total. 
 
Problemas ainda persistem 
 Estimativas imprecisas: 
 Dificuldade de avaliar prazos e custos. 
 Falta de produtividade: 
 Produtividade das pessoas não acompanha a demanda. 
 Qualidade inadequada: 
 Dificuldade de manter software existente. 
 
Fatores de sucesso para o desenvolvimento de software 
 Apoio executivo. 
 Envolvimento do usuário. 
 Equipe capacitada. 
 Gerente de projeto experiente. 
 Uso de técnicas ágeis. 
 Objetivos claros de negócio. 
 Maturidade. 
 Ferramentas e infraestrutura. 
 
Interatividade 
Mesmo com o advento da engenharia de software, o 
desenvolvimento de sistemas continua apresentando diversos 
problemas durante sua execução. Assinale a alternativa que 
apresenta um desses problemas: 
a) Apoio executivo. 
b) Falhas nas estimativas de prazo e custo. 
c) Foco na qualidade. 
d) Equipes experientes. 
e) Falta de uso de métodos ágeis. 
A natureza mutável do software 
Diferenças básicas entre um software e um outro produto 
manufaturado: 
 Complexidade. 
 Não é visto e nem sentido (intangibilidade). 
 Não existe produção em série – é sob medida. 
 Não tem prazo de validade. 
 Precisa acompanhar a evolução técnica e de negócio. 
 Ilusão de que é fácil de ser alterado. 
 
 
 
 
 
Mitos de software 
Sob o ponto de vista do gerente: 
 Aumentar o tamanho da equipe resolve o problema de um 
projeto atrasado. 
 Fazer horas-extras e trabalhar fim de semana recupera atrasos 
de projeto. 
 Terceirizar resolve os problemas da gerência. 
Mitos de software 
Sob o ponto de vista da equipe de desenvolvimento: 
 Não há como avaliar a qualidade do software até que ele seja 
efetivamente colocado em produção. 
 O único produto que realmente interessa é o código 
executável. 
 Uma vez que o programa está pronto, acabou o trabalho do 
desenvolvedor. 
 
Mitos de software 
Sob o ponto de vista do usuário/cliente: 
 Basta uma visão geral dos objetivos para se iniciar o 
desenvolvimento do software. 
 É fácil acomodar as mudanças de requisitos durante o 
desenvolvimento do software. 
 Só é necessário validar o software no final. 
 
 
 
 
 
Algumas definições de Engenharia de Software 
 Segundo o IEEE, engenharia de software é a aplicação de 
uma abordagem sistemática, disciplinada e quantificável 
ao desenvolvimento, operação e manutenção do software. 
 Segundo Sommerville, “é uma disciplina de engenharia 
relacionada com todos os aspectos da produção de software, 
desde os estágios iniciais de especificação de sistemas até a 
manutenção desse sistema.” 
 
 
Algumas definições de Engenharia de Software 
 Disciplina de engenharia: aplicação de técnicas, métodos 
e ferramentas para melhorar os resultados de uma atividade. 
 Todos os aspectos da produção de software: a engenharia de 
software não esta relacionada apenas com o processo técnico 
de desenvolvimento de software, mas também com atividades 
de gestão do projeto, qualidade e métricas que suportem 
esse processo. 
Qual é a diferença entre Engenharia de Software e a 
Engenharia de Sistemas 
 A engenharia de sistemas se ocupa de todos os aspectos 
relacionados ao desenvolvimento de sistemas com base em 
computadores, incluindo hardware, software e processos. 
 A engenharia de software é parte desse processo. 
Engenharia de Software em camadas 
 
Fonte: Livro-texto 
Engenharia de Software em camadas 
 Ferramentas: 
É a camada que proporciona apoio automatizado aos processos 
e métodos, como, por exemplo, as ferramentas CASE (Computer 
Aided Software Engineering). 
 Métodos: 
É a camada que fornece a técnica de como fazer para construir 
software, ou seja, abordagens que incluem comunicação, análise 
de requisitos, modelagem, construção, testes e suporte. 
 
 
 
Engenharia de Software em camadas 
 Processo: 
É a camada que constitui o elo de ligação que mantém juntos os 
métodos e as ferramentas. Define a sequência em que os 
métodos devem ser aplicados, controlando o projeto, a 
qualidade, definindo os produtos de trabalho e coordenando as 
mudanças de requisitos. 
 Qualidade: 
É a camada que suporta a engenharia de software, tendo como 
foco o aperfeiçoamento contínuo dos processos. 
 
Conceito de processo de software 
É uma forma de se obter um produto de software. Envolve: 
 Especificação. 
 Desenvolvimento. 
 Validação. 
 Evolução. 
O produto de software é o resultado final produzido por meio do 
processo. 
 
Interatividade 
A engenharia de software está dividida em 4 camadas. Qual é a 
camada responsável por definir as técnicas e como elas devem 
ser utilizadas durante o desenvolvimento do sistema? 
a) Qualidade. 
b) Processo. 
c) Método. 
d) Ferramentas. 
e) Nenhuma das alternativas. 
Tipos de aplicações de software 
 Para atender às necessidades das empresas, diversos tipos 
de aplicação surgiram, ao longo do tempo, para responder as 
constantes demandascomerciais, industriais e pessoais da 
sociedade atual. 
 Esses tipos de aplicação são apresentados a seguir. 
Classificação de aplicações de software 
 Sistemas de Processamento de Transações (SPT). 
 Sistemas de Informações Gerenciais (SIG). 
 Sistemas de Apoio à Decisão (SAD). 
 Sistemas de Informação Executiva (SIE). 
 Sistemas Especialistas (SE). 
 Sistemas de Automação de Escritório (SAE). 
 
Sistemas de Processamento de Transações (SPT) 
 São os sistemas tradicionais que coletam, guardam, modificam 
e recuperam as transações, gerenciando as informações 
das organizações. 
 Uma transação é um evento que gera ou modifica dados. 
 As transações podem ser de negócio (financeiras, imobiliárias) 
ou técnicas (banco de dados, transações operacionais). 
 Exemplos: Site bancário, compras pela internet, sistema de 
biblioteca, sistema contábil etc. 
 
Características de Sistemas de Processamento 
de Transações (SPT) 
 Tempo de resposta rápida: atender os usuários. 
 Confiabilidade: dependência da organização. 
 Inflexibilidade: processada da mesma maneira. 
 Processamento controlado: suporte à organização. 
 Armazenamento e recuperação de informação. 
 Registro para auditoria: geração de log. 
Exemplo de estrutura de um SPT 
 
Fonte: do autor. 
Sistemas de Informações Gerenciais (SIG) 
 São sistemas que fornecem informações integradas para o 
gerenciamento das organizações. 
 Normalmente, são fornecidos como pacotes customizáveis. 
 Apoiam o planejamento, o controle e a decisão das 
organizações, por meio de relatórios, processos correntes, 
acesso online e eventos internos. 
 Exemplos: ERP (TOTVS, SAP) e CRM (relacionamento com 
o cliente). 
Exemplo de estrutura de um ERP 
Fonte: www.acii.com.br 
Sistemas de Apoio à Decisão (SAD) 
 São sistemas que analisam um grande número de variáveis 
e dados para que seja possível o posicionamento quanto a 
uma questão. 
 São interativos com os usuários, processam grande 
quantidade de informação para gerar análises precisas. Geram 
relatórios analíticos da situação. 
 Envolve pesquisa de bancos de dados, inteligência artificial, 
simulações e estatísticas. 
 Exemplos clássicos são: análise de crédito, sistemas de BI 
(Business Intelligence) em geral. 
Classificação dos Sistemas de Apoio à Decisão (SAD) 
 Relacionamento com o cliente: 
 Passivo, ativo e cooperativo. 
 Modo de apoio: 
 Base em modelos, dados ou conhecimento. 
 Escopo da aplicação: 
 Empresarial ou desktop. 
Arquitetura de um Sistema de Apoio a Decisão (SAD) 
 
Fonte: Livro-texto 
Interatividade 
Existem diversos tipos de aplicações de software, com 
finalidades específicas para todas as áreas de negócio de uma 
empresa. O tipo de aplicação que permite a integração de várias 
áreas, com a troca de informações em um mesmo ambiente é o: 
a) Sistema de Apoio à Decisão. 
b) Sistema de Especialistas. 
c) Sistema de Informações Transacionais. 
d) Sistema de Automação de Escritório. 
e) Sistema de Informações Gerenciais. 
Sistemas de Informação Executiva (SIE) 
 Trata-se de um tipo de sistema de informações gerenciais, 
destinado a facilitar e apoiar a informação e a tomada de 
decisão dos altos executivos. 
 É uma forma especializada de SAD, que apresenta os 
resultados em telas gráficas, fáceis de usar e de navegar, 
criando situações de detalhamento. 
 Vem perdendo espaço para os sistemas de BI (business 
intelligence), com seus relatórios e painéis interativos. 
 
Características de Sistemas de Informação 
Executiva (SIE) 
 Não exigem experiência com computador. 
 Fáceis de usar. 
 Fornecem informações resumidas da empresa. 
 Possuem filtros de dados para a gestão. 
 Os dados são obtidos das outras aplicações da organização. 
 Essencialmente, são aplicações de consulta. 
Exemplo de estrutura de um SIE 
 
Fonte: www.wiki.thema.inf.br 
Sistemas Especialistas (SE) 
 São programas inteligentes, que usam conhecimentos e 
procedimentos de inferência para resolver problemas que 
necessitam de especialistas para serem resolvidos. 
 Utilizam inteligência artificial, com linguagens como LISP 
e PROLOG. 
 São capazes de simular a capacidade de decisão humana. 
 Exemplo: Fazer diagnóstico do sistema de injeção de um 
automóvel, análise de crédito de um cliente, entre outros. 
 
 
 
 
Vantagens de um Sistemas Especialista (SE) 
 Disponível 24 horas por dia. 
 Custo reduzido. 
 Perigo reduzido. 
 Múltiplos conhecimentos. 
 Aumento do nível de confiança. 
 Resposta rápida. 
Sistemas de Automação de Escritório (SAE) 
 São aplicativos que facilitam a vida dos funcionários de uma 
empresa, realizando as atividades que outrora eram manuais. 
 Aumentam a produtividade e a qualidade da informação 
apresentada. 
 Principais são: editores de texto, planilhas eletrônicas, email, 
chats, correios de voz, videoconferência, entre outros. 
 
 
 
 
Problemas com planejamento, prazos e custos 
 Para tratar desses problemas, a engenharia de software tem a 
disciplina de Gestão de Projetos. 
 O conceito de gerenciamento de projetos é permitir à empresa 
criar um novo produto de software de acordo com o que foi 
solicitado (escopo), dentro do prazo e do orçamento e com a 
qualidade esperada. É a tríplice restrição. 
Fonte: do autor. 
Problemas com planejamento, prazos e custos 
 Escopo: 
 É necessário identificar com clareza e com detalhes quais 
são as necessidades (requisitos) dos envolvidos no projeto. 
 Prazo: 
 Uma vez definido o escopo, são realizadas as estimativas 
de tempo e recursos para atender ao prazo. 
 Custo: 
 Com a definição do prazo e dos recursos, chega-se à 
estimativa de valores para a realização do projeto. 
Qualidade de software 
 Qualidade de um produto de software pode ser definido como 
o atendimento à necessidades do cliente. 
 O processo de qualidade deve fazer parte do processo de 
desenvolvimento de software. 
 A qualidade deve ser verificada durante todo o ciclo de 
construção (garantia da qualidade) e validada quando o 
produto está pronto (controle da qualidade). 
 Qualidade é uma ação preventiva. 
Processo-base da qualidade 
 
Fonte: Livro-texto. 
Interatividade 
O gerenciamento de projetos, para atender às expectativas dos 
clientes, baseia-se na tríplice restrição. Assinale a alternativa 
que apresenta elementos que pertencem a esta tríplice 
restrição: 
a) Escopo, custos e riscos. 
b) Prazo, riscos e qualidade. 
c) Escopo, recursos e qualidade. 
d) Escopo, prazo e qualidade. 
e) Recursos, custo e qualidade. 
 
 
 
 
 
ATÉ A PRÓXIMA! 
	Slide Number 1
	O papel evolutivo do software
	Porém, muitas questões ainda não têm respostas
	Evolução do software
	O que é software?
	O que é software?
	Características de um software
	Curva de falhas para o software
	Cenário atual do desenvolvimento de software
	Fatores que levaram à melhoria dos projetos
	Problemas ainda persistem
	Fatores de sucesso para o desenvolvimento de software
	Interatividade
	Resposta
	A natureza mutável do software
	Mitos de software
	Mitos de software
	Mitos de software
	Algumas definições de Engenharia de Software
	Algumas definições de Engenharia de Software
	Qual é a diferença entre Engenharia de Software e a Engenharia de Sistemas
	Engenharia de Software em camadas
	Engenharia de Software em camadas
	Engenharia de Software em camadas
	Conceito de processo de software
	Interatividade
	Resposta
	Tipos de aplicações de software
	Classificação de aplicações de software
	Sistemas de Processamento de Transações (SPT)
	Características de Sistemas de Processamento�de Transações (SPT)
	Exemplo de estrutura de um SPT
	Sistemasde Informações Gerenciais (SIG)
	Exemplo de estrutura de um ERP
	Sistemas de Apoio à Decisão (SAD)
	Classificação dos Sistemas de Apoio à Decisão (SAD)
	Arquitetura de um Sistema de Apoio a Decisão (SAD)
	Interatividade
	Resposta
	Sistemas de Informação Executiva (SIE)
	Características de Sistemas de Informação Executiva (SIE)
	Exemplo de estrutura de um SIE
	Sistemas Especialistas (SE)
	Vantagens de um Sistemas Especialista (SE)
	Sistemas de Automação de Escritório (SAE)
	Problemas com planejamento, prazos e custos
	Problemas com planejamento, prazos e custos
	Qualidade de software
	Processo-base da qualidade
	Interatividade
	Resposta
	Slide Number 52

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes