Você está na página 1de 7

8 AULA

MODELAGEM DE SISTEMAS DE INFORMAO


PROFESSOR MAURCIO - MCFMELLO@CCET.PUCPR.BR

Introduo ao processo de desenvolvimento de software Desenvolvimento de Sistemas


Trata-se de um tema extremamente extenso, e no objetivo deste texto uma reviso completa e longa.

1. CONCEITOS INICIAIS
Os sistemas computacionais podem ser aplicados s mais diversas reas. Muitas vezes, o ambiente de aplicao do sistema determina sua natureza e principais caractersticas. Pressman [PRESSMAN-92] indica sete reas potenciais de aplicao de softwares1: Software Bsico, ou de Sistema: Coleo de programas criados para servir a outros sistemas. O sistema operacional ou compiladores so um exemplo dessa aplicao. Caracteriza-se por uma forte interao com o hardware 2da mquina. Sistemas de Tempo Real: Sistemas que monitoram/analisam/controlam eventos de processos do mundo real assim que ocorrem. Um sistema de tempo real recebe informaes/sinais do mundo real, e como resultados de seu processamento envia de volta ao mundo real informaes/sinais para controle. Um sistema em tempo real deve responder dentro de limitaes de tempo de resposta, que caso no atendidas podem ter efeitos desastrosos. Sistemas de Informao: Trata-se da maior rea de aplicao de sistemas. Consiste de sistemas envolvidos em gerenciar e acessar bases de dados de informaes de negcio. Tambm podem ser chamados de Business Software. Aplicaes dessa rea processam, organizam e reestruturam grandes volumes de dados existentes de forma facilitar tarefas de negcio ou suportar a tomada de decises. o tipo de software que em geral o engenheiro de produo se relaciona mais diretamente. Software de Engenharia e Cientfico: So caracterizados como algoritmos "devoradores de nmeros". So aplicados em reas como: astronomia, anlise de resistncia de estruturas, biologia molecular entre outras. Sistemas Embutidos, ou Software Residente: Alojam-se nas memrias apenas de leitura, conhecidas como ROM (read only memory), e controlam sistemas de "baixo nvel", como por exemplo um teclado numrico, um sistema digital de controle do nvel de combustvel de um automvel, etc. Software de Computador Pessoal, ou 4 gerao: Processadores de texto, planilhas eletrnicas, jogos, aplicaes financeiras e acesso a bases de dados so apenas alguns exemplos de sistemas dessa rea. Seu crescimento se deu recentemente, principalmente a partir de 1979. Normalmente a rea mais inovadora em termos de interao e projeto da interface do sistema com usurio. Software de Inteligncia Artificial: A inteligncia artificial (IA) utiliza algoritmos no numricos para resolver problemas complexos. Atualmente a rea mais ativa

1 Software - Termo em ingls incorporado ao jargo brasileiro da rea de informtica

sinnimo de sistema, coleo de programas. Neste trabalho os termos Software e Sistema so utilizados indistintamente. O termo software ser grafado em itlico. 2 Hardware - Termo em ingls incorporado ao jargo brasileiro da rea de informtica que significa a parte fsica (eletro-eletrnica) dos computadores. Neste trabalho o termo ser utilizado em itlico.

-1-

da IA so os sistemas especialistas, tambm chamados de "sistemas baseados em conhecimento".

