Ministério da Educação Universidade Tecnológica Federal do Paraná Câmpus Santa Helena Introdução a Ciência da Computação Bacharelado em Ciência da Computação Professor : Agnaldo da Costa 1 Sistema Computational O que é um Sistema Computacional? O Que é Sistema Computacional? Integração de componentes atuando como uma entidade, com o propósito de processar dados, por exemplo, realizar algum tipo de operação aritmética/ lógica envolvendo os dados, de modo a produzir diferentes níveis de informações. O Que é Sistema Computacional? ...interação existente entre os diversos componentes de hardware, software e peopleware que trabalham de forma conjunta sobre uma determinada massa de dados de forma a produzir informações/resultados de interesse para outros sistemas/usuários. Sistema Computational Sistema Computacional Software Hardware Peopleware Sistema Computacional • Hardware: Parte física do sistema computacional • Ex: teclado e impressora • Software: Parte lógica do sistema computacional • EX: sistema operacional e processador de texto • Peopleware: Pessoas que interagem com o sistema computacional • EX: usuário e programador Sistema Computational • O hardware um sistema computacional pode ser agrupado nas seguintes categorias básicas: • Dispositivo de entrada de dados • Dispositivo de saída • Unidade Central de Processamento – UCP • Memória Principal • Memória Auxiliar Dispositivo de Entrada UCP Memória Principal ou Memória Auxiliar Dispositivo de Saída Sistema Computational • Dispositivo de entrada de dados • Recebe os dados e as instruções para o processamento • EX: teclado, mouse e leitores ópticos • Dispositivo de saída • Mostra o resultado do processamento • EX: monitor, impressora e caixas acústicas • Unidade Central de Processamento – UCP • Realiza cálculos e executa instruções • EX: Pentium e Turiom Sistema Computational • Memória Principal • Armazena de forma volátil (enquanto houver energia) um dado • EX: RAM (random access memory) • Memória Auxiliar • Armazena de forma não volátil (longo prazo) um dado • Disco Rígido, Pendrive e CD Sistema Computational • O software de um sistema computacional pode ser dividido em dois grupos básicos: • Software Básico (Programas de Sistemas) • São programas essenciais ao funcionamento do hardware e ao apoio a outros softwares • EX: sistemas operacionais e tradutores de linguagens de programação • Softwares Aplicativos • São programas destinados a resolver problemas do usuário • EX: folhas de pagamento, imposto de renda e planilhas eletrônicas Sistema Computational • O peopleware de um sistema computacional pode ser classificado em dois tipos básicos: • Usuário Final • Interagem com o sistema computacional sem conhecer detalhes do seu desenvolvimento • EX: secretárias, balconistas e executivos • Usuário Especialista • Interagem com o sistema computacional especificando ou programando como este deve se comportar • EX: programadores, analistas de sistemas e engenheiros de computação Camadas de Software e Hardware Usuário final Software Aplicativo Linguagens de alto nível Montadores, interpretadores e compiladores Software Básico: Sistema operacional + Drivers Máquina convencional – Linguagem de máquina (Assembly) Microprogramação (usando circuitos eletrônicos) Lógica digital (circuitos eletrônicos) MÁQUINA Definição Software Software é uma sequência de instruções escritas para serem interpretadas por um computador com o objetivo de executar tarefas específicas. Em um computador, o software é classificado como a parte lógica cuja função é fornecer instruções para o hardware. Definição Software Software é uma sequência de instruções a serem seguidas e/ou executadas, na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento. "Software" também é o nome dado ao comportamento exibido por essa sequência de instruções quando executada em um computador ou máquina semelhante além de um produto desenvolvido pela engenharia de software, e inclui não só o programa de computador propriamente dito, mas também manuais e especificações. Para fins contábeis e financeiros, o software é considerado um bem de capital.(wikepedia) A estrutura computacional Software – Arquitetura - TIPOS Aplicativo Linguagem . SO Hardware Software Usuário Software está em todo lugar Adaptado de: Giraffa & Ana Paula 18 Primeiros Geração - características •desenvolvimento do software era feito, virtualmente, sem administração até que os prazos começassem a se esgotar e os custos a subir abruptamente. •orientação batch (em lote) para a maioria dos sistemas •Na maior parte, entretanto, o hardware dedicava-se à execução de um único programa que, por sua vez, dedicava-se a uma única aplicação específica •software, por outro lado, era projetado sob medida para cada aplicação e tinha uma distribuição relativamente limitada •ambiente de software personalizado o projeto era processo implícito realizado no cérebro de alguém e a documentação muitas vezes não existia. Adaptado de: Giraffa & Ana Paula 19 Segundo Geração –características •Multiprogramação e os sistemas multiusuários introduziram novos conceitos de interação homem-máquina •Técnicas interativas •Avanços da armazenagem on-line levaram à primeira geração de sistemas de gerenciamento de banco de dados •Software desenvolvido para ampla distribuição num mercado interdisciplinar • Programas para mainframes e minicomputadores •Surgimento da "manutenção de software“ Adaptado de: Giraffa & Ana Paula 20 Terceira Geração –características • As redes globais, as comunicações digitais de largura de banda ("bandawidth") elevada e a crescente demanda de acesso "instantâneo" a dados exigem muito dos desenvolvedores de software. • Caracterizada pelo advento e o generalizado uso de microprocessadores, computadores pessoais e poderosas estações de trabalho "workstations" de mesa. Adaptado de: Giraffa & Ana Paula 21 Quarta Geração –características • As tecnologias orientadas a objetos, orientadas a documentos, estão ocupando o lugar das abordagens mais convencionais para o desenvolvimento de software em muitas áreas de aplicação. • Os sistemas especialistas e o software de inteligência artificial finalmente saíram do laboratório para a aplicação prática em problemas de amplo espectro do mundo real. Adaptado de: Giraffa & Ana Paula 22 Classificação de Softwares Verzello classifica o software em três tipos, sendo: • Software de sistema - são programas escritos para controlar e coordenar o software. • Software de linguagens - são programas que traduzem outros programas escritos em linguagens de programação mais ou menos semelhantes à língua inglesa, para a forma binária que é a linguagem utilizada pelos componentes do sistema computacional e, além disso, os programas escritos para ajudar os desenvolvedores a escrever seus programas e a manter os programas já escritos a salvo, em bancos de dados especiais. • Software de aplicação - são programas escritos para resolver problemas comerciais ou prestar outros serviços de processamento de dados aos usuários. Software Básico • Software básico - é uma coleção de programas escritos para dar apoio a outros programas. A área do software básico é caracterizada por: • forte interação com o hardware de computador; • intenso uso por múltiplos usuários; • operações concorrentes que exigem escalonamento "schedule"; • compartilhamento de recursos e sofisticada administração do processo; • estruturas de dados complexas e múltiplas interfaces externas. Software Básico - Sistema O software de Sistemas Abrange todos os programas relacionados com a coordenação Operacional do computador, dentre eles o Sistema Operacional, que coordena a interação entre Hardware e Software, principalmente a transferência entre a memoria e os dispositivos de entrada e saída. É constituído por um Kernel (núcleo) e um conjunto de Software Básicos Ex: Linux, Windows , Mac, etc. Software Básico -Sistema Operacional • Os principais tipos são: • • • • Monotarefa – realiza apenas uma única tarefa de cada vez. Multitarefa – permite executar várias tarefas simultâneas. Monousuário – apenas um único usuário por vez no computador. Multiusuário – vários usuários utilizam o mesmo S.O. Software Básico - Utilitários • Administram o ambiente. • Fornecem ao usuário ferramentas para organizar os discos, verificar disponibilidade de memória,corrigir falhas de processamento. Compactadores; Formatadores; Backup; Desfragmentadores; Antivírus; Software de Linguagem • JAVA • DELPHI •C • # NET • PYTHON • JAVASCRIPT • MATLAB • VISUAL BASIC Tela de Desenvolvimento - DELPHI Tela de Desenvolvimento - Eclipse SIMULADOR CNC Software de Aplicação - Confiabilidade Equipamentos médicos • Extremamente críticos • Lidam com vidas Caixas eletrônicos • Prejuízos financeiros VOO AIR FRANCE Software de Aplicação : Características - Confiabilidade 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 Pressman, amplia esta classificação de software para 7 categorias, comentando ser uma tarefa um tanto difícil desenvolver categorias genéricas para aplicações de software, pois à medida em que a complexidade do software cresce, desaparece a clara visão em compartimentos. Seguem-se as categorias sugeridas: •Software Básico; •Software de Tempo Real; •Software Comercial; •Software Embutido; •Software Computador Pessoal; •Software Cientifico ou de Engenharia •Software Inteligência Artificial Adaptado de: Giraffa & Ana Paula 35 Software Básico X Aplicativo Como é o Desenvolvimento de um Software? Abstração A realidade é complexa e rica em detalhes! Abstração 40 Realidade O que você abstrai dessa realidade? Abstração O que é abstração? Abstração Abstração = Operação mental que observa a realidade e captura apenas os aspectos relevantes para um contexto Abstração • Passe alguns minutos olhando para a figura abaixo e diga o que você consegue abstrair dela Abstração • Conseguiu ver uma jovem mulher de perfil? • Ou uma senhora olhando para baixo? Abstração Perceba que a realidade é a mesma • Isto é, uma figura em preto e branco Mas dependendo da observação da realidade você pode ter abstrações diferentes 45 Por isso, a abstração depende mais do observador do que da realidade observada. Abstração • A tarefa de programar sistemas computacionais envolve o exercício constante da abstração da realidade e sua codificação em uma linguagem de programação Abstração + Programação Sistema de Locadora de Veículo Principais Problemas no Desenvolvimento de Software Fases do Desenvolvimento • Modelo Cascata • Define atividades sequenciais • Outras abordagens são baseadas nesta ideia Especificação de Requisitos Projeto Implementação Testes Manutenção Fases do Desenvolvimento • Modelo Cascata • Define atividades seqüenciais • Outras abordagens são baseadas nesta ideia Especificação de Requisitos 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 • Define atividades seqüenciais • Outras abordagens são baseadas nesta ideia Especificação de Requisitos 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 Especificação de Requisitos 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 • Exemplos: Linguagem C, Java, Pascal... Fases do Desenvolvimento Especificação de Requisitos 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 Referencias • MASIERO, P. S. Ética em Computação. 1. ed. São Paulo: Editora da Universidade de São Paulo, 2013. • SÁ, A. L. de. Ética Profissional. 9. ed. Editora Atlas, 2014. • TANENBAUM A. S., WOODHULL, A. S. Sistemas Operacionais – Projeto e Implementação. 3. ed. Bookman, 2008. • MEIRELLES, F. S. Informática: Novas aplicações com microcomputadores. 2. ed. São Paulo: Makron Books, 1994. • ARAÚJO, E. C. Algoritmos: Fundamentos e Prática. 3. ed. Florianópolis: Visual Books, 2007.