Come sviluppare applicazioni complesse

7

Voglio conoscere l'approccio nello sviluppo di applicazioni complesse, indipendentemente dal linguaggio di programmazione da utilizzare. Voglio sapere come gli sviluppatori realizzano applicazioni così grandi come l'internet banking, le API e l'applicazione per la gestione di grandi database. Come dovrebbe un approccio per rendere tali applicazioni. Ho solo 1 anno di esperienza di programmazione e lavoro come libero professionista, quindi quando ho visto tali applicazioni mi sono venute in mente molte domande. Come capire il bisogno di base della tecnologia dell'informazione. In realtà cos'è? Come può essere utile per la gente comune delle piccole città. Voglio che tutti facciano uso della tecnologia, non importa che siano istruiti o meno, ricchi o meno. Si prega di inviare alcuni suggerimenti.

    
posta aakash saraf 25.11.2011 - 06:03
fonte

7 risposte

9

In una parola: modularità.

Costruisci sistemi software di grandi dimensioni componendoli da blocchi più piccoli. Lo fai utilizzando tecniche come l'Orientamento agli oggetti. Ogni oggetto è un'unità software completa e testabile a sé stante. Quando combinati, ciascuno di questi oggetti comunica messaggi tra sé e altri oggetti, creando un sistema completo e coerente.

Essere bravi in questo richiede un po 'di tempo, perché devi capire di cosa è responsabile ciascun oggetto e come si adatta al resto del sistema.

Pensa a come è costruita una macchina. Una macchina è un sistema, composto da sottosistemi più piccoli come il motore, i sistemi elettrici e di carburante. Il motore, a sua volta, è costituito da componenti come pistoni, albero motore e valvole, ed è supportato da un sistema di accensione, un sistema di raffreddamento e un sistema di lubrificazione. Il sistema di accensione ha candele, fili, una bobina, ecc. Mentre l'intero sistema è enormemente complesso, nulla è particolarmente difficile da capire se si guardano i suoi componenti e come lavorano insieme.

Il software funziona allo stesso modo. Hai metodi, variabili e parole chiave all'interno delle classi. Si istanziano oggetti da queste classi. Hai oggetti che sono fabbriche in grado di creare altri oggetti, oggetti che manipolano raccolte di altri oggetti, oggetti che fungono da proxy e così via.

Si impara come costruire questi sistemi più grandi imparando come scrivere programmi più piccoli (o parti più piccole di sistemi più grandi) e poi combinare quelle parti più piccole in sistemi più grandi.

    
risposta data 25.11.2011 - 06:55
fonte
6

Di cosa stai parlando sono i concetti di ingegneria del software. È difficile condensare veramente tutto ciò che è necessario sapere in un singolo commento SO, quando ci sono serie di libri scritti sull'argomento ed è davvero un campo a sé stante. Ecco alcuni libri che puoi esaminare per iniziare e che, insieme alla tua educazione, dovrebbero indirizzarti sulla strada giusta:

risposta data 25.11.2011 - 06:50
fonte
2

Prima di tutto devi Ignorare la codifica finché non comprendi pienamente i Requisiti .

Le fasi di sviluppo del software

  • Analisi dei requisiti : è la prima fase dello sviluppo del progetto e la più importante. È necessario annotare quali sono le esigenze del cliente, degli utenti e del progetto stesso. Prenditi tutto il tempo che vuoi prima di procedere alle fasi successive. Perché se questa fase viene fraintesa, potrebbe essere necessario eseguire il back-end e tra le fasi

  • Design & Architettura : questa è la fase in cui metti le tue esigenze al lavoro. Disegna schizzi di flusso applicativo, annota gli algoritmi per eseguire le funzioni. Crea un bel wireframe o delineando come apparirà l'applicazione. In breve, considera come ogni requisito sarà soddisfatto e previsto. Inoltre, un buon designer o architetto prenderà in considerazione l'espansione futura, quindi dovresti tenerlo a mente

  • Coding : la parte in cui è possibile visualizzare i risultati. Scegli la lingua che ti piace e inizia a programmare. La codifica non è la parte più difficile e non richiede tanto tempo quanto l'analisi o la progettazione, ma questa è la parte in cui voi, i vostri utenti e clienti siete interessati. Scrivi il codice il più pulito possibile applicando diverse pratiche di codifica e assicurati di lasciare meno punti per la fase di test da ripulire

  • Test : ultima ma non meno importante fase. I test richiedono più tempo della codifica perché testate il vostro codice contro tutte le circostanze che vanno dall'input dell'utente alle prestazioni del carico. Un test approfondito porterà sempre a un prodotto migliore

