Colmare il divario tra la ricerca sull'informatica e l'ingegneria del software [chiuso]

8

Credi ci sia un divario tra la ricerca informatica e i problemi di ingegneria del software? Ad esempio, gli ingegneri del software devono mai preoccuparsi di "factoring e isomorfismo grafico" o di problemi complessi di informatica se devono ... dire costruire un sito web del carrello? Probabilmente no.

E se c'è una disconnessione tra l'informatica e gli ingegneri che costruiscono applicazioni? È così che dovrebbero esistere ingegneria e scienza? Gli ingegneri si immergeranno in anni e anni di documenti di ricerca per risolvere un particolare problema che hanno?

Edit-1: Dopo averlo pensato, la scienza generale probabilmente ha lo stesso problema. Sono sicuro che ci sono i migliori chimici che lavorano in aziende come McDonald's e Taco Bell che hanno il compito di creare un hamburger migliore e più facile da produrre.

    
posta berlinbrown2 26.04.2011 - 23:51
fonte

6 risposte

10

Nella maggior parte delle posizioni di ingegneria del software, raramente si verificano problemi di informatica fondamentali, per una di queste due ragioni:

  • Sono stati risolti con gli strumenti che usi. Esempi sono gli algoritmi di parsing per il linguaggio di programmazione che usi dal tuo compilatore, gli algoritmi di schedulazione per le applicazioni eseguite dal sistema operativo, la risoluzione delle query nel database che usi, ecc.
  • Semplicemente non sono fondamentali per qualsiasi cosa tu stia cercando di ottenere. Non perché non aiuterebbero, ma piuttosto perché il compito di automazione banale è molto più importante della versione ottimizzata massima.

La ragione per cui molti ingegneri del software stanno costruendo sistemi di informazione che sono banali da un punto di vista teorico, è semplicemente perché sono necessari. Il modo in cui il nostro mondo è attualmente automatizzato è probabilmente inferiore allo 0,01% di ciò che potrebbe essere raggiunto. Quindi nei prossimi decenni probabilmente stiamo per costruire principalmente sistemi di informazione e interfacce. Quando li avremo, alcuni problemi fondamentali cominceranno a spuntare.

Attualmente questi problemi esistono, ad esempio per quanto riguarda la scalabilità, il threading, ecc. ma sono semplicemente una parte estremamente piccola di tutto ciò che deve essere fatto. Quindi la ragione per cui le aziende stanno costruendo sistemi informativi relativamente banali più e più volte è perché (1) le persone ne hanno bisogno e (2) è molto più facile (e più redditizio) che risolvere i problemi fondamentali.

    
risposta data 27.04.2011 - 00:13
fonte
6

Do you believe there is a gap between computer science research and software engineering problems?

La mia esperienza è che lo sviluppo di software commerciale / pratico è in ritardo rispetto alla ricerca accademica da 5 a 30+ anni. SQL è stato uno dei tempi più rapidi tra un documento accademico innovativo e un prodotto di spedizione commerciale. Il documento fu pubblicato nel 1969, IBM e altri impiegarono molto tempo e sforzi nel tentativo di realizzare prodotti fattibili, e il primo vero prodotto commercialmente valido fu Relational Software, la società che ora si chiama Oracle.

I linguaggi funzionali sono stati sviluppati dai ricercatori negli anni '60. Quanti sono in uso oggi? Alcuni. In questi giorni stanno diventando molto più utili di quanto non facessero al di fuori dei muri ricoperti di edera delle università. Ma ci sono voluti tre decenni per farlo.

Will engineers dive through years and years of research papers to solve a particular problem that they have?

Sì. Lo faccio tutto il tempo. Quando lavoravo in un'azienda che creava reti di storage, molti dei prodotti che iniziarono a essere spediti erano descritti in articoli di ricerca pubblicati 5-6 anni prima.

Un altro esempio riguardava un problema chiamato "abbinamento paziente". Gli umani sono bravi a guardare cose come Chem. Dept. o Department of Chemistry e determinare che tali cose sono identiche. La maggior parte degli algoritmi ha un tempo terribile che determina queste cose. Stavo lavorando in un'azienda che gestiva prescrizioni di farmaci elettronici, rapporti di laboratorio e richieste di risarcimento. Sarebbe stato utile essere in grado (anonimamente) di avere dati a lungo termine che coprano l'efficacia e l'efficacia dei trattamenti per i pazienti. Una cosa del genere avrebbe dovuto dipendere dalla capacità di determinare la vicinanza delle stringhe. Durante gli anni '90, la maggior parte dei ricercatori in quest'area svanì nel progetto Human Genome, e gran parte del loro lavoro scomparve dal web (con le NDA e la proprietà intellettuale, tutto ciò che queste persone inventarono svanì dal web quando andarono a lavorare per l'industria privata). Dopo il 911, i nomi corrispondenti diventarono un problema di "sicurezza nazionale" (ci sono circa 25 modi per scrivere Maometto in inglese, e circa una dozzina di modi per scrivere Osama) e molti dei rimanenti scomparvero. Quindi un inventore / azienda ha un prodotto che ti consente di abbinare persone e relazioni chiamate " non ovvio analizzatore di relazioni " che è finito svanendo in un componente aggiuntivo per DB2. Dovrai scavare molto nei giornali. Forse no se fai carrelli della spesa, ma è abbastanza comune farlo in altri progetti.

