HISTÓRICO METODOLOGIAS DE SOFTWARE • Início Anos 70 - Programação Estruturada Niklaus Wirth • Fim Anos 70 - Projeto Estruturado Constantine, Yourdon • Anos 80 - Análise Estruturada Yourdon/DeMarco, James Martim, Chris Gane • Anos 90 Orientação a Objetos Baseado no paradigma estruturado Qualidade de Software UML Componentização FASES NA 'FABRICAÇÃO' DE UM SOFTWARE • Análise ou especificação Requisitos, conceito do domínio • Projeto Solução lógica, representação da análise • Programação, construção ou desenvolvimento Código, representação em uma linguagem de programação; Delphi, C++, Java, Visual Basic, Cobol, etc • Testes ESTRUTURADA X ORIENTAÇÃO A OBJETOS • Com a orientação a objetos procura-se eliminar as diferenças entre as etapas de análise, projeto e implementação, reabilitando a difamada tarefa de implementação; • O segredo é fazer com que os conceitos de programação, e as notações para programação, sejam suficientemente de alto-nível para que possam servir apropriadamente como ferramentas de modelagem. METODOLOGIA 'ESTRUTURADA' Criada nos anos 60/70 Guerra Fria Grandes Projetos Ambientes de Grande Porte Pouca maturidade em Programação Funciona! Quando é bem utilizada… Quando os projetos tem início, meio e fim… Quando os projetos são longos… Quando você tem legado de mainframe. METODOLOGIA ‘ESTRUTURADA’ Tradicionalmente, a literatura tratava análise, projeto e implementação como atividades diferentes e, até certo ponto, desconexas pois tinham: • diferentes métodos; • diferentes notações; e • diferentes objetivos. Na necessidade de especificar o que está prestes a ser implementado tratavam a análise e o projeto como as únicas coisas que realmente interessam. A implementação seria apenas algo inevitável. ESTRUTURADO X OO • Na Estruturada Os sistemas são divididos em subprogramas; Fixa a atenção muito mais nos procedimentos que nos dados. • Na Orientação a Objetos Dados e Procedimentos possuem a mesma importância; Altera a forma pela qual dados e procedimentos intercomunicam-se. • Reutilização de Software (Reusibilidade) reaproveitamento de código • Manutenção de Software facilidade de manutenção de sistemas • Tamanho de Código Gerado menor código Decida quais procedimentos você quer; utilize os melhores algoritmos que você encontrar Enfoque no processamento, i.e. no algoritmo necessário para executar uma computação desejada Linguagens oferecem facilidades para passar parâmetros para funções e retornar valores Funções são utilizadas para criar ordem em um algoritmo complicado Mudança de enfoque: projeto de procedimentos -> organização de dados Paradigma: um conjunto de procedimentos, juntamente com os dados que eles manipulam, é dito um módulo ABSTRAÇÃO DE DADOS • “Tipos” criados por meio de módulos e diferentes de “tipos” embutidos na linguagem • “tipos” embutidos permitem maior verificação e são mais simples • Linguagens como ADA e C++ permitem a construção de tipos pelo usuário PROBLEMAS COM ABSTRAÇÃO DE DADOS • Um tipos de dados abstrato é uma caixa-preta; uma vez definida, ela não interage com o resto do programa • Nao há suporte para adaptá-la a novos usos • Inflexibilidade PARADIGMA DE ORIENTAÇÃO A OBJETOS • Decida quais classes você deseja; • Implemente as operações suportadas por cada classe; e • Torne explícitas as semelhanças por meio de herança. 40 - alteração física de circuitos eletrônicos; 50 - linguagens montadoras (assembler), visão lógica; 60 - surgem as primeiras linguagens de alto nível; 70 – programação estruturada; 80 – Orientação a objetos LINGUAGENS Cada linguagem é indicada para determinada tarefa: Fortran, Pascal = Científica; Cobol = Economia; Prolog, Lisp = Inteligência Artificial; Clipper = Banco de dados; C e C++ = todas as áreas Simula Smaltalk Borland Algol Pascal objects Pascal Delphi Objective C | 1960 | | 1970 1965 | 1975 | 1980 | | 1990 1985 | | 2000 1995 Sun Microsoft C# Java BCPL B CPL C C++ AT&T Bell AT&T Bell Orientação a objetos | | Programação Projeto Estruturada Estruturado | | | ANSI C++ Análise orientada a objetos Análise Estruturada | | | ISO C++ UML | JAVA 1991: Sun Microsystems Projeto Green 1995: Sun Microsystems Anunciada Formalmente Páginas Web com conteúdo dinâmico e interativo Aprimora funcionalidades de web servers Permite aplicações para: Celulares, pagers, palms, … BASIC E VISUAL BASIC BASIC Beginner’s All-Purpose Symbolic Instruction Code Anos 60s: Prof. John Kemeny e Thomas Kurtz (Dartmouth College) BASIC E VISUAL BASIC Visual Basic 1991 Resultado da interface gráfica do Microsoft Windows Graphical User Interface (GUI) Final dos anos 80 e começo dos 90. Características GUI, event handling, acesso ao Win32 API, object-oriented programming, error handling Visual Basic .NET O C foi desenvolvido em 1972 por Dennis Ritchie - para reescrever o UNIX O C++ foi desenvolvido nos Laboratórios AT&T Bell em 1980, por Bjarne Stroustrup. O padrão ANSI (Instituto Nacional Americano de Padrões) C++ foi aprovado em 1994; O padrão ISO (Organização Internacional de Padrões) em 1998 PODERES DO C++ C++ é superconjunto do C, e mantem-se fiel à característica do C de linguagem de pequeno tamanho, O C++ incluiu apenas algumas novas palavras reservadas às já existentes no C. Linguagem versátil, concisa e relativamente de baixo nível; Pequeno tamanho Poucos Comandos Manipulação a nível de Bits Eficiência na Manipulação de Memória Portabilidade POR QUE C++ Linguagem padronizada Faz em um SO e compila em qualquer outro DOS, Windows, UNIX, OS/2, VAX,MacOS, etc Java é interpretado, necessita de uma máquina virtual Uso em SO com pouco recurso memória PalmOS, Tecnologia WAP POR QUE C++ Diversidade de aplicações Aplicações simples Implementação de SO Criação de meta-classes POR QUE C++? Várias Bibliotecas disponibilizadas Ex: QT – biblioteca GUI