O Papel do Software Especialização em Comércio Eletrônico e Economia Digital Objetivos Descrever os principais tipos de software Examinar software de sistemas e sistemas operacionais Explicar a evolução do software Analisar as principais linguagens de programação Descrever as abordagens ao desenvolvimento de software Identificar temas relacionados com software Desafios da Gerência de TI O que é software? Software de sistema Software de aplicação Novas ferramentas de software e abordagens Gestão do patrimônio de software Software Instruções detalhadas que controlam a operação de um computador Programa: conjuntos de instruções ao computador Conceito de programa armazenado Software de sistema: gerencia os recursos de um computador Software de aplicação: aplicativo específico para um domínio específico O Computador SOFTWARE APPLICATION SOFTWARE SYSTEM SOFTWARE HARDWARE OPERATING SYSTEM: SCHEDULED COMPUTER EVENTS ALLOCATES COMPUTER RESOURCES MONITORS EVENTS LANGUAGE TRANSLATORS: INTERPRETERS COMPILERS UTILITY PROGRAMS: PROGRAMMING LANGUAGES: ROUTINE OPERATIONS MANAGE DATA ASSEMBLY LANGUAGE; FORTRAN; COBOL; PL / 1; QBASIC; PASCAL; C; C++; FOURTH GENERATION LANGUAGES Multiprogramação Sistema de um único programa Ambiente de multiprogramação PROGRAMA 1 MEMÓRIA LIVRE SISTEMA OPERACIONAL SISTEMA OPERACIONAL PROGRAMA 1 PROGRAMA 2 PROGRAMA 3 MEMÓRIA LIVRE Multitarefa Multiprogramação em um sistema monousuário com um microcomputador Memória Virtual Mecanismo de tratamento de vários programas na memória principal Um programa é dividido em: Porções de comprimento fixo (páginas) ou De comprimento variável (segmentos) As porções em execução residem na memória principal As páginas são trocadas (swapped) conforme a necessidade Time Sharing Many users sharing a powerful CPU O tempo da CPU é dividido em fatias (slices; de 2 microsegundos, por exemplo) Por conta da rapidez da CPU, ela pode executar muitas instruções durante uma fatia de tempo Os jobs dos usuários são trocados no final de cada fatia Multiprocessamento 2 ou mais processadores paralelos em um sistema Um programa pode ser dividido para ser executado por múltiplas CPUs Pode processar grandes programas de forma mais eficiente Tradução de Linguagens Código-fonte: instruções em linguagem de alto nível (entrada de um processador de linguagem) Compilador: traduz código de alto nível em linguagem de máquina Código-objeto: instruções traduzidas e prontas para execução pelo computador Processo de Compilação SOURCE CODE PROGRAM COMPIL ER OBJECT CODE LINKA GE EDITOR LOAD MODULE OTHER OBJECT CODE MODULES Graphical User Interface (GUI) O sistema operacional e os programas usam: Ícones gráficos (Icons, Buttons, Bars, Boxes) mouse Para disparar comandos e fazer seleções Sistemas Operacionais MS Windows 95/98 32-bit operating system; GUI; Multitasking. Networking MS Windows NT/Me/2000 32-bit operating system not limited to Intel chips. Multitasking; Multiprocessing; Networking MS Windows CE Paired-down for handheld computers, wireless communication devices Sistemas Operacionais OS/2 32-bit. Developed for IBM PS/2. Multitasking; Networking UNIX For powerful Microcomputers, Workstations, Minicomputers. Multitasking; Multi-user Processing; Networking. Portable to various Computer Platforms Linux Gratuito, é uma alternativa confiável para UNIX e Windows. Roda em muitas plataformas. Sistemas Operacionais Apple MacOS For Macintosh computers. Multitasking. Powerful Graphics; Multimedia Microsoft DOS For IBM (PC-DOS) and PC (MS-DOS). Program Memory: 640K Palm PalmOS Para compudores de mão (palmtops) Linguagens de Programação Paradigmas de Linguagens de Programação Imperativo C, Cobol, Fortran, Pascal Funcional Haskell, Standard ML, Miranda Lógico Prolog Orientado a Objetos Java, Eiffel, Simula Orientado a Agentes Agent-0 Gerações de Linguagens de Programação Primeira :: Desde a década de 40: Linguagem de máquina; código binário Segunda :: Desde os primeiros anos da década de 50: Linguagem Assembly; mnemônicos para código numérico Terceira :: Desde meados da década de 50: Linguagens de alto nível (Fortran, Cobol, etc) Quarta :: Desde o final da década de 70: Pacotes de aplicações modernos Linguagens de Alto Nível FORTRAN (FORmula TRANslator): Scientific, Engineering applications COBOL (COmmon Business Oriented Language): Predominant for transaction processing BASIC (Beginners All-purpose Symbolic Instruction Code): General purpose PC language Linguagens de Alto Nível (cont.) PASCAL: Used to teach structured programming practices. Weak in file handling, input / output C and C++: Powerful PC Language for developing applications. Efficient execution; cross platform. C++ is object oriented Linguagens de Quarta Geração (4GL) CAN BE EMPLOYED BY END USERS NONPROCEDURAL CAN DEVELOP APPLICATIONS QUICKLY NATURAL LANGUAGES 6 categorias Linguagens de Quarta Geração (4GL) 1 Linguagens de Consulta: Recuperam dados eficientemente Interativas/on-line Podem usar linguagem natural (!) Suportam solicitações especiais de dados de bancos de dados relacionais Linguagens de Quarta Geração (4GL) 2 Geradores de relatórios: Cria relatórios personalizados Grande número de formatos possíveis 3 Linguagens gráficas: Pode manipular desenhos, gráficos, fotos, vídeos Gerenciadores de apresentação Linguagens de Quarta Geração (4GL) 4 Geradores de Aplicação: O usuário especifica as necessidades do sistema O gerador cria lógica e código para a aplicação Reduz drasticamente o tempo de desenvolvimento Linguagens de Quarta Geração (4GL) 5 Linguagens de Programação de Altíssimo Nível: Ferramenta de produtividade para o programador profissional Usa menos comandos Reduz o tempo de desenvolvimento Linguagens de Quarta Geração (4GL) 7 Pacotes de software: conjunto de programas Processadores de texto Planilhas eletrônicas Gerenciadores de bancos de dados Software de apresentação Facilitam o uso e a aprendizagem MS Office 2000, Sun StarOffice Ferramentas de Software Processadores de texto Planilhas eletrônicas Gerenciamento de dados Programas para apresentação Suites de software integradas E-mail Web browsers Groupware Programação Orientada a Objetos Combina procedimento e dado num único objeto Um programa envia mensagem a um objeto para executar determinado procedimento encapsulado (método) O dado do objeto é encapsulado e isolado do resto do sistema Possibilita a reutilização de código Reduz o tempo e custo para construção de software Programação Orientada a Objetos VISUAL PROGRAMMING: SELECT AND ARRANGE OBJECTS RATHER THAN WRITE CODE CLASS: ALL OBJECTS OF A CLASS HAVE ALL FEATURES OF THAT CLASS INHERITANCE: SPECIFIC CLASS RECEIVES FEATURES OF A MORE GENERAL CLASS OVERRIDE: SUBCLASS MAY OVEERRIDE INHERITED METHOD (e.g.: Printout of an HOURLY worker Pay Check may differ from that of a WEEKLY worker Programação Orientada a Objetos JAVA: Sun Microsystems OBJECT-ORIENTED PROGRAMMING LANGUAGE APPLET: TINY PROGRAM TO EXECUTE SMALL FUNCTION APPLETS DOWNLOADED FROM NETWORK RUN ON ANY COMPUTER & OPERATING SYSTEM RESULT SAVED ON NETWORK, NOT ON PC ONLY NETWORK VERSION OF SOFTWARE NEEDS UPGRADE Programação Orientada a Objetos ActiveX: Controls for Windows software environment to enable OBJECTS: e.g., CHARTS TABLES ANIMATIONS to be EMBEDDED IN A WEB PAGE O Processo de Construção de Software Alguns pontos iniciais importantes: O que é uma metodologia? E uma metodologia de desenvolvimento de software? Qual a importância de uma metodologia para a sua empresa? O que é a Engenharia de Software? Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade. Objetivos da Engenharia de Software Qualidade de software Produtividade no desenvolvimento, operação e manutenção de software Qualidade versus Produtividade Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados Qualidade de Software (para o Varejo) Correto A loja não pode deixar de cobrar por produtos comprados pelo consumidor Robusto e altamente disponível A loja não pode parar de vender Eficiente O consumidor não pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memória, rede) Qualidade de Software (para o Varejo) Amigável e fácil de usar A empresa quer investir pouco em treinamento Altamente extensível e adaptável A empresa tem sempre novos requisitos (para ontem!) A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.) Reusável Várias empresas precisam usar partes de um mesmo sistema Qualidade de Software (para o Varejo) Aberto, compatível, de fácil integração com outros sistemas A empresa precisa de controle de estoque, fidelização, etc. Portável e independente de plataforma (hardware e software) A empresa pode optar por uma determinada plataforma Baixo custo de instalação e atualização A empresa tem um grande número de PDVs Produtividade Custo de desenvolvimento reduzido A empresa consumidora quer investir pouco em software A empresa produtora tem que oferecer “software barato” Tempo de desenvolvimento reduzido Suporte rápido às necessidades do mercado “Software Barato” Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da distribuição dos custos entre vários clientes. Reuso, extensibilidade e adaptabilidade são essenciais para viabilizar tal distribuição. Elementos e Atividades da Engenharia de Software Elementos Modelos do ciclo de vida do software Linguagens Ferramentas Métodos Processos Atividades Planejamento e Gerenciamento Gerência de Configuração e Mudanças Modelagem do negócio Elicitação de requisitos Análise e Projeto Implementação Testes Implantação Modelos do Ciclo de Vida de Software Força bruta, gambiarra, hacking, marreta Cascata Espiral Iterativo (do RUP) Prototipagem evolucionária Força bruta, gambiarra, hacking, marreta Modelo Cascata Modelo Cascata na Prática Modelo Espiral Iterativo (do RUP) Fases Fluxos de Processo Concepção Elaboração Iteração Preliminar Iter. #1 Construção Transição Requisitos....................................... Análise & Projeto............................ Implementação............................... Testes............................................. Implantação.................................... Fluxo de Suporte Planejamento e Gerenciamento..... Iter. #2 Iter. #i Iter. #i+1 Iterações Iter. #i+2 Iter. #n Iter. #n+1 Linguagem Notação com sintaxe e semântica bem definidas com representação gráfica ou textual Usada para descrever os artefatos gerados durante o desenvolvimento de software Exemplos: UML, Java, C++, Delphi Método Descrição sistemática de como deve-se realizar uma determinada atividade ou tarefa A descrição é normalmente feita através de padrões e guias Metodologia conjunto de métodos (+ processo) Exemplos: Booch, BON, Pim Ferramenta Provê suporte computacional a um determinado método Ambiente de desenvolvimento: conjunto de ferramentas integradas (CASE) Exemplos: Rational Rose IBM VisualAge for Java Inprise Jbuilder Microsoft SourceSafe Processo Conjunto de atividades bem definidas com responsáveis com artefatos de entrada e saída com dependências entre as mesmas e ordem de execução com modelo de ciclo de vida Seleção de Software Adequabilidade Eficiência Compatibilidade Suporte Fontes de Recursos na Internet http://www.microsoft.com http://www.bds.org http://www.javasoft.com http://www.gamelan.com http://www.eiffel.com http://www.perl.com http://www.perl.org http://www.python.org http://www.neosoft.com/tcl http://www.caldera.com http://www.redhat.com news: comp.lang news: comp.lang.c news: comp.lang.smalltalk