Você está na página 1de 9

Renato Cardoso Mesquita

Departamento de Eng.
Elétrica da UFMG
renato@cpdee.ufmg.br

Engenharia de Software

1. Engenharia de
Software: conceitos
. . básicos
. . . . . . . .
1.1 Computador: problema ou solução?

• Por que os sistemas informatizados:


• não fazem o que deveriam fazer?
• são entregues com atraso?
• custam mais caro do que o previsto?
• são de baixa qualidade?
• são pouco confiáveis?
• são lentos?
• são difíceis de usar?
• etc ... ????
Respostas:
• Problemas são resolvidos por pessoas, processos e tecnologia.
• Sistemas são usados dentro de processos…
• portanto, os processos têm que ser definidos.
• Sistemas são usados por pessoas…
• … portanto, as pessoas têm que ser:
• levadas em conta;
Engenharia de Software: conceitos básicos Pg. 2

• treinadas;
• ajudadas.
• Problemas são resolvidos por sistemas, não apenas por
software.

Sistema
Bancos de dados
Software
Procedimentos manuais

Hardware Redes de comunicação

• Fazer software é mais do que desenvolver programas.


• O ciclo de vida do software:
• Ativação
• Especificação
• Desenvolvimento
• Implantação
• Operação

• Desenvolver programas é mais do que codificar.


• O ciclo de desenvolvimento de software:
• Desenho alto nível
• Desenho detalhado
• Codificação
• Testes

Por que os sistemas informatizados...


• …não fazem o que deveriam fazer?
• Porque os problemas têm que ser bem enunciados, antes
de serem resolvidos
Engenharia de Software: conceitos básicos Pg. 3

.
• O que é necessário fazer é uma coisa.

• O que os usuários querem é outra coisa

• O que os usuários pedem é outra coisa

• O que os analistas entendem é outra coisa

• O que acaba sendo feito ...

• especificar os requisitos custa tempo e dinheiro…


• não especificar custa mais tempo e dinheiro!
• Modificações dos requisitos no meio do
desenvolvimento (instabilidade dos requisitos):
• perda de tempo e dinheiro;
• às vezes são inevitáveis ...
• O que fazer?
• As mudanças de requisitos podem ser
minimizadas:
• graças a uma boa especificação.
• As mudanças de requisitos têm que ser
administradas (gestão de requisitos):
• através de regras;
• através do desenho;
• através de ferramentas.
Por que os sistemas informatizados...
• são entregues com atraso?
• custam mais caro do que o previsto?
• Porque os projetos têm que ser bem planejados e
controlados, para serem realizados è Planejamento e
Controle de Projetos.
Engenharia de Software: conceitos básicos Pg. 4

• Executar projetos é mais do que escrever propostas.


• Fazer orçamentos e cronogramas é fácil.
• Cumpri-los é muito mais difícil.
• Sem controle, compromissos não se cumprem.
• É necessário gerir os projetos!

• A cultura do prazo ...


• os sistemas só são propostos quando a necessidade deles é
para ontem.
• os prazos são fixados de forma comercial ou política, e não
técnica:
• o sistema já foi vendido…
• o ministro vem inaugurar…
• Não me interessa como você vai fazer, desde que entregue
no prazo!
• Pressionados o suficiente, programadores prometem
qualquer prazo.

• Não só a etapa de desenvolvimento conta nos prazos.


• Ativação
• Especificação
• Desenvolvimento
• Implantação
• Operação
• Só o desenvolvimento depende mais dos programadores que
dos usuários!
• Conseqüências da cultura do prazo:
• produtos de má qualidade…
• que não resolvem os problemas que deveriam resolver…
• e são entregues fora do prazo!
• Dado um prazo, sempre se consegue fazer alguma coisa.
• Resta ver se é a coisa que deveria ser feita.
Engenharia de Software: conceitos básicos Pg. 5

• Os processos de desenvolvimento de software são


intensivos em mão de obra.
• Métodos resolvem apenas uma parte dos problemas.
• Ferramentas resolvem uma parte ainda menor dos
problemas.
• Ferramentas e métodos avançados só têm utilidade nas
mãos de pessoas capacitadas.

• Receitas para reduzir custos.


• Fazer uma boa especificação, para não ter que muda-la
durante o desenvolvimento.
• Nada é mais caro que resolver os problemas errados.
• Identificar e resolver problemas o mais cedo possível.
• custo de correção dos defeitos cresce muito ao longo do
tempo.
• Não usar tecnologia tosca demais.
• tempo dos programadores geralmente é mais caro que
plataformas e ferramentas.
• Não usar tecnologia sofisticada demais.
• tempo de aprendizado de plataformas e ferramentas
sofisticadas pode ser maior que o benefício.
Engenharia de Software: conceitos básicos Pg. 6

Por que os sistemas informatizados...


• ... são de baixa qualidade?
• Porque a qualidade não é planejada...
• portanto, não é controlada!
• Mas o que é qualidade de software? é o grau de conformidade
de um produto com os seus requisitos

• A qualidade dos produtos depende da qualidade dos


processos.
• que é mal especificado, é mal projetado.
• que é mal projetado, é mal construído.
• que é mal construído, é muito difícil consertar.
• Todos os produtos intermediários devem ser conferidos.
• O que não passar na checagem não está pronto.
• Conferir custa tempo e dinheiro.
• Não conferir custa muito mais.
• O controle da qualidade é inútil se não for obsessivo.
• Todos conferem melhor o trabalho alheio.
• Quem confere não pode ser quem desenvolve.
• Qualidade é produzida por técnicas corretas nas mãos de
pessoas capacitadas.
• Conferir não cria qualidade, apenas descobre problemas.
• Qualidade não é luxo, é a necessidade mais básica.
• Prazos e custos só podem ser definidos a partir de objetivos
de qualidade.
• Com qualidade zero, pode- se fazer qualquer coisa dentro
do prazo.
Engenharia de Software: conceitos básicos Pg. 7

Onde atuar?

• Investir em tecnologia?
• Tecnologia tem seu próprio ritmo de evolução.
• Tecnologia demais é problema e não solução.
• Capacitação de pessoas?
• Formar pessoas é difícil, caro e demorado.
• Recrutar pessoas capacitadas também.
• Mudanças no processo de produção de software?
• Mudanças de processo podem trazer melhorias a prazo
mais curto.
• Problema: não existe bala de prata!
• Ferramentas não fazem milagres.
• Metodologias não fazem milagres.
• Métodos gerenciais não fazem milagres.
• Os processos também não fazem milagres!
• A capacitação em processos é, ela própria, um processo.
• objetivo do processo de capacitação é o amadurecimento
de uma cultura da qualidade.
• Requer tempo, recursos, motivação.
• O amadurecimento dos processos se faz passo a passo.
• Existem níveis de maturidade.
• Níveis de maturidade de software:
• nível artesanal:
• processo informal (só existe na cabeça dos
desenvolvedores), de alto risco.
• freqüentes surpresas:
• geralmente desagradáveis;
• projetos andam de crise em crise;
• quando funciona, é por causa de talentos individuais;
• sucessos em geral não se repetem.
Engenharia de Software: conceitos básicos Pg. 8

• O nível de gestão básica:


• gestão de requisitos, dos projetos e da qualidade;
• capacidade para repetir tipos de projetos bem sucedidos.
• Níveis superiores de maturidade:
• nível de engenharia básica;
• nível de engenharia avançada;
• nível de melhoria contínua dos processos.
• Modelos de capacitação:
• servem para avaliar a maturidade dos processos de uma
organização;
• modelo CMM (Capability Maturity Model) : focaliza os
processos

Número Nome do Característica da Característica dos


do nível nível organização processos
Nível 1 Inicial Não segue rotinas Processos caóticos
Nível 2 Repetitivo Segue rotinas Processos
disciplinados
Nível 3 Definido Escolhe rotinas Processos
padronizados
Nível 4 Gerido Cria e aperfeiçoa Processos previsíveis
rotinas
Nível 5 Otimizante Otimiza rotinas Processos em
melhoria contínua
Engenharia de Software: conceitos básicos Pg. 9

E esta disciplina???

Esta disciplina visa tornar o aluno apto a:

• utilizar um processo típico de produção de software;


• utilizar padrões e técnicas para:
• engenharia de requisitos;
• análise orientada a objetos;
• projeto orientado a objetos;
• projeto detalhado e codificação;
• realização de testes;
• aplicar os padrões e técnicas acima em projetos de software de
pequeno e médio porte;
• participar de revisões técnicas, relatá-las e conduzi-las.

Você também pode gostar