Sistemas de Informação e as decisões gerenciais na era da Internet James A. O'Brien Capítulo 3: Introdução ao Software 3.1 Software Aplicativo: aplicações para o usuário final. 3.2 Software de Sistemas: administração de sistemas de computadores. Tipos de Software Software Aplicativo, executa tarefas de processamento de informações para usuários finais. programas aplicativos para finalidades gerais, correio eletrônico, processamento de textos, planilhas eletrônicas, SGBD, Groupware. programas aplicativos específicos, contabilidade empresarial, gerenciamento de vendas, processamento de transações, educação, entretenimento. Software de Sistemas, gerencia e apóia operações de sistemas e redes de computador. programa de gerenciamento de sistemas, SO, SGBD, gerenciamento de redes, utilitários para sistemas, monitores de segurança. programas para desenvolvimento de sistemas, ferramentas de programação, ferramentas CASE. Tipos de Software Software Software de Sistemas Software Aplicativo Programas de Finalidades Gerais Programas de Aplicações Específicas Programas de Gerenciamento de Sistemas Programas de Desenvolvimento de Sistemas Tendências em Software Primeira Geração Segunda Geração Terceira Geração Quarta Geração Quinta Geração Tendência: Rumo a Pacotes Aplicativos de Fácil Uso, Múltiplas Finalidades, com Capacidade para Uso em Rede para Produtividade e Colaboração. Programas Escritos pelo Usuário Linguagens de Máquina SGBD Programas em Pacotes Sistemas Operacionais Linguagens Simbólicas Linguagens de Alto Nível Linguagens de Quarta Geração Pacotes para Microcomputador Linguagem Natural e Linguagem Orientada a Objetos Pacotes Multiuso, Interface Gráfica, Capacidade para Uso em Rede e Ajuda Especializada Tendência: Rumo a Linguagens e Ferramentas Visuais ou de Conversação Conjunto de Software e Pacotes Integrados Conjunto de softwares aplicativos populares para finalidades gerais (Microsoft Office, Lotus SmartSuite, Corel WordPerfect Office). Cada conjunto integra pacotes de software para processamento de textos, planilhas eletrônicas, SGBD, gerenciamento de informações pessoais, programas para acesso à Internet, montagem de páginas para a Internet, reconhecimento de voz, gerenciamento financeiro, ... vantagens, menor custo total x custo individual dos pacotes, interface gráfica com o usuário padrão o que torna mais fácil o aprendizado e a utilização, compartilhar ferramentas comuns, tais como verificadores ortográficos e wizards de ajuda para aumentar sua eficiência. desvantagens, alguns softwares do pacote nunca são usados pela maioria dos usuários finais, espaço em disco. Navegadores de Rede (browser) Um browser como o Netscape Navigator ou o Microsoft Explorer é a interface fundamental de software utilizada para apontar e clicar pelos recursos em hiperlink da Rede Mundial de Computadores (World Wide Web), intranets e extranets empresariais. Os especialistas da indústria estão prevendo que o navegador de rede será o modelo de como a maioria das pessoas utilizará no futuro os computadores interconectados. Assistir a um vídeo, fazer um telefonema, carregar algum software para o computador, realizar uma videoconferência, verificar e-mail ou trabalhar em uma planilha eletrônica do plano de negócios de uma equipe, é possível utilizar um navegador para lançar e receber essas aplicações. É por isso que os navegadores estão sendo chamados de cliente universal, ou seja, o componente de software instalado nas estações de trabalho de todos os usuários nas redes cliente/servidor de toda uma empresa. Navegadores de Rede Surfar na Rede Grupos de Discussão Transferência de Arquivos de Multimídia Usos comuns de um Navegador de Rede em ambientes da Internet, Intranet e Extranet Iniciar Buscas de Informações E-Mail Correio Eletrônico O correio eletrônico mudou o modo como as pessoas trabalham e se comunicam- enviando e recebendo mensagens eletrônicas via internet, intranets ou extranets. O e-mail é armazenado em servidores de redes até que o usuário possa recebê-lo e com apenas alguns minutos de esforço (e alguns microssegundos ou minutos de tempo de transmissão), uma mensagem para um ou vários indivíduos pode ser escrita, enviada e recebida. Pacotes gratuitos- Microsoft HotMail e Netscape WebMail. Software completos- MS Outlook Express e Netscape Messenger podem rotear mensagens para múltiplos usuários finais com base em listas de endereçamento com segurança de senha. Os pacotes de e-mail permitem o envio de gráficos e multimídia além de texto, e fornecem quadros de anotações e a possibilidade de conferência por computador. Filtrar, separar e enviar automaticamente mensagens aos usuários tbém são recursos oferecidos. Processamento de Textos Os pacotes de processamento de textos ou editoração eletrônica computadorizam a criação, edição, revisão e impressão de documentos (tais como cartas, memorandos e relatórios) pelo processamento eletrônico de seus dados de texto (palavras, expressões, sentenças e parágrafos). Os principais pacotes e processamento de textos como Microsoft Word, Lotus WordPro e Corel WordPerfect podem oferecer uma ampla variedade de documentos, impressos de forma atraente por meio de suas possibilidades de editoração eletrônica. Esses pacotes também podem converter todos os documentos para o formato HTML para publicação como páginas em intranets empresariais ou na Internet. Recursos avançados- verificador ortográfico, criação de modelos, utilização de ilustrações gráficas, exibições WYSIWYG (What You See Is What You Get, ou O que você vê é o que você terá). Processamento de Textos Criar e Editar Documentos Armazenamento, Recuperação e Formatação Verificação de Palavras e Grafia Aspectos Fundamentais do Processamento Eletrônico de Textos Adicionar, Alterar, Apagar ou Mover Textos Importar Textos de Outros Documentos Planilhas Eletrônicas Pacotes de planilhas eletrônicas como o Lotus 1-2-3, Microsoft Excel e Corel QuattroPro são utilizados para análise, planejamento e modelagem de negócios. Eles ajudam você a desenvolver uma planilha eletrônica, que é um modelo de linhas e colunas que podem ser armazenadas como uma página de rede ou websheet na Internet. O desenvolvimento de uma planilha envolve o desenho de seu formato e o desenvolvimento das relações (fórmulas) que serão utilizadas no modelo. Em resposta aos dados que você introduzir, o computador realiza os cálculos necessários com base nas fórmulas que você definiu na planilha e exibe imediatamente os resultados, seja em sua estação de trabalho ou no site da rede. A maioria dos pacotes também o ajuda a desenvolver visualizações gráficas dos resultados da planilha. Gerenciamento de Bancos de Dados As versões de programas de gerenciamento de bancos de dados para microcomputadores tornaram-se tão populares que são agora encaradas como pacotes de software para aplicações gerais como os pacotes de processamento de textos e planilhas eletrônicas. Pacotes de gerenciamento de bancos de dados como o Microsoft Access, o Lotus Approach ou o Corel Paradox permitem que você monte e gerencie bancos de dados em seu PC, servidor de rede ou na Internet. A maioria dos gerenciadores de bancos de dados pode realizar quatro tarefas básicas: Desenvolvimento de banco de dados. Definir e organizar o conteúdo, relações e estrutura dos dados necessários para montar um banco de dados. Gerenciamento de Bancos de Dados Consulta ao banco de dados. Acessar os dados em um banco de dados para exibir informações em uma multiplicidade de formatos. Os usuários finais podem seletivamente recuperar e exibir informações e produzir formulários, relatórios e outros documentos, entre os quais páginas de rede. Manutenção do banco de dados. Adicionar, apagar, atualizar e corrigir os dados em um banco de dados, inclusive dados em hiperlinks nas páginas de rede. Desenvolvimento de aplicação. Densenvolver protótipos de páginas de rede, consultas, formulários, relatórios e etiquetas para uma proposta de aplicação empresarial. Ou utilizar uma linguagem de quarta geração incorporada ou geradora de aplicações para programar a aplicação. Pacotes de Gerenciamento de Bancos de Dados Desenvolvimento do Banco de Dados Consulta ao Banco de Dados Principais Tarefas dos Pacotes de Gerenciamento de Bancos de Dados Manutenção do Banco de Dados Desenvolvimento de Aplicação Apresentações Gráficas e Multimídia Os pacotes de gráficos de apresentação ajudam a converter dados numéricos em gráficos e em alguns casos também facilitam a preparação de apresentações multimídia de gráficos, fotos, animação e videoclips. Pacotes de software gráfico para apresentações como o MicroSoft PowerPoint, o Lotus Freelance ou o Corel Presentations oferecem muitas possibilidades fáceis de utilizar que encorajam o uso de apresentações gráficas. A maioria dos pacotes, por exemplo, ajuda a projetar e gerenciar apresentações de slides geradas e conduzidas pelo computador. E naturalmente os principais pacotes ajudam a modelar gráficos e apresentações em multimídia para transferência em formato HTML para sites de rede em intranets empresariais ou na internet. Tecnologias de Software de Multimídia Hipertexto e hipermídia são tecnologias de software para apresentações em multimídia. Por definição, hipertexto contém apenas texto e uma quantidade limitada de gráficos. Hipermídia são documentos eletrônicos que contêm múltiplas formas de mídias, incluindo texto, gráficos, vídeos etc. Tópicos e outras apresentações fundamentais em hipertexto ou documentos em hipermídia são indicados por links de software para que possam ser rapidamente procurados pelo leitor. Hipertexto e hipermídia são desenvolvidos mediante o uso de pacotes de software baseados em linguagens de programação como a Java e a Hypertext Markup Language (HTML), que criam hiperlinks para outras partes de um documento ou para outros documentos e arquivos de multimídia. Tecnologias de Software de Multimídia Exemplos de tecnologias de software para produções e apresentações em multimídia disponíveis na Internet: Liquid Audio - www.liquidaudio.com gratuito, reproduzir trilhas de áudio baseadas na internet Macromedia Shockwave - www.macromedia.com popular software para tornar mais atraentes as páginas de rede com som e animação RealNetworks - www.real.com ágil interface com o usuário e transmissão muito aprimorada de áudios e vídeos comprimidos Winamp - www.winamp.com para usuário windows Tecnologias de Multimídia Cartão de Captura de Vídeo Linguagem do Autor CD Interativo Storyboard Placa de Som Principais Tecnologias de Multimídia Sistema de Edição por Computador MIDI Vídeo Interativo Áudio Comprimido Vídeo Digital Interativo Áudio Digital Gerenciadores de Informações Pessoais (PIM) PIM- Personal Information Manager, são conhecidos pacotes de software para produtividade e colaboração do usuário final. PIMs como o Lotus Organizer e o Microsoft Outlook ajudam usuários finais a armazenar, organizar e recuperar informações sobre fregueses, clientes atuais e potenciais, ou programar e gerenciar encontros, reuniões e tarefas. A maioria dos PIMs enfatiza a manutenção de listas de contatos, ou seja, consumidores, clientes atuais ou potenciais. O agendamento de encontros e reuniões e a administração de tarefas são outras aplicações dos principais PIMs. Groupware Groupware é software colaborativo, isto é, software que ajuda grupos de trabalho e equipes a trabalharem juntos na execução de tarefas de grupo. Groupware é uma categoria de software aplicativo para finalidades gerais que se encontra em crescimento rápido e combina uma diversidade de dispositivos e funções para facilitar a colaboração. Produtos groupware como, por exemplo, Lotus Note, Novell GroupWise, Microsoft Exchange e Netscape Communicator suportam a colaboração por meio de correio eletrônico, grupos de discussão e bancos de dados, agendamento, gerenciamento de tarefas, conferências com dados, áudio e vídeo etc. Os groupware’s agora são projetados para utilizar a Internet, intranets e extranets empresariais para possibilitar a colaboração em uma escala global entre equipes virtuais localizadas em qualquer lugar do mundo. Software de Sistemas O software de sistemas consiste em programas que gerenciam e apóiam um sistema de computador e suas atividades de processamento de informações. Os programas de sistemas operacionais e de gerenciamento de redes, por exemplo, atuam como uma interface de software entre redes e hardware de computadores e os programas aplicativos dos usuários finais. Os software de sistemas podem ser agrupados em duas categorias principais: 1. Programas de gerenciamento de sistemas, 2. Programas de desenvolvimento de sistemas. Categoria dos Software de Sistemas Programas de gerenciamento de sistemas. Os programas que gerenciam recursos de hardware, software, rede e dados do sistema de computador durante a execução dos vários trabalhos de processamento de informações dos usuários. Exemplos: sistemas operacionais, programas de gerenciamento de redes, sistemas de gerenciamento de banco de dados e os utilitários de sistemas. Programas de desenvolvimento de sistemas. Programas que ajudam os usuários a desenvolverem programas e procedimentos de sistemas de informações e preparam programas do usuário para processamento em computador. Os principais programas de desenvolvimento são os tradutores e editores de linguagem de programação, outras ferramentas de programação e os pacotes CASE (Computer-Aided Software Engeneering, ou engenharia de software assistida por computador). Sistemas Operacionais (SO’s) O mais importante pacote de software de sistemas para qualquer computador é o seu sistema operacional. O sistema operacional é um sistema integrado de programas que gerencia as operações da CPU, controla recursos e atividades de entrada/saída e armazenamento do sistema do computador e fornece vários serviços de apoio à medida que o computador executa os programas aplicativos dos usuários. O propósito primeiro de um SO é maximizar a produtividade do sistema de computador operando-o da maneira mais eficiente. O SO minimiza a quantidade de intervenção humana requerida durante o processamento. Ele ajuda seus programas de aplicação a executarem operações comuns como o acesso a uma rede, entrada de dados, gravação e recuperação de arquivos e saída em impressora ou monitor. Funções do Sistema Operacional (1/2) A Interface com o Usuário. Permite que o usuário se comunique com o computador para carregar programas, acessar arquivos e outras tarefas. Três tipos principais de interfaces com o usuário são as interfaces movidas por comando (DOS), as movidas por menu e as interfaces gráficas com o usuário (GUI- Graphic User Interface, ofere os recursos do sistema operacional através de ícones, barras, botões, caixas e outras imagens- MS Windows). Gerenciamento de Recursos. Programas para gerenciar o hardware e os recursos de rede de um sistema de computador, incluindo sua CPU, memória, dispositivos de armazenamento secundário, processamento de telecomunicações e periféricos de entrada/saída. Funções do Sistema Operacional (2/2) Gerenciamento de Arquivos. Programas de gerenciamento de arquivos que controlam a criação, anulação e acesso de arquivos de dados e programas. O gerenciamento de arquivos também envolve a manutenção de registros da localização física de arquivos em discos magnéticos e outros dispositivos de armazenamento secundário. Gerenciamento de Tarefas. Controlam a realização de tarefas de computação dos usuários finais. O gerenciamento de tarefas pode envolver a capacidade para multitarefas, em que várias tarefas de computação podem ocorrer ao mesmo tempo, ou seja, cada tarefa recebe uma fatia de tempo da CPU. Utilitários e Outras Funções. Fornecem vários serviços de apoio. Sistema Operacional Usuário Final Input: Teclado Mouse Scanners Disk driver ... Output: Vídeo Impressora Disk driver ... • Memória armazena dados programas (instruções) • CPU unidade aritmética transforma os dados SO’s mais Populares (1/2) MS-DOS (Microsoft Disk Operating System), sistema de usuário único, p/ tarefas únicas (interface de comandos). Windows, a partir de 1995 a Microsoft lança versões de SO’s baseados em interface gráfica com o usuário, com capacidade de multitarefa, redes, multimídia e muitas outras capacidades. Em 1995 a Microsoft lançou outro SO, o Windows NT (New Tecnology). SO poderoso, multitarefa, multiusuário, que é instalado em muitos servidores de rede para gerenciar redes cliente/servidor e em PCs com requisito de alto desempenho de computação. As versões New Server e Workstation foram introduzidas em 1997. OS/2 (Operating System/2), sistema operacional da IBM para microcomputadores. SO’s mais Populares (2/2) Originalmente desenvolvido pela AT&T, o UNIX agora também é ofericido por outras empresas, entre a quais a Sun Microsystems, com o Solaris, e a IBM, com o AIX. O UNIX é um SO multitarefa, multiusuário e gerenciador de redes, cuja portabilidade permite que ele seja rodado em mainframes, computadores de médio porte e microcomputadores. O UNIX e sua versão shareware, o LINUX, é uma opção popular para servidores de Internet e outros servidores de rede. O Sistema Macintosh é um sistema operacional da Apple desenvolvido originalmente para microcomputadores Macintosh. Programas de Gerenciamento de Redes Os SI’s de hoje utilizam muito a Internet, intranets e extranets, redes locais e outras redes de telecomunicações para interconectar estações de trabalho de usuários finais, servidores de rede e outros sistemas de computadores. Isto requer uma diversidade de software de sistemas para gerenciamento de redes para desempenhar funções como verificação automática de PCs e terminais de vídeo de clientes para atividades de entrada/saída, atribuição de prioridades para pedidos de comunição de dados de clientes e terminais e detecção e correção de erros de transmissão e outros problemas de rede. Além disso, alguns programas de gerenciamento de redes funcionam como middleware para ajudar diversas redes a se comunicarem entre si. Exemplos de Programas de Gerenciamento de Redes Novell NetWare, SO mais amplamente utilizado para redes locais complexas interconectadas. O Windows NT Server da Microsoft e o OS/2 Warp Server da IBM são dois outros conhecidos sistemas operacionais de rede. O monitor de telecomunicações CICS (Customer Identification and Control System, ou Sistema de Identificação e Controle de Clientes) da IBM é um exemplo de um monitor de telecomunicações amplamente utilizado para redes locais baseadas em mainframe. O NetView da IBM e o OpenView da Hewlett-Packard são exemplos de programas de gerenciamento de rede para gerenciar diversas redes de computadores baseadas em computadores de médio porte. Sistemas de Gerenciamento de Banco de Dados DBMS (Database Management Systems) importante pacote de software de sistemas que controla o desenvolvimento, utilização e manutenção dos BD’s de organizações usuárias de computadores. Um DBMS também simplifica o processo de recuperar informações de bancos de dados na forma de telas e relatórios. Em lugar de elaborar programas de computador para extrair as informações, os usuários finais podem fazer perguntas simples em uma linguagem de consulta. Microsoft Access, Lotus Approach ou Corel Paradox, são exemplos de DBMS para microcomputadores. Já o DB2 da IBM e o Oracle 8 da Oracle Corporation são exemplos de pacotes para mainframe e computadores de médio porte. Outros Programas de Gerenciamento de Sistemas Diversos outros tipos de software de gerenciamento de sistemas são comercializados como programas independentes ou incluídos como parte de um SO. Programas de utilidades, ou utilitários, são um exemplo importante. Programas como o Norton Utilities desempenham diversas funções de administração doméstica e conversão de arquivos. Entre os exemplos encontram-se cópias de reserva de dados, recuperação de dados, proteção antivírus, compressão de dados e desfragmentação de arquivos. Outros exemplos de progamas de suporte de sistemas incluem monitores de desempenho e monitores de segurança (pacotes que monitoram e controlam o uso de sistemas de computadores e fornecem mensagens de alerta e gravam provas de uso não autorizado de recursos de computador). Programas de Desenvolvimento de Sistemas (ou Linguangens de Programação) Uma Linguagem de Programação permite a um programador desenvolver os conjuntos de instruções que constituem o programa de computador. Muitas linguagens de programação diferentes têm sido desenvolvidas, cada uma com seu vocabulário, gramática e usos exclusivos. As Linguagens de Máquina (ou linguagens de 1ª geração) são o nível mais básico das linguagens de programação. Este tipo de programação envolve a difícil tarefa de escrever instruções na forma de seqüências de dígitos binários (uns e zeros) ou outros sistemas numéricos. Linguagens Assembler As Linguagens Assembler (ou linguagens de 2ª geração) são o nível seguinte de linguagens de programação. As linguagens assembler são freqüentemente chamadas de linguangens simbólicas porque utilizam símbolos para representar códigos de operações e locais de armazenamento. Abreviações alfabéticas convenientes chamadas mnemônicos (auxílios de memória) e outros símbolos representam códigos de operação, locais de armazenamento e elementos de dados. As linguagens assembler ainda são amplamente utilizadas como método de programar um computador em uma linguagem baseada na máquina. Característica particularmente desejável para os programadores de sistemas, que programam software de sistema, já que isto garante a eles maior controle e flexibilidade na concepção de um programa para um determinado computador. Linguagens de Alto Nível As Linguagens de Alto Nível (ou linguagens de 3ª geração) utilizam ordens, chamadas instruções, que utilizam formulações ou expressões aritméticas. As instruções individuais em linguagem de alto nível são, na verdade, macroinstruções; ou seja, cada instrução individual gera várias instruções de máquina quando traduzida em linguagem de máquina por programas tradutores de linguagem de alto nível chamados compiladores ou interpretadores. Sintaxe (vocabulário, pontuação e regras gramaticais) e semântica (significado) das instruções em linguagem de alto nível são aplicados para expressar a solução do problema ou procedimento que está sendo programado. São mais fáceis de aprender e programar (utilização de símbolos) porém menos eficientes que os programas em ling. assembler (tradução em instruções de máquina). Processo de Tradução de Linguagens • Compilador • Intérprete • Assembler Programa do Tradutor de Linguagem ProgramaFonte Escrito em Pascal, COBOL, Clipper, etc. Processo de Tradução de Linguagens Linguagem de Máquina Linguagens de Quarta Geração O termo linguagem de quarta geração descreve uma série de LP’s que são menos procedurais e mais conversacionais do que as linguagens anteriores. A maioria das linguagens de quarta geração são linguagens não procedurais que encorajam os usuários e programadores a especificarem os resultados que eles desejam, ao passo que o computador determina a seqüência de instruções que realizará esses resultados. Outros exemplos de linguagens de 4 ª geração são as linguagens de programação visual (Delphi e Visual Basic), as linguagens naturais (Prolog) e as linguagens desenvolvidas em atividades de pesquisa em inteligência artificial. Linguagens Baseadas em Objetos Linguagens de programação orientadas a objetos (OOP) como a Visual Basic, C++, Delphi e Java tornaram-se importantes ferramentas de desenvolvimento de software. Em suma, enquanto a maioria das outras linguagens de programação separam elementos de dados dos procedimentos ou ações que serão executados sobre eles, as linguagem OOP os vinculam em conjunto nos objetos. Dessa forma, um objeto consiste nos dados e nas ações que podem ser executadas nestes dados. As OOP’s são mais fáceis de usar e mais eficientes para programar as interfaces gráficas com o usuário, já que os objetos programados como janelas, barras, caixas, botões e ícones podem ser reutilizados. Logo, a reutilização de objetos é um dos principais benefícios da OOP. A maioria dos pacotes de programação orientada a objetos fornece uma interface gráfica com o usuário programador que suporta uma montagem visual de objetos do tipo “apontar e clicar”, “arrastar e soltar” conhecida como programação visual. O ambiente de programação visual e a possibilidade de reutilização de um grande número de objetos prontos acelera o processo de desenvolvimento de sistemas. Categorias das Linguagens de Programação Linguagens Orientadas a Objetos: Utilizam Combinações de Objetos Linguagens de Quarta Geração: Utilizam Instruções Naturais e Não Procedurais Linguagens de Alto Nível: Utilizam Instruções Breves ou Notação Aritmética Linguagens Assembler: Utilizam Instruções em Código Simbólico Linguagens de Máquina: Utilizam Instruções em Código Binário HTML HTML (Hypertext Markup Language, ou linguagem de marcação de hipertexto) é uma linguagem de descrição de página que cria documentos em hipertexto ou hipermídia. A HTML insere códigos de controle em um documento em pontos que você pode especificar para criar links (hiperlinks) para outras partes do documento e para outros documentos em outros pontos da Rede Mundial de Computadores. A HTML embute códigos de controle no texto ASCII de um documento designando títulos, cabeçalhos, gráficos e componentes de multimídia, além de hiperlinks no documento. MS Frontpage e o Lotus FastSite são exemplos de programas especializados em editoração para a rede. Java Java é uma OOP criada pela Sun Microsystems e que está revolucionando a programação de aplicativos para a Rede Mundial de Computadores e intranets e extranets empresariais. A Java é aparentada às linguagens C++ e Objective C, mas é muito mais simples e segura e independe da plataforma de computação. A Java é especificamente desenhada para aplicações em tempo real, interativas e baseadas em redes. Por isso, as aplicações Java que consistem em pequenos programas aplicativos chamados applets podem ser executadas por qualquer computador ou sistema operacional em que ponto de uma rede. Pacotes, ou Ferramentas de Programação Pacotes de software que criam um ambiente de programação integrado que auxilia os programadores a desenvolverem programas de computador. Estes ambientes oferecem recursos para: . criação, edição e depuração de programas; . tradução dos programas em códigos de instruções em linguagem de máquina (compilador); . interface de programação gráfica . pacotes de engenharia de software assistido por computador, ou ferramentas CASE: pacotes de diagramação, geradores de código, bibliotecas de objetos reutilizáveis e código de programa e ferramentas de prototipação.