Escolar Documentos
Profissional Documentos
Cultura Documentos
NO DESENVOLVIMENTO
DE SOFTWARE:
Professor Toninho
e-mail:
asilva@uninove.br
1
INTRODUÇÃO À
ENGENHARIA DE SOFTWARE
2
O que é Software?
• Software = Programas de Computador
»Soluções
4
O que é Software?
• “Instruções (programas de computador) que,
quando executadas, produzem a função e o
desempenho desejados”. [Pressman, 1995]
5
Histórico da sua Evolução
Quarta Era:
-Sistemas de desktop
Primeira Era: Segunda Era: Terceira Era:
poderosos
- Orientação batch - Multi-usuário - Sistemas distribuídos
-Redes de computadores
- Distribuição limitada - Tempo real - "Inteligência" embutida
- Tecnologia de orientação a
- Software Customizado - Bancos de dados - Hardware de baixo
objetos
- Produto de custo
- Sistemas especialistas
software - Impacto de consumo
- Redes neurais artificiais
- Computação paralela
6
Primeira Era
• programação de computadores era vista
como uma arte "secundária" para a qual
havia poucos métodos sistemáticos;
• evolução e aperfeiçoamento do hardware
eram colocados em primeiro plano;
• softwares eram projetados sob medida nas
organizações.
7
Segunda Era
• multi-programação e sistemas multi-usuários;
• sistemas interativos através de terminais de
acesso;
• armazenagem on-line leva à primeira geração de
sistemas de gerenciamento de bancos de dados;
• altos custos e esforço em manutenção: primeira
"crise do software”.
8
Terceira Era
• advento e generalizado uso de
microcomputadores, computadores pessoais e
poderosas estações de trabalho (workstations);
• sistemas distribuídos x sistemas centralizados;
• redes locais:sistemas departamentais e em
pequenas e médias empresas;
• crescem as “software houses”.
9
Quarta Era
• Problemas genéricos:
• nossa capacidade de construir programas não
acompanha o ritmo da demanda de novos
programas;
• nossa capacidade de manter programas
existentes é ameaçada por projetos ruins e
recursos inadequados.
• Mudança de paradigma em função da
tecnologia de orientação a objetos.
10
Quinta Era (do ano 2000 em diante)
• Desenvolvimento geograficamente distribuído
(trabalho cooperativo);
• Componentes de software (reutilização e
reciclagem);
• Fortalecimento dos especialistas do domínio;
• Desenvolvimento para a Web.
11
Acontecimentos Marcantes:
• 1969 - 1971: boas práticas de programação - surge a
linguagem Pascal.
• 1972 - 1973: programação estruturada, ciclo de vida.
• 1974 - 1975: procedimentos para teste sistemático e
prova formal de programas;
• 1976-1977: focos: requisitos, especificação e projeto;
paradigma de desenvolvimento estruturado.
• 1978 - 1980: era CASE.
• 1990 – 2004: orientação a objetos, desenvolvimento
para Web, desenvolvimento baseado em
componentes.
12
Componentes do Software:
• Componentes executáveis em máquina, como:
instruções de programas, estruturas de dados
(bancos de dados), interfaces.
• Componentes não executáveis, como:
documentação de projeto e análise, manual de
usuário e de produção.
13
Categorias de Software
• Software Básico: uma coleção de programas escritos para servir a
outros programas. Ex: compiladores, editores, sistemas operacionais,
drivers etc.
15
Problemas no Desenvolvimento
de Software:
• As estimativas de prazo e custo freqüentemente são imprecisas.
• A produtividade do pessoal da área de software não tem acompanhado a
demanda por seus serviços.
• A qualidade do software, às vezes, é inferior à adequada.
• Os índices de erros em novos programas muitas vezes causam insatisfação ao
usuário e falta de confiabilidade no produto.
• Os esforços e custo em manutenção são, em geral, maiores que os próprios
esforços e custo destinados ao desenvolvimento do produto.
16
Solução aos Problemas:
• O desenvolvimento de software pode ser visto como um problema
de engenharia? Sim, pois busca:
• A criação de soluções economicamente efetivas para
problemas práticos. A utilização de conhecimento científico
para a criação de produtos a serviço do homem.
17
Engenharia de Software:
• “Uma disciplina que lida com a construção de sistemas
de software tão grandes e complexos, que precisam ser
construídos por uma equipe ou equipes de engenheiros.”
[Ghezzi, Jazayeri, Mandrioli]
19
Processos de Desenvolvimento de Software
• Um Processo é um conjunto de passos parcialmente ordenados,
constituídos por atividades, métodos, práticas e transformações,
utilizado para se atingir uma meta. Esta meta está associada a um ou
mais resultados concretos finais, que são os produtos da execução do
processo.
20
Processos de Desenvolvimento de Software
• Um Processo de desenvolvimento de software abrange
um conjunto de atividades relacionadas à concepção do
software até a sua implementação, entrega, uso e
manutenção.
• Em geral, define:
– Um modelo de ciclo de vida para o software e um paradigma;
– Os métodos que serão adotados em cada atividade;
– As ferramentas que suportam estes métodos;
– Quem participa (papéis) e quando;
– Planos de gerência, qualidade e testes.
21
Papéis no Desenvolvimento de Software
• Analista de Sistemas: responsável pela elicitação de
requisitos e especificação do “que” o software fará.
• Projetista: responsável pela especificação de “como” o
software irá implementar os requisitos definidos na análise.
• Programador: responsável pela construção dos módulos e
programas, especificados no projeto, em uma linguagem de
programação.
• Gerente de Projeto: responsável por definir o processo e
os planos de desenvolvimento. Estabelece cronograma,
estima prazo, custo e recursos. Acompanha o
desenvolvimento.
22
Papéis no Desenvolvimento de Software
• Arquiteto: responsável pela elaboração da estrutura
modular do software. Está surgindo no mercado.
Arquitetos em tecnologias específicas, como J2EE.
• Desenvolvedor: atua em todas as etapas do
desenvolvimento. Normalmente, o mercado exige
especialidade em tecnologias e linguagens específicas.
• Usuário: pessoas, organizações ou departamentos que
utilizam o sistema. Podem ser usuários diretos, que de fato
operam o software, ou indiretos, que enviam dados ou
recebem resultados do software.
• Cliente: companhia, organização ou pessoa que contrata e
paga o sistema de software a ser desenvolvido.
23
Conceitos no Desenvolvimento de Software
• Método:
todo procedimento formal para a produção de um resultado. Um
método define as tarefas que serão realizadas e de que forma as
mesmas deverão ser executadas. Define que tecnologias e linguagens
deverão ser adotadas e os produtos que serão produzidos.
– Ex: metodologia de Análise Essencial, OMT (Object Modeling
Technique), RUP (Rational Unified Process) etc.
• Ferramenta:
Ferramenta instrumento ou sistema automatizado (software) para
suportar a realização de uma tarefa.
– Ex: DFD (diagrama de fluxo de dados), Rational Rose (ferramenta CASE)
etc.
• Paradigma:
Paradigma uma maneira, estilo ou filosofia para a construção de
software, envolvendo um conjunto de princípios. Ex: paradigma
estruturado e paradigma de orientação a objetos (OO).
– Cada paradigma envolve um conjunto de métodos, linguagens de
modelagem e de programação, ferramentas etc.
24
Conceitos no Desenvolvimento de Software
• Artefatos:
Artefatos sub-produtos produzidos pelas atividades ao
longo do processo.
• Ex: casos de uso na análise, documentação de requisitos,
diagramas de classe no projeto, programas etc.
• Domínio:
nio família de aplicações com requisitos similares.
• Ex: escolar, agropecuário, legislativo etc.
25