Un problema di reverse engineering

totore8

Nuovo Utente
Registrato
12/9/10
Messaggi
29.075
Punti reazioni
2.010
Salve,
avrei la necessita' di realizzare un software per la gestione di una attivita' di servizi replicando il piu' fedelmente possibile il comportamento ed le caratteristiche di un software gia' esistente che ha realizzato e sviluppato la mia piccola societa' (niente reverse engineering di AutoCad :D).
Mi troverei quindi nella necessita' di cercare una (o due) figure professionali che si possano sobbarcare in questa impresa avendo tutte le specifiche del progetto da emulare ed il supporto dell'ideatore.
I piu' esperti perdonino la mia incompetenza sulla questione, ma non saprei in una eventuale richiesta di lavoro come definire la figura professionale richiesta (o il set di figure).
Io mi immaginerei una specie di figura mitologia tipo "project manager junior" che sappia sia fare l'analisi del progetto, ma anche la scrittura del codice avendo la completa liberta' di scegliere la metodologia e gli strumenti da utilizzare.
Ho detto junior perche' immagino che i senior non scrivano manco una linea e poi questa figura junior me la sono immaginata io per definire uno che sappia sia fare l'analisi che la realizzazione del software avendo pure la passione di scriverlo (e la passione e' cosa da junior :D).
Oppure sarebbe il caso di definire due figure, "uno che pensa,progetta" ed un altro che fisicamente scrive il codice ?
Oppure e' una cosa che non si puo' fare o che non si realizza in questi termini ?
Ringrazio sentitamente chiunque abbia esperienze al riguardo e mi possa dare qualche suggerimento.
 
Salve,
avrei la necessita' di realizzare un software per la gestione di una attivita' di servizi replicando il piu' fedelmente possibile il comportamento ed le caratteristiche di un software gia' esistente che ha realizzato e sviluppato la mia piccola societa' (niente reverse engineering di AutoCad :D).
Mi troverei quindi nella necessita' di cercare una (o due) figure professionali che si possano sobbarcare in questa impresa avendo tutte le specifiche del progetto da emulare ed il supporto dell'ideatore.
I piu' esperti perdonino la mia incompetenza sulla questione, ma non saprei in una eventuale richiesta di lavoro come definire la figura professionale richiesta (o il set di figure).
Io mi immaginerei una specie di figura mitologia tipo "project manager junior" che sappia sia fare l'analisi del progetto, ma anche la scrittura del codice avendo la completa liberta' di scegliere la metodologia e gli strumenti da utilizzare.
Ho detto junior perche' immagino che i senior non scrivano manco una linea e poi questa figura junior me la sono immaginata io per definire uno che sappia sia fare l'analisi che la realizzazione del software avendo pure la passione di scriverlo (e la passione e' cosa da junior :D).
Oppure sarebbe il caso di definire due figure, "uno che pensa,progetta" ed un altro che fisicamente scrive il codice ?
Oppure e' una cosa che non si puo' fare o che non si realizza in questi termini ?
Ringrazio sentitamente chiunque abbia esperienze al riguardo e mi possa dare qualche suggerimento.

Se non ho capito male 'il cliente' ha già una preparazione tecnica e informazioni tali da riuscire già a buttare giù 'in proprio' un set di requisiti e specifiche (integrabili in corso d'opera) per la realizzazione del sistema.

Per l'esecuzione, probabilmente, basterebbe un sistemista/programmatore (se ti dice bene, ti capita un professionista di mezza età che ne ha viste molte).

Su 'Project Manager junior' resto perplessa sia sull'espressione della qualifica che sulla pretesa 'passione' associata a 'junior', non escludo candidature da parte di chi si è imbattutto solo in documenti PowerPoint :D

Quella che invece sicuramente va prevista è una figura che sia in grado (sulla base dei requisiti e delle specifiche del cliente e in base al progetto del sistema) di stendere un piano di test e validazione per verificare funzionalità e criticità (e si sa che chi valida deve essere disgiunto da chi realizza :yes:).

Non saprei indicarti il nome in inglese :D ma '....test/qualifica/validazione/integrazione' può essere un riferimento.
 
Fammi capire, devi fare "reverse engineering" di un software sviluppato da te e sotto la supervisione del responsabile che l'ha realizzato...
Perché c'è qualcosa che non mi torna? :confused:
 
Fammi capire, devi fare "reverse engineering" di un software sviluppato da te e sotto la supervisione del responsabile che l'ha realizzato...
Perché c'è qualcosa che non mi torna? :confused:

gli stagisti che gli facevano il programma se ne sono andati con il codice sorgente :D
scherzo!
 
Fammi capire, devi fare "reverse engineering" di un software sviluppato da te e sotto la supervisione del responsabile che l'ha realizzato...
Perché c'è qualcosa che non mi torna? :confused:
Perche' sembra strano ?
Non vorrei raccontarvi troppi fatti miei :D, comunque la faccenda e' che un cliente vorrebbe ricrearsi in-house il sw che gli ho creato/fornito.
Dovrebbe trovarsi una/due figure che possano farlo e come dicevo, non saprei quale potrebbe essere la figura professionale adatta per fare una cosa del genere perche' si potrebbe trattare di una sola capace di fare l'analisi e la codifica o potrebbero essere due soggetti diversi tra la progettazione e la codifica.
Se non ho capito male 'il cliente' ha già una preparazione tecnica e informazioni tali da riuscire già a buttare giù 'in proprio' un set di requisiti e specifiche (integrabili in corso d'opera) per la realizzazione del sistema.
Ciao Fog :bow:
Il clente non e' un tecnico, lui vorrebbe solo essere in grado di assumere uno/due persone che gli garantiscano la migrazione dal software fornito ad uno in-house replicandone le funzionalita' percio' non ci sarebbe nulla da testare o da integrare, il sw realizzato dovrebbe solo replicare delle funzioni gia' esistenti.

Per l'esecuzione, probabilmente, basterebbe un sistemista/programmatore (se ti dice bene, ti capita un professionista di mezza età che ne ha viste molte).
Infatti anch'io pensavo ad una persona di mezza eta' e che ne abbia viste tante, anche perche' dovrebbe avere la responabilita' di decidere l'architettura.
Pero' immagino che nel modo delle aziende di sw queste figure poi diventino "gestori di gente" e non mettano piu' mano al codice, ma e' solo una mia credenza, non ho elementi certi.

Quella che invece sicuramente va prevista è una figura che sia in grado (sulla base dei requisiti e delle specifiche del cliente e in base al progetto del sistema) di stendere un piano di test e validazione per verificare funzionalità e criticità (e si sa che chi valida deve essere disgiunto da chi realizza :yes:).
In realta' il problema della validazione non si pone, la potrebbe fare lo stesso personale del cliente simulando il parallelo con il sw in uso.

(e si sa che chi valida deve essere disgiunto da chi realizza :yes:).
Spero non sia necessario prendere una persona solo per verificare quello che fa un altro.
Non credo che il cliente abbia intenzione di fare una piccola Accenture.

Su 'Project Manager junior' resto perplessa sia sull'espressione della qualifica che sulla pretesa 'passione' associata a 'junior', non escludo candidature da parte di chi si è imbattutto solo in documenti PowerPoint :D
La tua perplessita' e' motivata perche' e' un termine che teste' inventato e che nelle mie intenzioni voleva sintetizzare una figura professionale capace di progettare una architettura (project managere), ma anche di realizzarla anche con l'ausilio di uno sottoposto (eccho perche' junior, in quanto mi sono fattio l'idea che scrivere codice sia una cosa da junior).
non escludo candidature da parte di chi si è imbattutto solo in documenti PowerPoint :D
Eì impossibile, perche' la "missione" ha una grossa valenza tecnica ed e' piuttosto impegnativa, uno che non ha almeno 5 anni di esperienza di codifica e/o progettazione non potrebbe presentarsi.

Gli stagisti che gli facevano il programma se ne sono andati con il codice sorgente :D
scherzo!
Capirai che valore potrebbe avere un sw scritto da stagisti. :D

sistemista/programmatore
Ecco, io forse avrei utilizzato un termine simile come si utilizzava una volta di analista/programmatore, ma pensavo fosse desueto.
 
faresti prima e ti costerebbe molto meno rivolgendoti a una software house
La software house sono io. :D
Mi spiego meglio: non e' un poblema di costo, e' che il cliente vorrebbe un controllo in-house del software che per lui e' strategico (ma veramente eh.).
Possibile non sia capitato a nessuno un progetto di "migrazione" ?
 
La software house sono io. :D
Mi spiego meglio: non e' un poblema di costo, e' che il cliente vorrebbe un controllo in-house del software che per lui e' strategico (ma veramente eh.).
Possibile non sia capitato a nessuno un progetto di "migrazione" ?
Mi sembra un'eventualità abbastanza rara, normalmente un'azienda non si mette dall'oggi al domani a costruire un reparto di sviluppo software sopratutto per sostituire un'applicazione già disponibile nel suo sistema informativo.
Nella mia esperienza una volta disponibile un'applicazione la sua vita viene allungata fino all'estremo possibile pur di non incorrere in altri costi di sviluppo o intervento della software house.

Nel tuo caso però è strano che non essendoci problemi di denaro non vi sia stato proposto di cedere il sorgente dell'applicazione in modo che il cliente possa prenderne il controllo.
 
La software house sono io. :D
Mi spiego meglio: non e' un poblema di costo, e' che il cliente vorrebbe un controllo in-house del software che per lui e' strategico (ma veramente eh.).
Possibile non sia capitato a nessuno un progetto di "migrazione" ?

Ma cosa devi migrare?:mmmm::mmmm:

Se tu o la tua società ha sviluppato il SW devi essere in possesso dei sorgenti.

Portarlo su altre piattaforme, a meno che non ci sia incompatibilità, tipo portare da winzozz ad altro è un problema minore.
 
Mi sembra un'eventualità abbastanza rara, normalmente un'azienda non si mette dall'oggi al domani a costruire un reparto di sviluppo software sopratutto per sostituire un'applicazione già disponibile nel suo sistema informativo.
Nella mia esperienza una volta disponibile un'applicazione la sua vita viene allungata fino all'estremo possibile pur di non incorrere in altri costi di sviluppo o intervento della software house.
Nel tuo caso però è strano che non essendoci problemi di denaro non vi sia stato proposto di cedere il sorgente dell'applicazione in modo che il cliente possa prenderne il controllo.

Nel tuo caso però è strano che non essendoci problemi di denaro non vi sia stato proposto di cedere il sorgente dell'applicazione in modo che il cliente possa prenderne il controllo
Si', quello che dici ha senso, ma con un progetto "un poco grandicello", secondo me non avrebbe senso rilasciare i sorgenti senza poi affiancare per un certo periodo il team di sviluppo che ne dovrebbe prendere il controllo.
C'e' da dire inoltre che questo passaggio dovrebbe in realta' essere utilizzato per un cambio di piattaforma HW/SW, per esempio (non e' questo il caso), passando da un mainframe ad un sistema distribuito.
Ripeto, la situazione e':c'e' il prodotto, ci sono le specifiche, c'e' chi possiede il know-how e la conoscenza della business intelligence :sborone:, sarebbe necessario trovare una o piu' figure professionali capaci di replicare un sistema che abbia queste caratteristiche definendone anche la nuova architettura hw/sw e quello che mi interesserebbe sapere e' come impostare una richiesta di lavoro e come definire le figure professionali richieste.
Quindi si tratterebbe di un progetto di reverse engineering con contestuale migrazione.
Voi vi chiederete quale sarebbe il vantaggio ?
Lo scopo del cliente e' di avere il completo controllo [1] (secondo me illusorio) sul software che e' in pratica [2] depositario di tutta la business intelligence della sua struttura (non piccolissima) e chi sono io per reprimere un sogno ?
Se vi puo' interessare sapere perche' secondo me si tratterebbe di illusione e' che nessuno ci puo' garantire che un giorno una qualsiasi figura del team interno non emigri verso lidi piu' appetibili, causando la perdita del know-how tanto prezioso.



[1] A Napoli si direbbe:non stare soggetto a qualcuno.
[2] A certi livelli di grandezza in una organizzazione non c'e' una unica persona che abbia una visione unitaria del suo funzionamento, ce l'ha solo il software di gestione.
 
Ma cosa devi migrare?:mmmm::mmmm:
Se tu o la tua società ha sviluppato il SW devi essere in possesso dei sorgenti.
Portarlo su altre piattaforme, a meno che non ci sia incompatibilità, tipo portare da winzozz ad altro è un problema minore.
Forse il post qui sopra spiega meglio la situazione, se non e' chiaro, chiedete pure e qualche parere e' ben accetto.
 
secondo me è un po' inadeguato il termine di "reverse engineering" che hai usato,
forse meglio "fotocopia engineering" o "duplicazione engineering",

nel senso che ricerchi un team che sappia replicare in casa le medesime funzioni di un software che tu già disponi,
non hai necessità di conoscere i sorgenti di quello in uso, ma di replicarne le funzioni







ps la frase "reverse engineering" suona un po' di losco, anche se questo è prevenuto
 
secondo me è un po' inadeguato il termine di "reverse engineering" che hai usato,
forse meglio "fotocopia engineering" o "duplicazione engineering",
nel senso che ricerchi un team che sappia replicare in casa le medesime funzioni di un software che tu già disponi,
non hai necessità di conoscere i sorgenti di quello in uso, ma di replicarne le funzioni
ps la frase "reverse engineering" suona un po' di losco, anche se questo è prevenuto
Grazie per la risposta.
Mi risulta che il reverse engineering non sia illegale (cosi' ho letto) e qui ne da' una illustrazione accademica che sembra ricada esattamente in quello che vorrei fare.
Reengineering, Refactoring e Reverse Engineering del Software, Anna Rita Fasolino << Ingegneria del Software II << Ingegneria << Federica e-Learning
"fotocopia engineering" o "duplicazione engineering",
Si', ma questi sono inventati, metre RE esiste davvero :D e poi sembra proprio quello che vorrei fare.
nel senso che ricerchi un team che sappia replicare in casa le medesime funzioni di un software che tu già disponi,
non hai necessità di conoscere i sorgenti di quello in uso,
Esatto.
Conoscere i sorgenti puo' neanche essere necessario visto che l'autore del sw farebbe da consulente.
Il problema in realta' e' un po' piu' complesso perche' si dovrebbe anche decidere l'architettura: server in house oppure cloud, client oppure app web e cosi' via.
Non e' una cosa banalissima perche' ci sono anche termini abbastanza stringenti in termini di performance.
Ho cercato un poco su Google qualche forum di informatica, ma si passa da quelli universitari che discutono sulla invesione di matrici a quelli che si interessano dell'upload dei film sul telefonino.
Non ho trovato nulla che parli di lavoro vero.
Nessuno che si sia gia' trovato in una situazione di "reingegnerizzazione" ?
 
Ultima modifica:
Forse ho trovato la soluzione.
Su un sito "mostruoso" :D ho letto una richiesta di una una figura di "Sistemista Applicativo" che detto cosi' non si capisce cosa dovrebbe fare, ma nell'annuncio c'erano indicate proprio le competenze e le mansioni del soggetto che starei cercando.
Cosi' l' ho copiato e l'ho un poco adattato al caso specifico.
Grazie per le visite e le risposte, resta inteso che se qualcuno ha notizie, pareri o esperienze pregresse in una reingegnerizzazione/migrazione, mi farebbe piacere conoscerle.
 
Dai un fork del tuo sorgente. E comunque non ti serve un project manager (nulla a che fare col progetto che hai in mente ), ma di uno sviluppatore senior o forse due, visto che immagino ci sia la parte back end e frontend
 
Comunque delle decine di termini tecnici che avete utilizzato ne avete azzeccati ad occhio un paio :D
 
Dai un fork del tuo sorgente. E comunque non ti serve un project manager (nulla a che fare col progetto che hai in mente ), ma di uno sviluppatore senior o forse due, visto che immagino ci sia la parte back end e frontend
Non posso perche' i sorgenti non sarebbero di nessun aiuto in quanto l'obiettivo e' quello di cambiare totalmente paradigma, l'unica guida sono le specifiche di progetto che consistono nelle funzionalita' adesso svolte dal software.
E comunque non ti serve un project manager (nulla a che fare col progetto che hai in mente ), ma di uno sviluppatore senior o forse due, visto che immagino ci sia la parte back end e frontend
Dici che non serve il project manager, ma uno o due sviluppatori, quindi potrebbero andare bene anche queste figure per definire quale architettura hardware e software bisognerebbe adottare ?
Cioe' avrebbero la competenza per prendersi la responsabilita' di far spendere all'azienda decine e decine di migliaia di Euro tra Hw e Sw a supporto ?
Per la figura professionale che mi interesserebbe ho trovato "Sistemista Applicativo" in un annuncio analogo a quello che vorrei proporre, anche se in qualche pagina web ne ho trovata una definizione che non si attaglia a quello che cerco.
Avevo scritto Project Manager perche' si tratta di un "progetto" e ci vuole qualcuno che lo "gestisca" :D quindi mi sembrava la definizione migliore.
 
Ultima modifica:
A te servono dunque forse più di un paio di senior, visto che probabilmente del tuo software si può riutilizzare solo la parte server. Prova a dare qualche dettaglio su come l applicazione funziona ora ( es. Un gestionale commesse che usa un db locale, gui scritta in VB) e come la vorrebbe il cliente. In che linguaggio è scritta, se usa db proprietari etc....
Un PM non è in genere un ruolo tecnico e spesso può persino non essere del campo dell' It (nella mia azienda ne abbiamo parecchi così ) quindi se metti un annuncio per Pm ti vedrai probabilmente inondato di CV di persone che han preso il PMP senza necessariamente avere competenza informatica. La tua necessità e prettamente tecnica e appare complessa, non te la caverai con un paio di junior
 
A te servono dunque forse più di un paio di senior, visto che probabilmente del tuo software si può riutilizzare solo la parte server. Prova a dare qualche dettaglio su come l applicazione funziona ora ( es. Un gestionale commesse che usa un db locale, gui scritta in VB) e come la vorrebbe il cliente. In che linguaggio è scritta, se usa db proprietari etc....
Un PM non è in genere un ruolo tecnico e spesso può persino non essere del campo dell' It (nella mia azienda ne abbiamo parecchi così ) quindi se metti un annuncio per Pm ti vedrai probabilmente inondato di CV di persone che han preso il PMP senza necessariamente avere competenza informatica. La tua necessità e prettamente tecnica e appare complessa, non te la caverai con un paio di junior
Scusa se approfitto della tua gentilezza e ti espongo le cose piu' in dettaglio e visto che sei del mestiere, ti do qualche informazione in piu'.

Non so se sia una situazione frequente o meno , ma la questione sta in questi termini:
La societa' X abbastanza grandicella utilizza un certo sw da vari anni e si e' sviluppata praticamente attorno ad esso in quanto ne ha ottenuto un certo vantaggio competitivo.
La storia e' andata avanti per un certo numero di anni (>5).
Adesso il proprietario/amministratore per fisime sue (non potete immaginare quanto possa essere strana la gente :D) sarebbe dell'idea di portare all'interno della sua azienda lo sviluppo del sw.
Le fisime consistono nella convinzione di avere aggiornamenti piu' rapidi e la certezza di non dipendere da una entita' esterna per lo sviluppo delle funzionalita'.
Come ho gia' detto in un altro post secondo me si tratta di un sogno, ma non ho intenzione di spegnerlo perche' purtroppo alcuni hanno bisogno di sbatterci il grugno per prendere atto della realta'.
La tua necessità e prettamente tecnica e appare complessa, non te la caverai con un paio di junior
Infatti, e' la stessa cosa che ha detto FOG e anch'io sarei del parere di prendere due persone di mezza eta' che abbiano spalle solide sia del punto di vista sw applicativo e di sistema, di hw e di networking.
La tua necessità e prettamente tecnica e appare complessa
Esatto, quello mi preoccupa particolarmente perche' ho l'impressione (da cose lette), che le figure con maggiore esperienza e responsabilita' nelle aziende siano spesso quelle meno dotate di competenze tecniche (magari perche' non le esercitano piu').
Non solo: non so se solo due figure possono fare fronte alla necessita' di realizzazione praticamente da zero dell'infrastruttura IT, in quanto mi sembra di capire che nelle aziende i ruoli siano fortemente parcellizzati.
Te la faccio breve e mi mantengo un po' sul vago perche' non vorrei fare il fenomeno: Linguaggio equivalente a VB ed usa db proprietati, progetto di piu' di 1000 moduli (molto fattorizzati, non ci sono funzioni duplicate) , alcune centinaia di migliaia di linee, settore un po' di nicchia, problematiche che vanno dal collegamento con apparecchiature automatiche alla trasmissione di dati al MEF mediante i famosi web service SOGEI e quello che e' peggio, requisiti stringenti in termini di risposta del sistema (oltre 400 utenze connesse con decine di migliaia di transazioni/giorno).
Siccome io non ho nessuna cognizione della produttivita' nelle aziende di sw che non siano la mia :D (lavoro da sempre in proprio da quando ero studente), non saprei dire se una cosa del genere valga neppure la pena tentarla con due persone ritenendo che debba realizzarsi in un paio di anni oppure potrebbero essere necessari piu' anni e piu' persone.
Per il momento mi sono soffermato sulla definizione delle figure professionali necessarie, ma una valutazione almeno spannometrica sulla fattibilita' del progetto comunque va fatta e sarei interessato alle vostre valutazioni.
 
... ti vedrai probabilmente inondato di CV di persone che han preso il PMP senza necessariamente avere competenza informatica.
Spero di no, nell'annuncio che ho proposto ci sono delle specifiche piuttosto precise dalle quali si dovrebbe capire che e' una rogna tecnica.
 
In prima battuta, secondo la mia opinione, la migrazione completa di un SW su una architettura, che presumo sarà completamente diversa, richiederà un effort approssimativamente pari al tempo che è stato necessario allo sviluppo del SW, in dipendenza ovviamente della qualità del software, della documentazione e della ovvia manutenzione correttiva/evolutiva fatta nel corso degli anni.

Tra l'altro DB proprietari fa squillare più di un campanello d'allarme nella mia testa, di che roba parliamo?:mmmm:

La soluzione più rapida, qualora fosse possibile, sarebbe replicare l'attuale architettura e far girare lo stesso identico SW addestrando un team all'interno della azienda cliente attraverso un adeguato periodo di affiancamento.

Se invece si parla di mettere su una architettura ex novo, DB server diverso, Application server diverso, front end diverso, non te la cavi con due figure.

P.S. Ma mettere l'architettura attuale e quella to be, ammesso che ce ne sia una è così difficile?

My2Cents
 
Indietro