2. DESENVOLVIMENTO DE SISTEMAS
O desenvolvimento de sistemas baseado na teoria de Pressman [PRESSMAN1987]. Derivaram de seus princpios iniciais diversos mtodos de diferentes autores especialistas na rea. O objetivo principal da rea de informtica produzir sistemas com qualidade, e como objetivos secundrios reduzir o custo do software e aperfeioar as solues [PRESSMAN-1987]. Com esse objetivo, Pressman estudou o ciclo de desenvolvimento de software e denominou sua teoria de "Engenharia de Software", que envolve trs elementos bsicos: mtodos, ferramentas e procedimentos. Esses elementos permitem ao gerente do desenvolvimento controlar o processo, e aos analistas e programadores criarem sistemas de alta qualidade de forma produtiva. A teoria de Engenharia de Software composta de mtodos que ajudam a construir um sistema computacional. Os mtodos envolvem um grande conjunto de tarefas que incluem: planejamento e estimativa de custo e prazo do desenvolvimento; anlise dos requisitos do sistema; projeto da estrutura de dados; projeto arquitetural e projeto de procedimentos; codificao; testes e manuteno do sistema. Outros autores sugerem passos adicionais, como Page-Jones [PAGEJONES-1988] que sugere uma fase anterior de estudo da viabilidade do desenvolvimento e avaliao da construo do software. As ferramentas de Engenharia de Software provm suporte automtico ou semiautomtico na execuo de um mtodo. Ferramentas computacionais que integram diversas ferramentas destinadas s diversas fases de um mtodo so chamadas de ferramentas ou sistemas CASE3 (Computer Aided Software Engineering). As CASE so um conjunto de ferramentas integradas de modo que a informao criada e armazenada em uma ferramenta pode ser utilizada pelas demais ferramentas integradas no pacote. Nessas ferramentas a informao de uma determinada fase do desenvolvimento verificada automaticamente em relao a sua consistncia e corretude com o mtodo e ento disponibilizada para outras fases do desenvolvimento. Estas ferramentas tambm reduzem o trabalho braal para gerao de diagramas e documentao, bem como reduzem o esforo necessrio para introduzir alteraes no projeto. A Engenharia de Software une mtodos e ferramentas, visando que o desenvolvimento de software seja racional, oportuno, gerencivel e com qualidade. Estes procedimentos definem a seqncia na qual os mtodos sero aplicados, documentos e formulrios requeridos e os controles que possibilitam avaliar o progresso no desenvolvimento do sistema. [PRESSMAN-1987] Os passos que envolvem os mtodos para engenharia de software so freqentemente referidos como paradigmas ou modelos. Um paradigma para engenharia de software baseado na natureza do projeto e sua aplicao, nos mtodos e ferramentas utilizados, e nos controles e documentos requeridos. [PRESSMAN-1987] A figura 1 ilustra o chamado ciclo de vida clssico para engenharia de software. Esse modelo usualmente chamado de "cascata" e indica a seqncia de fases usada no desenvolvimento de sistemas.

3 Computer Aided Software Engineering - Engenharia de Software Auxiliada por

Computador.

-2-

Planejamento Global

Anlise Projeto Codificao Teste Manuteno

Figura 1- Ciclo de vida clssico do software [PRESSMAN-1987] Este modelo prope uma abordagem sistemtica e seqencial ao desenvolvimento do software, que comea pela definio de requisitos do sistema e passa pela anlise, projeto, codificao, teste e manuteno. O ciclo de vida clssico o mais antigo e o mais utilizado. Existem, alm do modelo clssico, outros modelos de desenvolvimento de software que surgiram posteriormente. Um deles a prototipagem, indicada quando se conhece basicamente o objetivo geral do sistema, e existem dvidas a respeito de entradas e sadas detalhadas, incerteza na eficincia de determinado algoritmo, adequabilidade de certo sistema operacional, forma da interface homem/mquina, etc. A prototipagem um processo que permite a criao de um modelo do sistema a ser desenvolvido [63]. O modelo resultante pode possuir trs formas bsicas: Um prottipo no papel ou um sistema simples que possua apenas a interface com usurio para testar-se a interao homem/mquina; Um prottipo do sistema que implemente um sub conjunto das funes desejadas do sistema; Um sistema que implemente as funes desejadas de forma se tornar operacional, mas com caractersticas a serem implementadas no novo esforo de desenvolvimento.O ciclo do modelo de prototipagem de software ilustrado na figura 2.

Planejamento

Anlise de Risco

Sistema mais maduro

At o Si Co mpst ema leto

