INF62: Informática no Ensino de Física 2
Aula 04
Revisão de Conceitos Básicos
Software
Eduardo Figueiredo
25 de Março de 2010
Sistema Computacional
Pessoas
Sistema Computacional: Software

Componente lógico de um sistema
computacional




Ponte entre os usuários e a máquina
Séries de instruções
Indicam passo a passo o que o computador deve
fazer
Importância



Realizam tarefas rotineiras e/ou periódicas
Aumentam a produtividade
Reduzem os custos de uma organização
O que é software?

Programa de computador +
Documentação

Classificação fundamental


Produtos genéricos
(ex. Microsoft Office)
Produtos encomendados
(ex. Portal de Ensino da UFU)
Crise do Software (1968)


Custos de hardware caindo
Custos do software subindo
Avanços em hardware


Permitem desenvolvimento de sistemas
cada vez mais complexos
Resultado (software)

Custos altos, projetos atrasados,
sistemas não confiáveis,
desempenho insatisfatório, etc...
Software está em todo lugar
Sistemas Críticos

Equipamentos médicos



Extremamente críticos
Lidam com vidas
Caixas eletrônicos

Prejuízos financeiros
Confiabilidade de Software

Exemplo: Vôo Air France Rio - Paris
1. Dados conflitantes (falha nos sensores)
2. Sistema assume o controle (piloto automático)
3. Piloto tenta reiniciar o sistema (boot)
4. Em 4 minutos o avião mergulha no oceano

The Last Four Minutes of Air France Flight 447.
http://www.spiegel.de/international/world/0,1518,679980,00.html
Preço e Desempenho

Celular

Pouco espaço na memória
Grande variação em
características de aparelhos
Alguns Tipos de Software
Classificação de Software
Quanto a Função

Infra-estrutura Básica do Sistema



Sistema Operacional
Utilitários de controle (BIOS, firmwares, drivers...)
Aplicativos




Software Comercial
Software Científico ou de Ensino
Software de Tempo Real
Software de Inteligência Artificial, etc.
Sistema Operacional

Software Básico de um computador

Não existiam nos computadores antigos



Exemplo: computadores construídos com
válvulas e painéis
Os programadores deviam considerar as
características do hardware
Atualmente, estão presentes em todos os
computadores pessoais

E também em muitos computadores
pertencentes a outras categorias
Sistema Operacional

Cria um ambiente no qual os usuários
podem construir e executar programas

Executam programas internos de controle
do computador de forma transparente


Sem que o usuário saiba ou precise se
preocupar em saber
Exemplos de Sistemas Operacionais

Windows, Linux, Mac OS, Solaris ...
Tarefas do Sistema Operacional



Gerenciamento da memória do
computador
Administração dos dados
Acionamento dos dispositivos de
entrada e saída


Teclado, mouse, disquetes, CDs, DVDs,
etc.
Execução de programas utilitários ou
construídos pelo usuário
Aplicações Específicas

Negócios e Comércio


Comércio eletrônico, bolsa de valores,
planejamento de gastos, etc.
Medicina



Análise de imagens médicas como ultra-som
Acompanhamento de atletas e pacientes
Detecção de anomalias genéticas
Aplicações Específicas

Exército




Simula estratégias de ataque/defesa
Treinamento de soldados
Calcula trajetórias de projéteis
E muito mais...




Usinas nucleares e hidrelétricas
Portos e aeroportos
Previsões meteorológicas
Atividades geológicas
Desenvolvimento de Software
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Especificação de Requisitos

Um sistema de programação deve
satisfazer as necessidades de seus
usuários


Tais necessidades são expressas na
forma de requisitos
Requisito = ação que deve ser
executada pelo sistema

Ex: registrar as notas dos alunos,
calcular a média final, etc.
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Da Análise ao Projeto

A partir do documento de análise de
requisitos, projeta-se o sistema
1ª Fase: Resolução do Problema
PROBLEMA
Encontrar
Solução
Programa de
Computador
2ª Fase: Implementação (codificação)
Projeto do Sistema
Dividido em duas etapas

Projeto Preliminar define a estrutura
modular do software, as interfaces e as
estruturas de dados utilizadas


Saída: diagramas
Projeto Detalhado descreve
detalhadamente cada módulo definido no
projeto preliminar

Saída: algoritmos
Projeto de uma Casa
Projeto Preliminar de Software
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Implementação do Sistema

A implementação segue as definições
do projeto preliminar

Transcreve as instruções do
algoritmo para uma linguagem de
programação

Exemplo: Linguagem C ou Java
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Teste e Validação

Tem por objetivo garantir que o
sistema satisfaça os requisitos

Consiste da realização de alguns tipos
de testes para encontrar erros

A inexistência de erros não representa
a adequação operacional do sistema

Deve ser feita a validação com o cliente
Linguagem de Programação
Um Pouco de História
Evolução das Linguagens

Linguagens de Máquina


Linguagens Assembly


+1300042774
(traduzido depois para 0 e 1)
load basepay / add overpay / store grosspay
Linguagens de Alto Nível

grosspay = basepay + overpay
Linguagens de Máquina

Definem instruções a serem executadas
pelo computador


Código de máquina: uma seqüência de
números significa uma instrução a ser
executada


São especificas para o hardware
“+1300042774” significa “load basepay”
Atualmente, programar em linguagens de
máquina é pouco comum

São usadas linguagens de alto nível
como C ou Java
Linguagens de Alto Nível

Programadores geralmente utilizam
linguagens de alto nível


Programas de alto nível são traduzidos para
a linguagem da máquina por compiladores


Mais próximo da compreensão humana
Arquivo .EXE é gerado
O programa compilado pode então ser
executado pelo computador
Evolução de uma Linguagem

BCLP (1967) por Martin Richards

Linguagem C (1972) por Dennis Ritchie

C++ (1980) por Bjarne Stroustrup, Bell Labs

Java (1995) pela Sun
Referências

DEITEL, H. M.; DEITEL P. J. Java: Como
Programar, 6a. Edição. Pearson, 2005.


Seção 1.6 a 1.10
Ian Sommerville. Engenharia de
Softwawe, 8a. Edição. 2007.
Download

Aula 04