<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-825917476334036418</atom:id><lastBuildDate>Mon, 16 Apr 2012 02:00:52 +0000</lastBuildDate><category>How to e bug</category><category>Sistemi Distribuiti</category><category>Ingegneria del software</category><category>Basi Teoriche INF</category><category>Le Nostre "Chattate"</category><category>Multimedialità e Disegno</category><category>Softpedia</category><category>Amministrazione dei Sistemi Open Source</category><category>Programmazione</category><category>Sistemi Operativi</category><category>Reti di Calcolatori</category><category>ComputerPedia</category><category>Algoritmi</category><category>Fuori Categoria</category><category>Basi di Dati</category><category>Calcolo Scientifico</category><title>ComputerScience&amp;Co</title><description>Il blog dedicato all'Informatica,Ingegneria del Software,Progettazione,Architettura HD e SF, Programmazione,Amministrazione,Consulenza,Reti,Algoritmi,Sicurezza ed altro</description><link>http://computerscienceeco.blogspot.com/</link><managingEditor>noreply@blogger.com (Daniele Santamaria)</managingEditor><generator>Blogger</generator><openSearch:totalResults>148</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Computerscienceco" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="computerscienceco" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>Il blog dedicato all'Informatica,Ingegneria del Software,Progettazione,Architettura HD e SF, Programmazione,Amministrazione,Consulenza,Reti,Algoritmi,Sicurezza ed altro</itunes:subtitle><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-7526551297214167416</guid><pubDate>Mon, 09 Apr 2012 09:55:00 +0000</pubDate><atom:updated>2012-04-09T11:55:00.033+02:00</atom:updated><title>Androidiani</title><description>Vinci un HTC Evo 3D con Androidiani.com&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.androidiani.com/il-meglio-della-settimana-android/vinci-un-htc-evo-3d-con-androidiani-com-94230#more-94230"&gt;http://www.androidiani.com/il-meglio-della-settimana-android/vinci-un-htc-evo-3d-con-androidiani-com-94230#more-94230&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-7526551297214167416?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2012/04/androidiani.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-6251509418464386936</guid><pubDate>Fri, 28 Oct 2011 08:04:00 +0000</pubDate><atom:updated>2011-10-28T10:04:37.827+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Esempi di Programmazione in NVIDIA CUDA</title><description>Esempi di programmazione in CUDA.&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//CUDA.rar"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-6251509418464386936?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2011/10/esempi-di-programmazione-in-nvidia-cuda.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//CUDA.rar" length="3007457" type="application/x-rar" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//CUDA.rar" fileSize="3007457" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Esempi di programmazione in CUDA. Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Esempi di programmazione in CUDA. Download</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-3977104053829583840</guid><pubDate>Tue, 12 Apr 2011 15:22:00 +0000</pubDate><atom:updated>2011-04-12T17:34:16.062+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">How to e bug</category><title>TIM Olicard 100 su Ubuntu 10.10</title><description>Avendo acquistato la suddetta chiavetta, posto una guida per la corretta configurazione su ubuntu. La prima cosa da NON fare, qualora disponiate di una versione a 32 bit di ubuntu è di non installare il pacchetto presente nella chiavetta. La seconda cosa da non fare è collegare la chiavetta. Prima inseriamo un paio di regole per il corretto riconoscimento del modem. Da un terminale inseriamo prima:&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/udev/rules.d/10-OLIdatacarddisk.rules&lt;br /&gt;&lt;br /&gt;e inseriamo nel file il seguente contenuto.&lt;br /&gt;&lt;br /&gt;KERNEL=="sr[0-9]",SYSFS{idVendor}=="0b3c",SYSFS{idProduct}=="c700",SYMLINK="GKxdatacarddisk",RUN+="/usr/bin/eject -s %k"&lt;br /&gt;&lt;br /&gt;Questo permetterà di disattivare l'unita cd associata alla chiavetta (quella contenente i driver di installazione). Alla inoltre vengono associati altri dispositivi: ttyUSB0, ttyUSB1,ttyUSB2,ttyUSB3,ttyUSB4. Quello che interessa a noi è il primo, ttyUSB0. Tuttavia è possibile, specialmente se disponete di un pc con più di un core, che ttyUSB0 non venga registrato come modem, registrando al suo posto una tra ttyUSB2 e ttyUSB3. In questo caso da terminale digitiamo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/udev/rules.d/11-OLIdatacardmodules.rules&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e inseriamo nel file il seguente contenuto:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KERNEL=="ttyUSB[23]",ACTION=="add",SYSFS{idVendor}=="0b3c",SYSFS{idProduct}=="c000",RUN+="/bin/sleep 2"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se disponiamo di un pc multicore. In ogni caso dobbiamo sempre inserire la seguente riga nello stesso file:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SYSFS{idVendor}=="0b3c",SYSFS{idProduct}=="c000",RUN+="/sbin/modprobe usbserial vendor=0x0b3c product=0xc000"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Che ci permetterà di riconoscere il modem. A questo punto riavviamo e, a sistema completamente carico, inseriamo la chiavetta. Da Network Manager configuriamo una nuova connessione a banda larga mobile (il nostro dispositivo sarà indicato come "0b3c DataCard Device". A questo punto potremmo usare la nuova connessione per collegarci a internet. Se per caso non dovesse connettersi ( verrà mostrato il messaggio "si è ora disconnessi dalla rete") apriamo un terminale e digitiamo:&lt;br /&gt;&lt;br /&gt;sudo gedit /var/log/messages&lt;br /&gt;&lt;br /&gt;Diamo un'occhiata al log file e assicuriamoci che siano presenti delle voci simili alle seguenti:&lt;br /&gt;&lt;br /&gt;usb 2-1.1: generic converter now attached to ttyUSB0&lt;br /&gt;usbserial_generic 2-1.1:1.1: generic converter detected&lt;br /&gt;usb 2-1.1: generic converter now attached to ttyUSB1&lt;br /&gt;usbserial_generic 2-1.1:1.2: generic converter detected&lt;br /&gt;usb 2-1.1: generic converter now attached to ttyUSB2&lt;br /&gt;usbserial_generic 2-1.1:1.3: generic converter detected&lt;br /&gt;usb 2-1.1: generic converter now attached to ttyUSB3&lt;br /&gt;usbserial_generic 2-1.1:1.4: generic converter detected&lt;br /&gt;usb 2-1.1: generic converter now attached to ttyUSB4&lt;br /&gt;usbcore: registered new interface driver usbserial_generic&lt;br /&gt;usbserial: USB Serial Driver coreswitched to 0b3c:c000 (: DataCard Device)&lt;br /&gt;&lt;br /&gt;e le seguenti voce nel momento in cui tentiamo di connetterci:&lt;br /&gt;&lt;br /&gt;Using interface ppp0&lt;br /&gt;Connect: ppp0 &amp;lt;--&amp;gt; /dev/ttyUSB0&lt;br /&gt;&lt;br /&gt;Se in quest'ultima riga, al posto di USB0 appare USB2 o USB3, assicuriamo che il secondo file sia stato creato nel modo corretto (controlliamo bene i doppi apici) ed eventualmente settiamo lo sleep ad un valore più alto (cambiando il 2 con 5 ad esempio).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-3977104053829583840?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2011/04/tim-olicard-100-su-ubuntu-1010.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-3675978480220633541</guid><pubDate>Mon, 11 Apr 2011 13:37:00 +0000</pubDate><atom:updated>2011-05-11T19:13:33.139+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>HighLighting Syntax per Cuda su Scite</title><description>Scaricare il file e sostituirlo a quello presente in Scite. Permette di evidenziare le keyword CUDA.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//cpp.properties"&gt;Download HSCS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aggiornato il 11/05/2011 ore 19.13.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-3675978480220633541?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2011/04/highlighting-syntax-per-cuda-su-scite.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//cpp.properties" length="22152" type="application/octet-stream" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//cpp.properties" fileSize="22152" type="application/octet-stream" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Scaricare il file e sostituirlo a quello presente in Scite. Permette di evidenziare le keyword CUDA. Download HSCS Aggiornato il 11/05/2011 ore 19.13.</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Scaricare il file e sostituirlo a quello presente in Scite. Permette di evidenziare le keyword CUDA. Download HSCS Aggiornato il 11/05/2011 ore 19.13.</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-2977960643109750825</guid><pubDate>Sat, 02 Apr 2011 19:42:00 +0000</pubDate><atom:updated>2011-06-04T10:40:52.186+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Il Semantic Web</title><description>La mia tesi di laurea: " I linguaggi del semantic web e applicazione per la catalogazione di reperti archeologici"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-2977960643109750825?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2011/04/il-semantic-web.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-751155336678220271</guid><pubDate>Thu, 02 Sep 2010 16:37:00 +0000</pubDate><atom:updated>2010-09-02T18:37:26.002+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Esempi WebProgramming</title><description>esempi svolti di web programming (JavaScript,AJAX,PHP).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//esempi_webProg.rar"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-751155336678220271?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/09/esempi-webprogramming.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>4</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//esempi_webProg.rar" length="926168" type="application/x-rar" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//esempi_webProg.rar" fileSize="926168" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>esempi svolti di web programming (JavaScript,AJAX,PHP). Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>esempi svolti di web programming (JavaScript,AJAX,PHP). Download</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-2103059596886062654</guid><pubDate>Sun, 29 Aug 2010 18:14:00 +0000</pubDate><atom:updated>2011-01-27T16:00:20.831+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ComputerPedia</category><title>N</title><description>&lt;b&gt;Namespace:&lt;/b&gt; lo spazio dei nomi è un contenitore logico al quale vengono assegnati degli elementi (identificatori). Un namespace è identificato da una URI. Gli elementi che appartengono al namespace hanno la seguente nomenclatura: la URI del namespace seguito da un separatore e &amp;nbsp;da un nome univoco &amp;nbsp;che identifica l'elemento (local name) per quel namespace . Nei linguaggi di programmazione un namespace è un contenitore logico di variabili.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-2103059596886062654?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/08/n.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-3698791353385246935</guid><pubDate>Fri, 27 Aug 2010 08:27:00 +0000</pubDate><atom:updated>2010-08-27T10:28:04.402+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Esercizi Svolti C#</title><description>Esercizi svolti sul linguaggio C# adatto a chi è nuovo del linguaggio(o della programmazione)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//esempiCSharp.zip"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-3698791353385246935?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/08/esercizi-svolti-c.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//esempiCSharp.zip" length="12630" type="application/zip x-zip" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//esempiCSharp.zip" fileSize="12630" type="application/zip x-zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Esercizi svolti sul linguaggio C# adatto a chi è nuovo del linguaggio(o della programmazione) Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Esercizi svolti sul linguaggio C# adatto a chi è nuovo del linguaggio(o della programmazione) Download</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-7154532654170203307</guid><pubDate>Sun, 04 Jul 2010 09:35:00 +0000</pubDate><atom:updated>2010-07-04T11:35:57.937+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Introduzione a XML</title><description>Introduzione a XML con esempi&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//XML_appunti.zip"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-7154532654170203307?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/07/introduzione-xml.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//XML_appunti.zip" length="132148" type="application/zip x-zip" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//XML_appunti.zip" fileSize="132148" type="application/zip x-zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Introduzione a XML con esempi Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Introduzione a XML con esempi Download</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-7035690186241099551</guid><pubDate>Fri, 02 Jul 2010 13:45:00 +0000</pubDate><atom:updated>2010-07-02T15:46:18.470+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Softpedia</category><title>ImageSoft</title><description>ImageSoft, un software di elaborazione di immagini digitali&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//ImageSoft%20final.rar"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-7035690186241099551?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/07/imagesoft.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//ImageSoft%20final.rar" length="57257" type="application/x-rar" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//ImageSoft%20final.rar" fileSize="57257" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>ImageSoft, un software di elaborazione di immagini digitali Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>ImageSoft, un software di elaborazione di immagini digitali Download</itunes:summary><itunes:keywords>Softpedia</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-8096284085019257242</guid><pubDate>Fri, 25 Jun 2010 17:03:00 +0000</pubDate><atom:updated>2010-06-25T19:04:16.225+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>introduzione ad Ajax-JSON</title><description>introduzione ad ajax e JSON con esempi&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//appunti_Ajax.rar"&gt;Download&amp;nbsp;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-8096284085019257242?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/06/introduzione-ad-ajax-json.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//appunti_Ajax.rar" length="106994" type="application/x-rar" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//appunti_Ajax.rar" fileSize="106994" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>introduzione ad ajax e JSON con esempi Download&amp;nbsp;</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>introduzione ad ajax e JSON con esempi Download&amp;nbsp;</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-3512956479112653554</guid><pubDate>Fri, 25 Jun 2010 17:02:00 +0000</pubDate><atom:updated>2010-06-25T19:04:16.226+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Introduzione a PHP</title><description>Introduzione a php con esempi&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//appunti_php.zip"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-3512956479112653554?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/06/introduzione-php.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//appunti_php.zip" length="36291" type="application/zip x-zip" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//appunti_php.zip" fileSize="36291" type="application/zip x-zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Introduzione a php con esempi Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Introduzione a php con esempi Download</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-4958225528324630549</guid><pubDate>Fri, 25 Jun 2010 17:01:00 +0000</pubDate><atom:updated>2010-06-25T19:04:16.226+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Introduzione a Javascript</title><description>introduzione a javascript con esempi.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484//appunti_javascript.zip"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-4958225528324630549?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/06/introduzione-javascript.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484//appunti_javascript.zip" length="41158" type="application/zip x-zip" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484//appunti_javascript.zip" fileSize="41158" type="application/zip x-zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>introduzione a javascript con esempi. Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>introduzione a javascript con esempi. Download</itunes:summary><itunes:keywords>Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-8980668197154742317</guid><pubDate>Wed, 26 May 2010 15:38:00 +0000</pubDate><atom:updated>2010-05-26T17:38:58.075+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Multimedialità e Disegno</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Esempi pratici su Java2D</title><description>Raccolta di codici sorgenti che mostrano come si realizzano interfaccie grafiche ed effetti su immagini in java.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484/esempi%20java2D.rar"&gt;Raccolta 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484/multimedia_anonimo.zip"&gt;&lt;br /&gt;Raccolta 2 by anonimo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ultima modifica 28/05/2009 ore 13.54&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-8980668197154742317?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2008/09/esempi-pratici-su-java2d.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484/esempi%20java2D.rar" length="1124234" type="application/x-rar" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484/esempi%20java2D.rar" fileSize="1124234" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Raccolta di codici sorgenti che mostrano come si realizzano interfaccie grafiche ed effetti su immagini in java. Raccolta 1 Raccolta 2 by anonimo Ultima modifica 28/05/2009 ore 13.54</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Raccolta di codici sorgenti che mostrano come si realizzano interfaccie grafiche ed effetti su immagini in java. Raccolta 1 Raccolta 2 by anonimo Ultima modifica 28/05/2009 ore 13.54</itunes:summary><itunes:keywords>Multimedialità e Disegno, Programmazione</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-3667856861682987098</guid><pubDate>Wed, 26 May 2010 15:33:00 +0000</pubDate><atom:updated>2010-05-26T17:33:31.281+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Multimedialità e Disegno</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><title>Utilizzo delle classi Java2D</title><description>Codici sorgenti che mostrano come si utilizzano le classi per il disegno di interfaccie grafiche in Java.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fileden.com/files/2008/5/25/1929484/esempio_interfacciaJava.rar"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-3667856861682987098?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2008/09/utilizzo-delle-classi-java2d.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-2894451629360358790</guid><pubDate>Sat, 10 Apr 2010 16:11:00 +0000</pubDate><atom:updated>2010-04-10T18:12:18.610+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>Metodi Formali nel Processo di Sviluppo del Software</title><description>&lt;div align="justify"&gt;I metodi formali nel processo di sviluppo del software permettono di creare una specifica più completa, uniforme e non ambigua rispetto alle metriche usate tradizionalmente e di ridurre il numero di errori. Tale specifica, basata su cognizioni matematiche, può essere dimostrata, corretta ed eseguita ad alto livello. In questo post ci occuperemo del metodo delle Abstract State Machine per l'analisi e il design del software. Il metodo ASM, permette di seguire il processo di sviluppo dalla raccolta dei requisiti fino all'implementazione, gestendo la dimensione del software, la sua complessità ed affidabilità, permette una modellazione di alto livello accurata, al livello di astrazione attraverso una catena modelli di sistema con livelli di astrazione via via sempre più raffinati. Contrariamente ad UML permette inoltre una maggiore accuratezza. L'Abstract State Machine è un modello di computazione espresso con una notazione rigorosa dal punto di vista matematico e rivolto alla pratica grazie alla sua comprensibilità. Si individuano diverse categorie di ASM: Le Basic ASM, basate su determinismo e parallelismo, idonee per programmi flat; Le Turbo ASM, basate su composizione sequenziale e iterazione, idonee per applicazioni con chiamate ricorsive; Le Multi-Agent ASM&amp;nbsp;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;(sincrone e asincrone) &lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;sono definite come un insieme di agenti che eseguono la loro ASM in parallelo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="justify"&gt;Le ABS consistono in un vocabolario &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;∑, un insieme di stati iniziali, un insieme di regole, un simbolo di regola distinto chiamato &lt;em&gt;"main rule" .&amp;nbsp;&lt;/em&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;Gli stati possono essere visti come delle memorie astratte; il vocabolario&amp;nbsp;&lt;/span&gt;  &lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;∑ è una collezione finita di simboli funzionali tali che:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;ogni simbolo ha una arietà, i nomi di funzione nullari vengono anche chiamati costanti.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;i simboli di funzione possono esseer statici ( undef, true, false)&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;oppure dinamici ( monitorati, condivisi, di output ecc)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;Uno stato S sul vocabolario &lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;∑&lt;/span&gt;  &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;è una coppia (D,I) dove D rappresenta il dominio e I la funzione di interpretazione dei simboli funzionali in &lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;∑&lt;/span&gt;. D è anche chiamato &lt;em&gt;"base set"&lt;/em&gt; dello stato, è possibile definire funzioni parziali, una relazione ha sempre valori true,false o undef, nelle applicazioni D viene spesso suddiviso in universi più piccoli. In uno stato i simboli di funzione e gli argomenti delle funzioni sono le locazioni di memoria mentre i valori delle funzioni sono i loro contenuti. Definiamo una "locazione" di uno stato S come una coppia costituita da un simbolo funzionale n-ario f e un insieme di n elementi (a1,...an)&amp;nbsp; del dominio D. Definiamo un aggiornamento per S, una coppia (l,v) &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;dove l è una locazione di S e v un elemento di D. Un insieme di aggiornamenti viene detto consistente se non ha aggiornamenti in collisione, ovvero se per ogni locazione l e tutti gli elementi u,w è vero che se (l,v),(l,w) appartengono all'insieme allora v=w. Se un insieme di aggiornamenti consistente U viene &lt;em&gt;"sparato&lt;/em&gt;" in un dato stato allora il risultato è un nuovo stato. In questo nuovo stato rimane inalterato il contenuto delle locazioni non considerate, mentre per ogni (l,v) in U il contenuto della locazione l nel nuovo stato sarà v. Se un insieme di aggiornamenti U consistente viene sparato in un nuovo stato S, il nuovo stato risultante S+U viene determinato univocamente.Le regole di transizione dell'ASM definiscono la sintassi del programma; interpretando il programma nello stato corrente viene determinato un insieme di aggiornamenti che sparati sullo stato corrente realizzano il nuovo stato. Le regole di transizione sono:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;strong&gt;skip&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt; ,regola di skip&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;strong&gt;f(s1,...sn) .= t&lt;/strong&gt; &amp;nbsp;,regola di Update.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;P &lt;strong&gt;par&lt;/strong&gt; Q &amp;nbsp; ,regola di Block.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;strong&gt;if&lt;/strong&gt; t&lt;strong&gt; then&lt;/strong&gt; P &lt;strong&gt;else&lt;/strong&gt; Q &amp;nbsp;,regola di Condition&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;strong&gt;let &lt;/strong&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;x=t &lt;strong&gt;in&lt;/strong&gt; P ,regola di Let&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;strong&gt;forall&lt;/strong&gt; x &lt;strong&gt;with&lt;/strong&gt; y &lt;strong&gt;do&lt;/strong&gt; P &lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&amp;nbsp;, regola di Forall&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;strong&gt;choose&lt;/strong&gt; x &lt;strong&gt;with&lt;/strong&gt; y &lt;strong&gt;do&lt;/strong&gt; P &amp;nbsp;,regola di Choose&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&amp;nbsp;Una &lt;em&gt;dichiarazione di regola&lt;/em&gt; per un simbolo di regola r di arietà n è una espressione r(x1,...xn)=P , dove P è una regola di transizione e x1,...xn sono le variabili libere di P. In una &lt;em&gt;chiamata ad una regola&lt;/em&gt; r(t1,...tn) le variabili xi vengono sostituite con i parametri ti.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;Le ASM non prevedono variabili globali. I parametri formali della testa sono le uniche variabili che hanno uno scope globale. Diciamo che una macchina M può fare una &lt;em&gt;mossa&lt;/em&gt; da uno stato S ad uno stato T e scriviamo &amp;nbsp; &amp;nbsp; S =&amp;gt; T se&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&amp;nbsp;se la main rule di M restituisce un insieme di aggiornamenti consistente U partendo dallo stato S e&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;T = S+U&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;Gli aggiornamenti in U vengono detti aggiornamenti interni ( per distinguerli dai possibili aggiornamenti di locazioni monitorate o condivise). T viene detto stato interno successivo. La &lt;em&gt;computazione&lt;/em&gt; di una ASM comincia nello stato iniziale, non appena viene compiuta una mossa la computazione procede richiedendo solo che le mosse dell'ambiente che aggiornano le locazioni monitorate e condivise producano uno stato nuovo per la mossa successiva. Se uno stato la macchina non può produrre un insieme di aggiornamenti consistente oppure non è in grado di produrre nessun insieme di aggiornamento lo stato viene definito l'ultimo della computazione.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt; &lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-2894451629360358790?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/04/metodi-formali-nel-processo-di-sviluppo.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-2207001432809520499</guid><pubDate>Tue, 30 Mar 2010 14:30:00 +0000</pubDate><atom:updated>2010-06-15T12:12:43.451+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>Il collaudo del software</title><description>&lt;div style="text-align: justify;"&gt;&lt;b&gt;1.0 Introduzione&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Prima di essere consegnato un software dovrebbe essere esente da bug. L'attività che mira a scovare i bug viene chiamata "collaudo". Il collaudo può essere condotto dagli stessi sviluppatori o da dei collaudatori esterni, dai clienti (alpha test) o dagli utenti finali (beta test). Il collaudo noto come "black box" mira a dimostrare la correttezza implementativa dei requisiti funzionali (funzioni errati o inesistenti, errori di interfaccia, errori di strutture dati o nei database esterni, errori di comportamento ecc). Solitamente, quando si parla di test sull'input si mira ad realizzare delle classi di equivalenza,ovvero dei gruppi che riunisco i possibili valori che possono essere passati, senza tentarli tutti. Il collaudo "white box" mira invece ad esaminare i cammini logici del software (ad esempio cosa succede quando tutti i cicli iterativi si chiudono ai casi limiti. Una tecnica di collaudo white box è stata proposta da Tom McCabe basata sulla costruzione di un "grafo di flusso" che rappresenti il flusso di controllo del programma. Lo scopo di questo test è far si che il programma esegua ogni istruzione,completi ogni ciclo iterativo, e valuti tutte le condizioni if/else (vedremo in dettaglio dopo). Un altra &amp;nbsp;tecnica white box è la matrice di adiacenza del grafo di flusso basata sulla costruzione di &amp;nbsp;una matrice rappresentante il flusso del programma i cui pesi (1,0) rappresentano la probabilità che un arco venga percorso. Ogni cella può inoltre essere interpretata&amp;nbsp; come il tempo di elaborazione necessario all'attraversamento di un arco e la quantità di memoria richiesta per farlo. Altre tecniche sono mirate esclusivamente a testare i cicli iterativi (Collaudo per cicli) o i costrutti di selezione (collaudo per condizioni). Vediamo adesso alcune categorie precise di difetti:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1.Esecuzione di un calcolo nella parte errata di un costrutto di controllo: il collaudo per cicli farà eseguire zero,una o più volte un loop per individuare l'errore.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;2.Loop Infinito: anche qui il collaudo per cicli può aiutare a scovare la causa di loop.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;3.Precondizioni per un algoritmo: ciò che deve essere fatto prima che il controllo passi ad uno specifico algoritmo può causare problemi durante l'esecuzione dell'algoritmo stesso. Il collaudo per condizioni può fare emergere il problema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;4.Null Conditions: quando viene passato un valore null il programma si blocca o si comporta anomalmente. Anche qui risulta utile il collaudo per condizioni e dei testi specifici per scovare eventuale istruzione che assegna il valore null.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;5.Off-by-one errors: Cicli eseguiti troppe volte o poche volte non producono i risultati attesi. La soluzione consiste in test mirati e collaudi per cicli.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;6.Errore di precedenza degli operatori: Soluzione basata sull'ispezione del codice e sul test dei micro-moduli.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;7.Algoritmi numerici: strutture dati o variabili troppo piccole per contenere i dati necessari: Soluzione basata sul testare l'input con valori grandi o grandi mole di dati.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;8.Errori di parsing: passare al programma ciò che non si aspetta. Soluzione basata sul test dei micromoduli e dell'input.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;9.Linguaggi orientati agli oggetti: In questo caso bisogna usare combinazioni di collaudi white box e black box, test mirati delle procedure e dei metodi, test sui micromoduli. Bisogna collaudare anche l'interazione tra le varie classi, basandosi anche sui modelli comportamentali per meglio comprendere come esse interagiscono. Solitamente si procede testando le singole classi e sistematicamente si aggregano altre classi per essere testate insieme (soluzione bottom-up) o in alternativa si testano prima insiemi di classi per poi passare al test delle singole classi (soluzione top-down). Se il software ha subito modifiche,gli stessi test condotti nella versione precedente vanno rieseguiti per assicurare la stabilità e la correttezza delle modifiche stesse. Se si ricorre a collaudatori esterni bisogna fornire una descrizione dettagliata del test da effettuare, dello stato iniziale e finale del sistema, dei risultati attesi. Inoltre il collaudatore non deve essere influenzato dalla struttura interna del software e non deve essere a conoscenza dei meccanismi interni altrimenti la sua capacità di operare potrebbe subirne influenza.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.0 Grafi di flusso e complessità ciclomatica&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Il grafo è una struttura che ben si adatta a rappresentare il flusso del software. Per stimare il numero massimo di collaudi da effettuare per testare ogni istruzione del programma (cioè eseguire almeno una volta ogni singola istruzione, il metodo non comprende test sugli input!) bisogna calcolare la complessità ciclomatica. La complessità ciclomatica è &amp;nbsp;il numero di cammini linearmente indipendenti nel grafo). Esistono diversi metodi per effettuare il calcolo; sia V(G) la complessità ciclomatica, N il numero di nodi, E gli archi, P le componenti connesse. V(G) sarà allora dato da&lt;br /&gt;&lt;br /&gt;1) V(G)=R=E-N+2 ; in questo caso V(G)=R cioè la complessità ciclomatica è uguale al numero delle regioni (cioè le zone che gli archi e i nodi formano).&lt;br /&gt;2) V(G)=E-N+2P;&lt;br /&gt;3)V(G)= &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;π+1; &amp;nbsp;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;π è il numero di predicati (cicli for-while e if-else,AND,OR ecc).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;Costruito il grafo e calcolata la complessità ciclomatica è possibile costruire i casi di test che seguano i cammini linearmente indipendenti del grafo.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;3.0 Collaudo d'interclasse e di integrazione&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;E' fondamentale testare i componenti dal punto di vista dell'interfacciamento con altre componenti. Solitamente questa categoria di test viene scritta a partire dai modelli comportamentali. Dopo aver testato i componenti singolarmente questi devono essere aggregati per ottenere il software finale, questa fase prende il nome di integrazione delle componenti. Esistono tre approcci ai test di integrazione:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Collaudo:BingBang; si costruisce tutto il software e poi si testa nella sua interezza.E' una tecnica sconsigliata il più delle volte perchè non mette in evidenza gli errori meno visibili.&lt;/li&gt;&lt;li&gt;Collaudo Incrementale: le componenti vengono aggregate poco per volta (solitamente due componenti per volta) e la componente risultante viene testata singolarmente, poi si procede iterativamente. Può essere Top-Down ( si parte dal modulo principale al quale vengono aggregate via via le componenti di basso livello); Bottom-Up: si parte dalle componenti di basso livello e si termina con il modulo principale.&lt;/li&gt;&lt;li&gt;Collaudo per Regressione: questo genere di collaudo avviene sempre dopo il collaudo di tipo 1. o 2. e mai da solo. Consiste nel ripetere test svolti durante le prime fasi del collaudo (test ai singoli componenti o test di aggregazione) per confermare che le modifiche effettuate per l'integrazione non abbiano ottenuto effetti indesiderati.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;Quando un test viene documentato vanno inserite le seguente informazioni:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ID e titolo descrittivo del test; va indicata l'importanza del test, il sistema,sottosistema o modulo testato deve essere chiaramente indicato facendo riferimento anche ai documenti di specifica dei requisiti e architetturale.&lt;/li&gt;&lt;li&gt;Istruzioni del collaudatore: cosa e come fare, come mettere il sistema nello stato iniziale e quale input fornire.&lt;/li&gt;&lt;li&gt;Risultato Atteso: cosa ci si aspetta dal test, ovvero come si dovrebbe comportare il sistema se non vi fossero bug o errori.&lt;/li&gt;&lt;li&gt;CleanUp: come arrestare il sistema dopo il test o riportarlo allo stato precedente all'esecuzione del test.&lt;/li&gt;&lt;li&gt;Risultato: il risultato del test e se l'esito è negativo riportare l'errore (o il bug).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-2207001432809520499?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/il-collaudo-del-software.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-4607554272524920288</guid><pubDate>Mon, 29 Mar 2010 20:20:00 +0000</pubDate><atom:updated>2010-03-29T22:26:16.331+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>La Seconda Fase del Progetto:Modello Analitico e Progettuale.</title><description>&lt;strong&gt;1.0 La modellazione Analitica&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;La modellazione analitica prevede la revisione di tutti i requisiti (funzionali e non), la definizione degli scenari, degli attori, la modellazione del flusso dei dati, delle classi analitiche e della loro organizzazione, la modellazione comportamentale e la revisione dei diagrammi per verificarne la correttezza e la&amp;nbsp;precisione.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La modellazione basata sugli scenari permette di comprendere come l'utente interagisce con il sistema e di costruire dei modelli analitici&amp;nbsp; e progettuali in base alla specifica dei requisiti. Si utilizzano due tecniche:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;I casi d'uso: descrivono una specifica situazione in cui l'utente interagisce con il sistema, dal punto di vista di un attore ben definito.Un attore può essere una persona fisica o uno strumento che utilizza il sistema.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Diagramma di attività: affianca il caso d'uso fornendo una rappresentazione grafica del flusso di interazioni nella situazione specificata.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Diagramma SwimLane: rappresenta il flusso di attività di un caso d'uso permettendo di individuare l'attore o la classe analitica che ha responsabilità per l'azione descritta.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;La modellazione basata su classi permette di identificare le classi analitiche, gli attributi e le operazioni che definiscono il comportamento di un oggetto. Il modello comportamentale rappresenta invece come il sistema risponderà a stimoli o eventi esterni. Viene rappresentato mediante diagrammi di stato e di sequenza.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;strong&gt;2.0 Modellazione Progettuale&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La modellazione progettuale sfrutta il modello analitico selezionando una architettura appropriata per il software, crea le classi e le componenti del progetto, traducendo ogni descrizione di una classe analitica in una classe progettuale, definendo i metodi associati a ciascuna classe i problemi di ereditarietà, progetta ogni interfaccia necessaria per i sistemi o dispositivi esterni,l'interfaccia utente, specifica la sequenza di attività in base a gli scenari utente, crea un modello comportamentale dell'interfaccia, specifica gli algoritmi a un livello di astrazione basso, le strutture dati e revisiona ciascun componente. La modellazione progettuale deve essere una conseguenza diretta del modello analitico e&amp;nbsp;deve essere incentrata sull'architettura e sul design dei dati.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-4607554272524920288?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/la-seconda-fase-del-progettomodello.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-4903437516595689692</guid><pubDate>Mon, 29 Mar 2010 19:56:00 +0000</pubDate><atom:updated>2010-03-29T21:56:56.889+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>Design dell'interfaccia</title><description>&lt;div style="text-align: justify;"&gt;Una interfaccia è bene realizzata se essa risponde all'esigenze di coloro che la devono utilizzare. Solitamente essa deve essere&amp;nbsp; facile da imparare,semplice da usare e da capire, deve nascondere i meccanismi interni che la alimentano e deve essere uniforme e &amp;nbsp;in linea con le abitudini e le abilità dell'utente. Non Dovrebbe inoltre non fare uso intesivo della memoria principale. Per tali motivi bisogna prima individuare il tipo di utente destinatario (esperto, tecnico,impiegato ecc),&amp;nbsp;capire le sue necessità e le sue abitudini,comprendere l'ambiente in cui opera e le attività di cui si devono occupare. Bisogna inoltre capire se sono in grado di accedere a funzioni avanzate, se sono abili nell'uso della tastiera, dei tasti di scelta rapida e così via. Utilizzando queste informazioni si può produrre un disegno preliminare e fornire un primo prototipo. In base ai test prodotti e alla valutazione del cliente stesso, i vari prototipi possono essere sviluppati fino al raggiungimento del prodotto finale. Gli errori in cui si incappa spesso durante la realizzazione dell'interfaccia sono i seguenti:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Tempi di risposta eccessivi.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Menù e comandi poco intuitivi.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Errori nell'esecuzione dei comandi&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Scarsa accessibilità dell'applicazione.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Problemi di Internazionalizzazione.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Interfaccia poco intuitiva, a volte frustrante.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-4903437516595689692?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/design-dellinterfaccia.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-9070648077918234605</guid><pubDate>Mon, 29 Mar 2010 19:35:00 +0000</pubDate><atom:updated>2010-06-15T11:05:57.975+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>Gestione delle Configurazioni Software</title><description>&lt;div style="text-align: justify;"&gt;Il processo di gestione della configurazione software è un attività ausiliaria con lo scopo di riconoscere, gestire e &amp;nbsp;controllare il cambiamento nel&amp;nbsp; software informando gli interessati. La gestione deve godere di alcune proprietà:&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gestione delle versioni: ogni versione deve essere archiviata permettendo ai programmatori di fare il downgrade quando necessario.&lt;/li&gt;&lt;li&gt;Monitoraggio delle dipendenze: i cambimenti delle dipendenze devono essere archiviati.&lt;/li&gt;&lt;li&gt;Monitoraggio dei requisiti: i cambiamenti&amp;nbsp;nei requisiti devono essere opportunamente monitorati.&lt;/li&gt;&lt;li&gt;Gestione della configurazione: le configurazioni rappresentano rappresentano&amp;nbsp;specifici risultati del processo.&lt;/li&gt;&lt;li&gt;Audit Trail: bisogna tener conto di chi,quando e perchè ha portato ad un cambiamento.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Un sistema per il controllo delle versioni deve prevedere un database di progetto per catalogare tutti gli oggetti di configurazione rilevanti, deve permettere di gestire le diverse versione consentendo all'ingegnere del software di raccogliere tutti gli oggetti al fine di costruire una specifica versione del software. Anche i bug presenti nelle diversi versioni vanno monitorati. Il controllo di cambiamento prevede diverse fasi. Una volta riconosciuta l'esigenza di una modifica e approvata si assegna del personale al compito, vengono raccolte le informazioni dagli archivi, si procede alla modifica e ai testi, si registrano e si archiviano i nuovi cambiamenti. Il diagramma di flusso è il seguente:&lt;br /&gt;&lt;br /&gt;1.Richiesta di modifica dall’utente&lt;br /&gt;2.Lo sviluppatore valuta la richiesta&lt;br /&gt;3.Si produce una relazione&lt;br /&gt;4.L’autorità di controllo delle modifiche decide&lt;br /&gt;5.a.La richiesta è posta in coda &amp;nbsp; oppure&lt;br /&gt;5.b.Richiesta respinta e l’utente viene informato.&lt;br /&gt;6.Si riconosce l’esigenza di una modifica&lt;br /&gt;7.Assegnazione del personale agli SCI&lt;br /&gt;8.Estrazione degli SCI dall’archivio&lt;br /&gt;9.Modifica&lt;br /&gt;10.Revisione del cambiamento&lt;br /&gt;11.Documento acquisito per il collaudo&lt;br /&gt;12.Esecuzione SQA e collaudo&lt;br /&gt;13.Ratifica delle modifiche da iincludere nella nuova versione&lt;br /&gt;14.Costruzione della nuova versione del software&lt;br /&gt;15.Revisione per tutti gli elementi della configurazione&lt;br /&gt;16.Inserimento delle modifiche nella nuova versione&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-9070648077918234605?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/gestione-delle-configurazioni-software.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-8586081958643334474</guid><pubDate>Sat, 27 Mar 2010 16:08:00 +0000</pubDate><atom:updated>2010-03-27T17:23:30.246+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>Piano di Gestione della Qualità</title><description>&lt;div style="text-align: justify;"&gt;&lt;strong&gt;1.0 Introduzione&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il &amp;nbsp;piano di gestione della qualità ha lo scopo di pianificare,controllare e migliorare la qualità del prodotto. Per qualità generalmente si indica la conformità del prodotto ai requisiti, alle pratiche e alle&amp;nbsp;politiche&amp;nbsp;stabilite e alle proprietà che i consumatori percepiscono essere di alta qualità. La fase di pianificazione prevede di stabilire le intenzione e l'atteggiamento del team riguardo la qualità del prodotto. I fattori di qualità, individuati da McCall sono:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Correttezza: grado di aderenza del software alle specifiche &lt;/li&gt;&lt;li&gt;Efficienza: quantità di risorse e di codice necessarie perché il programma adempia alla propria funzione&lt;/li&gt;&lt;li&gt;Affidabilità: grado con cui un programma svolge la propria funzione con&amp;nbsp;la precisione richiesta. (tolleranza all’errore, accuratezza, semplicità)&lt;/li&gt;&lt;li&gt;Integrità: grado con cui è possibile controllare l’accesso al software o ai dati da parte di persone non autorizzate. (controllo e valutazione degli accessi)&lt;/li&gt;&lt;li&gt;Facilità d’uso: indical’impegno necessario per imparare a usare il software, a prepararne i dati d’ingresso e a interpretarne i dati d’uscita. &lt;/li&gt;&lt;li&gt;Facilità di manutenzione: misura l’impegno necessario per localizzare e correggere un errore nel programma &lt;/li&gt;&lt;li&gt;Flessibilità: misura l’impegno necessario per modificare il programma&lt;/li&gt;&lt;li&gt;Collaudabilità: misura l’impegno necessario per stabilire, tramite collaudo, se un programma svolge la funzione prevista &lt;/li&gt;&lt;li&gt;Portabilità: misura l’impegno richiesto per trasportare un programma da un ambiente hardware o software, a un altro. &lt;/li&gt;&lt;li&gt;Riutilizzo: misura il grado con cui un programma (o alcune sue parti) può essere utilizzato di nuovo in altre applicazioni.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Interoperabilità: misura l’impegno richiesto a far interagire il programma con altri programmi &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;Un buon piano di qualità inoltre deve includere anche le seguenti attività:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Selezione delle pratiche per la garanzia di qualità: identificazione di tool specifici e tecniche per il monitoraggio della qualità dello sviluppo del software. &lt;/li&gt;&lt;li&gt;Valutazione del piano di progetto software: è una delle revisioni più importanti e difficili da condurre&lt;/li&gt;&lt;li&gt;&amp;nbsp;Accettazione della valutazione dei requisiti:&amp;nbsp; definisce le caratteristiche di un prodotto accettabile.4. &lt;/li&gt;&lt;li&gt;Valutazione della specifica: valuta se le specifiche sono conformi alle attese.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Valutazione del processo di design:&amp;nbsp; valuta se il processo di design è conforme alle attese6. &lt;/li&gt;&lt;li&gt;Valutazione delle pratiche di codifica: come sopra per la codifica.&lt;/li&gt;&lt;li&gt;Valutazione del processo di test ed integrazione:&amp;nbsp;come sopra per test ed integrazione.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Lo scopo delle revisione è individuare gli errore nel processo di sviluppo del software e bloccarne la propagazione. Solitamente il team si riunisce in piccoli gruppi per analizzare parti specifiche e relativamente piccole del software al fine di effettuarne una valutazione. Tutte le revisioni verranno registrate e documentate. Disponendo di una descrizione rigorosa dei requisiti è possibili ricorrere a dimostrazioni formali per verificarne la correttezza. Le revisioni formali sono note con il nome di &lt;strong&gt;Quality Gate.&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;strong&gt;2.0 Quality Gate&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il processo di verifica è basato su checklist (risposte vero o falso su domande standard). Per il processo di sviluppo la checklist è:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;La portata del software è definita in maniera chiara?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;La terminologia è ben definita?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Le risorse sono ragionevoli? Sono disponibili?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;L’analisi dei rischi è stata fatta? E il piano contenimento e/o prevenzione?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I compiti sono stati definiti, programmati e allocati?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Le stime di costo e programmazione sono ragionevoli?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;E’ stato applicato uno standard nella stesura della documentazione?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Come sarà controllato il piano del progetto?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;E’ necessario un ambiente per lo sviluppo del software?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;Come è stata condotta la revisione?&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Per i requisiti software invece:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Tutte le funzioni sono state definite, descritte, vincolate in maniera non ambigua?&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Per ogni requisito funzionale è stato introdotto anche un requisito di performance, e il requisito funzionale è testabile?&amp;nbsp;&lt;/li&gt;&lt;li&gt;Gli input e gli output sono stati tutti definiti in termini di range, protocolli,.. in modo che il designer del software possa essere soddisfatto?&lt;/li&gt;&lt;li&gt;E’ stato fatto un piano di test e di integrazione? I criteri di accettazione dei test sono stati già negoziati con il cliente?&lt;/li&gt;&lt;li&gt;Lo studio di fattibilità è completo?&lt;/li&gt;&lt;li&gt;L’analisi dei rischi è stata iniziata/completata?&lt;/li&gt;&lt;li&gt;Sono stati applicati degli standard alla documentazione? &lt;/li&gt;&lt;/ul&gt;Per la specifica architetturale:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Ci sono ancora dei requisiti aperti? Se sì, si progetta di chiuderli?&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;Il partizionamento è completo e documentato?&lt;/li&gt;&lt;li&gt;Tutte le interfacce hardware e software interne ed esterne sono state definite adeguatamente in termini di protocolli, range ecc..?&amp;nbsp;&lt;/li&gt;&lt;li&gt;Il modello dei dati è stato completamente e accuratamente definito?&lt;/li&gt;&lt;li&gt;I requisiti software di basso livello sono tracciati nei requisiti software di alto livello in maniera completa ed accurata?&lt;/li&gt;&lt;li&gt;Possono essere soddisfatti i requisiti non funzionali?&lt;/li&gt;&lt;li&gt;Il partizionamento soddisfa i criteri di modularità?&lt;/li&gt;&lt;li&gt;Sono state definite le interfacce fra i moduli?&lt;/li&gt;&lt;li&gt;Il design della struttura dati è consistente con i requisiti dei dati?&lt;/li&gt;&lt;li&gt;Manutenibilità e flessibilità sono attributi di qualità considerati nel design?&lt;/li&gt;&lt;li&gt;Quali attributi di qualità sono applicati?&lt;/li&gt;&lt;li&gt;Gli standard di documentazione sono stati raggiunti?&lt;/li&gt;&lt;li&gt;Sono stati applicati degli standard nella pseudocodifica? Se sì, come sono stati applicati?&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;Per la specifica di dettaglio:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Sono stati tenuti in considerazione tutti i requisiti?&lt;/li&gt;&lt;li&gt;La specifica dettagliata è consistente con la precedente?&lt;/li&gt;&lt;li&gt;Lo pseudocodice o i diagrammi sono stati correttamente trasformati in codice? Hanno soddisfatto gli standard richiesti?&amp;nbsp;&lt;/li&gt;&lt;li&gt;Sono stati soddisfatti gli standard per la documentazione?&lt;/li&gt;&lt;li&gt;I commenti soddisfano degli standard?&lt;/li&gt;&lt;li&gt;I tipi di dati e la dichiarazione dei dati è corretta?&lt;/li&gt;&lt;li&gt;I dati sono corretti?&lt;/li&gt;&lt;li&gt;Sono stati tenuti in conto gli attributi di qualità?&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;Per il testing&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;I criteri di accettazione dei test sono stati definiti, negoziati ed accettati? Le revisioni sono state fatte come richiesto?&lt;/div&gt;&lt;/li&gt;&lt;li&gt;I piani di test sono stati preparati e revisionati?&lt;/li&gt;&lt;li&gt;L’attività di testing è stata presa in considerazione in altre fasi di sviluppo?&lt;/li&gt;&lt;li&gt;Gli ambienti di test (strumenti e risorse) sono definiti in maniera adeguata e disponibili quando necessario?&lt;/li&gt;&lt;li&gt;La tracciabilità fra requisiti e test di conferma è stata completata e corretta?&lt;/li&gt;&lt;li&gt;Le funzioni principali sono confermate presto nella fase di testing?&lt;/li&gt;&lt;li&gt;Sono stati definiti degli standard per condurre i test? I tester sono stati sottoposti a training?&lt;/li&gt;&lt;li&gt;Sono stati definiti test limite e test di stress?&lt;/li&gt;&lt;li&gt;Il testing è fatto in maniera completa?&lt;/li&gt;&lt;li&gt;La gestione degli errori e delle eccezioni è stata testata?&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&amp;nbsp; Per la valutazione della revisione: &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il materiale è completo? &lt;/li&gt;&lt;li&gt;Il materiale è stato distribuito in tempo?&lt;/li&gt;&lt;li&gt;Gli standard applicabili sono disponibili?&lt;/li&gt;&lt;li&gt;I partecipanti erano preparati a contribuire?&lt;/li&gt;&lt;li&gt;La valutazione è iniziata in tempo?&lt;/li&gt;&lt;li&gt;La revisione è stata condotta attraverso protocolli standard?&lt;/li&gt;&lt;li&gt;E’ stato identificato un certo numero di difetti?&lt;/li&gt;&lt;li&gt;Sono stati riportati gli attributi di qualità?&lt;/li&gt;&lt;li&gt;Si e’ cominciato a tracciare i difetti?&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;strong&gt;&amp;nbsp;3.0 Capability Maturity Model&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il Capability Maturity Model&amp;nbsp; è il più famoso modello di valutazione e miglioramento.Ogni processo è caratterizzato da tre proprietà: La capability, l'insieme dei risultati che un processo consente di conseguire; performance, la misura dei risultati effettivi ottenuti nell'applicazione del processo; maturity,l’efficacia del processo e della estensione e precisione con cui le fasi e le attività dello stesso sono esplicitamente definite, gestite, misurate e controllate. Sono individuati 5 livelli di maturità: iniziale,ripetibile,definito,controllato e ottimizzato. Ad ogni livello è associata una previsione di performance. Quando il livello è iniziale, il processo di produzione è instabile e disorganizzato per cui nulla è prevedibile.Al livello ripetibile, esiste già una struttura in grado di gestire costi,scheduling delle attività ed i cambimenti che vengono apportati. Al livello definito, il processo è ben fondato su metodologie e tecniche di ingegneria del software sia per quanto riguarda gli aspetti operativi che quelli manageriali. Al livello gestito, il processo produttivo un dettagliato piano di misura per il controllo della qualità del processo e del prodotto. Al livello ottimizzato,è stata istituzionalizzata una politica di gestione della qualità. Il CMM prevede inoltre per l'accertamento&amp;nbsp;una checklist da tarare ed adottare in base alle realtà aziendali.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-8586081958643334474?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/piano-di-gestione-della-qualita.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-9218321464347289014</guid><pubDate>Wed, 24 Mar 2010 10:20:00 +0000</pubDate><atom:updated>2010-03-24T11:23:30.056+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>Il Piano di Progetto</title><description>&lt;div style="text-align: justify;"&gt;&lt;strong&gt;1.0 Generalità&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il piano di progetto è un documento versionato redatto dal project manager allo scopo di stimare i tempi. i costi e le risorse necessari alla realizzazione del progetto. Si divide in due parti, &lt;strong&gt;La Pianificazione&lt;/strong&gt;, per pianificare le attività future, e&lt;strong&gt; La Consuntivazione&lt;/strong&gt;,per avere un riscontro tra le attività pianificate e quelle effettuate. Il piano di progetto comprende:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Definizione degli Obbiettivi.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Analisi dei Rischi&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Descrizione del modello di processo di sviluppo.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Suddivisioni in milestone.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Attività di progetto.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Stima dei costi.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Consunto di attività.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Chiameremo &lt;strong&gt;Attività&lt;/strong&gt; un lavoro svolto nel progetto, con una durata e un costo ben preciso. Chiameremo invece &lt;strong&gt;Deliverable&lt;/strong&gt; un risultato che deve essere prodotto per completare un progetto o una sua parte.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;strong&gt;2.0 Work BreakDown Strucutre (WBS)&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il WBS è un&amp;nbsp; di elementi del progetto&amp;nbsp; che definisce i limiti complessivi del progetto, ovvero tutto ciò che è dentro i limiti del progetto. E' rappresentato da una struttura gerarchica in cui ogni livello discendente rappresenta una descrizione più dettagliata dell'elemento del progetto. Per costruire un WBS si parte dai deliverable principali, che nello schema rappresentano la radice. Se per il deliverable non siamo in grado di stimare costo e durata, si passa a un successivo&amp;nbsp;livello di dettaglio, rappresentato da un discendente. Ad ogni elemento viene associato un identificatore univoco, gli elementi più in basso nella gerarchia sono chiamati work packages. Le attività che devono essere eseguite per produrre i deliverable vanno identificate e documentate. Ogni attività è descritta da risorse utilizzate&amp;nbsp;e relativi documenti in input, durata (in giorni), costi&amp;nbsp;e realtivi documenti in output, legami di precedenza con altre attività e figura responsabile. Per ogni attività va individuata la dipendenza con altre attività. Si indiviudano tre tipi di dipendenze. Le dipendenze obbligatorie, inerenti alla natura del lavoro che deve essere fatto; le dipendenze discrezionali, definite ed imposte dal team. Questo tipo di dipendenze va documento con attenzione in un documento chiamato Best Practices;le dipendeze esterne, che coinvolgono attività di progetto e non. Le dipendenze vengono rappresentate con un diagramama di precedenza, composto da noti collegati da frecce, in cui&amp;nbsp; i nodi collegati sono le attività legate da dipendenza e la freccia rappresenta il verso della dipendenza (chi dipende da chi). Calcolare il tempo previsto per il completamento del progetto è una operazione affidata a membri con alta esperienza. Solitamente si analizza il percorso critico del progetto (l'attività con minore flessibità di stima) e si sommano i tempi di tutte le attività. Le attività e i relativi tempi sono illustrati graficamente in uno schema chiamato Slack Time. Le attività possono sollevare conflitti nei casi in cui i loro slack time stessi sono in conflitto. Solitamente si tenta di realizzare le attività con slack maggiore, si ridistribuiscono le risorse o si frammentano le attività.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;strong&gt;3.0 Modello COCOMO&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il modello COCOMO (Constructive Cost Model) è un metodo di stima dei costi di sviluppo di un software. Esso prevede che il processo di sviluppo del software sia basato sul modello a cascata. Esso comprende tre diversi livelli di stima. Stima di base, approssimata,veloce,scarna di dettagli limitata dalla mancanza di&amp;nbsp;informazioni più precise circa il&amp;nbsp;progetto; Stima intermedia maggiormente accurate e dettagliate, usufruisce di informazioni quali ambiente di sviluppo e&amp;nbsp;altri parametri;Stima Dettagliata, fornisce la stima migliore in quanto usufruisce di tutte le informazioni sul progetto e sulle sue fasi.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il modello CoCoMo di base distingue tre modalità di sviluppo del software: Organic mode, il team di sviluppo consiste di un numero piccolo di sviluppatori di esperienza che hanno familiarità con l’area di applicazione e con l’ambiente di sviluppo,inoltre e dimensioni del prodotto sono&amp;nbsp; piccole o medie; semidetached mode, il team di sviluppo consiste di un misto di persone con e senza esperienza, che lavorano insieme da poco,la dimensione del prodotto può essere media o grande;Embedded mode,richiede un elevata&amp;nbsp;quantità di risorse,il prodotto ha requisiti stringenti riguardo ad affidabilità, performance,schedule ed interfacce,la dimensione del prodotto è &amp;nbsp;media o grande e generalmente complessa. Il modello CoCoMo intermedio mantiene le stesse distinzioni del modello di base ma introduci 15 nuovi Cost Driver. Il modello dettagliato invece tiene conto dei Cost Drivers del modello precedente ma in funzione delle varie fasi di sviluppo del software. Negli anni '90 fu introdotto il modello CoCoMo II per adattarsi ai nuovi processi di sviluppo come riuso, composizione e paradigmi orientati agli oggetti.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-9218321464347289014?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/il-piano-di-progetto.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-2282703056222090957</guid><pubDate>Wed, 17 Mar 2010 16:23:00 +0000</pubDate><atom:updated>2010-03-17T18:21:40.285+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ingegneria del software</category><title>La prima fase del progetto: L'Analisi</title><description>&lt;b&gt;1.0 L'analisi del Dominio&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Studiare e comprendere bene il dominio del problema da affrontare costituisce il primo passo &amp;nbsp;verso lo studio della fattibilità e della comprensione dei requisiti. Le informazioni necessarie a tale scopo posso essere acquisite in modi diversi, interviste a clienti, documentazioni presenti o di progetti passati, soluzioni già note a problemi affrontati in passato. L'analisi del dominio è un documento vitale per la stesura del documento successivo, l'analisi dei requisiti, solitamente è versionato ma può essere mantenuto in forma unica e viene diviso in aree:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&amp;nbsp;Visione generale sulla società committente, breve descrizione del prodotto richiesto, ecc&lt;br /&gt;&amp;nbsp;Glossario (definizioni, acronimi, abbreviazioni)&lt;br /&gt;&amp;nbsp;Conoscenze generali sul dominio&lt;br /&gt;&amp;nbsp;Caratteristiche dei clienti e degli utenti&lt;br /&gt;&amp;nbsp;L’ambiente di utilizzo&lt;br /&gt;&amp;nbsp;Compiti e procedure attualmente eseguiti&lt;br /&gt;&amp;nbsp;Software competitori&lt;br /&gt;&amp;nbsp;Similarità ad altri domini&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.0 Verso i requisiti&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Il passo successivo è stabilire la portata del software., ovvero il contesto in cui si inserisce il software, i dati trattati (input e output), come trasforma l'input in output (funzionalità) e con quali prestazioni. E' una fase critica in quanto può portare al fallimento del prodotto se il team non comprende realmente le esigenze del cliente, e quindi la portata del software è stata mal elaborata, le funzionalità sono state mal elaborate e vanno quindi modificate diverse volte nel corso della realizzazione del progetto. Barry Boehm &amp;nbsp;chiamò W5H2 le sette domandi da porsi in fase di stesura della portata. Esse sono:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Perchè il sistema deve essere realizzato ?&lt;/li&gt;&lt;li&gt;Cosa deve fare ?&lt;/li&gt;&lt;li&gt;Quando sarà completato ?&lt;/li&gt;&lt;li&gt;Chi sono i responsabili ?&lt;/li&gt;&lt;li&gt;Come sono organizzati ?&lt;/li&gt;&lt;li&gt;Come sarà fatto il lavoro dal punto di vista tecnico e manageriale ?&lt;/li&gt;&lt;li&gt;Quante e quali risorse richiede ?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;3.0 L'analisi dei Requisiti&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Individuiamo due tipi di requisiti. I requisiti funzionali, che rappresentano le caratteristiche che ci si aspetta dal prodotto, senza i quali lo stesso prodotto non ha senso di esistere, ed i requisiti non funzionali, ovvero tutti i requisiti relativi a tempi di consegna (requisiti temporali), budget economico a disposizione del cliente (requisiti economici), disponibilità del servizio offerto dal prodotto, efficienza e carichi elaborativi (requisiti di servizio), responsabilità organizzativa (requisiti organizzativi), architettura, espandibilità, modularità, interoperabilità ed riusabilità ( requisiti di progettazione),caratteristiche di sicurezza (requisiti di sicurezza),specifiche tecnologiche (requisiti tecnologici), usabilità, documentazione, supporto e formazione (requisiti di utilizzo). Ogni requisito deve essere caratterizzato da:&lt;br /&gt;&lt;br /&gt;Numero: identificatore univoco per il requisito&lt;br /&gt;Tipo: categoria a cui il requisito appartiene (organizzativo,economico ecc)&lt;br /&gt;Descrizione: dettagli aggiuntivi&lt;br /&gt;Richiedente: chi ha espresso il requisito.&lt;br /&gt;Data: data di espressione del requisito.&lt;br /&gt;Importanza: quanto è importante per il richiedente (abbastanza,molto,indispensabile ecc)&lt;br /&gt;Priorità: entro quanto tempo il requisito deve essere implementato&lt;br /&gt;Interrelazione: con quali altri requisiti, il requisito ha relazione&lt;br /&gt;Status: grado di stabilità del requisito (in progettazione,verificato,implementato,proposto)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;4.0 Analisi dei Punti Funzione&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;L'analisi dei punti funzione è un metodo volto a suddividere un programma in moduli più piccoli al fine di poterli analizzare meglio. Sono un tipo di misura capace di misurare un'applicazione dal punto di vista dell'utente riuscendo a ricavare un indice delle dimensioni dell'applicazione a partire dalle funzionalità che deve fornire. In particolare misurano le funzionalità dell'utente il ritmo di sviluppo e di mantenimento a prescindere dalla tecnologia con cui si implementa il prodotto, consentono di convertire la dimensione, in linee di codice, dell' applicazione in qualsiasi linguaggio &amp;nbsp;nella dimensione dell’applicazione equivalente scritta in un altro linguaggio, consentono di misurare la produttività di un progetto scritto usando più linguaggi di programmazione. Un software è essenzialmente un insieme definito di processi elementari che interagiscono combinandosi tra loro. In una applicazione software individuiamo dati in movimento&amp;nbsp;(external input, external output, external&lt;br /&gt;inquiries) e dati in riposo &amp;nbsp;(internal logic file, external interface file). Il numero di punti funzione per input rappresenta la produttività software. Può essere migliorata incrementando gli output con gli stessi input, decrementando gli input con gli stessi output, decrementando gli input incrementando gli output. Il conteggio dei punti funzione avviene seguendo diverse fasi: 1) determinare il tipo di conteggio ( sviluppo, miglioramento, applicazione). 2) Determinare i confini dell'applicazione. Il confine indica il limite tra l'applicazione che viene misurate e le applicazioni esterne. 3) Identificare e valutare i tipi di funzione di transizione per determinare il loro contributo al conteggio dei punti funzione. 4)Identificare e valutare i tipi di funzione dato per determinare il loro contributo al conteggio dei punti funzione. 5)Determinare il valore del fattore di aggiustamento. 6) Effettuare i calcoli. Individuiamo alcune funzioni standard:&lt;br /&gt;&lt;br /&gt;Data Functions: Internal logical files, dati mantenuti all'interno del confine dell'applicazione&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;External interface files, dati mantenuti all'esterno del confine dell'applicazione&lt;br /&gt;Transactional Functions: External Inputs, processo elementare proveniente dall'esterno del confine&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;External Outputs, processo elementare &amp;nbsp;che invia dati all'esterno&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;External Inquiries, &amp;nbsp;processo elementare che controlla &amp;nbsp;informazioni fuori dal confine&lt;br /&gt;&lt;br /&gt;Tutte queste componenti vengono valutate in base a:&lt;br /&gt;&lt;br /&gt;Record Element Type: sottogruppo di dati riconducibili dall'utente ad un IEF o EIF&lt;br /&gt;File Type Referenced: file a cui si fa riferimento attraverso una transizione.&lt;br /&gt;Data Element Type: campo unico riconoscibile dall'utente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Il fattore di aggiustamento è &amp;nbsp;basto su 14 caratteristiche generali di sistema , ogni caratteristica ha delle descrizioni associate per determinare i gradi di influenza, su scala da 0 a 5. Le caratteristiche generali di sistema (GSC) possono così essere elencate:&lt;br /&gt;&lt;br /&gt;General System Characteristic Brief Description&lt;br /&gt;&lt;br /&gt;• 1. Data communications How many communication facilities are there to aid in the transfer or exchange of&lt;br /&gt;information?&lt;br /&gt;• 2. Distributed data processing How are distributed data and processing functions handled?&lt;br /&gt;• 3. Performance Did the user require response time or throughput?&lt;br /&gt;• 4. Heavily used configuration How heavily used is the current hardware platform where the application will be executed?&lt;br /&gt;• 5. Transaction rate How frequently are transactions executed daily,&lt;br /&gt;weekly, monthly, etc.?&lt;br /&gt;• 6. On-Line data entry What percentage of the information is entered On-Line?&lt;br /&gt;7. End-user efficiency Was the application designed for end-user efficiency?&lt;br /&gt;• 8. On-Line update How many ILF’s are updated by On-Line transaction?&lt;br /&gt;• 9. Complex processing Does the application have extensive logical or mathematical processing?&lt;br /&gt;• 10. Reusability Was the application developed to meet one or many user’s needs?&lt;br /&gt;• 11. Installation ease How difficult is conversion and installation?&lt;br /&gt;• 12. Operational ease How effective and/or automated are startup,back up, and recovery procedures?&lt;br /&gt;• 13. Multiple sites Was the application specifically designed, developed, and supported to be installed&lt;br /&gt;at multiple sites for multiple organizations?&lt;br /&gt;• 14. Facilitate change Was the application specifically designed, developed, and supported to facilitate change?&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.0 Analisi dei Rischi&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Durante lo sviluppo del software è possibile incorrere in numerose aree di rischio. Un ingegnere del software deve poter sviluppare dei metodi per individuare e gestire i rischi. Alcune aree di rischio di possono essere personale non adeguato o in numero insufficiente, budget non realistico, sviluppo di funzioni software errate, sviluppo di interfaccia utente errata, instabilità dei requisiti. Il fattore di rischio può essere modellato da due variabili: PF, probabilità di fallimento, CF, conseguenza del fallimento. Il fattore di rischio sarà allora dato da:&lt;br /&gt;RF = PF + CF – PF*CF&lt;br /&gt;&lt;br /&gt;Arrivare a un valore per ogni fattore richiede un’analisi completa del fattore e una solida base di esperienza. Di fatti l'assegnamento dei pesi è altamente soggettivo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-2282703056222090957?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/la-prima-fase-del-progetto-lanalisi.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-6890142045169191528</guid><pubDate>Fri, 12 Mar 2010 22:58:00 +0000</pubDate><atom:updated>2010-03-13T00:02:13.697+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Basi Teoriche INF</category><title>Macchina di Turing</title><description>&lt;a href="http://www.fileden.com/files/2008/5/25/1929484/turingmachine.zip"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-6890142045169191528?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/macchina-di-turing.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484/turingmachine.zip" length="4089127" type="application/zip x-zip" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484/turingmachine.zip" fileSize="4089127" type="application/zip x-zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Download</itunes:summary><itunes:keywords>Basi Teoriche INF</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-825917476334036418.post-3256926319920493377</guid><pubDate>Fri, 12 Mar 2010 22:57:00 +0000</pubDate><atom:updated>2010-03-13T00:02:13.697+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Basi Teoriche INF</category><title>Grammatiche Regolari</title><description>&lt;a href="http://www.fileden.com/files/2008/5/25/1929484/grammatiche_regolari.zip"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/825917476334036418-3256926319920493377?l=computerscienceeco.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://computerscienceeco.blogspot.com/2010/03/grammatiche-regolari.html</link><author>noreply@blogger.com (Daniele Santamaria)</author><thr:total>0</thr:total><enclosure url="http://www.fileden.com/files/2008/5/25/1929484/grammatiche_regolari.zip" length="7769082" type="application/zip x-zip" /><media:content url="http://www.fileden.com/files/2008/5/25/1929484/grammatiche_regolari.zip" fileSize="7769082" type="application/zip x-zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Download</itunes:subtitle><itunes:author>noreply@blogger.com (Daniele Santamaria)</itunes:author><itunes:summary>Download</itunes:summary><itunes:keywords>Basi Teoriche INF</itunes:keywords></item><language>en-us</language><media:rating>nonadult</media:rating></channel></rss>

