Fregarsene dell'ingegneria del software e andare allo sbaraglio

di il
11 risposte

Fregarsene dell'ingegneria del software e andare allo sbaraglio

Buonasera a tutti.
A scuola mi è stato chiesto di realizzare un sito web per un'associazione scolastica. Da quanto detto inizialmente dalla professoressa, avrei dovuto progettare ed implementare un semplice sito statico: purtroppo, una volta parlato con il vicepreside, mi è stato detto che avrei dovuto realizzare un sito diviso in due parti di cui una contenente le notizie recenti insieme alle solite voci "Contatti", "Info", "Chi Siamo" etc, un'altra, invece, deve permettere di accedere ad un database ed effettuare ricerche ed operazioni statistiche sullo stesso. Il tutto, idealmente, andrebbe completato entro i tre mesi seguenti.
Chiaramente tutto questo non è possibile per i seguenti motivi:
  • Non ho le basi dell'ingegneria del software
  • Non conosco alcun database
  • Non conosco alcun linguaggio lato server
  • Non conosco TCP/IP sufficientemente bene
  • Algoritmi zero
  • Il massimo che ho realizzato è stato un simulatore Chip8 in C(interpretato, nemmeno compilato staticamente o dinamicamente)
Sono pienamente consapevole che, alla luce di tutto ciò, il controllo sulla fattibilità del progetto è fallito in partenza dato che, come si legge nel libro di Ian Sommerville
You should not misrepresent your level of competence. You should not knowingly accept work that is outside your competence.
Purtroppo non credo che mi sia consentito declinare l'invito a lavorare su questo progetto, poiché, a causa dell'alternanza scuola-lavoro (su cui è meglio non esprimere pareri), devo svolgere 400 ore di attività finalizzate appunto all'acquisizione di nuove competenze entro Giugno 2018, pena la non ammissione all'esame di maturità. Il progetto in questione, ovviamente, mi frutterebbe un sacco di ore valide per l'alternanza. In più, a prescindere dalle ore guadagnate, se il mio rifiuto non dovesse essere accettato mi troverei costretto comunque a portare a termine questa cosa (come? boh!). Io penso che tutta questa faccenda sia solo un modo per evitare di pagare dei professionisti qualificati, sperando che io possa fare chissà quale miracolo senza avere lontanamente le competenze necessarie per portare a termine un progetto simile.
Però nel caso in cui fossi costretto, come dovrei fare? Dovrei praticamente prendere due lauree in 3 mesi o al massimo 6! C'è troppa roba da conoscere già solo considerando gli aspetti dell'ingegneria del software: quale modello di sviluppo adottare? Waterfall? A spirale? Dovrei sfruttare l'evitamento dei cambiamenti o la tolleranza ai cambiamenti? Prototipo si o no? Uso lo sviluppo incrementale? Come progetto le tabelle nel database? Quali linguaggi uso? Python, Java, PHP, Ruby , JS Node? E come gestire i moduli per favorire la riutilizzabilità del codice? etc etc etc
Non sono cose che si apprendono guardando un video su Youtube o chiedendo a *** non so proprio che fare

11 Risposte

  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Perché non usi un CMS? Ad esempio Joomla... ma ce ne sono tanti
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    loopunrolling ha scritto:


    quale modello di sviluppo adottare? Waterfall? A spirale? Dovrei sfruttare l'evitamento dei cambiamenti o la tolleranza ai cambiamenti? Prototipo si o no? Uso lo sviluppo incrementale?
    Eh? "Spirale"? Mai sentito uno sviluppo del genere. Questi ragionamenti ultra-fini (ammesso che servano a qualcosa ..) potrebbero forse avere senso in certi (rari) contesti. In 17 anni di lavoro nessuno mi ha mai chiesto, proposto, parlato di cose tipo sviluppo "waterfall", "spirale" o che altro.
    La realtà del mondo del lavoro in ambito programmazione, e perlomeno in Italia, è molto più "bassa" e banale (purtroppo) di quanto forse stai pensando.

    loopunrolling ha scritto:


    Come progetto le tabelle nel database?
    Innanzitutto, a livello concettuale, individuando le "entità" coinvolte e come sono relazionate tra di loro. Poi c'è chiaramente l'aspetto più tecnico: una volta determinate entità e relazioni si fa tipicamente uno script SQL che crea le tabelle, inserendo chiavi, vincoli e quant'altro. Script chiaramente poi da eseguire dove è necessario (che sia PC di sviluppo, server di produzione o che altro). Qui ovviamente serve conoscere quale DBMS si deve usare e si devono anche avere delle basi su SQL.

    loopunrolling ha scritto:


    Quali linguaggi uso? Python, Java, PHP, Ruby , JS Node?
    Il punto è che se è qualcosa di "reale", che verrà usato davvero da qualcuno, allora dovrà essere ospitato da qualche parte, su un qualche server. Poi la applicazione potrebbe essere esposta su internet oppure solo su una rete locale interna ... non lo posso sapere.
    La questione è che non necessariamente hai piena liberta su linguaggi/server/DBMS ecc... Cioè dovresti perlomeno chiedere a chi di dovere, se/quali vincoli tecnologici ci sono. Un conto è fare un sito con la classica accoppiata PHP e MySQL .... un altro conto è fare ad esempio una web application Java EE che gira su Tomcat o altro application server più completo.

    loopunrolling ha scritto:


    E come gestire i moduli per favorire la riutilizzabilità del codice?
    Onestamente ... è un po' difficile dirlo e stabilirlo ora. Serve chiaramente una valida conoscenza del linguaggio di programmazione scelto e anche un po' di esperienza. Poi dipende "riutilizzo" in che senso: per poterlo riusare facilmente in un altro progetto? O solo per evitare duplicazioni di codice all'interno del progetto di cui parli?

    loopunrolling ha scritto:


    Non sono cose che si apprendono guardando un video su Youtube
    No ... o perlomeno non è certamente detto che un video sia appropriato o sufficiente.

    loopunrolling ha scritto:


    o chiedendo a ***
    Ah ah ... no comment che è meglio ...
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Non sono cose che si apprendono guardando un video su Youtube o chiedendo a *** non so proprio che fare
    Scusa se asterisco il nome
    In 17 anni di lavoro nessuno mi ha mai chiesto, proposto, parlato di cose tipo sviluppo "waterfall",
    Tranquillo in 17 anni lo avrai utilizzato parecchie volte ma non ti serviva a niente sapere che lo chiamassero "waterfall".
    Il processo di sviluppo Waterfall è il più tradizionale dei modelli di sviluppo del software, si tratta del ciclo di vita a cascata, strutturato secondo la sequenza:
    • analisi dei requisiti
    • design / progettazione
    • implementazione
    • test
    • installazione
    • manutenzione
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Eh? "Spirale"? Mai sentito uno sviluppo del genere.
    Spirale di Boehm. Un'altra (non) metodologia di sviluppo (fr)agile che ho citato giusto così, ma che non userei mai.
    Pare comunque che possa occuparmi della sola parte statica del sito. Io, in ogni, escluderei Java e PHP un po' per idiosincrasia e un po' per la difficoltà. Python è stupendo e facile da imparare ed è pure ad oggetti(come gli altri, chi più chi meno), dunque sarebbe il favorito. Ruby pare essere molto complicato. Per quanto riguarda il database non ho scelta perché è già stato realizzato per fortuna.
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Caro loopunrolling, ti sono state date delle specifiche?
    Se la risposta è no (come mi pare) allora perchè non usi un CMS? E' un vantaggio non solo per te che non devi reinventarti la ruota ma anche per la scuola che con un tuo lavoro avrebbe a disposizione una piattaforma "standard" su cui far lavorare anche qualcun altro.
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Anche io come altri utenti penso che, nel tuo caso è meglio se cerchi tra CMS gia fatti, basando la scelta del CMS in base alla grafica scelta da loro.
    Joomla - Wordpress - drupal (quelli con più utenti in italia) PHP+MySQL

    Poi basterà che leggi le istruzioni , dividi le pagine o categorie, e ci metti i menu, moduli etc ...
    Per fare e testare un sito in 3 mesi, a meno che non sei una squadra di 2/3 persone che ci lavorate 8/10 ore al giorno è il modo più sicuro di dare un progetto così utile e funzionante.
    Se poi ci aggiungi che non conosci alcun linguaggio di programmazione ...
    Poi se usarenno per forza un server windows con IIS so che ce ne sono alcuni ma non ho info.
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    candaluar ha scritto:


    Caro loopunrolling, ti sono state date delle specifiche?
    Se la risposta è no (come mi pare) allora perchè non usi un CMS? E' un vantaggio non solo per te che non devi reinventarti la ruota ma anche per la scuola che con un tuo lavoro avrebbe a disposizione una piattaforma "standard" su cui far lavorare anche qualcun altro.
    Le specifiche mi sono state date. Ho pieno controllo di tutto il processo e dunque posso scegliere le tecnologie che più mi piacciono, fatta eccezione per il database che, come già detto sopra, è stato già realizzato e che, se ben ricordo, dovrebbe essere Microsoft Access. Devo anche occuparmi della ricerca del servizio di hosting adeguato. Stavo considerando l'uso di un CMS tra Joomla, Wordpress e Dupral ma pare che essi non siano proprio "database-agnostici": che io sappia supportano solo MySQL e Postgresql. Inoltre ho saputo che devo per forza occuparmi anche delle operazioni sul database (interrogazione, inserimento, ricerca etc) e quindi non so se i CMS possono fare qualcosa del genere una volta configurati. Vorrei in ogni caso evitare come la peste di avere a che fare con PHP e Java (per idiosincrasia e motivi tecnici). Per tutto il resto ascolto i vostri pareri purché sostenuti da argomentazioni valide ed esaurienti su:
    1) quale servizio di hosting scegliere
    2) IIS vs Apache vs Nginx vs altro
    3) OpenBSD ( ) vs Windows Server vs Linux vs altro (questo dipende anche dal punto 1 ed influenza il punto 2)
    4) CMS sì o no? Wordpress, Joomla o Dupral? In caso di no, Python o Ruby? (Sono molto per Python 3 per una lunga lista di motivi)
    5) Certificato SSL
    6) Altro che al momento mi sfugge

    PS: per "sviluppare" ho accesso a molti sistemi operativi sul mio PC. Ho come sistema principale Windows 7 e in Virtualbox ho Linux (lo so gestire) e i vari BSD (me la cavo con OpenBSD) più OS/2, quindi non dovrei avere troppe limitazioni in termini di compatibilità software.
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    loopunrolling ha scritto:


    Devo anche occuparmi della ricerca del servizio di hosting adeguato.
    Che dovrebbe essere perlomeno con sistema operativo Microsoft (non credo si possa fare su Linux ... correggetemi se sbaglio).

    loopunrolling ha scritto:


    Stavo considerando l'uso di un CMS tra Joomla, Wordpress e Dupral ma pare che essi non siano proprio "database-agnostici": che io sappia supportano solo MySQL e Postgresql.
    Nessun sito "serio", ragionevolmente, si mette ad usare Access ...

    loopunrolling ha scritto:


    Inoltre ho saputo che devo per forza occuparmi anche delle operazioni sul database (interrogazione, inserimento, ricerca etc) e quindi non so se i CMS possono fare qualcosa del genere una volta configurati.
    Di per sé, no. Un CMS serve per una cosa ben precisa: realizzare un sito in cui i contenuti possano essere "editati" facilmente da qualunque persona, anche non tecnico/programmatore. Questo è il loro scopo.

    A meno che un CMS permetta estensioni, plugin o cose del genere, per cui si possa "programmare" l'accesso ad un database in maniera particolare. Non ho idea se qualche CMS lo permette e comunque sarebbe tutto da valutare.

    loopunrolling ha scritto:


    Vorrei in ogni caso evitare come la peste di avere a che fare con PHP e Java (per idiosincrasia e motivi tecnici).
    Posso comprendere il fatto di scartare Java (realizzare webapp con JavaEE NON è "banale" e non è per "principianti") ma ... se scarti pure PHP tagli una gran bella fetta di possibilità (e di hosting).
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Che dovrebbe essere perlomeno con sistema operativo Microsoft (non credo si possa fare su Linux ... correggetemi se sbaglio).
    Perché Linux non dovrebbe poter ospitare un sito? Tempo fa, quando ero affetto dalla malattia del software libero, ho fatto girare con successo LAMP sul mio computer. Ovviamente niente di serio, però funzionava.
    Nessun sito "serio", ragionevolmente, si mette ad usare Access ...
    Lo immaginavo. Eventualmente si farà una conversione da Access ad altri database.
    Di per sé, no. Un CMS serve per una cosa ben precisa: realizzare un sito in cui i contenuti possano essere "editati" facilmente da qualunque persona, anche non tecnico/programmatore. Questo è il loro scopo.

    A meno che un CMS permetta estensioni, plugin o cose del genere, per cui si possa "programmare" l'accesso ad un database in maniera particolare. Non ho idea se qualche CMS lo permette e comunque sarebbe tutto da valutare.
    Se devo scrivere del codice, riducendo così il vantaggio dei CMS nel non dover scrivere nulla in html/css allora faccio prima a fare il sito da zero. Tanto scrivere delle paginette html5 e css3 lo so fare anche il mio gatto.
    Posso comprendere il fatto di scartare Java (realizzare webapp con JavaEE NON è "banale" e non è per "principianti") ma ... se scarti pure PHP tagli una gran bella fetta di possibilità (e di hosting).
    Evitando comunque le solite guerre di religione, Java è da scartare appunto per la complessità e tutto il carrozzone che si tira dietro(JVM). PHP non è stato nemmeno progettato si dice e molti sviluppatori web ammettono che non è il massimo per progetti medio-grandi. Python è stato progettato da un matematico, dunque parte già da ottime premesse; in più è molto semplice. Non esiste nessun servizio hosting che lo supporta? Naturalmente si intende un servizio a pagamento.
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    loopunrolling ha scritto:


    Perché Linux non dovrebbe poter ospitare un sito?
    Ho parlato con riferimento specifico ad Access .... non alla questione sito/hosting in generale. Linux (come tutti gli altri SO) può tranquillamente gestire server HTTP e application-server in generale. Ma Access è una cosa "proprietaria" Microsoft.

    loopunrolling ha scritto:


    Tanto scrivere delle paginette html5 e css3 lo so fare anche il mio gatto.
    Beh ok, HTML(5) e CSS(3) non sono certo di per sé difficili ma bisogna sempre vedere che livello si vuole raggiungere e come si vuole operare .... se a livello di "gatto" (tipo gente che manco sa indentare decentemente un HTML) fino a livello di "frontendista" esperto che fa questo tutto il giorno.
    Io ad esempio sono una via di mezzo, non sono un "frontendista" puro, sono in grado di usare HTML/CSS in generale ma non sono (ancora) in grado di andare molto oltre a livello avanzato (es. sviluppo web su dispositivi mobile).

    loopunrolling ha scritto:


    stato nemmeno progettato si dice e molti sviluppatori web ammettono che non è il massimo per progetti medio-grandi.
    E il tuo sito sarà medio/grande?

    loopunrolling ha scritto:


    Python è stato progettato da un matematico, dunque parte già da ottime premesse;
    Non vuol dire niente, in questo senso specifico per una applicazione web. Tra l'altro dovrai sicuramente usare un qualche framework specifico per webapp. Python da solo (il linguaggio in sé dico) non ci fa nulla sul web, di per sé.

    loopunrolling ha scritto:


    Non esiste nessun servizio hosting che lo supporta? Naturalmente si intende un servizio a pagamento.
    Non ne ho idea. Tra l'altro parlare sui forum di hosting non è ben visto e, a seconda del forum, neanche permesso per regolamento (verifica il regolamento o chiedi ad un moderatore).
  • Re: Fregarsene dell'ingegneria del software e andare allo sbaraglio

    Comunque vorrei sapere per certo solo una cosa: tra i maggiori CMS ne esiste almeno uno che permetta solo ad utenti autorizzati di effettuare ricerche di dati (tramite un form) in un database senza che io debba scrivere una sola riga di codice? Se la risposta è affermativa, allora utilizzerò quella "tecnologia" e sceglierò il servizio di hosting (magari chiedendo opinioni in sedi più opportune). Diversamente userei Python + Django.
Devi accedere o registrarti per scrivere nel forum
11 risposte