Prximo Nvel Prottipo Avaliao do Usurio Prottipo Inicial Engenharia Figura 2 - Modelo de Prototipagem para desenvolvimento de sistemas. Verificou-se que a construo de software no uma tarefa linear, mas cclica. Cada ciclo dividido em grandes fases e produz uma nova verso do software desejado. Assim surgiu o modelo de desenvolvimento em "espiral", de Boehm [BOEHM-1986], ilustrado na figura 3.

-3-

Inic io Fim

Figura 3 - O modelo espiral de desenvolvimento de software de Boehm [BOEHM-1986]


O modelo espiral foi desenvolvido para unir o melhor do ciclo de vida tradicional (cascata) e a prototipagem de sistemas, tendendo a dar maior flexibilidade e adaptabilidade s particularidades de cada projeto, e uma maior confiabilidade no prottipo resultante de cada fase. Este modelo tambm introduziu um novo passo: a anlise de risco, omissa em outros modelos. O modelo representado pela espiral da figura 3 define quatro maiores atividades: Planejamento: determinao de objetivos, alternativas e restries. Anlise de risco: anlise de alternativas e identificao/avaliao dos riscos. Engenharia: desenvolvimento do prximo nvel do sistema. Avaliao do usurio: avaliao do sistema resultante da fase de engenharia. Assim, a cada volta na espiral, avalia-se a viabilidade (fase de anlise de risco) e, se for o caso, inicia-se uma nova verso mais completa do sistema. O processo tem incio no centro da espiral, assim, quanto maior a distncia radial do centro da espiral, mais completo ser o sistema. O modelo espiral de desenvolvimento freqentemente a abordagem mais realstica para o desenvolvimento de grandes sistemas [PRESSMAN-1992]. A sua abordagem evolutiva em relao Engenharia de Software permite ao desenvolvedor e ao usurio/cliente compreenderem e avaliarem os riscos de cada ciclo evolutivo na espiral. Outro modelo existente o de tcnicas de quarta gerao (4GT), que basicamente faz uso de ferramentas de software que permitem a especificao do sistema em um alto nvel de abstrao (prximo a linguagem natural humana). A ferramenta 4GT ento gera o cdigo fonte do sistema especificado. No entanto as ferramentas existentes so bastante especficas para determinados domnios do problema e ainda possuem limitaes. A rea de maior aplicao desse modelo tem sido em aplicaes de interao com base de dados para usurios finais. Atualmente essa tcnica no aplicvel a grandes sistemas, pois gera sistemas com qualidade e manutenibilidade pobres, equivalentes a abordagens convencionais [PRESSMAN1987]. Existem ainda os modelos combinados, que unem caractersticas de modelos diferentes de forma obter um resultado complementar e a sinergia de modelos diferentes. importante destacar que determinado modelo apresenta sua melhor performance no desenvolvimento de sistemas com determinadas caractersticas para aplicao em um ambiente tambm com caractersticas especficas. Assim, trata-se de uma deciso de desenvolvimento qual o modelo a ser adotado.

-4-

