{"id":273,"date":"2020-03-01T19:05:52","date_gmt":"2020-03-01T18:05:52","guid":{"rendered":"http:\/\/mirotti.eu\/?p=273"},"modified":"2020-03-01T19:05:52","modified_gmt":"2020-03-01T18:05:52","slug":"progettazione-di-un-software","status":"publish","type":"post","link":"https:\/\/mirotti.eu\/index.php\/2020\/03\/01\/progettazione-di-un-software\/","title":{"rendered":"Progettazione di un software"},"content":{"rendered":"<p>Per scrivere software di qualit\u00e0 anche semplici \u00e8 necessario organizzarsi e non buttarsi sull&#8217;implementazione del codice. Questo permette di concentrare le risorse dove servono e ridurre al minimo le modifiche significative del codice una volta terminato il progetto.<\/p>\n<p>&nbsp;<\/p>\n<p>Il primo punto fondamentale della progettazione di un software \u00e8 la <strong>definizione con il cliente dei suoi requisiti<\/strong>. I requisiti possono essere <strong>funzionali<\/strong> oppure <strong>non-funzionali<\/strong>, e definiscono rispettivamente:<\/p>\n<ul>\n<li>I compiti che il programma deve svolgere (funzionali)<\/li>\n<li>Le sue caratteristiche di performance, usabilit\u00e0 e manutenibilit\u00e0 (non-funzionali)<\/li>\n<\/ul>\n<p>I requisiti vengono definiti dal cliente col supporto del tecnico informatico.<br \/>\nNei requisiti funzionali rientrano tutte le informazioni riguardo allo scopo del software. Partendo dal <strong>formato di Input dei dati<\/strong>, definendo il <strong>comportamento nei casi limite e nelle eccezioni<\/strong>, finendo con le <strong>modalit\u00e0 di salvataggio dei dati<\/strong> e <strong>l\u2019interazione con l\u2019utente<\/strong>.<br \/>\nNei requisiti non-funzionali rientrano tutti i vincoli di<\/p>\n<ul>\n<li><strong>performance<\/strong> richieste al software;<\/li>\n<li>il suo livello di <strong>manutenibilit\u00e0<\/strong> (\u00e8 quindi importante conoscere la vita stimata del programma e se sono previste delle modifiche);<\/li>\n<li>Che tipo di <strong>interazione con l\u2019utente<\/strong> \u00e8 prevista (CLI o GUI);<\/li>\n<li><strong>Dimensioni tipiche e massime degli input<\/strong>;<\/li>\n<li><strong>Piattaforme<\/strong> per cui il software deve essere scritto;<\/li>\n<li><strong>Tempo a disposizione per il suo sviluppo<\/strong> (per definire i costi);<\/li>\n<li><strong>Linguaggio di programmazione<\/strong>;<\/li>\n<li><strong>Algoritmi<\/strong> utilizzati per raggiungere il risultato;<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Un&#8217;altro passo fondamentale da portare avanti con la scrittura del codice \u00e8 il testing. Questo deve essere eseguito durante e dopo lo sviluppo del software. L\u2019 <strong>\u201c<em>Acceptance testing\u201d<\/em><\/strong> \u00e8 quello svolto dal cliente che determina se il software esegue o meno le operazioni richieste rientrando nei requisiti. Lo <strong><em>\u201cUnit testing\u201d<\/em><\/strong> invece riguarda le singole unit\u00e0 del software e serve allo sviluppatore per controllare ogni pezzo di codice.<br \/>\nIl testing pu\u00f2 essere:<\/p>\n<ul>\n<li><strong>Black-box<\/strong>: basato solo sui requisiti e di un software;<\/li>\n<li><strong>White-box<\/strong>: progettato osservando il codice;<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Definire i requisiti, e le modalit\u00e0 di testing permette anche di stimare correttamente il costo di un software in termini di ore di lavoro per svilupparlo; dunque definire le tempistiche in cui questo software sar\u00e0 pronto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Per scrivere software di qualit\u00e0 anche semplici \u00e8 necessario organizzarsi e non buttarsi sull&#8217;implementazione del codice. Questo permette di concentrare le risorse dove servono e ridurre al minimo le modifiche significative del codice una volta terminato il progetto. &nbsp; Il primo punto fondamentale della progettazione di un software \u00e8 la definizione con il cliente dei [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/comments?post=273"}],"version-history":[{"count":1,"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/posts\/273\/revisions"}],"predecessor-version":[{"id":274,"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/posts\/273\/revisions\/274"}],"wp:attachment":[{"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/media?parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/categories?post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mirotti.eu\/index.php\/wp-json\/wp\/v2\/tags?post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}