risposta data 25.11.2011 - 07:00
fonte
1

Questa è una domanda molto ampia, senza una risposta pronta. Cercherò comunque di rispondere, ma la mia risposta sarà vaga come la domanda. Tuttavia, presumo che tu stia chiedendo come creare una app di grandi dimensioni da sola o con un collega. I team di grandi dimensioni sono qualcosa di completamente diverso.

  • Pianificazione attenta: elencare tutto ciò che l'app deve fare, tagliare quello non necessario. Quindi assetti guadagno. Continua a tagliare. Inoltre, elenca tutte le attività che devi svolgere e suddividili in sotto-attività
  • Pianifica tutto in diverse sezioni. Lo faccio in questo ordine:
    1. elenco tutti gli "oggetti" principali della mia app. Ad esempio, libri, pagine, autori, utenti, con le loro proprietà, relazioni e azioni
    2. Faccio il design del database
    3. Progetto i ruoli degli utenti, li implemento nel mio foglio "oggetti" e nella mia scheda "database design"
    4. Descrivo tutte le classi principali di cui ho bisogno, in uno pseudo-codice veloce
    5. I wireframe del disegno (schizzi rapidi)
    6. Creo un mockup veloce con il minor numero possibile di codice, il più funzionale possibile
  • Se sei da solo, vorrai mantenere l'intero processo libero e approssimativo. Consentire modifiche, specialmente all'inizio. Non penserai a tutto, quindi lascia spazio a tutte le cose non pianificate che inciamperanno lungo la strada.
  • In tal senso, crea l'app in modo modulare, con componenti il più possibile disaccoppiati. Ciò semplifica la manutenzione, il debug e il test. L'ho imparato nel modo più duro mentre stavo creando un framework monolitico, ho smesso di lavorarci per alcune settimane, poi sono stato completamente perso nel mio codice. Quindi pensa "plugins"
  • Inizia con l'essenziale, prova, lascia che i tuoi amici lo usino, vedi cosa è necessario, analizza, estrai le poche caratteristiche essenziali, implementa. Risciacquare e ripetere.
  • Leggi ottenendo risultati di 32 segnali.
  • Avere una sorta di controllo della versione. Personalmente mi piace il mercurial, ma qualunque cosa vada bene. Ne hai solo uno.
  • Prova diverse lingue, non rimanere bloccato su una lingua. Scegli un linguaggio funzionale e orientato agli oggetti, imparerai da ciascuno di essi.
  • Attenersi a una lingua fino a quando non la si padroneggia completamente (contraddittoria sì, lo so). Quando vuoi creare mockup, inizia con questa lingua, almeno sarai in grado di lavorare velocemente.

Soprattutto, leggi, leggi, leggi e applica, applica, applica, crea le tue cose e spingi avanti per ottenere codice più ottimizzato, standard migliori e qualunque sia la lingua che scegli, prova a spingerlo al massimo. E non ascoltare la cosa "non reinventare la ruota". Reinventa la ruota, non solo quando lavori per un cliente. Se sei su un progetto professionale, usa tutto il possibile per farlo funzionare. Ma sui tuoi progetti personali, costruisci tutto da zero. Quindi cerca la fonte di progetti simili e guarda come l'hanno fatto.

Quindi butta via tutto perché quello che hai fatto è molto probabile che vada a finire le prime 100 volte. Risciacqua e ripeti.

La pratica migliora leggermente, dopo alcuni anni (da 2 a 4), dovresti essere in grado di gestire anche un progetto molto grande da solo. Ma devi essere desideroso di farlo dal primo giorno. Se provi a costruire solo piccole cose per 4 anni, non ci arriverai.