Todos modelos e mtodos da engenharia de software visam a obteno de um sistema a custos cada vez menores e com solues aperfeiodas, ou seja de uma forma produtiva e com qualidade [PRESSMAN-1987]. Os fatores de qualidade de software segundo McCall [McCALL-1977] so: Corretude: O quanto o sistema satisfaz a sua especificao e atende s espectativas do cliente. Confiabilidade: O quanto se pode esperar que o sistema execute sua funo com a preciso exigida. Eficincia: Quantidade de recursos e cdigo requerido pelo programa para realizar sua funo. Integridade: A extenso do quanto controlvel o acesso de pessoas no autorizadas ao sistema e dados. Usabilidade: O esforo necessrio para aprender e operar o sistema. Manutenibilidade: O esforo necessrio para localizar e corrigir erros em um programa. Flexibilidade: O esforo necessrio para se alterar um programa que est operacional. Testabilidade: O esforo necessrio para testar se o sistema desempenha as funes esperadas. Portabilidade: O esforo necessrio para transferir um sistema de um hardware ou software de sistema para outro. Reusabilidade: A extenso de quanto um programa (ou partes de um programa) pode ser reutilizado em outras aplicaes. Interoperabilidade: O esforo necessrio para se acoplar um sistema a outro. A produtividade no desenvolvimento de sistemas est ligada aos seguintes fatores [PRESSMAN-1992]: Fatores Humanos: Tamanho e experincia da equipe de desenvolvimento; Fatores da Complexidade do Problema: A complexidade do problema a ser resolvido e o nmero de alterao e limitaes do projeto; Fatores do Processo: Relacionados com o mtodo de anlise e projeto adotados, linguagem de implementao e utilizao de ferramentas CASE; Fatores dos Produtos: Confiabilidade e performance dos sistemas computacionais (hardware e software) que apoiam o desenvolvimento; Fatores de Recursos: Disponibilidade de ferramentas CASE e recursos de software e hardware. Dentro do contexto de produtividade, deve-se destacar a importncia da qualidade do software, no sentido de se evitar o retrabalho sobre sistemas/mdulos j implementados. A reusabilidade importante pois evita que se empregue esforos em funes/mdulos j desenvolvidos anteriormente. A reusabilidade tem seu aspecto organizacional (onde a forma na qual so armazenados os mdulos/funes j criados e a sua forma de localizao e recuperao so importantes) e seu aspecto tcnico, onde a forma e as caractersticas das funes/mdulos desenvolvidos permitem a reusabilidade ou no. Sob a tica tcnica, deve-se buscar a reusabilidade de cdigo implementado atravs da criao de sistemas modulares. A modularidade um atributo fundamental para tornar um sistema inteligvel e gerencivel [PRESSMAN-1992]. Trata-se da diviso do sistema em diversas partes (chamados mdulos) independentes. Juntos, estes mdulos interfaceiam entre si e desempenham a funcionalidade do sistema. No entanto, para que um mdulo de um sistema possa ser reutilizado em outro sistema, fundamental que o mdulo possua ocultamento de dados e fraco acoplamento e coeso. O princpio do ocultamento de dados que cada mdulo deve ser especificado e projetado de tal forma que suas informaes (procedimentos e dados) so inacessveis a outros mdulos que no precisem destas informaes [PRESSMAN-1992]. Acoplamento a medida da interconexo entre mdulos na estrutura de um sistema [PRESSMAN-1992]. O

-5-

acoplamento depende da complexidade da interface entre mdulos e de como a informao passa de um mdulo para outro. Coeso uma extenso do conceito de ocultamento de dados. Um mdulo coeso desempenha apenas uma nica tarefa, necessitando pequena interao com procedimentos executados em outras partes do sistema [PRESSMAN-1992].

3. ORIENTAO A O BJETOS
Recentemente, o paradigma de orientao a objetos para Engenharia de Software comeou a ser empregado no desenvolvimento de software [PRESSMAN-1992]. Esse novo paradigma objetiva alcanar de uma maneira menos complexa os fundamentos bsicos da engenharia de software de produtividade, qualidade e manutenibilidade de sistemas. A orientao a objetos busca, atravs de novos conceitos, aumentar o nvel de abstrao no desenvolvimento de sistemas, e torn-lo mais prximo da maneira de pensar humana. No entanto, o paradigma de orientao a objetos imaturo se comparado ao paradigma estruturado, mas reconhecidamente apresenta um grande potencial [SOMMERVILLE-1989]. O paradigma estruturado, tambm designado como enfoque tradicional, aceitvel para sistemas de pequeno porte [ARAUJO-1992] [SOMMERVILLE-1989]. Uma das dificuldades encontradas no enfoque tradicional que a maior parte das modificaes de requisitos so alteraes funcionais, o que pode ocasionar profundas alteraes na especificao devido a pequena flexibilidade oferecida por este enfoque. Isso no oco rre utilizando-se a abordagem orientada a objetos, onde alteraes funcionais no alteram a estrutura bsica do sistema. Alm disso, os limites de um sistema desenvolvido segundo a abordagem tradicional tem seus limites claramente definidos, ficando difcil sua extenso. J um sistema desenvolvido segundo o paradigma de orientao a objetos prov fcil extenso [ARAUJO-1992]. As aplicaes passam cada vez mais a integrar dados complexos (texto, imagem e som), e cresce uso de ambientes de interface grfica com usurio baseado em janelas e eventos. Estes fatos tm impulsionado a utilizao do paradigma de orientao a objetos em mtodos e linguagens de desenvolvimento de sistemas. A aplicao dos conceitos de orientao a objetos no desenvolvimento de sistemas est sendo decisiva para sua evoluo, pois tenta suplantar dificuldades encontradas no enfoque tradicional [ARAUJO-1992]. Ainda existem discusses em torno de diferentes opinies sobre quais os requisitos de mtodos de desenvolvimento de software para que este seja orientado a objeto [PRESSMAN-1992].

