Progettazione software e architettura da zero [duplicato]

7

Conosco molto sulla programmazione sintattica. Quello che non so è su come dovrei andare a costruire un software da zero. Come dovrebbero essere progettati gli oggetti e come dovrebbero interagire tra loro.

Per imparare come sono scritti buoni software, ho provato a leggere il codice di alcuni buoni software open source, ma non ho potuto ottenere un minimo di idea, come sono progettati in quanto non esiste una documentazione disponibile sul codice.

Voglio diventare un programmatore più abile ma non potrei andare oltre, sono esperto di programmazione ma ora sono bloccato perché non ho modo di andare avanti.

Si prega di guidare su come dovrei imparare la progettazione del software e cosa dovrebbe essere il prossimo per migliorare le competenze.

P.S: Sono un programmatore hobbiest, non ho mai lavorato in una software house e non vedo l'ora di farlo.

    
posta S. A. Malik 08.04.2013 - 20:59
fonte

2 risposte

4

Inizia a costruire da zero piccoli progetti "completabili" usando le tue conoscenze esistenti come "progetti" laterali. Quindi perfeziona / refactoring il design identificando e implementando Modelli → / "buoni principi" che hai imparato dalla tua lettura / apprendimento. Una volta che il progetto è stato completato e "refactored razionalmente", fallo ancora ...

Ci sono sicuramente alcuni "punti di partenza" architettonici come la conservazione di vari " strati di codice " separati (Livello di accesso DB, livello di Biz Logic, ecc.). Oltre a cercare di identificare dove "Interfacce" può essere usato in modo da poter "estrarre" le loro "implementazioni" e iniziare a introdurre un qualche tipo di quadro di Dipendenza Iniezione ... Ma ciò può essere fatto durante i passaggi successivi dei tuoi sforzi di "refactoring" ( se quello è un percorso, vuoi anche andare giù.

Direi che non esiste un "proiettile d'argento" o "questo è come lo fai" perché i progetti variano molto. Puoi guardare i pod pod e leggere libri, che aiutano tutti a diventare esperti, ma finché non sarai in grado di implementare ciò che hai imparato, c'è ancora un gap piuttosto ampio e l'unico modo per implementare ciò che hai imparato è fallo e impara dai tuoi stessi errori o trova un buon mentore che possa insegnarti cosa hanno imparato dai loro errori ..

"Il solo fatto che la mappa non ti porti a destinazione"

    
risposta data 08.04.2013 - 23:45
fonte
4

Stai essenzialmente chiedendo come progettare programmi. Si scopre che c'è un libro che ti insegna che, e si chiama ... Come progettare programmi (aka HtDP ). Ti insegna, bene, come progettare programmi. E lo fa dando le ricette da seguire per analizzare i problemi, risolverli, trasformarli in algoritmi e in programmi di lavoro.

Si noti che la "ricetta" è fondamentalmente un'altra parola per "programma", quindi in altre parole, il libro insegna ai programmi che gli umani devono girare nella loro testa per generare programmi che devono essere eseguiti dai computer. Quant'è fico? : -)

Gli autori stanno attualmente lavorando a una bozza per una seconda edizione di HtDP , che potresti voler leggere invece della prima edizione. Il materiale sulla programmazione imperativa è stato rimosso e verrà trattato nel secondo volume non ancora scritto Come progettare i componenti , ma puoi leggere quei capitoli mancanti dalla prima edizione.

Nota che l'HtDP non ha conoscenze di programmazione e si rivolge agli studenti delle scuole superiori. Ma non lasciare che questo ti fermi: significa solo che probabilmente sarai in grado di finire alcuni primi capitoli più velocemente, ma non penso che ti annoierai.

Le Abstractions concrete sono anche una buona lettura lungo le vene simili. Come HtDP, non presuppone alcuna conoscenza di programmazione.

Un altro libro che potresti sentire menzionato è Struttura e interpretazione dei programmi per computer aka SICP. È uno dei più grandi libri di programmazione mai scritti e, ancora una volta, non presuppone alcuna conoscenza di programmazione.

È è , tuttavia, orientato a completare i neofiti che studiano al MIT . E così, mentre non presuppone alcuna conoscenza di programmazione, fa assume un bel po 'di conoscenza dominio , ad es. nei campi dell'ingegneria elettrica, della fisica e della matematica. Nota: questi non hanno nulla a che fare con i concetti che vengono insegnati, sono solo necessari per comprendere gli esercizi e esempi . Quindi, potrebbe essere meglio leggere prima HtDP o Concrete Abstractions e poi leggere SICP.

    
risposta data 09.04.2013 - 01:06
fonte

Leggi altre domande sui tag