Da ideia à implementação. Parte Três - Criar TK (Termos de Referência)

Danilevsky Kirill

Peço desculpas aos leitores pelo longo intervalo. Agora, estou trabalhando em um projeto grande, não há tempo suficiente para nada. Então, estou escrevendo uma continuação da série de artigos "Da idéia à implementação". Aqui está o artigo anterior: “Da ideia à implementação. Parte Dois - O Nascimento de uma Idéia ”

Hoje, quero falar um pouco sobre como encurtar meu caminho, de uma ideia simples a um investimento. Existem dois pontos importantes aqui. Para si mesmo, você precisa decidir quem atuará como investidor. Se você é capaz de se financiar, isso é muito bom. Mas se você tiver problemas com finanças, não poderá ficar sem atração externa por dinheiro.

Mas, para interessar um investidor, é necessário fornecer a ele documentos suficientemente detalhados. Uma vez que conversar com uma explicação, a grosso modo, nos dedos, não dá ao investidor a oportunidade de ver o quadro todo. Consequentemente, também não se pode falar em dinheiro.

E nossa principal tarefa é preparar esses documentos que o ajudarão a obter financiamento e serão capazes de esclarecer a situação com o futuro do seu projeto.


A primeira coisa que precisa ser feita é articular claramente uma ideia de negócio. Este não deve ser apenas um pensamento interessante, mas um tipo de solução completa e fechada que ajudará a alcançar seu objetivo. Para não se envolver em palavrões, tomaremos como base um determinado exemplo, com base no qual construiremos nossa documentação.

Por exemplo, existe um laboratório particular em que vários funcionários trabalham. Esses funcionários são especialistas no campo da física, possuem equipamentos próprios, o que lhes permite realizar algumas experiências complexas e produzir resultados. Todos os dados de origem são inseridos no banco de dados e os resultados também são armazenados na forma de algum tipo de dado estatístico. Ao conduzir o número n de experimentos, um certo modelo comportamental é formado, graças ao qual é possível prever o resultado com uma probabilidade bastante alta, mesmo sem experiência em laboratório.

E, em algum momento, entende-se que a demanda por experimentos não é tão grande, o laboratório é limitado em sua capacidade, é bastante difícil receber pedidos de diferentes países, cada vez que é necessário conduzir um grande número de negociações, concluir contratos, etc. A principal idéia do problema é que você não pode pular acima da cabeça. E aqueles "saltos" que são, bastante complexos, não móveis e caros.

E aqui especialistas têm uma ideia interessante. Mas e se toda a nossa experiência e enormes quantidades de dados forem aplicadas em um programa que será algum tipo de inteligência artificial. Com este programa, será possível, com um alto grau de probabilidade, obter o resultado correto ao inserir seus parâmetros. Assim, o programa calculará o resultado correto sem envolver o laboratório, mas apenas com base nos dados de experimentos já realizados anteriormente. Isso economizará muito dinheiro e ajudará você a obter rapidamente novos clientes de todo o mundo.

A ideia é interessante, já mais ou menos formada. A busca começa por um investidor que está pronto para investir nessa idéia. Mas a primeira pergunta é quanto dinheiro deve ser investido nesse projeto? E não há resposta para essa pergunta. E o segundo ponto é que, se o investidor não entender a física, ele não entenderá o que eles tentarão explicar a ele. E para investir dinheiro em algo que o investidor não consegue entender, ele certamente não o fará.

E então vem a compreensão de como e como você pode avaliar a quantidade necessária de financiamento? Afinal, excelentes especialistas em física não entendem nada em TI e finanças, excelentes programadores não entendem nada em física e finanças, e excelentes financiadores não entendem nada em física e TI. Acontece um círculo vicioso que, para muitos, muitas vezes permanece um círculo vicioso.

Para sair dessa situação difícil, você precisa de uma pessoa que seja intermediária entre negócios e TI, que seja versada em finanças, no processo de desenvolvimento de software e possa entender rapidamente a essência dos negócios do cliente. Como regra, os analistas de sistema fazem isso.