Bibliografia para ir mais fundo no assunto:


ARAUJO JR., J. B.; FONSECA, D.. "Um estudo para desenvolvimento de sistemas orientado a objetos". Depto de Informtica - UFPE, Recife. 1992. (Seminrio) BOEHM, B.. "A spiral model of the software development and Enhancement". Proc. Int. Workshop on Software Engineering Notes, v.11, n.4, p.22-42, 1986. BOOCH, G.. "Object Oriented Design with Aplications". USA Redwook city, CA. Benjamin/Cummings, 1991. BROCKMAN, S. D.. "Distributed enterprise networking". Object Magazine, USA. Sep/oct 1992. CHEN, Peter. "Gerenciando Banco de Dados: A abordagem entidade relacinamento para projeto lgico" [Managing data bases: the entitity relationship aproach]. Traduo Ceclia Camargo. SoPaulo: McGraw -Hill, 1990. p.79. COAD, Peter; YOURDON, Edward. "Anlise baseada em objetos" [Object-oriented analysis, 2Edition]. Traduo CTI Informtica. Rio de Janeiro: Ed. Campus, 1992. p1-225. COAD, Peter; YOURDON, Edward. "Object-Oriented Design". New Jersey: Yourdon Press Prentice Hall Building, 1991. p1-197.

-6-

JOHNSTON, M.. "Client/server computing". Object Magazine, USA. Sep/oct 1992. KOSANKE, K.; KLEVERS, T.. "CIM -OSA: architecture for enterprise integration, areport on current developments". Computer Integrated Manufacturing Systems, [s.l.]. v.3, n.1, feb 1990. LOOMIS, Mary E. S.. "Objects and SQL: acessing relational databases". Object Magazine, USA. p.68, sep/oct 1991. McCALL, J., RIC HARDS, P., WALTERS, G.. "Factors in Software Quality". Tree Volumes, NTIS AD-A049-014. November,1977. In Pressman PAGE-JONES, M.. "Projeto Estruturado de Sistemas". New York: McGraw Hill, 1988. PRESSMAN, Roger S.. "Software Engineering a practioner's aproach". Third Edition. Singapore: McGraw-Hill, 1992. p.793. PRESSMAN, Roger S.. "Software Engineering a practioner's aproach". First Edition. Singapore: McGraw-Hill, 1987. p.652. PRESSMAN, Roger S.. "Software Engineering for beginers". First Edition. Singapore: McGraw -Hill, 1984. p.180. RUMBAUGH, J. E.. "Object-Oriented Modelling and Design". USA. Prentice Hall, 1991. SCHNEIDEWIND, N.F.. "The state of software maintenance". IEEE Transactions on Software Engineering, USA. v.SE-13, n.3, mar 1987. SOMMERVILLE, I.. "Object oriented design: a teenage technology". Proceedings of the Centre for Software Reliability Conference. UK, Sep 1989.

-7-