We all know that the process of creating a design and the whole architecture of the software is very important before writing the code.
Questa è una falsa dicotomia.
Il codice è solo una progettazione dettagliata. Niente di più.
L'auspicata distinzione tra "design design" e "codice design" è la presenza di codice eseguibile.
Tuttavia, questa distinzione diventa torbida quando disponiamo di generatori UML-to-code. Se creiamo UML dettagliato, diventa il codice.
Se disponiamo di un linguaggio di progettazione formale di alto livello - una sorta di DSL che traduce in codice design o architettura di alto livello - allora DSL diventa il vero codice.
Ad esempio. Il C ++ veniva tradotto in C, che era tradotto in una forma intermedia neutrale rispetto all'architettura dalla quale alla fine fu generato "codice". Ciò significa che il C ++ potrebbe essere definito un linguaggio di progettazione di alto livello. Di certo non è molto vicino al codice.
Se usiamo un generatore GUI di alto livello e IDE per trascinare e rilasciare icone che creano codice, che cos'è? È design? Ma crea codice, vero?
Penso che la distinzione tra "design" e "codice" non sia di grande aiuto.
Che porta alla risposta alla tua domanda.
should we start from the general architecture and go down til the names of the classes or should be just designate common parts and start coding?
Dipende da ciò di cui il tuo pubblico ha bisogno. Scrivi design a un livello in modo che possano portare il design al livello successivo di dettaglio.
Hanno bisogno di lezioni?
O hanno solo bisogno di schemi di progettazione in cui riempire le classi?
O hanno bisogno dei nomi dei metodi?
Dipende dal tuo pubblico.