Design de Software: Metodologias e Práticas
Design de Software: Metodologias e Práticas
DESENHO DE SOFTWARE
DESIGN DE SOFTWARE:
As atividades realizadas durante a fase de design (chamada de processo de design) transformam o SRS
documento no documento de design.
surge devido a chamadas de função entre os dois módulos. As relações de controle existentes entre
vários módulos devem ser identificados no documento de design.
Engenharia de Software Page 1 Preparado por [Link], Prof. Assoc. GASC, Ngl.
Interfaces entre diferentes módulos: As interfaces entre dois módulos identificam o exato
itens de dados que são trocados entre os dois módulos quando um módulo invoca uma função do
o outro módulo.
Estruturas de dados dos módulos individuais: Cada módulo normalmente armazena alguns dados que o
as funções do módulo precisam compartilhar para cumprir a responsabilidade geral do módulo.
Estruturas de dados adequadas para armazenar e gerenciar os dados de um módulo precisam ser corretamente
projetado e documentado.
Algoritmos necessários para implementar os módulos individuais: Cada função em um módulo geralmente
realiza algumas atividades de processamento. Os algoritmos necessários para realizar o processamento
as atividades de vários módulos precisam ser cuidadosamente projetadas e documentadas devida
considerações dadas à precisão dos resultados, complexidades de espaço e tempo. Começando com o
O documento SRS (conforme mostrado na Figura 5.1), os documentos de design são produzidos por meio de iterações.
em uma série de etapas. Os documentos de design são revisados pelos membros da equipe de desenvolvimento
equipe para garantir que a solução de design esteja em conformidade com a especificação dos requisitos.
iterando sobre uma série de etapas chamadas de atividades de design. Dependendo da ordem em
quais várias atividades de design são realizadas, podemos classificá-las amplamente em duas
estágios importantes.
para outro. No entanto, para a abordagem de design tradicional orientada a funções, é possível definir
os objetivos do design de alto nível são os seguintes:
Através do design de alto nível, um problema é decomposto em um conjunto de módulos. O controle
as relações entre os módulos são identificadas, e também as interfaces entre vários
módulos são identificados.
O resultado do design de alto nível é chamado de estrutura do programa ou do software
arquitetura. O design em alto nível é uma etapa crucial no design geral de um software.
engenharia de software Page 2 Preparado por [Link], Prof. Assistente, GASC, Ngl.
Quando o projeto de alto nível estiver completo, o problema deve ter sido decomposto em
muitos pequenos módulos funcionalmente independentes que são coesos, têm baixo acoplamento entre si
Muitos tipos diferentes de notações foram usados para representar um design de alto nível. Uma notação
que está sendo amplamente utilizado para desenvolvimento procedural é um diagrama em forma de árvore chamado de
gráfico de estrutura. Outra técnica de representação de design popular chamada UML que está sendo
usado para documentar design orientado a objetos, envolve o desenvolvimento de vários tipos de diagramas para
osalgoritmos.
O resultado da fase de design detalhado é geralmente documentado na forma de um módulo
documento de especificação (MSPEC).
Depois que o design de alto nível estiver completo, o problema terá sido decomposto em partes pequenas
módulos, e as estruturas de dados e algoritmos a serem usados descritos usando MSPEC e podem
ser facilmente compreendido por programadores para iniciar a codificação.
Por exemplo, ―o tamanho da memória utilizado por um programa ‖ pode ser uma questão importante para
Caracterize uma boa solução para o desenvolvimento de software embarcado - uma vez que embarcado
as aplicações muitas vezes são obrigadas a trabalhar com tamanhos de memória severamente limitados devido ao custo,
A maioria dos pesquisadores e engenheiros de software concorda sobre algumas características desejáveis que todo
Engenharia de Software Page 3 Preparado por [Link], Prof. Assistente, GASC, Ngl.
Essas características estão listadas abaixo:
Corretude: Um bom design deve, antes de tudo, ser correto. Ou seja, ele deve implementar corretamente
todas as funcionalidades do sistema.
Compreensibilidade: Um bom design deve ser facilmente compreensível. A menos que uma solução de design seja
Modularidade
Um design modular é uma decomposição eficaz de um problema. É uma característica básica de
qualquer boa solução de design.
Um design modular, em palavras simples, implica que o problema foi decomposto em um conjunto.
de módulos que têm apenas interações limitadas entre si.
Engenharia de Software Page 4 Preparado por [Link], Prof. Assistente. GASC, Ngl.
A decomposição de um problema em módulos facilita a exploração da divisão e
princípio da conquista.
Se diferentes módulos não tiverem interações ou tiverem poucas interações entre si, então
cada módulo pode ser entendido separadamente.
Isso reduz muito a complexidade percebida da solução de design.
Para entender por que isso é assim, lembre-se de que pode ser muito difícil quebrar um monte de
gravetos que foram amarrados juntos, mas muito fáceis de quebrar os gravetos individualmente.
Uma solução de design é considerada altamente modular, se os diferentes módulos na solução tiverem
alta coesão e seus acoplamentos entre módulos são baixos.
Um design de software com alta coesão e baixo acoplamento entre módulos é o efetivo
decomposição de problemas reduzindo a complexidade percebida do problema.
Com base nessa classificação, seríamos capazes de julgar facilmente a coesão e o acoplamento.
existente em uma solução de design.
Engenharia de Software Page 5 Preparado por [Link], Prof. Assistente, GASC, Ngl.
Um design em camadas pode ser considerado como a implementação de abstração de controle, uma vez que um módulo em
uma camada inferior não está ciente de (sobre como chamar) os módulos da camada superior.
5. ANÁLISE ESTRUTURADA
A técnica de análise estruturada é baseada nos seguintes princípios subjacentes:
Abordagem de decomposição de cima para baixo.
Aplicação do princípio de dividir e conquistar. Através disso, cada função de alto nível é
decomposto de forma independente em funções detalhadas.
Representação gráfica dos resultados da análise usando diagramas de fluxo de dados (DFDs).
Engenharia de Software Page 6 Preparado por [Link], Prof. Assistente, GASC, Ngl.
Um DFD é um modelo gráfico hierárquico de um sistema que mostra os diferentes processos.
atividades ou funções que o sistema realiza e a troca de dados entre essas funções.
Símbolos primitivos usados para construir DFDs
Existem essencialmente cinco tipos diferentes de símbolos usados para construir DFDs. Esses primitivos
os símbolos estão retratados na Figura 6.2. O significado desses símbolos é explicado da seguinte forma:
arquivo. Ou seja, um símbolo de armazenamento de dados pode representar tanto uma estrutura de dados quanto um arquivo físico no disco
Símbolo de saída: O símbolo de saída é como mostrado na Figura 6.2. O símbolo de saída é usado quando
uma cópia impressa é produzida.
Um dicionário de dados lista a finalidade de todos os itens de dados e a definição de todos os dados compostos.
Engenharia de Software Page 7 Preparado por [Link], Prof. Assistente, GASC, Ngl.
Engenharia de Software Page 8 Preparado por [Link], Prof. Assistente, GASC, Ngl.
Dicionário de dados para o modelo DFD do TAS
response: [bill + material-issue-slip, reject-msg,apology-msg]
período /* consulta do gerente sobre as estatísticas de vendas */
[data+data,mês,ano,dia]
ano + mês + dia
mês
id-do-cliente + {itens + quantidade}* + número-do-pedido
a) Diagrama de Contexto
O diagrama de contexto é a representação de fluxo de dados mais abstrata (nível mais alto) de um sistema. Ele
representa todo o sistema como uma única bolha. A bolha no diagrama de contexto é anotada
com o nome do sistema de software que está sendo desenvolvido (geralmente um substantivo).
O diagrama de contexto estabelece o contexto em que o sistema opera; ou seja, quem são os
usuários, quais dados eles inserem no sistema e quais dados eles recebem do sistema.
7. DESENHO ESTRUTURADO
O objetivo do design estruturado é transformar os resultados da análise estruturada (ou seja,
o modelo DFD) em um diagrama de estrutura.
Engenharia de Software Page 10 Preparado por [Link], Prof. Assistente. GASC, Ngl.
Um gráfico de estrutura representa a arquitetura de software. Os vários módulos que compõem outros
módulos), e os parâmetros que são passados entre os diferentes módulos.
A representação do gráfico de estrutura pode ser facilmente implementada usando algum programa
idioma. Como o foco principal em uma representação de gráfico de estrutura é na estrutura do módulo
de um software e a interação entre os diferentes módulos, os aspectos procedimentais.
Os blocos de construção básicos com os quais os gráficos de estrutura são projetados são os seguintes:
Caixas retangulares: Uma caixa retangular representa um módulo. Normalmente, cada caixa retangular é
anotado com o nome do módulo que representa.
Setas de invocação de módulo: Uma seta conectando dois módulos implica que durante o programa
o controle de execução é passado de um módulo para o outro na direção da conexão
seta. No entanto, apenas ao olhar para o diagrama de estrutura, não podemos dizer se um módulo chama
outro módulo apenas uma vez ou muitas vezes. Além disso, apenas olhando para o gráfico de estrutura, não podemos
representar o fato de que os dados nomeados passam de um módulo para o outro na direção do
seta.
Módulos de biblioteca: Um módulo de biblioteca é geralmente representado por um retângulo com bordas duplas.
As bibliotecas compreendem os módulos frequentemente chamados. Normalmente, quando um módulo é invocado por muitos
Engenharia de Software Page 11 Preparado por [Link], Prof. Assistente. GASC, Ngl.
Repetição: Um laço em torno das setas de fluxo de controle denota que os módulos respectivos são
invocado repetidamente.
Fluxograma versus diagrama de estrutura
entre diferentes módulos não está representado em um diagrama de fluxo. A ordenação sequencial das tarefas que é
8. DESIGN DETALHADO
Durante o design detalhado, a descrição em pseudocódigo do processamento e os diferentes
estruturas de dados são projetadas para os diferentes módulos do gráfico de estrutura.
Estes são geralmente descritos na forma de especificações de módulo (MSPEC).
MSPEC é geralmente escrito usando inglês estruturado.
O MSPEC para os módulos não folha descreve as diferentes condições sob as quais o
as responsabilidades são delegadas aos módulos de nível inferior.
O MSPEC para os módulos de nível de folha deve descrever em forma algorítmica como o
passos de processamento primitivos são realizados.
Engenharia de Software Page 12 Preparado por [Link], Prof. Assistente, GASC, Ngl.