Tesi: Rilevamento adattivo di record di database duplicati approssimativi e approccio di integrazione del database alla scoperta di informazioni .
Libreria che implementa alcune delle funzioni nella tesi .

    
risposta data 27.04.2011 - 00:57
fonte
4

Gli scienziati di computer accademici sono molto bravi con quanto segue:

  1. Analisi degli algoritmi
  2. Conoscenza delle strutture dati standard.
  3. Teoria degli automi

Tutto sopra sono cose utili per l'ingegneria del software. In effetti sarebbe indispensabile avere almeno uno scienziato informatico in un team di ingegneri del software.

Tuttavia, il modo in cui vengono insegnate le scienze informatiche e le ABET regole di accreditamento esacerbare il problema (se può essere chiamato un problema). Gli scienziati informatici non hanno molta conoscenza delle seguenti aree chiave di ingegneria del software.

  1. Footfprint RAM di un software e impatto che potrebbe avere sulle prestazioni del software.
  2. Ingegneria di manutenzione del software. Non apprezzano il fatto che l'80% dei lavori software stia mantenendo il software, che è il più grande componente del costo del software.
  3. Come lavorare vicino all'hardware. Ciò è necessario quando si visualizza l'intero sistema come una combinazione di hardware e software e si ottimizza il sistema per vedere come ottimizzare entrambi per ottenere le migliori funzionalità.
  4. Inventare nuove, veloci e affidabili procedure di test, implementazione e manutenzione del software.
  5. Documentazione software, formazione del cliente e documentazione correlata.
  6. Ingegneria della sicurezza del sistema.

Posso andare avanti, ma penso di aver raggiunto il mio obiettivo.

L'ingegneria del software oggi è una disciplina a sé stante che prende in prestito dall'informatica, ma che sta guidando la tecnologia e la vita umana oggi. Hai davvero bisogno del cervello di un ingegnere per eccellere in esso. Tutti gli informatici non sono grandi ingegneri del software. Ovviamente anche il contrario non sarà vero.

    
risposta data 16.04.2013 - 17:59
fonte
2

In realtà sostengo che per creare un sito web con un buon carrello, devi assolutamente impiegare algoritmi difficili.

Diciamo che vuoi pronosticare i comportamenti degli utenti in base agli acquisti precedenti. Ci vorrà un lotto più di a+b=c per farlo in modo efficace. In che modo le abitudini di acquisto si basano su una serie di fattori diversi, come età, sesso, posizione geografica, ecc.?

Nella mia linea di lavoro, uso quotidiano di algoritmi complessi in rendering, AI, ecc.

In breve, se pensi a una funzione specifica (ad esempio solo un carrello della spesa), probabilmente stai pensando a implementazioni scadenti. Inizia a pensare a implementazioni google o amazon e sono sicuro che inizierai a vedere dove sarebbe utile (o richiesto) conoscere o almeno avere familiarità con algoritmi complessi.

    
risposta data 27.04.2011 - 00:04
fonte
2

Gli ingegneri del software per la risoluzione dei problemi hanno un'enorme sovrapposizione con la ricerca in ambito informatico e anche matematica e amp; ricerca statistica.

La progettazione di un sito Web non è un'ingegneria del software, anche se si integra un codice del carrello. Sta progettando.

Anche la "codifica" non è necessariamente ingegneria del software: conosco un sacco di programmatori che non si considererebbero come se si avvicinassero agli ingegneri. Il codice può essere semplice come manipolare le stringhe o scrivere formule di Excel.

Ovviamente non tutta l'ingegneria del software si sovrapporrà alla ricerca scientifica (ci sono molte altre responsabilità nel lavoro), ma ho letto molti articoli pubblicati al fine di determinare l'algoritmo o l'approccio ottimale ai problemi. Questi problemi possono sorgere solo una volta all'anno (il resto del tempo sto scrivendo la validazione dell'interfaccia utente o altro) ma questa è la natura del mio ambiente di lavoro.

    
risposta data 27.04.2011 - 00:57
fonte
1

Do you believe there is a gap between computer science research and software engineering problems?

No.

For example, do software engineers ever have to worry about "factoring and graph isomorphism" or some complex computer science problems if they have to....say build a shopping cart website? Probably not.

False. Usano strumenti che dipendono da questo fatto correttamente.

In effetti, tutte le tue relazioni tra amici di Facebook sono un enorme problema di teoria dei grafi. Molto complesso. Molto largo. Molto teorico.

And if there is a disconnect between computer science and the engineers that build applications?

Sì. Alcune persone creano applicazioni chiaramente non qualificate. Ho visto molte cose davvero scadenti costruite da "professionisti" a pagamento che avrebbero dovuto fare qualcos'altro, più utili con il loro tempo.

Is that the way that engineering and science should exist?

"Should" non ha significato. È il modo in cui esiste .

Will engineers dive through years and years of research papers to solve a particular problem that they have?

Sì. Spesso. Ecco perché mi iscrivo alla Libreria digitale ACM. link È essenziale per affrontare problemi che non sono banali.

    
risposta data 27.04.2011 - 00:06
fonte

Leggi altre domande sui tag