Na aula, aprendemos sobre vários métodos de desenvolvimento de software. O que focamos e usamos para desenvolver nosso projeto foi o método em cascata.
Você provavelmente aprendeu o modelo clássico da Cachoeira, que a pessoa atribuída ao apresentá-lo ao mundo do desenvolvimento de software declarou desde o início que era inadequado para o desenvolvimento de sistemas de software em larga escala. Você provavelmente estaria interessado em ler o artigo de Winston Royce intitulado Gerenciando o desenvolvimento de grandes sistemas de software para aprender mais sobre os problemas com o que muitas pessoas consideram o modelo Waterfall.
No entanto, o modelo Waterfall é bom para ensinar o ciclo de vida de desenvolvimento de software à medida que você avança e pode gastar tempo aprendendo e executando engenharia de requisitos, design arquitetônico, design detalhado, implementação, teste e manutenção em fases muito claras e distintas.
Em nossos diagramas de classe, tivemos que listar TODAS as propriedades e métodos, incluindo os privados. Eu li alguns livros, ou seja, Código Limpo, que dizem manter as funções o mais curtas e focadas possível. Parece tedioso listar todas as pequenas funções em nossos diagramas se elas não ajudarem outros desenvolvedores (são particulares, ninguém mais as usará). Além disso, talvez eu não pense em todas as pequenas funções ao projetar o programa, elas podem surgir quando refatoradas.
Todos esses são pontos muito válidos.
Listar todas as propriedades e métodos durante a fase de design, mesmo ao usar o Waterfall, provavelmente é um exagero. Você definitivamente deve listar tudo o que é público, juntamente com as propriedades essenciais. Na realidade, tudo o resto é um detalhe de implementação que você pode obter através da engenharia reversa de sua implementação em diagramas.
O conselho do Clean Code (nunca o li - só estou seguindo o que você postou) parece ser justo e aplicável mesmo ao usar a metodologia Waterfall. Você pode projetar suas classes e métodos com respeito ao Princípio de responsabilidade única , separação de preocupações e outros princípios do SOLID . O Waterfall não diz como projetar, exatamente quando você precisa fazê-lo. Dito isto, é mais difícil desde o início, à medida que você aprende e pensa em maneiras melhores de fazê-lo durante a implementação.
Eu acho que isso indica o fato de que precisa haver uma iteração entre design e implementação muito claramente - um problema que o Waterfall tradicional não explica.