Análise e Projeto de Sistemas Engenharia de Software

www2.dem.inpe.br

Análise e Projeto de Sistemas Engenharia de Software

Análise e Projeto de Sistemas

Análise e Projeto de Sistemas

Contextualização

ENGENHARIA DE SOFTWARE

ANÁLISE E PROJETO DE SISTEMAS

ENGENHARIA DA INFORMAÇÃO

Perspectiva Histórica

Engenharia de Software

• 1940: os computadores foram inventados

• 1950: linguagem de montagem, Fortran

• 1960: COBOL, ALGOL, PL/1, Sistemas

Operacionais

– 1969: Primeira conferência sobre ES

• 1970: Sistemas multi-usuário, Banco de Dados,

programação estruturada

Perspectiva Histórica

A Evolução do Software

• 1980: redes, PCs, arquiteturas paralelas

• 1990: Internet, sistemas distribuídos,

Orientação a Objetos

• 2000: Realidade Virtual, reconhecimento de

voz, vídeo-conferência...

1950 1960 1970 1980 1990 2000

1


A Evolução do Software

A Evolução do Software

50 - 64

• Base: Hardware

• Orientação Batch

Software customizado (sob medida)

• Distribuição Limitada

• Ausência de Documentação

60 - 74

• Multiusuário

• Tempo real

• Bancos de Dados

• Novos conceitos de IHC

• Produto de Software

• Advento das software houses

• Maior demanda e crescimento de produto

de software => necessidade de manutenção

• CRISE do Software

A Evolução do Software

A Evolução do Software

75 - 90

Sistemas Distribuídos

• “Inteligência” Embutida

• Hardware de Baixo Custo

• Impacto de Consumo

• Maior complexidade dos softwares

• Gastos com software > gastos com hardware

85 - ...

Sistemas de Desktop poderosos

• Tecnologias Orientadas a Objetos

Sistemas Especialistas

• Redes

Sistemas Distribuídos

• Multimídia e Realidade Virtual

•CRISE Metodologia Sistemática

“Crise” do Software

Antes...

“Conjunto de problemas que são encontrados no

desenvolvimento de software de computador.”

• Principais problemas:

– Estimativas de prazo e custos imprecisas

– Produtividade dos profissionais < demanda de

clientes

– Qualidade do software < desejada

– Tempo insuficiente para a coleta dos dados

– Falta de entendimento entre usuário e

desenvolvedor

• Início da era do computador:

Engenharia de Hardware

• administração orientada ao hardware

• uso de controle, ferramentas e métodos

– Programação: “forma de arte”

• tentativa e erro

• mundo difícil de entender

2


Hoje...

Software: item de maior custo

• Hardware: mais barato e poderoso

• Preocupação:

– Por que demora tanto para a conclusão de um

programa

– Por que custos tão elevados

– Por que não se descobre todos os erros ANTES

– Por que a dificuldade em medir o progresso do

software enquanto está sendo desenvolvido

• Anos 80:

A Importância do Software na

História

– Avanços na área de microeletrônica (VLSI);

– Barateamento do hardware;

– Disseminação do uso de computadores;

– Surgimento de novas áreas de aplicação;

• Resultado: software - fator que diferencia

– Aumento da procura por software;

– Aumento da complexidade dos softwares.

– Aumento nos custos de produção e no

preço final.

Software

Afinal,

o que é SOFTWARE

“Instruções que, quando executadas,

produzem a função e o desempenho

desejados”

“Estruturas de dados que possibilitam que os

programas manipulem adequadamente a

informação”

Software é formado por programas,

documentos e dados”

Características do Software

Software é desenvolvido; não é manufaturado

como hardware

Software não se desgasta com o uso, porém se

deteriora

• A “maioria” é construída para o cliente, em

vez de ser projetada a partir de componentes

=> necessidade de reutilização

Software é uma oportunidade de negócios

Domínios de Aplicação/Software

• Básico

– compiladores, editores, sistema operacional

• Negócios

– Banco de Dados

Engenharia e Ciências

– CAD

– Simulação

• Inteligência Artificial

Sistemas Especialistas

• Tempo Real

– Controle de máquinas

3


Problemas na Produção do

Software

Quesitos de Qualidade do Software

ð A sofisticação dos atuais softwares é muito

superior à nossa capacidade de construir software

que extraia o potencial do hardware;

ð A demanda por novos softwares é muito maior

que a capacidade de produzi-los

ð A criação e manutenção de sistemas é

comprometida pela ausência ou deficiência nos

projetos.

• Manutenibilidade

