O que é decomposição funcional?
5 answers
Vai até ao Multibanco.
Inserir o seu cartão bancário
Introduza o seu pin
Código de leitura da carta
Verificação do PIN
Processamento De Transferências
Cada um dos quais pode ser dividido mais. Uma vez que você chegou às peças mais decompostas de um subsistema, você pode pensar em como começar a codificar essas peças. Então você compõe essas pequenas partes no todo maior. Confira este artigo do Wikipedia:
O benefício da funcionalidade decomposição é que uma vez que você começa a codificar, você está trabalhando nos componentes mais simples que você pode possivelmente trabalhar com para a sua aplicação. Portanto, desenvolver e testar esses componentes torna-se muito mais fácil (para não mencionar que você é mais capaz de arquitectar o seu código e projeto para atender às suas necessidades).
O lado negativo óbvio é o investimento no tempo. Para executar a decomposição funcional em um sistema complexo leva mais do que uma quantidade trivial de tempo antes que a codificação comece. Pessoalmente, Eu... acho que essa quantidade de tempo vale bem a pena.Prós
- permite uma abordagem proactiva da programação (resiting the urge to code)
- ajuda a identificar as áreas complexas e / ou de risco de um projecto (no exemplo ATM, a segurança é provavelmente o componente mais complexo)
- ajuda a identificar todos os componentes de um projecto-a Causa # 1 de falha de projeto / código (via Capers Jones) está faltando peças-coisas que não foram pensadas até o final do projeto (gee, eu não percebi que eu tinha que verificar o saldo da pessoa antes de distribuir o$)
- permite a dissociação de componentes para uma melhor programação, partilha de códigos e distribuição do trabalho
Cons-não há CONS reais em fazer uma decomposição, no entanto há alguns erros comuns {[[2]}
- não se está a decompor o suficiente ou a decompor - se até ao extremo de cada um. a pessoa precisa determinar o nível feliz de detalhe necessário para fornecer-lhes o insight para o componente sem exagerá-lo (não quebre em linhas de programação de código...)
- não utilizar modelos/módulos de código pré-existentes em consideração (retrabalho)
- não rever com os clientes para garantir que o âmbito está correcto Não usar o colapso quando se codifica (como desenhar uma casa do que esquecer o plano e começar a pregar algumas tábuas juntos)
#include
e #define
e de todas as macros. Você dá - lhe um nome de arquivo e algumas opções e ele retorna uma cadeia realmente longa. Vamos chamar a esta função preprocess(filename)
.
Depois há o analisador lexical. Pega numa corda e parte-a em fichas. Chama-o. O analisador toma fichas e transforma - as numa árvore, chama-lhe parse(tokens)
. Depois há uma função para converter uma árvore a um monte de blocos., chama-o. Chama o emissor de código emit(dag)
, que pega num saco de blocos e cospe o montador.
O compilador é então:
emit(dag(parse(lex(preprocess(filename)))));
Decompusemos uma função Grande, difícil de entender (a função compile
) em um grupo de funções menores, mais fáceis de entender. Você não tem que fazer isso como um pipeline, você poderia escrever o seu programa como: [[12]}
process_data(parse_input(), parse_config())
Isto é mais típico; compiladores são programas bastante profundos, a maioria dos programas são amplos por comparação.
A decomposição funcional é útil antes de criar documentos de requisitos funcionais. Se você precisa de software para algo, a decomposição funcional responde à pergunta "Quais são as funções que este software deve fornecer". A decomposição é necessária para definir funções de grão fino. "I need software for energy efficiency measurement" é demasiado geral. É por isso que dividimos isto em partes menores até ao ponto em que compreendemos claramente todas as funções que os sistemas precisam fornecer. Presente pode ser usado mais tarde como uma lista de verificação para a completude de um sistema.
Um documento de requisitos funcionais (FD) é basicamente uma representação textual da decomposição funcional. Codificar diretamente a partir do FD pode ser ok para linguagens processuais, mas não é bom o suficiente para soluções orientadas a objetos, porque ele não identifica objetos. Nem é bom para o planejamento e teste de usabilidade.
A minha opinião é que você deve tomar algum tempo para criar um FD, mas não usá-lo muito do tempo. Consulte cada pessoa que conhece o processo que você está seguindo com o seu sistema para encontrar todas as funções necessárias.
Tenho muita experiência em design de software, desenvolvimento e venda, e uso a decomposição funcional como o primeiro passo de desenvolvimento. Uso-o como base para o contrato, para que o cliente saiba o que vai receber e sei o que devo fornecer.