ENGENHARIA DE SOFTWARE
Prof. Paulo Malcher
prcmalcher@gmail.com
https://sites.google.com/site/professorpaulomalcher/
Sumário
• Engenharia de Software • Software • Aplicações de Software • Paradigmas de Projetos • Mitos de Software • Processo de Software• Modelos de Processo de Software
Engenharia de Software – O que é?
• Estudo ou aplicação de abordagens
sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade.
• Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu
trabalho e usar ferramentas e
técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis
Engenharia de Software - Objetivos
• Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados.
• Produtividade no desenvolvimento, operação e manutenção de software.
• Qualidade versus Produtividade.
• Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados.
Engenharia de Software - Características
• A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos
• Usa princípios de engenharia ao invés de arte, e inclui tanto aspectos técnicos quanto não técnicos
Software – O que é?
• Programas de computador e documentação
associada
• Produtos de software podem ser
desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral
Software – Componentes
• INSTRUÇÕES
• Aquelas que quando executadas produzem a função com desempenho desejados.
• ESTRUTURAS DE DADOS
• Aquelas que possibilitam que os programas
manipulem a informação de maneira adequada e segura.
• DOCUMENTOS
Software - Características
• Não se desgasta com o tempo, mas pode se deteriorar.
• Pode ser desenvolvido ou projetado pela engenharia, não manufaturado no sentido clássico.
• Principal destaque na melhoria da
Software - Características
• A maioria é feita sob medida em vez de ser montada a partir de componentes existentes;
• Grande parte dos softwares produzidos no passado não possuem documentação e nem planejamento.
Software – Tipos
• BÁSICO
• Serve para dar apoio a outros programas.
• TEMPO REAL
• Monitora, analisa e controla eventos do mundo real.
• CIENTÍFICO E DE ENGENHARIA
• Caracterizado por algoritmos de processamento de números
Software – Tipos
• COMERCIAL (EMPRESARIAL)
• Trata de operações comerciais e tomadas de
decisões administrativas.
• EMBUTIDO (EMBARCADO)
• Usado para controlar produtos e sistemas para os mercados industriais e de consumo.
• DE COMPUTADOR PESSOAL
• Envolve processamento de textos, planilhas
Software – Tipos
• DE INTELIGÊNCIA ARTIFICIAL
• Faz uso de algoritmos não numéricos para resolver problemas que não sejam favoráveis à computação ou à análise direta;
Atual 1975
1965
1950
• O hardware sofreu contínuas mudanças.
• O software era uma arte
"secundária" para a qual havia poucos métodos sistemáticos. • O hardware era de propósito
geral.
• O software era específico para cada aplicação.
• Não havia documentação.
Atual 1990 1975 1965 1950 • Multiprogramação e sistemas multiusuários. • Técnicas interativas.
Sistemas de tempo real - 1a
geração de SGBD’s.
Produto de software - software houses.
• Bibliotecas de Software.
Atual 1990
1975 1965
1950
• Cresce o número de sistemas baseado em computador.
• Manutenção quase impossível.
CRISE DO
SOFTWARE
Atua l 1995 1975 1965 1950 • Sistemas distribuídos. • Redes locais e globais.
• Uso generalizado de
microprocessadores - produtos inteligentes.
• Hardware de baixo custo. • Impacto de consumo.
(Quarta era da evolução) Atual 1995 1975 1965 1950 • Tecnologias orientadas o objetos. • Sistemas especialistas e
software de inteligência artificial usados na prática.
• Software de rede neural artificial Computação Paralela.
Software de Qualidade – O que é?
• O software que satisfaz os requisitos
solicitados pelo usuário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar.
• Alguns Atributos de Qualidade
• Manutenibilidade: O software deve evoluir para atender os requisitos que mudam
• Eficiência: O software não deve desperdiçar os recursos do sistema
• Usabilidade: O software deve ser fácil de usar pelos usuários para os quais ele foi projetado
Software de Qualidade - Exemplo
• LOJA DE VAREJO
• Correto
• A loja não pode deixar de cobrar por produtos comprados pelo consumidor.
• Robusto e altamente disponível
• A loja não pode parar de vender.
• Eficiente
• O consumidor não pode esperar.
• A empresa quer investir pouco em recursos computacionais (CPU, memória, rede).
Software de Qualidade - Exemplo
• LOJA DE VAREJO
• Amigável e fácil de usar
• A empresa quer investir pouco em treinamento.
• Altamente extensível e adaptável
• A empresa tem sempre novos requisitos (para ontem!).
• A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.).
• Reusável
• Várias empresas precisam usar partes de um mesmo sistema.
Software de Qualidade - Exemplo
• LOJA DE VAREJO
• Aberto, compatível, de fácil integração com outros sistemas
• A empresa já tem controle de estoque, fidelização, etc.
• Portável e independente de plataforma (hw e sw)
• A empresa opta por uma determinada plataforma.
• Baixo custo de instalação e atualização
Crise do Software – Conceito
• Refere-se a um conjunto de problemas
encontrados no desenvolvimento de software e na etapa de Manutenção.
Crise do Software – Visão Geral
• 25% dos projetos são cancelados.
• O tempo de desenvolvimento é bem maior do que o estimado.
• 75% dos sistemas não funcionam como
planejado.
• A manutenção e reutilização são difíceis e custosas.
• Os problemas são proporcionais a
Crise de Software – Problemas
1. As estimativas de prazo e de custo
frequentemente são imprecisas.
• “ Falta de dedicação na etapa de coletas de dados no processo de desenvolvimento de software”
• “Vaga indicação de produtividade não se pode avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões”
Crise de Software – Problemas
2. Insatisfação do cliente com o
sistema concluído
• “Projetos de desenvolvimento de software são efetuados com um vago indício das exigências do cliente”
Crise de Software – Problemas
3. A qualidade de software às vezes é menos que adequada
• “Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software”.
Crise de Software – Problemas
4. O software existente é muito difícil de manter (sem manutibilidade).
• A tarefa de manutenção devora o orçamento
destinado ao software.
• A facilidade de manutenção não foi enfatizada como um critério importante.
Crise de Software – Causas
• Essências
• Complexidade dos sistemas.
• Dificuldade de formalização.
• Acidentes
• Má qualidade dos métodos, linguagens, ferramentas, processos, e modelos de ciclo de vida.
Crise de Software – Causas
1. Caraterísticas próprias do software
• O software é um elemento de sistema lógico e não físico. Consequentemente o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas.
Crise de Software – Causas
2. Falhas das pessoas responsáveis pelo
desenvolvimento de software
• Gerentes sem nenhum background em Software.
• Profissionais da área de software têm pouco treinamento formal em novas técnicas para o desenvolvimento de software.
Crise de Software – Causas
3. Mitos do Software
• Falta de Planejamento e Comunicação
• Administrativos
• Cliente
Crise de Software – Mitos do Software
• MITOS ADMINISTRATIVOS
• Mito 1
• Já temos um manual repleto de padrões e procedimentos para a construção de software. Isso não oferecerá ao meu pessoal tudo o que eles precisam saber?
• Realidade (Mito 1)
• Será que o manual é usado?
• Os profissionais sabem que ele existe?
• Ele reflete a prática moderna de desenvolvimento de software
Crise de Software – Mitos do Software
• MITOS ADMINISTRATIVOS
• Mito 2
• Meu pessoal tem Ferramentas de desenvolvimento de software de última geração.
• Realidade (Mito 2)
• É preciso muito mais do que os mais recentes computadores e as melhores ferramentas para se fazer um desenvolvimento de software de alta qualidade.
Crise de Software – Mitos do Software
• MITOS ADMINISTRATIVOS
• Mito 3
• Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e recuperar o atraso.
• Realidade (Mito 2)
• O desenvolvimento de software não é um processo mecânico igual à manufatura. Acrescentar pessoas em um projeto torna-o ainda mais atrasado.
• Pessoas podem ser acrescentadas, mas somente de uma forma planejada.
Crise de Software – Mitos do Software
• MITOS DOS CLIENTES
• Mito 1
• Uma declaração geral dos objetivos é suficiente para começar a escrever programas, podemos preencher os detalhes mais tarde.
• Realidade (Mito 1)
• Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento de software.
• É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação.
Crise de Software – Mitos do Software
• MITOS DOS CLIENTES
• Mito 2
• Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.
• Realidade (Mito 2)
• Uma mudança, quando solicitada tardiamente em umprojeto, pode ser maior do que a ordem de magnitude mais dispendiosa da mesma mudança solicitada nas fases iniciais.
Crise de Software – Mitos do Software
• MITOS DOS PROFISSIONAIS
• Mito 1
• Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo.
• Realidade (Mito 1)
• Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente.
Crise de Software – Mitos do Software
• MITOS DOS PROFISSIONAIS
• Mito 2
• Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.
• Realidade (Mito 1)
• Um programa funcionando é somente uma parte de uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software.
PROCESSO DE SOFTWARE
A aplicação de uma abordagem sistemática, disciplinada e possível de ser medida para o desenvolvimento, operação e manutenção do software (IEEE).