Agora vamos mudar para o trabalho de um analista de sistemas. Há uma tarefa - entender o princípio da operação comercial, criar documentação que possa estimar o tempo necessário para o desenvolvimento de software. A estimativa de tempo, como regra, pode ser grosseira ou mais ou menos detalhada. No primeiro caso, uma tarefa técnica detalhada não será criada, mas apenas um modelo de arquitetura será criado. No segundo caso, um ToR detalhado será desenvolvido, que já estará pronto para iniciar o processo de desenvolvimento.

Naturalmente, sabendo a quantidade de tempo que leva para desenvolver, conhecendo a plataforma na qual o desenvolvimento será realizado, já é possível calcular mais ou menos a quantidade de investimento para o projeto. E quando há um valor calculado e justificado, já existe algo a ser discutido com o investidor.

O próximo passo nos cálculos é uma tentativa de avaliar o lucro possível quando o projeto é monetizado. Como regra, muitos não. Mas para o investidor esse momento também é muito importante. Desde que, para ele decidir investir dinheiro, ele precisa saber o que pode ganhar com isso.

CRIANDO TK PARA O PROJETO

Não vou me debruçar sobre essa questão em detalhes, mas analisarei os principais pontos que ajudarão a entender o que é o quê.

1. A idéia do projeto é descrita em grande detalhe. Esta ideia é discutida. Por que deveria funcionar? Quais concorrentes já estão no mercado. Qual é a sua quota de mercado? Se o mercado em questão está saturado ou está passando fome por essa decisão.

2. Como está planejada a monetização do projeto. Este item também pode ser associado à escolha da plataforma. Esta será uma aplicação online ou uma versão para computador. Análise de qual versão é melhor, mais flexível e escalável. Como o pagamento pelo aplicativo ocorrerá. Por exemplo, um programa pago com uma chave individual. Acesso on-line ao programa (site) por um determinado período (acesso limitado) etc. Este é um ponto importante e você precisa pensar imediatamente. Como o erro está nessa questão, ele pode acabar com todo o projeto no futuro.

3. Depois de descobrir no segundo parágrafo qual será a plataforma, você já pode construir a arquitetura. A arquitetura precisa ser pensada com muito, muito cuidado. Se você cometer um erro grave, poderá chegar mais tarde à conclusão de que será impossível construir ainda mais a funcionalidade. Então, todo o tempo e dinheiro foram desperdiçados. A arquitetura deve ser o mais modular possível com componentes fracamente acoplados. Isso ajudará a adicionar facilmente novas funcionalidades e alterar a antiga.

4. Precisamos pensar em como os dados serão armazenados no banco de dados. Pensar nas tabelas de dados e sua comunicação. Se o projeto for grande, você deve pensar imediatamente não em um banco de dados, mas em um número maior deles, onde e como colocá-los (em servidores diferentes). E como eles serão conectados em um único projeto. Muitas vezes me deparo com uma imagem que as bases são infladas em terabytes, e fazer qualquer coisa com elas é simplesmente irrealista.

5. Se for assumido que haverá muitos projetos diferentes baseados em uma plataforma, será necessário pensar em como eles funcionam melhor. Não coloque toda a funcionalidade em um site gigante. É melhor distribuir tudo em diferentes servidores. Mas então você terá que criar um servidor intermediário, onde a autorização ocorrerá etc.

6. Você precisa fornecer imediatamente o que talvez não seja necessário agora. Desde quando você precisar, você gastará finanças dez vezes mais! Não quero dizer criar imediatamente um funcional, mas grosso modo, construir uma base para um possível funcional. Como regra geral, esse fundamento é seu próprio IPA, graças ao qual você pode fazer coisas diferentes. Por exemplo, para conectar equipamentos de laboratório que registrarão os resultados das experiências imediatamente no banco de dados do projeto. Ou, por exemplo, será possível vender o acesso aos seus dados para diferentes parceiros.

