next up previous contents
Next: Programação estruturada Up: Desenvolvimento de software Previous: Desenvolvimento de software   Sumário


Projeto

O projeto de software pode ser subdividido em dois grandes passos, projeto preliminar e projeto detalhado. O projeto preliminar preocupa-se em transformar os requisitos especificados na fase de análise em arquiteturas de dados e de software. O projeto detalhado refina estas representações de arquitetura em estruturas de dados detalhadas e em representações algorítmicas do programa.

Uma das estratégias de projeto mais utilizadas é o desenvolvimento top-down. Neste tipo de desenvolvimento, trabalha-se com o conceito de refinamento de descrições do programa em distintos níveis de abstração. O conceito de abstração está relacionado com esconder informação sobre os detalhes. No nível mais alto de abstração, praticamente nenhuma informação é detalhada sobre como uma dada tarefa será implementada -- simplesmente descreve-se qual é a tarefa. Em etapas sucessivas de refinamento, o projetista de software vai elaborando sobre a descrição da etapa anterior, fornecendo cada vez mais detalhes sobre como realizar a tarefa.

O desenvolvimento top-down estabelece o processo de passagem de um problema a uma estrutura de software para sua solução (Fig. 1.1), resultando em uma estrutura que representa a organização dos distintos componentes (ou módulos) do programa. Observe que a solução obtida pode não ser única: dependendo de como o projeto é desenvolvido e das decisões tomadas, distintas estruturas podem resultar.

Figura: Processo de evolução do software.
\includegraphics[width=95mm]{estrsoft.eps}

Outro aspecto tão importante quanto a estrutura de software é a estrutura de dados, que é uma representação do relacionamento lógico entre os elementos de dados individuais. Estruturas de dados são vistas em maiores detalhes no Capítulo 2.

Uma vez estabelecidas as estruturas de software e de dados do programa, o detalhamento do projeto pode prosseguir com o projeto procedimental, onde são definidos os detalhes dos algoritmos que serão utilizados para implementar o programa. Um algoritmo é uma solução passo-a-passo para a resolução do problema especificado que sempre atinge um ponto final. Em princípio, algoritmos poderiam ser descritos usando linguagem natural (português, por exemplo). Entretanto, o uso da linguagem natural para descrever algoritmos geralmente leva a ambigüidades, de modo que se utilizam normalmente linguagens mais restritas para a descrição dos passos de um algoritmo. Embora não haja uma representação única ou universalmente aceita para a representação de algoritmos, dois dos mecanismos de representação mais utilizados são o fluxograma e a descrição em pseudo-linguagens.

Um fluxograma é uma representação gráfica do fluxo de controle de um algoritmo, denotado por setas indicando a seqüência de tarefas (representadas por retângulos) e pontos de tomada de decisão (representados por losangos). A descrição em pseudo-linguagem combina descrições em linguagem natural com as construções de controle de execução usualmente presentes em linguagens de programação. As principais construções associadas a essas linguagens são descritas na seqüência.


next up previous contents
Next: Programação estruturada Up: Desenvolvimento de software Previous: Desenvolvimento de software   Sumário
Ivan L. M. Ricarte 2003-02-14