Buscar

2 - Noções de Engenharia de Software

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Clique para editar o estilo do título mestre
Clique para editar o estilo do subtítulo mestre
Como a engenharia de software pode contribuir no desenvolvimento de sistemas?
1.1 O problema do software
1.2 A velha crise do software
1.3 Os velhos mitos do software
1.4 Atributos de um bom software
Objetivo: mostrar o que é a Engenharia de Software e a sua importância na análise e projeto de sistemas
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
1.1 O PROBLEMA DO SOFTWARE
O software é um produto diferencial em vários aspectos…
Evolutivo
Feedback, interacional
…e faz a diferença hoje até mais do que o hardware
Evolução do software:
Primeiros anos:
 Batch
 Distribuição limitada
 Customizado
Segunda era:
 Multiusuário
 Tempo real
 Produto de software
Terceira era:
 Sistemas distribuídos
 IA
 Baixo custo de hardware
Quarta era:
 Desk-top poderoso
 Orientação a objeto
 Sistemas especialistas / redes neurais
1950	1960		1970	1980	 1990	 2000
Adaptado de Pressman (1995)
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Em direção a uma quinta era novos problemas surgem
A sofisticação do software ultrapassou a capacidade de construir um software que tirasse potencial do hardware
A capacidade de construir programas não acompanha a demanda
A capacidade de construir programas é ameaçada por projetos ruins e recursos inadequados
Em resposta a esses problemas estão sendo adotadas práticas da engenharia
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Voltando às práticas de engenharia, um dos primeiros problemas encontrados foi a própria definição de software
Instruções que quando executadas produzem a função e o desempenho desejados (Pressman)
Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação
Documentos que descrevem a operação e o uso dos programas
Fairley diferencia produto de software de software para uso pessoal 
Há definições do ponto de vista de outros profisionais que não são de informática, mas participam do desenvolvimento do software
Há definições do ponto de vista do usuário
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
O melhor é descobrir as características do “software”
1) O software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico
Problema para a engenharia de hoje: a visão do software nem como produto de engenharia nem como produto de manufatura
2) O software não se desgasta
Há uma diferença básica em relação ao HARDWARE!
Curvas de falhas - Pressman (1995)
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
3) A maioria dos softwares é feita sob medida em vez de ser montada a partir de componentes existentes
A visão de hoje no desenvolvimento radicalizou mais
Mas em relação ao desenvolvimento existem hoje novas formas de concebê-lo que subvertem muito a concepção tradicional
XP (eXtreme Programming) por exemplo:
 se baseia em quatro valores
Feedback
Comunicação
Simplicidade 
Coragem
De uma forma que nem vê o software como um produto de manufatura nem como uma adaptação da engenharia, mas como “a construção de um livro”
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
O software ainda possui aplicações que têm como fatores importantes o conteúdo e a determinância
Software básico
Software de tempo real
Software comercial
Software científico e de engenharia
Software embutido
Software de computador pessoal
Software de IA
…
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
1.2 A VELHA CRISE DO SOFTWARE!
Problemas associados
Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software
A insatisfação do cliente é frequente
A qualidade de software é questionada
O software é difícil de manter
As causas podem ser atacadas pela ES
Projeto
Comunicação
Gerência
Enfrentamento de mudanças
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
1.3 OS VELHOS MITOS DO SOFTWARE!
Administrativos
Mito1: Já tenho um manual com padrões e procedimentos. Isso já não oferece o que o pessoal precisa saber?
Realidade: O manual é usado? Os profissionais têm conhecimento? Reflete uma prática moderna? É completo?
Mito2: Meu pessoal tem as ferramentas de desenvolvimento de última geração e os melhores computadores
Realidade: As ferramentas de ES são mais importantes do que o hardware, mas a maioria ainda não usa
Mito3: Se estamos atrasados, podemos adicionar mais programadores e tirar o atraso (horda de mongóis)
Realidade: O desenvolvimento de software não é mecânico igual à manufatura
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Mitos do cliente
Mito1: uma declaração geral dos objetivos é suficiente para se começar a escrever programas – podemos preencher os detalhes mais tarde
Realidade: uma definição inicial ruim é a principal causa do fracasso. É fundamental uma descrição mais formal.
Mito2: Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível
Realidade: uma mudança, quando solicitada tardiamente, pode ser muito mais dispendiosa do que se fosse solicitada no início
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Mitos do profissional
Mito1: assim que escrevermos o programa e o colocarmos em funcionamento, nosso trabalho estará completo
Realidade: “quanto mais cedo se escreve o código, mais tempo se demora para terminá-lo”
Mito2: enquanto não tiver o programa “funcionando”, eu não terei como avaliar sua qualidade
Realidade: as revisões técnicas formais têm sido mais eficientes do que os testes para a descoberta de certa classe de problemas de software
Mito3: a única coisa a ser entregue em um projeto bem sucedido é o programa funcionando
Realidade: esta afirmação desconhece a figura adiante e a documentação
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Programa funcionando
Especificação de testes
Estrutura de dados
Listagem
Projeto
Especificação de requisitos
Plano
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Além de acabar com os mitos, é essencial
Oferecer assistência para as práticas
Melhorar a qualidade
Permitir que o software acompanhe o desenvolvimento do hardware
Quando combinamos…
Métodos abrangentes para todas as fases de desenvolvimento
Melhores ferramentas para automatizar o processso
Blocos de construção mais sólidos
Melhores técnicas para a qualidade de software
e uma filosofia de coordenação predominante, controle e administração
… fazemos uso da ENGENHARIA DE SOFTWARE
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Definições de Engenharia de Software
“É a ciência e a arte de com economia, em tempo útil e de forma elegante, especificar, projetar, implementar e manter atualizados e corretos, programas, documentação e procedimentos operacionais para sistemas computacionais de utilidade para a humanidade” (Alan Brown, Anthony Earl e John McDermid)
“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 esses programas” (Boehm)
etc
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
Definição de ES de Fritz Bauer
“Estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”
A ES engloba:
1) Métodos – “como fazer”
Planejamento e estimativa de projeto
Análise de requisitos de software e de sistemas
Projeto da estrutura de dados
Arquitetura de programa e algoritmo de processamento
Codificação, teste e manutenção
Os métodos muitas vezes introduzem notações gráficas ou orientadas a uma linguagem especial e conjuntos de critérios para a qualidade de software
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
2) Ferramentas – apoio automatizado ou semi-automatizado aos métodos
Sustentam cada um dos métodos ou os métodos de forma integrada (CASE – computer-aided software engineering)
Combina hardware, software e banco de dados de ES
3) Procedimentos – elo que liga métodos a ferramentas
Sequência dos métodos
Produtos a serem entregues (deliverables)
Controles de qualidade e mudança
A ES compreende conjuntos de etapas que envolvem métodos, ferramentas e procedimentos em modelos ou paradigmas de ES
* - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – IFPB 
1.4 ATRIBUTOS DE UM BOM SOFTWARE SEGUNDO A ENGENHARIA DE SOFTWARE
Pesquise e prepare-se para responder na prova!

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais