Engenharia de Software I Prof. Josué Froner. Introdução Objetivo: apresentar conceitos...
Transcript of Engenharia de Software I Prof. Josué Froner. Introdução Objetivo: apresentar conceitos...
Engenharia de Software I
Prof. Josué Froner
Introdução
Objetivo: apresentar conceitos introdutórios sobre Engenharia de Software, assim como auxiliar a definição modularidade e arquitetura, ciclo de vida do software, reutilização, medição, ferramentas e ambientes integrados, trabalhar a distinção entre engenharia de software e ciência da computação;
O que é software?
Em geral, é o conjunto de programas, e sua respectiva documentação, que instruem computadores a realizar funções desejadas. Em termos simples, são conjuntos de instruções para um computador (NASA).
Conjunto de programas, procedimentos, dados e documentação associados a um sistema de computador, e não somente ao programa em sí (PFLEEGER)
Compreendendo o software
Desenvolvido por engenharia e não manufaturado;
Não tem desgaste; Construção do software é exclusiva
para o problema em questão. Desenvolvido através de códigos
(linguagens); Diferentes tipos de aplicações.
Curva de falhas real para o software
Curva ideal
Curva real
mudança tempo
Índ
ice d
e f
alh
as
Software no tempo
1-orientacao batch, distribuição limitada, software customizado
2 – multiusuário, tempo real, banco de dados, produtos de software
3 – sistemas distribuídos, Inteligência embutida, Hardware de baixo custo, impacto de consumo
4 - sistemas de desk-top poderosos, tecnologias orientadas a objetos, sistemas especialistas, redes neurais artificiais, computação paralela
195019601970
1980
1990
2000
50/60- sem metodologia, programar é arte
60 – conceito de estruturação: programação, projeto e análise estruturada
60/70 – inicio do SGBD´s 1976 – Modelo Entidade
Relacionamento – Peter Shen
80 – Metodos: focados no processo x focados nos dados
81 – Eng. Informação : James Martin e Clive Finkelstein
84 – prevalencia da funcionalidade sobre os dados origina a análise de PF, OO
95 – criação do conceito de caso de uso – Ivar Jacobson
96 – criação UML 97 – jacobson lança RUP
Mais info: http://www.cesarkallas.net/arquivos/faculdade/engenharia_de_software/02-Origens%20da%20Modelagem/Origens%20da%20Modelagem.pdf
Importância
Software é fator que diferencia; Evolução do hardware evolução do software
= aproveitar as potencialidades;PARA QUÊ SOFTWARE? automatização de processos; melhorar qualidade das informações; apoiar decisões estratégicas; mais credibilidade as informações;
Crise do software
Aflição crônica (Prf. Daniel Teichroew, 1989) Não funcionamento adequado; métodos de desenvolvimento; Processo de manutenção crescente com o
aumento de software no mercado; Estimativas de prazos imprecisas; Produtividade dos trabalhadores da área não
acompanham a demanda; Qualidade do software a desejar
Causas da aflição ou crise
Elemento de sistema lógico e único -> desafio intelectual probabilidade de falhas é um fato;
Manutenção envolve correção ou modificação no projeto;
Falta de experiência em gerenciamento de software;
Profissionais com pouco treinamento formal.
Mitos
Administrativos Utilização correta de manuais de padrões; CASE atualizadas mas sem utilização; Contratação de novos profissionais para compensar o
atraso; Do cliente
Objetividade profissional dos desenvolvedores e gerencia para com o anseio do cliente (detalhar, requisitos);
Do profissional O trabalho nunca fica completo plenamente; Avaliação continua do trabalho não só quando está
pronto; Entrega do software não é o fim temos a documentação
do mesmo como base;
O que é Engenharia de Software? Definições formais
Segundo Bauer (1969): estabelecimento e uso de princípios e métodos comprovadamente eficazes de engenharia a fim de obter software: Economicamente viável; Confiável; Operável em máquinas reais.
Engenharia de Software (IEEE)
Aplicação de abordagem sistemática, disciplinada e quantificada para o desenvolvimento, operação e manutenção do software. (IEEE, STD 610-1990) Além disso, compreende o estudo das abordagens em si.
Engenharia de Software
Disciplina tecnológica e gerencial que se preocupa com a produção sistemática e a manutenção dos produtos de software que são desenvolvidos e modificados no tempo e seguindo estimativas de custos.(Fairley, 1985)
Parte da engenharia de sistemas e de hardware, abrangendo um conjunto de três elementos fundamentais – métodos, ferramentas e procedimentos – possibilitando o gerenciamento e controle do processo de desenvolvimento de software visando a alta qualidade de desenvolvimento. (Pressman, 2006)
Engenharia de Software (Webopaedia)
Disciplina no ramo da Ciência da Computação que se preocupa com o desenvolvimento de grandes aplicações de software. Cobre não somente os aspectos técnicos do desenvolvimento de sistemas de software, mas também questões relativas a gerenciamento, tais como a direção de equipes de programação, cronograma e orçamento.
Em resumo (SEI):
Engenharia é a aplicação sistemática do conhecimento científico para a construção de soluções efetivas em custos para problemas práticos relativos à humanidade.
Engenharia de Software é o ramo da engenharia que aplica conceitos da Ciência da Computação e da Matemática para alcançar soluções efetivas em custos para problemas de software.
Por que Engenharia de Software?
Softwares que extraiam o potencial do hardware;
Ritmo de demanda de novos programas; Projetos ruins e recursos inadequados
interferem na manutenção de programas;
objetivo: Sistematizar o processo de
criação e manutenção de software
Problemática levantada
Tempo longo para conclusão de programas;
Custos elevados; Encontrar erros antes da entrega final
do software para o cliente; Difícil medição do progresso de
desenvolvimento;
Pilares da ES
(4Ps+1F) - Jacobson Pessoas Projeto Produto Processo Ferramentas
Pessoas
Arquitetos, desenvolvedores, engenheiros de teste, gerentes, usuários, clientes, patrocinadores, sponsors e todos os primariamente envolvidos em um projeto de software.
Projeto
O elemento organizacional através do qual o desenvolvimento de software é gerenciado. O seu resultado é o produto.
Produto
Artefatos que são criados durante o ciclo de vida do projeto, tais quais: modelos, código fonte, executáveis, e documentação. É o software per se.
Processo
Definição do conjunto completo de atividades necessárias para a transformação dos requisitos dos usuários em um produto. Um processo é um modelo para a criação de projetos.
Ferramentas
Software que é utilizado para a automação das atividades definidas no processo. Exemplo: ferramentas de engenharia de software auxiliada pelo computador (CASE) ou de gerenciamento de projeto.
Observação:
O processo que guia o desenvolvimento deve ser orientado às pessoas, ou seja, é agradável para todas as pessoas que o utilizam…
Referências
PRESSMAN, ROGER.S.ENGENHARIA DE SOFTWARE. SÃO PAULO: MAKRON, 2006
JURAN, J. GRYNA, FRANK. CONTROLE DA QUALIDADE: COMPONENTES BÁSICOS DA FUNÇÃO QUALIDADE - V.2 - SÃO PAULO : MAKRON, 1991.
PFLEEGER, SHARI L. ENGENHARIA DE SOFTWARE: TEIORIA E PRÁTICA. 2.ED.SÃO PAULO: PRENTICE HALL, 2004.
FAIRLEY, RICHARD. SOFTWARE ENGINEERING CONCEPTS. SINGAPORE: MCGRAW-HILL, 1985.
http://www.er.les.inf.puc-rio.br/ http://www.sei.cmu.edu/ e
http://www.sei.cmu.edu/pub/documents/92.reports/pdf/tr34.92.pdf http://engenhariadesoftware.blogspot.com/2007/02/o-que-
software.html