Baixe o app para aproveitar ainda mais
Prévia do material em texto
PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS AULA 01 ABORDAGEM INICIAL Nesta aula, você irá: 1. Reconhecer a importância das linguagens de p r o g r a m a ç ã o n o c o n t e x t o d e desenvolvimento de software. 2. Conhecer os conceitos e os principais paradigmas de Linguagens de Programação. 3. Conhecer os conceitos e os principais metodologias e técnicas de programação. 4. Saber re lac ionar as a t i v idades de programação com atividades de análise de sistemas. 5. Entender a tênue re lação entre os paradigmas de Linguagens de Programação, de programação e de Análise de Sistemas. Por que linguagens de programação? ! As linguagens de programação exercem um pape l p reponderan te no p rocesso de desenvolvimento de software, pois possibilitam aos profissionais da área o exercício de uma atividade fundamental: a programação. Ou seja, as linguagens de programação permitem a PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 1 escrita dos programas, que serão integrados para compor o software. Os principais objetivos de uma linguagem de programação são: 1. Tornar mais produtivo o trabalho dos programadores, ou seja, desenvolver e manter softwares. 2. Propiciar ao programador desenvolver o software atendendo a padrões de qualidade pré-estabelecidos, sendo que as principais propriedades desejadas de um software são: confiabilidade, manutebilidade (capacidade de ser mantido) e eficiência. 3. Prop ic ia r ao programador escrever programas que atendam as expetativas e requisitos de seus usuários. LINGUAGENS DE PROGRAMAÇÃO Temos, hoje em dia, um vasto universo de linguagens de programação, que atendem a diferentes propósitos, ou seja, a diferentes tipos d e p r o b l e m a s d e m a n d a d o s p a r a o desenvolvimento de sistemas. Surge então a dúvida: qual linguagem de programação deve ser usada no novo projeto? PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 2 A tendência, na prática, é que as empresas usem a linguagem com que seus programadores tenham experiência e, preferencialmente, possuam uma vasta biblioteca de rotinas e funções desenvolvidas, o que vai, certamente, agilizar o desenvolvimento. Quanto mais experiência um programador tiver no uso de uma linguagem de programação, com mais eficiência ele poderá atuar na programação de um software, maximizando os recursos da linguagem em prol de uma boa solução computacional. À partir da década de 90 (noventa) muitas linguagens de programação passaram a ser de propósito geral (podendo ser usadas na maior dos problemas e vêm logrando êxito). Mas nem sempre é possível, ou seja, alguns sistemas vão requerer l inguagens com características específicas para que possam ser confiáveis, manutíveis e eficientes. Ou seja, o tipo de problema a ser resolvido e consequentemente o tipo de sistema a ser desenvolvido influenciam na escolha da linguagem de programação a ser usada. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 3 Por exemplo, o desenvolvimento de um Sistema Especialista, do ramo da IA (Inteligência Artificial), requer uma linguagem que possibilite a implementação da lógica de predicados e de um motor de inferência, o que não é viável usando linguagens de programação que, tipicamente, resolvem problemas comerciais das empresas, como por exemplo, contas a pagar, contas a receber e fluxo de caixa. A linguagem de programação é fundamental dentro do contexto do desenvolvimento de software. Programadores devem conhecer cada vez mais as linguagens com as quais trabalhem. Vejamos os principais motivos: ★Maior capacidade em desenvolver soluções para os problemas. Se os programadores tiverem uma maior compreensão e habilidade com a linguagem, seus elementos e sus comandos, terão mais facilidade ao darem as soluções computacionais para determinados problemas e terão mais habilidade em como pensar e resolver problemas. ★Maior habilidade ao usar uma linguagem de programação. O fato do programador conhecer a fundo as características da linguagem lhe confere a capacidade de PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 4 escrever programas mais eficientes, do ponto de vista técnico. ★Maior capac idade para esco lher as linguagens mais apropriadas ao respectivo projeto, através de maior entendimento dos recursos e da forma de implementá-los na linguagem de programação. ★Maior habilidade para aprender novas linguagens de programação. Por exemplo o programador que conhece bem a linguagem C (e C++) tem mais facilidade para aprender JAVA (e C#). Ou seja, quanto mais conhecermos as propriedades das linguagens de programação, maior será a possibilidade de escrevermos programas com eficiência. A INFLUÊNCIA DAS LINGUAGENS DE PROGRAMAÇÃO NAS METODOLOGIAS E TÉCNICAS DE PROGRAMAÇÃO ! Nas décadas de 40 e 50, nos primórdios da computação, a linguagem dominante era a binária (composta por sequência de 1’s e 0’s) ou de linguagem máquina e a programação era feita pensando em como determinado processador funcionava. O tipo de problema que a computação se destinava a resolver era simples e l imi ta-se a cálculos complexos, não PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 5 demandando nenhuma técnica de programação. O programa era uma sequência de conjunto de bits, conforme o tamanho da palavra do processador. E cada sequência de bits representava uma instrução do programa. Cada processador tem seu respectivo conjunto de instruções, que representa o chamado Set de Instruções do Processador. No quadro, abaixo, temos um exemplo de uma instrução em código de maquina escrita em hexadecimal, de forma a diminuir a quantidade de dígitos. Veja o exemplo de um programa em código máquina: A1 01 10 03 06 01 12 A3 01 14 T r a t a - s e d a r e p r e s e n t a ç ã o hexadecimal de um programa que soma os valores de duas casas da memória e armazena o resultado em uma terceira casa. É óbvio que este tipo de escrita é dificilmente legível por nós, humanos. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 6 Um pouco da história das linguagens de programação Na década de 50, com o intuito de facilitar a vida do programador, minimizando seu esforço e fazê-lo abstrair-se do endereçamento direto de memória e da combinação de bits, surgiam as primeiras linguagens de montagem (assembly), onde as operações realizadas pelo processador eram representadas por mnemônicos como ADD (Adicione), SUB (Subtraia), MOV (carrega valores para o registrador) e etc. É importante ressaltar que cada processador tinha seu respectivo conjunto de instruções em linguagem de montagem, na relação de 1 para 1 para o conjunto de instruções do processador em linguagem de máquina (set de instruções do processador). A tabela 2, abaixo, mostra que em linguagem de montagem toda instrução tem uma notação simbólica associada (fornecida pelo fabricante do processador). Instrução em código de máquina Hexadecimal Instrução em linguagem de montagem Comentários sobre a instrução A1 01 10 MOV AX, [0110] Copiar o conteúdo de 0110 no registro AX 03 06 01 12 ADD AX, [0112] Adicionar o conteúdo de 0112 à AX e por o resultado no AX A3 01 14 MOV [0114], AX Armazenar AX no endereço da memória 0114 Tabela 2: exemplo de programa em linguagem de montagemPARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 7 Inicialmente, tal qual na linguagem de máquina o tipo de problema a ser resolvido era simples, geralmente numérico e não existia técnica de programação. Porém a necessidade de programação crescia e os programas também, assim as linguagens de montagem mais avançada criaram o conceito de macro, que pode-se dizer foi a base da criação da técnica da programação modular. Um macro é um trecho de código (módulo) que se repete ao longo de um programa, que era escrito uma única vez e chamado sempre que necessário. Abaixo, a figura 1 (Exemplo de código assembly com macro) mostra 2 colunas a primeira com o código sem macro e a segundo com o código com a macro de nome CHANGE. Perceba que o código é o mesmo alterando apenas o conteudo (P,Q,R,S) que vai ser armazendo nos registradores (EAX e EBX). A macro change usa PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 8 parâmetros (P1 e P2) e é chamada 2 vezes, para realizar as trocas de conteúdos desejados). Figura 1: exemplo de código Assembly com Macro Na final da década de 50 e início da década de 60 surgem as primeiras linguagens de alto nível, que são assim chamadas pela sintaxe dos comandos que são bem próximas a linguagem humana (no inglês, no caso). A primeira linguagem dessa geração de linguagens, que seria a 3a. Geração (1a. Geração, a linguagem de máquina e 2a geração, a linguagem assembly) fo i o For t ran, desenvolv ida inicialmente para computadores IBM, destinada a aplicações numérico-científicas (poucos dados e muita computação). Não focava a eficiência dos programas na medida em que as estruturas de controle eram todas focadas em GOTO (desvio incondicional), que são a implementação das macros nas linguagens de 3a. Geração. Nesse estado da arte, começa a surgir a idéia de programação modular, ou seja criação de sub- rotinas para parte de programas que se repetem, mas a programação com desvios dificultava a lei tura e manutenção dos códigos dos programas A tabela 3, abaixo, mostra o exemplo de um programa em Basic, uma linguagem de PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 9 programação das décadas 60/70, usando desvio incondicional (GOTO), uma forma de simular repetições. 10 REM RESOLVE EQUACAO DO SEGUNDO GRAU 20 READ A,B,C 30 IF A=0 THEN GOTO 410 40 LET D=B*B-4*A*C 50 IF D<0 THEN GOTO 430 60 PRINT "SOLUCAO" 70 IF D=0 THEN GOTO 100 80 PRINT "PRIMEIRA SOLUCAO",(-B+SQR(D))/ (2*A) 90 PRINT "SEGUNDA SOLUCAO",(-B-SQR(D))/ (2*A) 100 GOTO 20 200 PRINT "SOLUCAO UNICA",(-B)/(2*A) 300 GOTO 20 400 PRINT "A DEVE SER DIFERENTE DE ZERO" 410 GOTO 20 420 PRINT "NAO HA SOLUCOES REAIS" 430 GOTO 20 490 DATA 10,20,1241,123,22,-1 500 END Tabela 3: exemplo de programa em basic, usando GOTO PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 10 No início da década de 70 iniciou-se o movimento de técnica de programação estruturada, na tentativa de tornar os códigos dos programas mais legíveis. A essa altura os programas eram lotados de instruções de desvio incondicional (os chamados GOTO), que tiravam a seqüência lógica das instruções do programa e tornavam a leitura e conseqüente entendimento do programa em algo muito difícil. Nessa época as linguagens de programação eram pobres em estruturas de controle (decisão e repetição) e não verificavam consistência de tipos, onde destacavam-se na época: Fortran, Basic e Cobol (as mais usadas). Em 1971 foi criada por Niklaus Wirth a linguagem Pascal, para fins acadêmicos de ensino da programação estruturada. Seu pequeno número de comandos básicos pode ser combinado de forma a torna-la mais poderosa, mas sem perder a clareza lógica de suas construções. O uso de subprogramas permite a técnica de refinamentos sucessivos (metodologia top-down) conseguindo hierarquia na estrutura do programa. Além da técnica de refinamentos sucessivos, a programação estruturada caracteriza-se pela construção de programas com 3 estruturas PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 11 básicas de controle: sequencia, decisão e repetição (iteração). A tabela 4, abaixo, mostra um programa em Pascal que representa a linguagem clássica, onde predominava a técnica de programação estruturada. program Soma_Pares; uses crt; var superior, soma, num: integer; begin soma:=0; write ('Entre com o limite superior'); readln (superior); num:=2; repeat soma:=soma+num; num:=num+2; until (num > superior); writeln('A soma dos números pares de 2 até ', superior,' é ', soma); readln; end. Tabela 4: exemplo de programa em Pascal – Programação estruturada Durante os anos 80 houve um rápido crescimento do uso de computadores pessoais, PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 12 em função do barateamento do hardware. Surge a fábrica de software e com ela a necessidade de produzir e atualizar software com mais rapidez, pois a demanda é grande. Assim sendo a reutilização de código, que já vinha sendo perseguida pela técnica de programação estruturada, passa a ser um conceito central para a produtividade no desenvolvimento de software. Na mesma época, iniciou-se as mudanças das metodologias de projeto de programas orientadas para o processo, para orientadas a dados, o que precisou que as linguagens implementassem os tipos abstratos de dados (TADs). Inicia-se então a programação orientada a objeto, que teve inicio com a abstração de dados, a qual encapsula o processamento com objeto de dados oculta o acesso a eles e adiciona herança e vinculação dinâmica de tipos. O conceito de paradigma Consultando o Minidicionário Aurélio, 7ª edição, temos a seguinte descrição para o vocábulo paradigma: sm (substantivo masculino). Modelo, padrão. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 13 O Dicionário Didático SM (Ensino fundamental) define o termo paradigma como: substantivo masculino. Modelo ou exemplo. O ministro propôs um novo paradigma nacional de transporte, mais urbano e adequado ao meio ambiente. Trazendo a idéia para o contexto das linguagens de programação, temos que: PARADIGMA é o conjunto de características que servem para categorizar um grupo de linguagens com características semelhantes e que apoiem o desenvolvimento de sistemas com determinadas características. Ou seja um paradigma agrupa linguagens com características semelhantes, que são usadas para o desenvolvimento de sistemas que aproveitem essas características POR QUE ENTENDER OS PARADIGMAS DAS LINGUAGENS DE PROGRAMAÇÃO O entendimento das características das categorias de linguagens é fundamental para entender o estado da arte e compreender o que PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 14 cada linguagem pode prover e para que tipos de problemas devemos usar cada uma. OS PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO Existem muitas classificações de paradigmas sendo a mais comum a que divide nos paradigmas Imperativo, Funcional, Lógico e Orientado a Objetos, conforme ilustrado pela figura 3 (Paradigmas de Linguagem de programação), abaixo. CLASSIFICAÇÕES DE PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO Paradigma Imperativo Ou Procedural Visão: “ O computador é uma calculadoraprogramável” PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 15 A maioria das linguagens, de alto nível, existentes até a década de 80 seguiam o p a r a d i g m a i m p e r a t i v o , c a r a c t e r i z a d o basicamente por seguir as características da arquitetura de Von Neumann , que tem formado a base para o projeto de muitas linguagens de programação. Tais linguagens têm um forte compromisso com a eficiência. A Arquitetura de von Neumann - de John von Neumann - é uma arquitetura de computador que se caracteriza pela possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 16 Ilustração representando a "Arquitetura de von Neumann" Neumann, à época de Los Alamos (ca. 1943-1945) As LPs incluídas nesse paradigma especificam como a computação é realizada por uma sequência de alterações no estado da memória do computador. Os conceitos fundamentais são: Variável, valor e atribuição, ou seja o tempo todo atribui-se valor a variáveis. Essa classe de LPs é caracterizada pelo desenvolvimento do programa através de r e fi n a m e n t o s s u c e s s i v o s ( t o p d o w n ) , incentivando a organização do programa em subprogramas (partes), construídos com 3 tipos de processamento: sequencial, condicional e iterativo (repetitivo). Ou se ja o parad igma imperat ivo es ta intimamente relacionado com as técnicas e linguagens estruturadas. Esta classe de linguagens contendo membros tão díspares como FORTRAN, COBOL, PASCAL, CLU e ADA, deve seu nome ao papel dominante desempenhado pelos comandos ou instruções iterativas. Nestas linguagens a unidade de trabalho é o comando. Os efeitos de comandos individuais são combinados para a PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 17 obtenção dos resultados desejados em um programa. Com forte influência da arquitetura de Von Neumann , 3 características permeiam tal classe de linguagens : ★Variáveis – a memória é um componente vital de tal arquitetura sistêmica, sendo composta por um conjunto de unidades, denominadas células, onde os dados ficam armazenados. Para acessar tais dados na memória necessitamos saber o endereço de cada cé lu la . Como programar, referenciando os endereços físicos de memória é uma tarefa extremamente complexa, as linguagens de programação dispuseram aos programadores o conceito de variável, permitindo a eles abstraírem-se do conhecimento de que dado estaria armazenado em que célula (com endereço específico) de memória. Assim uma variável é em última análise, uma célula de memória, onde se armazenam dados, e que possuem um nome (identificador). ★Operação de Atribuição – cada dado que precisa ser processado deve estar previamente armazenado na memória, isto é seu valor deve ser atribuído a uma célula PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 18 de memória. O comando de atribuição tem alto grau de importância nas linguagens imperativas, forçando ao programador a um estilo de pensamento que é moldado pela arquitetura de Von Neumann. ★Repetição (iteração) – um programa, nesta classe de linguagens, geralmente cumpre seu objetivo, executando repetidamente uma seqüência de passos (comandos) elementares. Isto é uma conseqüência da arquitetura de Von Neumann, posto que as inst ruções também prec isam estar previamente armazenadas na memória antes de sua execução. A única maneira de fazer algo mais complexo é repetindo uma seqüência de instruções. As linguagens imperativas permitem descrever a resolução de problemas através de uma série de tarefas elementares (comandos) que o computador pode executar. A seqüência de comandos define o procedimento. A fi m d e i l u s t r a r a i n t e r a ç ã o d e s t a s características e seus efeitos, consideremos o programa abaixo, escrito em PASCAL, que mostra os números primos compreendidos entre 2 e Num, sendo Num um valor lido do dispositivo de entrada DEFAULT (teclado). PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 19 Program Primo; Var Num,I,J : Integer; Primo : Boolean; Begin Readln (Num); For I:=2 to Num do Begin J:=2; Primo:=True; While (Primo) and (J <= I div 2) do If (I mod J) <> 0 Then J:=J+1 Else Primo:=False; If Primo Then writeln (´O número ´, I , ´e primo´) End; End. Considerações sobre o programa : ★Baseia-se em duas malhas de repetição, uma dentro da outra. A repetição mais externa(For I:=1 to Num) percorre os valores no intervalo de interesse 3 (2 a Num), ao passo que a mais interna (While...) testa cada um destes números quanto a ser primo ou não. ★A malha mais interna depende – de maneira não tão simples – da malha mais externa. ★A malha mais externa também depende – na instrução If Primo Then..... – da PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 20 atribuição feita na malha mais interna (primo:=false). ★O programa não é hierárquico no sentido de cada componente ser composto de outros componentes (de nível mais baixo). Ao contrário cada componente usa efeito dos outros. ★Um componente é usado não para produzir (calcular) um valor, mas para produzir um efeito, especificamente o efeito de atribuir valores a variáveis. ★As estruturas de controle são usadas para ordenar as instruções de maneira que os efeitos combinados atinjam o fim desejado Vantegens das LPs Imperativas Desvantagens das LPs Imperativas Os programas tendem a ser eficientes, pois essas LPs simulam o func ionamento da a r q u i t e t u r a d o hardware Dificulta a escrita de p r o g r a m a s c o m p l e x o s , p e l a s características das linguagens no que se re fere a segu i r a M a q u i n a d e Vo n Neumann. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 21 Vantegens das LPs Imperativas Desvantagens das LPs Imperativas I n a d e q u a d o a c o m p u t a ç ã o e m paralelo ★D i fi c u l d a d e e m corrigir programas, já que essa atividade d e c o r r e d a d e p e n d ê n c i a d o conteúdo de cada célula de memória. ★R e q u e r a c o m p a n h a m e n t o passo a passo do e s t a d o d e c a d a variável. PARADIGMA ORIENTADO A OBJETOS Na medida em que os programas tornam-se maiores e mais complexos, cresce a dificuldade não só em desenvolvê-los, mas sobretudo mantê-los ao longo do tempo. As LPs desse paradigma oferecem recursos para tornar o PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 22 desenvolvimento de software mais rápido e confiável. A diferença básica entre as LPs desse paradigma e das LPs do paradigma estruturado é que enquanto essas focam nas abstrações de controle de execução dos programas, aquelas estão fundamentadas nas abstrações de dados Classes, nesse paradigma, são abstrações que definem uma estrutura de dados e um conjunto de operações, os chamados métodos, que podem ser realizadas sobre elas. Na implementação dos métodos das classes são usados os conceitos do paradigma estruturado, daí dizermos que o paradigma OO é uma evolução do paradigma estruturado. Uma linguagem é dita orientada à objetos quandoela dá suporte lingüístico para objetos, e requer que estes objetos sejam instâncias de classes e um mecanismo de herança deve ser permitido. Linguagens Orientada a Objetos = Objetos + Classes + herança Podemos identificar similaridades entre o paradigma imperativo (ou procedural) com o PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 23 paradigma da orientação a objetos. A Tabela abaixo , traça um paralelo entre estas abordagens. Paradigma Imperativo Paradigma de Objetos Tipos de dados Classes / Tipos abstratos de dados Variável Objeto / Instância Função / Procedimento Operação / Serviços C h a m a d a d e procedimento / função Envio de mensagens PARADIGMA CONCORRENTE O paradigma concorrente engloba LPs que oferecem recursos para o desenvolvimento de sistemas concorrentes, cada vez mais usados. A programação concorrente existe quando vários processos executam simultaneamente e concorrem por recursos, o que pode acontecer quando há uma ou mais unidades de processamento. As principais linguagens para essa finalidade são: ADA e JAVA. PARADIGMA DECLARATIVO PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 24 Em contraste com o paradigma interativo, onde os programas especificam exatamente como o computador deve realizar a tarefa, nesse paradigma declara-se (descrição) o que é a tarefa, de forma abstrata. Essas LPs especificam as relações ou funções, não tendo atribuição de valores a posições de memória. As variáveis são incógnitas e não células de memória. O paradigma declarativo é subdividido em: Paradigma funcional e lógico, que são abaixo descritos. Paradigma Funcional Visão : “ O computador calcula funções matemáticas complexasl” O paradigma funcional contemplam linguagens que basicamente operam funções ou seja recebem um conjunto de valores e retornam um valor, como resposta ao problema. Exemplos dessas LPs são: LISP e HASKELL. O paradigma funcional focaliza o processo de resolução de problemas. A visão funcional resulta num programa que descreve as operações que devem ser efetuadas para PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 25 resolver o problema. O programa é uma função, ou grupo de funções composto por funções simples. A relação entre as funções é simples : uma função pode chamar outra, ou o resultado de uma função pode ser utilizado como argumento para outra função. A tendência são programas menores, com menos código, nas linguagens funcionais. Exemplo: Considere a seguinte função para calcular o fatorial de um número, dada em uma linguagem imperativa C. Int Fatorial (int n) { Int Fat=1; While (n > 0) { fat=fat*n n— } return fat } Podemos usar a mesma função sem utilizar a variável local fat para armazenar os valores. Para tal faremos uso da recursividade: Int Fatorial (int n, inf f) { If (n > 0) PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 26 Factorial (n-1,f*n) Else Return f; } Se quisermos calcular o fatorial de 5, basta chamar Fatorial (5,1).6 A linguagem funcional mais conhecida é LISP, muito usada na área de Inteligência Artificial (especificamente para a construção de sistemas especialistas, processamento de linguagem natural e representação do conhecimento), devido a facilidade de interpretação recursiva. A linguagem APL embora tenha comando de atribuição (por atender ao paradigma imperativo) também é considerada uma linguagem funcional e pode ser usada para vários tipos de aplicações, desde controle de hardware e dispositivos até sistemas de informação gerencial. Paradigma Lógico Visão : “ O computador entende a lógica formal (fatos e regras)” PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 27 A mais conhecida linguagem desse paradigma chama-se Prolog e como as demais LPs desse grupo estão baseadas em um conjunto de predicados. Um predicado define uma relação entre constantes ou variáveis. No paradigma lógico, os programas são declarativos: declara-se os resultados e não os procedimentos e à partir daí o programa encontra o caminho. O paradigma lógico está relacionado à perspectiva da pessoa: ele encara o problema de uma perspectiva lógica. Um programa lógico é equivalente à descrição do problema expresso de maneira formal, similar à maneira como o ser humano raciocina sobre ele : de posse de vários fatos, derivam-se conclusões e novos fatos. Assim quando uma questão é formulada, um mecanismo de inferência tenta deduzir novos fatos a partir dos existentes para verificar a veracidade da questão. A principal característica do paradigma lógico é que a execução dos programas corresponde a um processo de dedução automática. A linguagem lógica mais conhecida é PROLOG. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 28 Tal paradigma é bastante utilizado na construção de linguagens de acesso a banco de dados, sistemas especialistas (IA), tutores inteligentes e etc. Nesta aula, você: ★A impor tânc ia das l i nguagens de p r o g r a m a ç ã o n o c o n t e x t o d e desenvolvimento de software. ★Os conceitos e os principais paradigmas de Linguagens de Programação. ★Os conceitos e as principais metodologias e técnicas de programação. ★A relacionar as atividades de programação com atividades de análise de sistemas. ★Sobre a tênue relação entre os paradigmas de Linguagens de Programação, de programação e de Análise de Sistemas. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 29 REGISTRO DE PARTICIPAÇÃO 1.Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação e execução do programa. Por exemplo, em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si, enquanto em programação funcional os programadores abstraem o programa como uma sequência de funções. Portanto, surge a necessidade de estudar diferentes paradigmas de programação de virtude de: I. Habi l idade maior de projetar novas linguagens. II. Introdução de programas de inclusão social. III. Aumenta-se a habilidade de aprender novas linguagens. IV. Maior capacidade em desenvolver soluções computacionais. Com base na aná l i se das asse r t i vas apresentadas, assinale a ÚNICA alternativa CORRETA. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 30 1) Apenas I, III e IV corretas 2) Apenas I, II e III corretas 3) Apenas I, II e IV corretas 4) Apenas II, III e IV corretas 5) Apenas II e IV corretas 2.Um paradigma é uma forma de abordar um problema. No paradigma da orientação a objetos, há um elemento, uma entidade autônoma que contém seus próprios dados que são manipulados pelos processos definidos para o objeto que interage com outros objetos para alcançar um determinado objetivo. O paradigma da orientação a objetos visualiza um sistema de software como: I. uma coleção de objetos interconectados. II. Cada objeto é responsável por realizar tarefas específicas. III. O sistema deve ser descrito a partir de suas funções mais amplas (FUNCIONAL e não OO). Com base na análise das assertivas abaixo, assinale a alternativa CORRETA. 1) Apenas I e II corretas 2) Apenas I correta 3) Apenas I correta4) Apenas III correta 5) Apenas I e III corretas PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 31 3.Com relação aos diversos paradigmas de linguagens estudados, analise as assertivas abaixo I. No paradigma lógico há predomínio do uso de funções (FUNCIONAL e não lógico) II. No paradigma concorrente as linguagens oferecem recursos para os programas executarem simultaneamente e concorrerem aos recursos. III. No paradigma lógico declaram-se os resultados e não os procedimentos IV. O paradigma OO, utiliza conceitos do paradigma imperativo na medida em que a programação dos métodos das classes é feira usando seus conceitos. Com base na análise das assertivas abaixo, assinale a alternativa CORRETA. 1) Apenas II, III e IV corretas 2) Apenas II e III estão corretas 3) Apenas I, III e IV estão corretas 4) Apenas II e IV corretas 5) Apenas I e III estão corretas. 4.A técnica de programação estruturada, caracterizada pela programação que se valia de 3 estruturas de comandos: sequencial, decisão e iteração, além de uso da técnica de refinamento PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 32 sucessivos (top-down), surgia na época do paradigma: 1) Imperativo 4) Lógico 2) Orientado a objeto 5) Concorrente 3) Funcional PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 33 CCT0208_EX_A1_201102276103 Disciplina: CCT0208 - PARAD.ANAL. E DESEN. Período Acad.: 2014.1 - EAD (G) / EX 1. Como se chama o técnica de programação que, primeiro, coibiu o uso de desvios incondicionais (como por exemplo GOTO), por ser prejudicial às boas técnicas de programação? ( ) Programação Orientada a objeto ( ) Programação Essencial ( ) Programação lógica ( ) Programação em Linguagem de Máquina ( x ) Programação Estruturada 2. Conceitualmente Paradigma é definido como um grupo de linguagens semelhantes que tenham características em comum. O paradigma imperativo ou procedural especifica a sequência de procedimentos com alterações no estado da memória da máquina de Von Neumann. Na lista abaixo marque uma vantagem do uso de uma linguagem de programação imperativa : Facilidade na correção de programas. ( ) Adequado a computação paralela. ( x ) Eficiência nos programas, pois essas Linguagens de programação simulam a arquitetura do hardware. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 34 ( ) Requer acompanhamento passo a passo do estado de cada Variável. ( ) Facilidade na escrita de programas complexos. 3. Como se chama o paradigma de linguagem de programação que em que o computador é visto como uma máquina programável e que esta baseado no funcionamento da máquina de Von Neumman? ( ) Paradigma Lógico ( x ) Paradigma Imperativo ou Procedural ( ) Paradigma Concorrente ( ) Paradigma Orientado a Objeto ( ) Paradigma Funcional PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 35 AULA 2 PARADIGMAS DE ANÁLISE E PROJETO DE SOFTWARE Nesta aula, você irá: 1.Conhecer os conceitos e os principais paradigmas de análise de sistemas. 2.Conhecer a evolução histórica dos paradigmas de análise de sistemas, identificando os problemas de cada um, propiciando o surgimento do próximo. 3.Conhecer as principais características e ferramentas (modelos) das análises tradicional, estruturada, essencial e orientada a objetos. O processo de desenvolvimento de Software ★A tarefa de desenvolver software com qualidade não é fácil e demanda uma série de atividades com diferentes níveis de abstração, valendo-se de diferentes técnicas e propósitos. Conforme vimos nas aulas de PDS (Processos de Desenvolvimento de Software), o desenvolvimento de software requer algumas ETAPAS que, de acordo com a forma com que se relacionam entre si, originam os diferentes processos de desenvolvimento. ★Estudamos, ainda na disciplina PDS, alguns processos, dentre os quais podemos PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 36 citar: Processo em Cascata Clássico, P r o c e s s o e m C a s c a t a c o m Retroalimentação, Processo Iterativo- Incremental, Processo Prototipação, Processo Espiral, Processos Ágeis (como Extreme Programming – XP e Scrum) e RUP (Processo Unificado). ★Os processos têm em comum a existência de etapas ou fases e diferem na forma como o sistema é desenvolvido e na integração e relacionamento entre as respectivas fases (ou etapas) do processo. Por exemplo, no processo em Cascata Clássico, os requisitos tinham que ser TODOS identificados na fase de análise (início do processo) e caso alguma mudança fosse necessária, não haveria possibilidade de ajuste, devendo congelar os novos requisitos identificados até que o conjunto inicial de requisitos estivessem implementados. ★Já o Modelo Iterativo-Incremental divide os requisitos em partes e o sistema vai sendo construído aos poucos e as partes recém criadas vão sendo integradas às já existentes, repetindo este processo até que todos os requisitos do sistema estejam implementados. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 37 De acordo com o processo de desenvolvimento e a forma de sua implantação nas empresas, podem acontecer pequenas variações nas fases (ou etapas). Em alguns processos, algumas podem ser agrupadas em única fase, outras podem ser suprimidas, mas de uma forma geral: análise, projeto e implementação tendem a existir. C o n c e p ç ã o ↔ A n á l i s e ↔ P r o j e t o ↔ Implementação ↔ Testes ↔ Manutenção ↔ Implantação O CONTEXTO DA ANÁLISE DE SISTEMAS A análise de sistemas é um das principais fases de um processo de desenvolvimento de software, qualquer que seja este. Geralmente, uma das fases iniciais. As principais atividades a serem desenvolvidas na fase de análise, onde é feito um estudo do problema, ou seja, estudo do sistema e do contexto em que está inserido (na organização) são: ★Identificar os requisitos do sistema, através do levantamento de dados com os usuários. Aqui, são usadas diversas técnicas, conforme as necessidades: entrevistas individuais, ou em grupo, questionário, reuniões planejadas, brainstorm, análise de PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 38 documentos, visitas in locco (ou análise de campo), dentre outras. ★Especificar O QUE o sistema deve fazer, em termos essenciais e com base nos requisitos identificados, ou seja, definir as funcionalidades que o sistema deve ter para atender ao que desejam seus usuários. As definições da fase de análise independem de tecnologia, ou seja, são as soluções para o problema em estudo. É salutar que haja essa independência tecnológica para que a solução perdure no tempo, com diferentes possíveis implementações. Por exemplo, se fizermos uma solução lógica de divisão das partes do sistema dependendo de determinada linguagem de programação, amanhã, quando essa linguagem estiver obsoleta, a divisão terá que ser refeita. Se não houvesse tal dependência, mesmo que houvesse a troca da linguagem, a solução de análise continuaria a funcionar com várias tecnologias diferentes. A tarefa de análise é desenvolvida pelos analistas de sistemas, que precisam ter ou desenvolver algumas aptidões, para conseguir lidar, de um lado, com o alto nívelde abstração dos usuários e, de outro, com o alto nível técnico da equipe de desenvolvimento (projetistas, PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 39 programadores, analistas de dados de dados, especialistas em redes, dentre outros). A imagem (Relacionamento do Analista com usuários e equipe) mostra que o analista de sistemas precisa entender as necessidades e expectativas dos usuários a cerca do sistema e comunicar esse entendimento a equipe de desenvolvimento, através da especificação e modelagem do sistema. Desde os primórdios da computação, a insatisfação dos usuários com o atendimento de suas necessidades e expectativas é causa de transtorno para os profissionais da área, sendo este mais um motivo para uma atenção efetiva do analista para com os usuários do sistema. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 40 Usuário ENTENDIMENTO Analista de Sistemas ESPECIFICAÇÃO Equipe de Desenvolvimento OS PARADIGMAS DE ANÁLISE DE SISTEMAS Os paradigmas que categorizam as técnicas e métodos usados na fase de Análise de Sistemas, conforme já explicado na aula 1, têm relação íntima com os paradigmas de programação que, por sua vez, ditam o estado da arte, posto que as linguagens de programação surgem antes das técnicas de análise e projeto de sistemas. Todavia, ao escolher a técnica de análise a ser usada, conforme mostrou a imagem anterior, é feita, também, a escolha do paradigma da linguagem de programação que será usada, conforme ilustra a tabela. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 41 Paradigmas de Análise x Paradigmas de LPs PARADIGMA DA ANÁLISE TRADICIONAL A análise tradicional é a técnica que era usada na fase anterior ao surgimento da análise estruturada. Basicamente, produzia documento textual com a descrição do sistema e seus requisitos e, eventualmente, fazia uso de uma fer ramenta bastante popu lar chamada fl u x o g r a m a . A a b o r d a g e m u s a d a e r a exclusivamente voltada para a perspectiva das f u n c i o n a l i d a d e s d o s i s t e m a , m a i s especificamente dos programas (daí o uso dos fluxogramas). Traçando um paralelo, no tempo, com os paradigmas de LPs, corresponde ao momento onde surgiam as linguagens de 3ª PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 42 geração (alto nível), mas os programas não eram estruturados sob nenhum aspecto e os GOTOs (desvios incondicionais) eram usados em demasia. Corresponde ao momento inicial da crise do software (anos 70), pois, a complexidade dos sistemas demandados crescia dia a dia e os programas escritos eram de difícil manutenção o que não facilitava as melhorias nos sistemas já desenvolvidos. Pouco havia de testes no processo de desenvolvimento, que ainda não estava formalizado e firmado como era necessário, ou seja, a qualidade do software era relegada ao segundo plano. PARADIGMA DA ANÁLISE ESTRUTURADA Esse contexto, nada positivo, foi o pano de fundo para o surgimento (com esperança) da chamada análise estruturada, no início da década de 70, juntamente com as linguagens de 3ª geração (alto nível) ditas estruturadas, ou seja, que permitiam a escrita de programas com apenas 3 estruturas: sequencial, decisão e repetição, abolia o uso de GOTOs, surgia a programação modular com refinamentos sucessivos, ou top- down. Como os s istemas demandados aumentavam em complexidade, a técnica de anál ise est ru turada t rouxe a idé ia da PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 43 documentação do sistema através de diagramas, ou seja, de modelos que representavam a realidade. O reconhecimento da importância da modelagem de sistemas foi um marco muito importante no processo de desenvolvimento. Outra característica relevante foi a percepção da necessidade em se dividir o processo de desenvolvimento de sistemas em fases, em que cada uma representava um nível de abstração do sistema. Enquanto a sua percursora, a análise tradicional considerava apenas a perspectiva da análise funcional (como os processos funcionavam), a análise estruturada mostrou a importância de outra perspectiva fundamental: dos dados. O reconhecimento da importância dos dados gerou questionamentos do que era mais relevante: os dados ou as funções de um sistema? Mal se sabia que esse quest ionamento vir ia mais tarde a ser respondido pela análise orientada a objetos, que integrou as 2 perspectivas (funções e dados), mostrando que são igualmente relevantes. A análise estruturada lançou mão de modelos gráficos para representar os requisitos e funcionamento. O principal modelo apresentado foi o DFD (Diagrama de Fluxo de dados); Segundo Edward Yourdon Um DFD é uma PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 44 ferramenta de modelagem que nos permite imaginar um sistema como uma rede de processos funcionais, interligados por “dutos” e “tanques de armazenamento de dados". O DFD mostra a visão estruturada das funções que compõem um Sistema. Conforme ilustrado pela figura 4 (DFD em níveis), o DFD pode ter vários níveis de detalhamento (metodologia Top down ou refinamentos sucessivos). A cada nível, mais detalhes são inseridos. O DFD de contexto representa o relacionamento do sistema com as entidades externas e o diagrama de nível ZERO mostra as principais funções. Em um DFD, as funções são PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 45 representadas por processos (representados pelos círculos), que quando não forem mais detalhados em outros níveis, devem ter sua lóg ica de func ionamento dev idamente especificada, conforme ilustra a figura 5 (Especificação de processo). O Dicionário de Dados (DD) é a ferramenta que complementa o DFD, explicando o conteúdo de cada um de seus elementos, conforme ilustra a figura 6 (Dicionário de dados). PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 46 PARADIGMA DA ANÁLISE ESSENCIAL Antes da Análise OO, que revolucionaria a forma de pensar e estruturar os sistemas e programas viria a análise essencial como uma evolução (melhoria) da técnica de análise estruturada, na tentativa de solucionar os problemas surgidos com a aplicação prática desta. Os principais problemas da análise estruturada eram: PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 47 ★Por onde começar a fase de análise? Não havia uma diretriz clara de como iniciar a modelagem na fase de análise. A d e c i s ã o fi c a v a a c a r g o d o s profissionais, ditada pelas experiências desses profissionais. Ou seja, mostrava s e r u m p r o c e s s o d e e x t r e m a subjetividade, como em geral são os processos analíticos que dependem dos seres humanos. ★Separação entre aspectos lógicos e físicos, ao modelar o sistema: Dizia-se que o DFD devia ser um modelo lógico, sem considerar aspectos físicos (tempo, forma de fazer e etc). Mas esse era um conceito abstrato e muitas vezes não considerado. Na verdade, o que se desejava era se concentrar nos reais requisitos dos usuár ios, sem confundi- los com aspectos irrelevantes. ★ A identificação das principais funções do sistema (nível zero do DFD) era subjetiva e o mesmo sistemapodia ter diferentes formas de agrupar e dividir funções, dependendo da visão de quem o modelava. ★ O DFD dava pouca ênfase a análise de dados, por isso, somente mais tarde, PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 48 quando Peter Chain cria o MER (Modelo de Entidade e Relacionamentos), pouco antes do surg imento da anál ise estruturada, é que o modelo de dados foi incorporado à fase de análise. ★ Um DFD desenvolvido com a técnica de análise estruturada sempre é diferente se feito por profissionais diferentes, dada a subjetividade da técnica. A Análise Essencial, também chamada de Análise Estruturada Moderna surgiu como uma estratégia de modelar o que o sistema deve fazer para satisfazer os requisitos dos usuários, partindo do princípio que dispomos de tecnologia perfeita, obtida a custo zero. Essa característica visa resolver o problema de número [2] - Separação entre aspectos lógicos e físicos, ao modelar o sistema. Ao separar a tecnologia e dando-a como perfeita, capaz de processar tudo, de armazenar tudo, sem custo, concentra-se no problema do usuário e com isso aumentar as chances de sucesso do sistema. Para suportar a modelagem dos sistemas complexos e grandes, característicos daquele momento, a Análise Essencial não atendia plenamente. Ainda havia lacunas a serem PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 49 preenchidas e estávamos no meio da crise do Software, onde o mercado clamava por uma metodologia de análise e projeto de sistemas mais efetiva, que apresentasse, na prática, m e l h o r e s r e s u l t a d o s . E m t e r m o s d e programação, as pessoas já haviam aprendido a usar rotinas e funções de bibliotecas, otimizando o tempo de desenvolvimento, mas faltava algo mais, que pudesse aumentar o índice de aproveitamento de código e otimizar o desenvolvimento. A fase de manutenção também não apresentava resultados satisfatórios, com custos elevados, dispêndio de tempo excessivo e programas de baixa qualidade. Estávamos no auge da crise do software e os problemas mais contundentes da época eram: ✴Duplicação de esforços na construção do software. ✴Dificuldade em estimar (poucos dados iniciais). ✴Não cumprimento de prazos (cronograma) de desenvolvimento. ✴Alto Custo de desenvolvimento (tempo e mão de obra). ✴Software não atende aos requisitos. ✴Alto custo de manutenção. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 50 ✴Alto volume de documentação demandada pelos sistemas e dificuldade em mantê-los atualizados durante a fase de manutenção. As pesquisas e desenvolvimento, em nível de linguagens de programação, já apontavam para as primeiras experiências com as linguagens orientadas a objeto. O conceito de objeto vem de encontro do que se precisa em termos de melhorias na implementação do código e potencializa a solução dos problemas que são apresentados a seguir, na medida em que: ✴Facilita o controle da complexidade inerente ao software. ✴Promove a reusabilidade --> componentes de código reutilizáveis. ✴Promove o desenvolvimento de sistemas de fácil manutenção, como consequência dos dois itens acima. PARADIGMA DA ANÁLISE ORIENTADA A OBJETO (OO) O paradigma orientado a objeto, doravante paradigma OO, trouxe uma grande revolução na forma de se pensar “o desenvolvimento de um sistema”, comparativamente ao paradigma antecessor, a Análise Essencial. A visão de sistema, ilustrado na figura 10 (Mudança de Paradigma: Módulo x Objeto), até aquele PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 51 momento visto como um “conjunto de módulos (partes, ou subsistemas) integrados”, passa a ser a de um “conjunto de objetos Mudança de Paradigma: Módulo x Objeto X Conforme ilustrado na imagem, ao passo em que na análise essencial (e estruturada) o sistema era visto sob duas perspectivas isoladas (procedimentos que realizam operações sobre os dados), na análise OO, os objetos possuem características próprias, modeladas por seus atributos (dados) e métodos (procedimentos) e as classes representam um conjunto de objetos com as mesmas características. Ou seja, houve PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 52 uma integração entre procedimentos (agora chamados de métodos) e os dados (atributos) das duas perspectivas sobre as quais se modelavam os sistemas. Classe encapsula dados e funções MAIS SOBRE ANÁLISE ORIENTADA À OBJETOS Na prática, em termos de modelagem conceitual de análise, a tarefa principal passa a ser a identificação dos objetos (na verdade as classes) envolvidos no contexto do sistema. Ao identificar os objetos, naturalmente, mode lam-se os a t r i bu tos (dados que carac te r izam o ob je to ) e os métodos (funcionalidades do sistema, inerentes aquele objeto ou classe). Na medida em que são identificados todos os objetos pertinentes a um sistema, já teremos os dados e procedimentos relacionados. Um modelo OO tem com entidade fundamental o Objeto, que recebe e envia mensagens, executa PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 53 procedimentos e possui um estado que, por proteção apenas ele pode modificar. Problemas são resolvidos, por meio de objetos, que enviam mensagens uns aos outros. Um Modelo OO é formado por quatro elementos básicos: 1. Objeto: É o principal elemento do modelo OO. Representa as “coisas” a serem modeladas do mundo real. Um objeto pode ser algo concreto como um carro, um aluno ou algo abstrato como uma disciplina. Cada objeto possui os dados inerentes a ele, como por exemplo, Nome (José) e Matrícula (201101272201) de um aluno e possui as operações que ele executa, como incluir novo aluno ou alterar dados de um aluno existente. 2. Mensagens: Quando um outro objeto deseja que seja executada uma operação, da responsabilidade de outro objeto, ele manda uma mensagem a esse objeto, informando o que ele deseja que seja feito. A operação desejada será implementada por meio de um método. 3. Atributos: São dados que caracterizam o objeto. 4. Métodos : É um procedimento (implementado por uma rotina ou função) que executa uma PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 54 operação em um objeto e define parte de seu comportamento. 5. Classes: É um conjunto de objetos com as mesmas características (atributos e métodos). Por exemplo, os objetos IX35 e Sportage são o b j e t o s d a c l a s s e C A R R O , c u j a s características em comuns são: a)Atributos: modelo, fabricante, ano de fabricação, portas, dentre outros b)Métodos: incluir carro, vender carro, dentre outros. Dentre as principais característ icas do paradigma orientado a objeto (OO), destacamos: 1. Encapsulamento: Encapsular significa esconder, ou seja, o objeto esconde seus dados do acesso indevido de outros objetos e somente permite que eles sejam acessados por operações implementadas p e l o s s e u s p r ó p r i o s m é t o d o s (funcionalidades que implementam o comportamento do objeto). Com isso, o encapsulamento protege os dados do objeto do uso arbitrário ou não intencional, o que pode ser visualizado na figura 12 (Encapsulamento). O encapsulamento é u m a t é c n i c a p a r a m i n i m i z a r a interdependências entre as classes, pois apenas os métodos da respectiva classePARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 55 podem alterar seus dados (atributos), facilitando a identificação de erros e a alteração dos programas. 2. Herança: Mecanismo para derivar novas classes a partir da definição de classes existentes através de um processo de refinamento. Uma classe derivada ou descendente herda os dados (atributos) e comportamento (métodos) da classe base o u a n c e s t r a l o u a s c e n d e n t e . A implementação da herança garante a reutilização de código, que além de economizar tempo e dinheiro, propicia mais s e g u r a n ç a a o p r o c e s s o d e d e s e n v o l v i m e n t o , p o s t o q u e a s funcionalidades da classe base já foram usadas e testadas. 3. Polimorfismo: A palavra polimorfismo, deriva do grego e significa “muitas formas”. A partir do momento em que uma classe herda atributos e métodos de uma (herança simples) ou mais (herança múltipla) classes base, ela tem o poder de alterar o comportamento de cada um desses procedimentos (métodos). Isso amplia o poder do reaproveitamento de código promovido pela herança, permitindo que se aproveitem alguns métodos e se alterem (redefina) outros. Dessa forma um PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 56 método com mesmo nome em classes d i s t i n t a s p o d e t e r d i f e r e n t e s comportamentos. Por exemplo, pode-se usar a Herança para representar um r e l a c i o n a m e n t o e n t r e a s c l a s s e s Documento e Email, de forma que Email herda as definições (Atributos e métodos) de Documento. Suponha que um dos métodos de Documento seja Imprime. A classe email pode escrever novo código para o método Imprime, de forma que o email seja impresso de forma diferente do Documento. O método Imprime terá o mesmo nome, mas em cada classe se comportará de forma distinta. O modelo de objetos surgiu (década de 80) c o m o u m m o d e l o p r o m i s s o r p a r a o desenvolvimento de software mais confiável devido as características inerentes ao modelo de objetos. Vejamos: ➡O conceito de encapsulamento permite a construção de classes independentes uma das outras, facilitando o desenvolvimento e a manutenção do software (alterações e melhorias na classe). PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 57 ➡A herança e o polimorfismo permitem e facilitam a reutilização de código, útil na fases de implementação e manutenção. O uso de técnicas orientadas a objetos facilita o controle da complexidade, uma vez que promove uma melhor estruturação de seus componentes e também permite que componentes já usados e validados possam ser reaproveitados. Cabe ressaltar que uma das principais razões para a baixa produtividade no desenvolvimento de software é a dificuldade de reutilização de código gerado pelos paradigmas de análise tradicionais. As hierarquias de classes (herança) são componentes portáveis entre aplicações, que, se bem projetados, podem ser reutilizados em vários sistemas sem modificação e, além disso, podem ser estendidos (polimorfismo) sem corromper o que já existe. Assim sendo, podemos dizer que o modelo de objetos proporciona modularidade trazendo os seguintes benefícios: ✴Reusabilidade: Softwares podem ser escritos com base em componentes já existentes. ✴Extensibilidade: Novos componentes de software podem ser desenvolvidos a partir PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 58 de outros já existentes, sem afetar o comportamento do componente de origem. Sabe-se que software são intrinsecamente complicados devido aos novos requisitos das aplicações modernas: alta confiabilidade, alto desempenho, desenvolvimento de software rápido e barato, alta complexidade e tamanhos grandes. O modelo OO veio para combater os problemas derivados da crise do Software, termo cunhado em 1968 na Europa e caracterizado pelos seguintes problemas do software: • baixa confiabilidade, • baixa qualidade, • alto custo de manutenção e • Qdupl icação de esforços na sua construção (tempo e dinheiro). Um sistema desenvolvido com as características do modelo OO tende a ser bem estruturado, posto que os objetos são unidades coesas com interfaces simples que escondem as suas implementações. No que se refere à forma de desenvolvimento, o que envolve o processo de desenvolvimento utilizado, o modelo OO permite uma melhoria PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 59 substancial do processo de construção de software em relação aos paradigmas tradicionais (tradicional, estruturado e essencial). A chave da análise OO é o foco em objetos (e em classes) e não em funções. O início da fase de análise não se dá mais pela identificação das diferentes funcionalidades do sistema e sim pela identificação dos objetos que compõem o sistema. Inicialmente, vários especialistas criaram diferentes diagramas de análise e projeto OO. Num dado momento, tais profissionais se juntaram e com o melhor de cada um criaram uma linguagem de modelagem orientada a objeto, nascia a UML (Unified modeling language), cujos principais diagramas eram: ✴Diagrama de Casos de Uso. ✴Diagrama de Classes. ✴Diagrama de sequencia. ✴Diagrama de Atividades. ✴Diagrama de Implementação. ✴Diagrama de Componentes. NESTA AULA, VOCÊ: Sobre os paradigmas de análise: tradicional, estruturado, essencial e orientado a objeto; A contribuição de cada modelo para o processo de desenvolvimento de software; PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 60 As características e principais modelos de ferramentas de cada paradigma de análise de sistemas. Registro de Participação Com relação a fase de análise de qualquer processo de desenvolvimento de software, analise as assertivas a seguir: i) É uma fase onde identificamos os requisitos do sistema, ou seja, aquilo que o usuário precisa que o sistema faça. ii) É uma fase onde se especifica COMO fazer. iii) É uma fase que independe de tecnologia, mas que já temos que saber a linguagem com que desenvolveremos. iv)Sabermos a linguagem é fundamental para sabermos o paradigma de análise que usaremos. v) É uma fase independente de tecnologia, para que a solução possa ser implementada de várias formas. Com base em sua análise, assinale a alternativa correta: 1) Estão corretas as opções I e V 2) Estão corretas as opções I, II e V PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 61 3) Estão corretas as opções I, III e V 4) Estão corretas as opções I, IV e V 5) Estão corretas as opções I, II, IV e V 2. Sobre a análise estruturada, assinale a ÚNICA opção falsa: 1.Foi o primeiro paradigma de análise a usar diagramas para representar o funcionamento do sistema. 2.Surgiu num momento em que o software crescia de complexidade e via sua primeira crise. 3.Surgiu na época da programação orienta a objeto. 4.O processo de análise era segmentado: funcionalidade e dados em duas perspectivas distintas. 3. Sobre a análise essencial, assinale a ÚNICA opção correta: 1. Revolucionou a forma de pensar sistemas, usando modelos distintos do paradigma antecessor. 2. Trouxe uma grande contribuição ao mundo: a lista de eventos, facilitando a PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS62 atividade inicial do processo de análise de sistemas 3. Surgiu numa época em que o software vivia sua era de ouro, onde os principais problemas haviam sido resolvidos 4. Os principais modelos usados eram: DFD, DD, especificações dos casos de uso e diagrama de hierarquia entre os módulos. 4. Sobre os conceitos inerentes ao paradigma orientado a objeto, analise cada assertiva abaixo e classifique-as como Verdadeira ou Falsa: i. O conceito de encapsulamento é a base do modelo OO, permitindo que os atributos de um objeto sejam protegidos e só possam ser alterados pelos métodos do próprio objeto. ii. O conceito de herança e polimorfismo facilita a reutilização de código. iii. Objeto é um conjunto de classes com as mesmas características, por exemplo, os objetos Flamengo e Vasco são da classe Times. iv. O modelo OO trabalha como o modelo essencial, ou seja, com as perspectivas de dados e funções de forma isolada. Assinale a opção que apresenta a correta sequencia de V e F: PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 63 1) V, V, F ,F 2) V, V, V, F 3) V, F, V, F 4) F, F, V, V 5) V, F, F, V CCT0208_EX_A2_201102276103 Disciplina: CCT0208 - PARAD.ANAL. E DESEN. Período Acad.: 2014.1 - EAD (G) / EX 1. Com relação a fase de análise, existente em qualquer processo de desenvolvimento de software, analise as assertivas a seguir: I. É uma fase onde identificamos os requisitos do sistema ou seja aquilo que o usuário precisa que o sistema faça. II. É uma fase onde especifica-se o "COMO fazer". III. É uma fase que independe de tecnologia, contudo já temos que definir a linguagem de programação com que desenvolveremos o sistema. IV. É uma fase independente de tecnologia, para que a solução possa ser implementada de várias formas. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 64 Com base em sua análise das assertivas, assinale a ÚNICA alternativa correta ( ) Estão corretas apenas as assertivas I, III e IV ( X ) Estão corretas apenas as assertivas I e IV ( ) Está correta apenas a assertiva IV ( ) Está correta apenas a assertiva I ( ) Estão corretas apenas as assertivas II, III e IV 2. No que tange ao papel desempenhado pelo analista de sistemas, qualquer que seja o porte ou tamanho da empresa, analise as seguintes assertivas. I. O analista de sistemas deve interagir apenas com o usuário- gestor, ou seja aquele que toma decisão na empresa II. O analista de sistemas não pode interagir com os programadores, apenas com os projetistas de sistemas III. O analista de sistemas é o elo de ligação entre os usuários e a equipe de desenvolvimento IV. O analista de sistemas deve preocupar-se apenas com aspectos lógicos, abstraindo-se de qualquer aspecto tecnológico ( ) Apenas a opção IV está correta ( ) Estão corretas as opções I e IV ( ) Apenas a opção III está correta ( ) Estão corretas as opções I, III e IV ( X ) Estão corretas as opções III e IV PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 65 3. Na programação orientada a objetos, muitos conceitos são abordados, dentre eles, podemos citar o de Herança, polimorfismo, objetos, classes, métodos e encapsulamento. Dentre as opções abaixo, qual conceitua encapsulamento ? ( X ) é definido como a forma de acesso a objetos onde desconhecemos os seus procedimentos internos e acessamos os mesmos através dos seus métodos, sempre protegendo os atributos ( ) é definido como uma instância criada a partir de uma classe, recebendo todas as características da classe o qual foi originada. ( ) é definido como a possibilita a criação de uma nova classe de modo que essa classe (denominada subclasse, classe-filha ou classe derivada) herda todas as características da classe-mãe (denominada superclasse, classe base ou classe primitiva); podendo, ainda, a classe-filha possuir propriedades e métodos próprios. ( ) é definido como a habilidade do analista de sistemas de modelar características do mundo real. ( ) é capacidade ou técnica que permite a um objeto possuir "vários comportamentos". PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 66 AULA 03 ANÁLISE ESTRUTURADA Nesta aula, você irá: 1. Entender um projeto desenvolvido com a técnica de análise estruturada, através das 2 perspectivas: Modelo Funcional e Modelo de dados do Sistema. 2. Entender o modelo funcional do sistema, através do Diagrama de Fluxo de Dados (DFD), Dic ionár io de Dados (DD) e Especificação dos Processos primitivos do DFD. 3. Entender o modelo de dados do sistema, através dos depósitos de dados do DFD e do Modelo de Entidade e Relacionamento (MER). 4. Desenvolver pequenos sistemas usando a técnica da Análise Estruturada, bem como e n t e n d e r a s d i fi c u l d a d e s d e s s e desenvolvimento. Contextualizando o momento em que surge a análise estruturada Antes do surgimento da análise estruturada não existiam técnicas e nem ferramentas para especificação e modelagem de sistemas. As especificações iniciais eram meramente textuais e, mais tarde, com uso de fluxogramas, que na PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 67 verdade são mais adequados a especificação da lógica de programas e não de requisitos de sistemas. N e s s a é p o c a n ã o h a v i a e q u i p e d e desenvolvimento com funções bem definidas tais como: analista, projetista e programador de s is temas. Geralmente poucas pessoas trabalhavam em um sistema e, portanto, participavam em sua maioria de todas as fases as fases do processo de desenvolvimento de sistemas. Havia dificuldade do analista de sistemas em entender as necessidades do usuário e r ep resen tá - l as de f o rma adequada à compreensão da equipe técnica, ou seja, aumentam as dificuldades do analista de sistemas no papel de comunicador e elo de ligação entre usuário e equipe técnica de desenvolvimento do sistema. Os sistemas desenvolvidos não atendem as especificações dos analistas e necessidades dos usuários, em função da incompreensão das reais necessidades desses. Os sistemas extrapolavam seus orçamentos e cronogramas, em função da dificuldade em PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 68 realizar previsões de tempo e dinheiro adequadamente e do real entendimento necessidades do que deve ser o sistema (funcionalidades que deve possuir). Aumenta o tamanho e a complexidade dos sistemas e com isso as dificuldades no processo de desenvolvimento do software. Surgem, em função do exposto no item [4], acima, as equipes de desenvolvimento para suprir a necessidade do trabalho em fases (analise, projeto, desenvolvimento, testes e implantação). Surgia o primeiro processo de desenvolvimento de software, denominado “Em Cascata Clássico”. ATENÇÃO O cenário estava propício à absorção d e n o v a s t é c n i c a s d e desenvolvimento de Sistemas, pois crescia, dia a dia, a demanda por novos e modernos sistemas nas empresas. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 69 UM BREVE HISTÓRICO DA ANÁLISE ESTRUTURADA No início da década de 70 ganhou notoriedade, pela utilidade prática para construção de programas eficientes, a técnica de programação estruturada, possível com as linguagens estruturadas de alto nível (Fortran, COBOL, Pascal e etc).Tal técnica caracteriza-se pela escrita dos programas usando apenas 3 estruturas: sequencial, decisão e repetição, além da não utilização dos desvios incondicionais (GOTO), que tornavam os programas ilegíveis. A programação estruturada visava a escrita de programas legíveis, eficientes e de fácil manutenção. Como a programação estruturada teve sucesso, foi necessária a criação de técnicas de construção de Projeto de Software compatível com os preceitos da programação estruturada. Era a chegada da técnica do Pro jeto Estruturado, possibilitando que os programas pudessem ser projetados para usar as características superlativas da programação estruturada. Tal técnica trouxe ferramentas como o DEM , que dividia o programa em módulos (físicos) a serem programados. Trouxe também PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 70 relevantes conceitos como acoplamento e coesão e formas eficientes de particionar a arquitetura do software. Seguindo a cronolog ia, observamos o surgimento, no início dos anos 80, da técnica de Análise Estruturada, popularizada por Tom DeMarco, em seu livro sobre o assunto, chamado Análise Estruturada e Especificação de Sistema, uma referência para estudo do assunto. CONCEITOS E CARACTERÍSTICAS DA ANÁLISE ESTRUTURADA A Análise Estruturada, na prática, é uma atividade composta por um conjunto de técnicas e ferramentas cuja finalidade é auxiliar no processo de desenvolvimento de sistemas, especificamente na fase de análise e definição de sistemas. Descreve, passo a passo, as etapas que vão desde a identificação do problema até a efetiva implantação, na empresa, do sistema de informação que contemplará a sua solução. A análise estruturada é uma atividade baseada na construção de modelos utilizando técnicas gráficas, como diagramas. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 71 AS PRINCIPAIS CARACTERÍSTICAS DA ANÁLISE ESTRUTURADA SÃO: OBJETIVO ✴Visa auxiliar no estudo de partes ou toda a empresa com vistas a especificação de um sistema de computação eficiente que ajude a empresa a resolver problemas específicos. COMO A ANÁLISE ESTRUTURADA CUMPRE O SEU PAPEL ✴Cria modelos, que são diagramas ou imagens gráficas, para representar os sistemas e facilitar as alterações necessárias (a qualquer tempo). ✴Retrata, nos diagramas, os fluxos de dados que fluem na empresa, especificamente nos processos pertinentes a área da empresa em estudo. O fluxo dos dados representado mostra como o processo funciona, ou seja, que entradas de dados recebe, quais processamento realiza e quais informações ou saídas gera. ✴Usa a técnica de refinamentos sucessivos ou top down, onde o sistema é dividido em partições funcionais, ou seja, apresentado sob a visão de múltiplos níveis, onde cada um detalha mais características que o nível anter ior. Út i l para o entendimento e modelagem de sistemas grandes e complexos, partindo-se de uma visão geral (macro) do PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 72 sistema e detalhando-o melhor na medida em que o estudo e a compreensão do problema avançam . O PRINCIPAL ELEMENTO DA ANÁLISE ESTRUTURADA: O DFD - DIAGRAMA DE FLUXO DE DADOS A base da proposição da Análise Estruturada é a elaboração do DFD. O DFD, por definição, é um modelo funcional, posto que apresenta a rede dos processos que compõem o sistema em desenvolvimento, interligados por fluxos de dados. O DFD baseia-se no conceito de que um sistema baseado em computador é representado como “um transformador de dados em informação”, através do processamento, conforme mostrado na imagem. Sistema como Processo de transformação d dados de entrada em Informação A imagem mostra todos os elementos de um DFD. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 73 Processo: 1. Representado pela elipse ou círculo. 2. O nome do processo deve estar relacionado com uma atividade ou função do negócio. Devem ser evitados nomes muito físicos(gravar, imprimir), muito técnicos (deletar, becapear) ou nomes muito genéricos (processar). 3. Transforma, pelo processamento, dados de entrada em informação de saída. 4. Representa as ações que o sistema executa. 5. Nem todos os processos representados no DFD devem ser automatizados. 6. Regras: Nenhum processo pode ter apenas saídas (transforma o que?). 7. Nenhum processo pode ter apenas entradas (buraco negro) PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 74 Nome do Processo = verbo no infinitivo + substantivo + (Qualificador) Fluxo de dados Representado pela seta com o nome do fluxo. Veja abaixo as notações possíveis: 1. São dados e informações que trafegam pelo sistema. 2. Mostra como os fluxos fluem através do sistema, o caminho percorrido pelos dados no sistema. 3. O nome do fluxo deve ser um substantivo que facilite a identificação do dado ou pacote de dados transportado. Todo fluxo de dados possui direção (origem e destino). 4. Vejamos pelo exemplo apresentado na figura. Fluxo 1 = entrada de dados enviada pela Entidade Externa 1 PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 75 Fluxo 2 = entrada de dados enviada pela Entidade Externa 2 Fluxo 3 = dado armazenado no depósito de dados Fluxo 4 = informação gerada pelo processo, pelo processamento dos fluxos: fluxo 1, Fluxo 2 e Fluxo 3. Fluxo de dados Regras para uso de fluxos de dados: A. O fluxo de dados tem 1 única direção, exceto de/para depósitos de dados. B. É permitido fluxo de dados entre: A. 2 processos. B. 1 processo e 1 depósito. C. 1 processo e 1 entidade. C. Não são permitidos fluxos de dados entre: PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 76 A. 2 ou mais entidades externas. B. 2 ou mais depósitos de dados. C. 1 entidade externa e 1 depósito de dados. D. O cruzamento de fluxos deve ser minimizado. Depósito de dados 1. Representado pelas linhas paralelas ou retângulo aberto do lado direito, conforme a imagem. 2.Armazenam, temporariamente, os dados que fluem no sistema. 3. Const i tuem a memór ia do s is tema. Representando os dados em estado de repouso. 4. As operações (fluxos entrando e saindo) em depósitos de dados são: -Incluir dados: seta (fluxo) chegando no depósito -Alterar e excluir dados: seta (fluxo) dupla (chegando e saindo), representando uma consulta (existência do dado) e uma atualização dos dados. -Leitura de dados: seta saindo do depósito. PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 77 Entidade Externa a. São as fontes dos dados de entrada e destino das informações de saídas, respectivamente conduzidas pelos fluxos de dados. b. Não fazem parte do sistema, mas interagem com ele, mostrando fontes dos dados de entrada e dest ino das informações de saídas, PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS 78 respectivamente conduzidas pelos fluxos de dados. Não fazem parte do sistema, mas interagem com ele, mostrando Conceitos e característ icas da anál ise estruturada O DFD EM NÍVEIS A análise estrutura propõe a elaboração do DFD em níveis,
Compartilhar