Você está na página 1de 25

PROCESSO

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

• É certo pensarmos que somente programas de


computador constituem um Software??????????
3
O que é Software?
• A resposta é não, pois isso é para pessoas comuns e
nós não somos esse tipo de pessoa.
• Somos pessoas com:
»Idéias

»Soluções
4
O que é Software?
• “Instruções (programas de computador) que,
quando executadas, produzem a função e o
desempenho desejados”. [Pressman, 1995]

• Sistemas de software: conjunto de programas


compreendendo perspectivas diversas como dados,
procedimentos, interface e regras operacionais,
associados a um projeto de concepção e uma
documentação.

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

1950 1960 1970 1980 1990 2000

Figura 1 – A evolução do Software

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.

– A reutilização é uma característica importante de um


componente de software de alta qualidade!!!

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.

• Software de Tempo Real: programas que monitoram, analisam e


controlam eventos do mundo real. Um sistema de tempo real precisa
responder dentro de restrições de tempo especificadas, requerendo um
bom tempo de resposta (diferente de sistemas interativos ou on-line). Ex:
software de controle de metrô, de usina nuclear, de satélites etc.

• Software para o Negócio: a maior área de desenvolvimento de


software. Sistemas de Informação: controle escolar, controle de estoque,
sistema de biblioteca, comércio eletrônico, pontos de venda etc.

• Software Aplicativo: softwares de escritório, para computadores


pessoais. Ex: editores de texto, planilhas eletrônicas, software de acesso a
14
e-mails etc.
Categorias de Software
• Software de Inteligência Artificial: fazem uso de algoritmos não
numéricos para a resolução de problemas complexos, que não podem ser tratados
de forma convencional. Softwares baseados em heurísticas e em conhecimento.
Ex: Redes Neurais (reconhecimento de voz, de imagem), Sistemas Nebulosos
(jogos inteligentes, gerenciamento de informações imprecisas) etc.

• Software Embarcado (ou embutido): normalmente residem em


memória não volátil (ROM) e são usados para controle de produtos e sistemas para
o mercado consumidor industrial. Ex: programas em forno de microondas,
celulares, computadores de bordo em automóveis etc.

• Software para Engenharia e Científicos: software para apoio a


cálculos matemáticos, físicos e para apoio a atividades de engenharia. Ex:
simulação de sistemas, ferramentas CASE (computer-aided software engineering),
ferramentas CAD (computer-aided design) 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.

• Eng. de Software: "aplicação prática do conhecimento


científico no projeto e construção de programas e da
documentação requerida para desenvolver, operar e
manter estes programas”.[Barry Böehm]

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]

• “Uma disciplina que visa à produção de software sem


falhas (confiáveis), entregue no prazo e dentro do
orçamento previsto, satisfazendo às necessidades do
usuário. Além do mais, o software deve ser fácil de ser
modificado quando as necessidades do usuário se
modificam.” [Schach]
18
Para garantir um bom Desenvolvimento de
Software:

• Modelo de Ciclo de Vida deve ser adotado;


• Processos devem ser seguidos;
• Métodos e ferramentas de apoio devem ser buscados;
• Utilização de técnicas para estimativa de custos;
• Produção de documentação adequada;
• Utilização de técnicas para o controle de qualidade.

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.

• Um processo é uma receita que é seguida por um projeto: o projeto


concretiza uma abstração, que é o processo.

• Em um Processo de Desenvolvimento de Software, o ponto de partida


é a escolha de um Modelo de Ciclo de Vida.

• Ciclo de Vida do Software inicia-se com a definição do sistema e só


termina com a operação do sistema na sua fase de produção até a sua
descontinuação.

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

Você também pode gostar