• Confiabilidade

• Eficiência

• Testabilidade

• Compreensibilidade

• Interface apropriada

• Adaptabilidade

Engenharia de Software

Engenharia de Software

• Início: 1969 / Fritz Bauer

“O 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”

• Definições atuais:

“Disciplina tecnológica preocupada com a produção e

manutenção sistemática de produtos de software

desenvolvidos e modificados dentro de prazos e custos

estimados”

“O estudo sistemático e efetivo de processos e tecnologias

para suporte de atividades de desenvolvimento e

manutenção de software, visando: qualidade e redução de

custos”

Engenharia de Software

Engenharia de Software

• Outras definições:

“Conjunto de teorias, métodos e ferramentas necessárias

para desenvolver software para computadores”

“A 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

Métodos:

•Análise

Projeto

•Codificação

•Teste

•Manutenção

Procedimentos:

•Gerenciamento de Projeto

•Segurança da Qualidade de Software

•Métricas

•Inserção de Novas Tecnologias

Ferramenta CASE (Computer-Aided Software Engineering):

suporte a métodos e procedimentos

4


Engenharia de Software

• Métodos:

– Planejamento e estimativa de projeto;

– Análise de requisitos do software;

Projeto das estruturas de dados, arquitetura,

algoritmos, codificação, teste e manutenção.

• Ferramentas:

– Gerais: editores, linguagens...

– CASE

• Diversas finalidades;

• Automatização dos métodos

• Procedimentos

– Estabelecem:

Engenharia de Software

• a seqüência de aplicação dos métodos

• os produtos a serem entregues em cada aplicação de um

método (documentos, relatórios, diagramas, etc.);

• os controles que ajudam a assegurar a qualidade e a

coordenar as mudanças;

• os marcos de referência (medidas) que possibilitem a

avaliação do progresso;

• o elo de ligação entre os métodos e as ferramentas;

Engenharia de Software

Abordagem

Artesanal

Metodologia

Sistemática

Engenharia da Informação

Tríade da ES: métodos + procedimentos + ferramentas

Ângulos

Gerente de Software: Possibilita o controle do processo

produtivo.

Profissional: Oferece uma referência para a construção de

software de qualidade, produtivamente

Informação

Engenharia da Informação

• Bem patrimonial de uma empresa

• Deve ser utilizada de maneira estratégica para

a tomada de decisões

‣Nova realidade de software e hardware

– SGBD - Data warehouse

– SIG - CASE

• Conjunto interligado de técnicas

automatizadas nas quais são construídos

modelos da organização, modelos de dados e

modelos de processos numa abordagem

abrangente a fim de serem usados para

criarem e manterem sistemas de informação

5


Engenharia da Informação

• Emprega técnicas estruturadas em um nível

organizacional e não a nível de projeto de

sistema, compreendendo as seguintes etapas:

1. Planejamento dos sistemas estratégicos da organização

2. Planejamento das informações da organização

3. Análise da Área de Negócios

4. Projeto do Sistema

5. Construção do Sistema

Análise e Projeto de Sistemas

Análise e Projeto de Sistemas

O papel do Analista

ENGENHARIA DE SOFTWARE

ANÁLISE E PROJETO DE SISTEMAS

ENGENHARIA DA INFORMAÇÃO

• Aumentar a eficiência e qualidade dos fluxos

de informações que fluem entre os vários

processos;

• Otimizar e racionalizar tais processos

Sistemas de Informações

‣ conjuntos de processos e informações

interrelacionadas com o objetivo de possibilitar

tomada de decisões

O papel do Analista

• Utilizar modernas técnicas para a construção

de modelos, dos processos e dados da área alvo

• Analisar o comportamento dos sistemas

existentes e propor soluções

• Criar métodos para padronização e/ou

automação das atividades

• Planejar, analisar, projetar, programar e

manter aplicações computacionais

Atividades do Analista

• Dialogar com o Usuário/Especialista

• Escolher:

– Modelo de desenvolvimento (ciclo de vida)

– Padrões de documentação, codificação, verificação e

testes

– Ambientes de desenvolvimento e/ou linguagens de

programação adequadas

– Métodos para medir e reportar o progresso do

desenvolvimento

6


Atividades do Analista

• Organizar e coordenar as equipes de desenvolvimento

de software

• Indicar e/ou comprar hardware e ferramentas de

software necessários ao projeto

• Avaliar a viabilidade do produto e de seu

desenvolvimento

• Efetuar a estimativa de custos, riscos e preço do

produto

7

More magazines by this user
Similar magazines