Buscar

Engenharia de Software: Conceitos Básicos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

. . . . . . . . . .
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;
Renato Cardoso Mesquita
Departamento de Eng.
Elétrica da UFMG
renato@cpdee.ufmg.br
Engenharia de Software: conceitos básicos Pg. 2
• treinadas;
• ajudadas.
· Problemas são resolvidos por sistemas, não apenas por
software.
· 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
Sistema
Software
Hardware
Bancos de dados
Redes de comunicação
Procedimentos manuais
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
do nível
Nome do
nível
Característica da
organização
Característica dos
processos
Nível 1 Inicial Não segue rotinasProcessos caóticos
Nível 2 RepetitivoSegue rotinas Processos
disciplinados
Nível 3 Definido Escolhe rotinas Processos
padronizados
Nível 4 Gerido Cria e aperfeiçoa
rotinas
Processos previsíveis
Nível 5 OtimizanteOtimiza 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:
· engenhariade 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.

Outros materiais