7. Depois que toneladas de documentos sobre física foram estudados, a essência do projeto é entendida e, com base nisso, é criado um modelo de banco de dados, é hora de pensar em como esses dados serão gravados no banco de dados e como serão obtidos a partir do banco de dados. Portanto, você precisa pensar nas interfaces pelas quais os dados serão inseridos. Agora, trata-se de estatísticas, com base nas quais o resultado do cálculo será correlacionado.

8. É necessário considerar um sistema modular independente para as fórmulas que produzirão o cálculo. As fórmulas não devem estar relacionadas umas com as outras e completamente independentes. E já no próprio projeto, quando e onde for necessário, volte para a fórmula, fornecendo os dados e obtendo o resultado. Isso permitirá que, em caso de alterações, faça alterações apenas em um módulo pequeno e separado. Além disso, nada mais sofrerá e não afetará o trabalho do próprio projeto.

9. Para projetos tão complexos, um sistema de autodiagnóstico é simplesmente necessário. Deve ser dividido em duas partes. O primeiro é o diagnóstico do banco de dados, sobre a correção dos dados. Afinal, estamos falando de cálculos matemáticos complexos. Portanto, mesmo um pequeno erro (por exemplo, um determinado coeficiente no banco de dados não é 0,5, mas 0,6) pode levar a consequências fatais. Para fazer isso, você precisa ter alguns dados de referência que serão verificados com os reais no banco de dados. E se os dados reais ultrapassaram o limite permitido, o administrador deve saber disso e decidir por si mesmo o que fazer com eles. O mesmo vale para as fórmulas, juntamente com os parâmetros de entrada. Os parâmetros devem estar apenas dentro da margem de erro.

10. A interface do usuário. Esta questão também é muito importante. O sistema deve ser intuitivo, fácil de usar e óbvio.

11. Sistema de proteção de dados e resistência geral a roubos. Você não deve esquecer esse momento também. Se algum hacker pode travar seu servidor ou roubar seus dados, não há motivos para discutir.

12. Sistema automatizado de pagamento e acesso ao sistema. Esse processo deve ser totalmente automatizado. Relatórios claros e detalhados devem ser elaborados. Precisamos de um sistema para analisar dados sobre pagamentos (algo como um relatório financeiro). Notificações automáticas para usuários e administradores.

13. Um sistema de análise detalhada do usuário. Seus cálculos e ações no sistema. Isso o ajudará a encontrar gargalos no projeto e a melhorar a qualidade do seu aplicativo.

14. Licenciamento. Proteção de direitos autorais. Bem, aqui sem comentar. Se você deseja obter um cliente corporativo sério, certifique-se de que sua solução de software tenha uma licença internacional em que possa confiar.

Claro, estes não são todos os pontos. Mas para entender o processo, isso é suficiente. Cada um desses itens é dividido em tarefas menores. Os que, por sua vez, também são fragmentados. O resultado é uma enorme árvore de processo (folhas em uma árvore). E cada pequeno processo (tarefa) já pode ser calculado com precisão de acordo com os custos de tempo.

Além disso, a essa altura, você precisará adicionar os custos de capacidade de produção, publicidade e promoção e muitos outros fatores diferentes que não podem ser calculados imediatamente, mas que devem surgir.

No final, neste trabalho árduo e minucioso, será exibido um pacote decente de documentação, a partir do qual é possível avaliar o nível de complexidade do projeto, sua ambiciosidade, escala e custo final de implementação. E às vezes acontece que alguém que teve uma ideia interessante pensa que serão necessários alguns milhares de dólares para realizá-la, mas, na verdade, pode custar centenas de milhares ou até milhões de dólares.

Naturalmente, o que eu disse acima diz respeito a uma abordagem puramente profissional. Se você fizer isso em poucas palavras, como "e assim será", obteremos uma imagem aproximada do motivo pelo qual uma grande metade da Internet é uma lixeira, e não uma obra-prima tecnológica.

Obrigado a todos e até breve.

Source: https://habr.com/ru/post/pt393645/


All Articles