Cerca di avere una vita al di là di tutto questo, perché l'aria fresca, gli amici e l'uscire rendono tutto migliore.

    
risposta data 25.11.2011 - 06:57
fonte
0

Ci sono diversi tipi di complessità, solitamente due tipi, una complessità causata dall'aggiunta di cose che non appartengono strettamente al nostro scopo o alla natura di ciò che stai facendo (come quando aggiungi alcune righe di codice in un secondo momento solo per aggiungere alcune funzionalità che non avevi pianificato di fornire alla tua app) e ciò che viene solitamente definito "la complessità dell'ingegneria" significa che il sistema che devi progettare richiede probabilmente molti elementi e molte connessioni tra quelli solo per correre.

Il fatto è che non puoi affrontare davvero questo tipo di problemi senza una solida base che solo una laurea può darti. Stiamo parlando di un uso intensivo delle nozioni matematiche, di base e di alto livello relative all'hardware e al software.

Quello che puoi capire facilmente è l'uso di qualche buon compagno come il linguaggio UML che è veramente utile e potente soprattutto durante il processo di progettazione, senza parlare di lingue specifiche puoi solo avere una grande immagine di fronte a te. Altre cose positive sono i sistemi di versioning come Mercurial e Git che sono particolarmente usati quando lavori in team con altre persone, puoi anche sfogliare ogni IDE per la tua lingua e decidere qual è il più adatto alle tue esigenze.

Ma questo è solo un consiglio, devi costruire il tuo know-how leggendo alcuni libri e applicando qualcosa nel mondo reale, un buon libro per cominciare può essere uno sugli algoritmi e sulla struttura dei dati.

Un buon linguaggio per iniziare è Java, un buon progetto Java con un buon design può essere Android con le proprie classi di sistema; prova ad imparare Java e ad analizzare il design di questo grande progetto in UML per iniziare a capire come è progettare un progetto molto grande e cosa devi preoccuparti. Il design riguarda il modo in cui linguaggi diversi possono avere la stessa logica di business e ciò che l'utente è autorizzato a conoscere e fare, e con alcune lingue devi anche preoccuparti di alcuni problemi di prestazioni, ma questo è qualcosa che puoi imparare in un college su Internet.

    
risposta data 25.11.2011 - 06:35
fonte
0

Vorrei dare un'occhiata a un progetto simile esistente e vedere se funziona bene. Non è necessario il codice completo, ma il file jar eseguibile di java potrebbe anche essere invertito. Tieni presente che non è consentito invertire il file jar negli Stati Uniti, ma puoi farlo in Europa e in altri paesi, quindi ...

Se l'architettura è a posto, copia l'architettura statica (ad es. pacchetto, classi ecc.) e poi codifica le regole aziendali. Un buon inizio è di decodificare il progetto esistente in un modello UML e quindi generare nuovamente il codice in java. Non c'è più codice di copyright se lo fai.

Una volta che hai un'architettura statica, controlli se i requisiti sono possibili e aggiungi nuove classi a livello di diagramma di classe. Mostrate il diagramma di classe al project manager e parlate dell'architettura. Una volta che questo è stato convalidato, inizierai a codificare. Dopo la prima fase di codding mostrerai i diagrammi delle classi e una piccola demo e chiedi al project manager se è ok. Prendi in considerazione le sue richieste. Utilizza sempre una rappresentazione grafica del tuo codice per coinvolgere tutto il team nelle decisioni e nelle possibili modifiche.

Ancora una volta, diagrammi delle classi aggiornati con un'unione di codice e demo del gestore. Cambia ancora e ancora. Dopo poche settimane sarà quasi perfetto e tutti saranno felici: -)

    
risposta data 25.11.2011 - 11:26
fonte
-1

La tua domanda è una grande domanda che include molti aspetti. Ma penso che il primo dovrebbe essere capire bene e male quale sia la lingua e la situazione migliore di questa lingua. E poi, in base alle esigenze aziendali, decidere quale lingua utilizzare. E dopo dovresti capire questo linguaggio sui dettagli.

    
risposta data 25.11.2011 - 07:13
fonte

Leggi altre domande sui tag