Por curiosidade, qual é a diferença entre um projeto de tamanho pequeno, médio e grande? É medido por linhas de código ou complexidade ou o quê?
Estou construindo um sistema de troca e, até agora, tenho cerca de 1000 linhas de código para login / registro. Mesmo que haja muito LOC, eu não consideraria um projeto grande porque não é tão complexo, embora este seja o meu primeiro projeto, por isso não tenho certeza. Como é medido?
Respostas:
Complexidade.
Quanto mais complexidade, mais difícil é aprender tudo no projeto.
fonte
Aproximadamente como eu concordaria, lembre-se de que isso é mais ou menos arbitrário. O "tamanho" do projeto em um composto de outros fatores, como complexidade, linhas de código-fonte, número de recursos / valor comercial, etc. Um produto muito pequeno pode oferecer uma grande quantidade de valor, etc. Dito isto:
2m + sloc é um projeto grande a enorme. Estes são geralmente tão complexos que poucas ou nenhuma pessoa é 'fluente' em todo o sistema; em vez disso, a responsabilidade tende a ser modularizada ao longo da estrutura do código. Esses projetos geralmente oferecem um enorme valor comercial e podem ser de missão crítica. Às vezes, também estão sob uma forte carga de dívida técnica e outras preocupações herdadas.
O sloc de 100k a 2m é um projeto de tamanho médio. Esse é o meu meio termo: o projeto é complexo o suficiente para exigir algum conhecimento especializado e provavelmente acumulou algum grau de dívida técnica; é provável que também ofereça algum grau de valor comercial.
10k - 100k é um projeto pequeno, mas não muito pequeno para ter complexidade suficiente para que você queira uma consideração especializada; se você é de código aberto, considere levar as pessoas em quem confia para revisar seus commits.
Qualquer coisa com menos de 10k sloc é pequena, na verdade. Isso não significa que ele não possa fornecer nenhum valor, e muitos projetos muito interessantes têm impressões muito pequenas (por exemplo, Camping, cuja fonte é ~ 2 kb (!)). Geralmente, os não especialistas podem gerar preocupações de valor - corrigir bugs e adicionar recursos - sem precisar saber muito sobre o domínio.
fonte
O tamanho de um projeto é medido pelo grau de insustentabilidade.
fonte
Complexidade que pode ser estimada de algumas maneiras:
Embora os requisitos possam parecer uma boa maneira de medir isso, muitas vezes existem mais requisitos que serão encontrados à medida que um projeto é concluído, assumindo uma metodologia não-Waterfall, acredito.
fonte
Provavelmente, o tamanho de um projeto é melhor medido pelo número de requisitos que o sistema possui, onde os requisitos não podem ser mais reduzidos.
Claro, mais exigências principalmente significa mais complexidade, mas não é sempre o caso.
fonte
Eu media o tamanho de um projeto pela dificuldade de ver todo o projeto como um único quadro geral. Por exemplo, tenho uma base de código exploratória / de prototipagem para um problema de aprendizado de máquina em que estou trabalhando. São apenas 5 mil linhas de código, mas parece um grande projeto. Existem inúmeras opções de configuração que interagem de maneiras imprevisíveis. Você pode encontrar praticamente todos os padrões de design conhecidos pelo homem em algum lugar da base de código para gerenciar toda essa complexidade. O design geralmente é subótimo porque a coisa cresceu muito com a evolução e não é refatorada com a frequência que deveria ser. Eu sou o único que trabalha nessa base de código, mas muitas vezes fico surpreso com a forma como as coisas interagem.
Por outro lado, um dos meus projetos de hobby tem cerca de 3-4x de código, e ainda parece muito menor porque é basicamente uma biblioteca de funções matemáticas que são ortogonais entre si. As coisas não interagem de maneiras complexas, e é bonito entender cada função isoladamente. É fácil ver o quadro geral na medida em que existe um, porque não há muito para ver.
fonte
Resposta arbitrária: Qual o tamanho do projeto, quanto você deseja ter feito com a fonte de eventos e SOA desde o início. Ou que os autores do sistema tenham lido o livro de Evan "DDD: Combatendo a complexidade no coração do software";)
fonte
Compexidade e escopo
Complexidade e escopo Eu acredito que é o que determina o tamanho do projeto. No entanto, existem vários intangíveis que também podem afetar o tamanho de um projeto.
Exigências
A maior queda que enfrentei foi a falta de requisitos. Na minha situação específica, o gerente de vendas determinava os requisitos. Seu foco estava na venda ... tenho que conseguir a venda. Na sua opinião, o que o cliente estava pedindo não parecia tão complicado porque criamos algo semelhante. Requisitos vagas levam a empregos com preços baixos e expectativas excessivas.
Falta de um CCMU
O CCMU é o que chamo de " Coo Ca Moo " (entendimento mútuo claro e claro). Você precisa ter um CCMU com seu cliente.
Se você tiver um projeto pequeno com um CCMU ruim, poderá concluir o projeto 2,3,4 ou mais vezes. Assim, um simples trabalho de 20 horas se transforma em um projeto de 60 horas com uma equipe estressada e um cliente muito insatisfeito.
Escopo de fluência
Isso acontece com mais frequência do que você pensa. O cliente decide que, como você já está fazendo A, B e C, não deve ser tão difícil adicionar D ou até F. Se esse comportamento não for verificado, ele também poderá transformar um projeto pequeno em um projeto de tamanho médio. E, dependendo de como o gerente de vendas vendeu o trabalho, essas expectativas podem parecer "GRATUITAS" para o cliente.
fonte
É estranho, lendo muitas dessas respostas, acho que vejo o tamanho de um projeto de maneira muito diferente. Talvez seja o meu trabalho em uma grande corporação, mas tenho a tendência de ver o tamanho de um projeto como mais uma escala de sua visibilidade / conveniência para seus clientes (dependendo da sua área de trabalho, podem ser colegas de trabalho ou clientes reais).
fonte
Complexidade é a resposta certa, mas como estimar?
Fatores são:
Quanto mais você tem desses, mais complexo é o projeto.
fonte
O LOC é notoriamente impreciso para muitas medições, mas acho que você está tentando medir algo que realmente não existe uma maneira precisa de medir. Talvez uma alternativa possa ser a complexidade ciclomática .
Em última análise, porém, acho difícil "quantificar" um projeto. É quase como perguntar como você determina se um cachorro é grande ou não. Não só existem várias maneiras de medir (massa, volume, etc.), mas eu pessoalmente não acho muito útil. A realidade é que meus critérios provavelmente serão algo como "Qual a probabilidade de fugir desse cachorro se o vir em um beco escuro?"
E, para que conste, geralmente não considero muito 1k linhas de código. Seria uma fatia considerável de código, mas não seria que muito no grande esquema das coisas. Claro, suponho que depende da linguagem. Por exemplo, 1k linhas de código é muito menos código em uma linguagem como C do que em uma linguagem como Pyhon.
fonte