Conclusione e ripasso nomenclatura

Check List:

  • il conteggio dei FP è un compito del piano generale del progetto?
  • la persona che esegue il calcolo dei FP è adeguatamente istruita a farlo?
  • chi esegue il calcolo dei FP usa la documentazione corrente per calcolare i FP?
  • sono state eseguite le linee guida dell’IFPUG?
  • sono state eseguite le linee guida interne all’organizzazione per il calcolo dei FP?
  • L’applicazione è stata calcolata da un punto di vista logico e non fisico?
  • I vincoli stabiliti per il calcolo dei FP coincidono con i vincoli stabiliti per le altre metriche?
  • le percentuali delle singoli componenti dei FP (ILF, EIF, EI, EO, EQ) rispettano le medie industriali (40% per ILF, 5% EIF, 20% per EI, 25% per EO, 10% per EQ) e le medie stabilite per GTE? Se no, c’è una valida ragione?
  • La raccolta delle transazioni (EI, EO, EQ) e dei file (ILF, EIF) è stata controllata dal gruppo di lavoro?
  • Le risposte date ai 14 GSC ricadono nel range delle risposte date ad altri progetti nella stessa organizzazione?
  • Il calcolo è stato registrato in un archivio per i FP?
  • Le premesse sono coerenti con tutti gli altri progetti?
  • Le premesse sono state accuratamente documentate?
  • Il calcolo è stato controllato da un esperto in calcoli di FP?

Memorandum

Componente Significato
FP Function Point
UFPFunction Point non pesati
ILFInternal Logical File :
gruppo di dati logicamente collegati
riconoscibili dall’utente
e mantenuto aggiornato
dentro il confine dell’applicazione
EIFExternal Logical File:

gruppo di dati logicamente collegati
riconoscibili dall’utente
e mantenuto aggiornato
all’interno del confine
di un’altra applicazione

ILF /EIFtanti RET e DET – ILF sono i file che possono essere modificati – EIF solo in lettura
RETRecord Element Type: tabella
DETData element Type: singoli campi di una tabella
EIFunzioni elementari idi input
EOFunzioni di output
EQFunzioni di query
FTRsi indica o ILF o EIF

Posted in Senza categoria | Leave a comment

GPOI – Le metriche del software – Tabulazione dei risultati

Il calcolo dei FP si ottienen moltiplicando il valore di UFP (Function Point non pesati) per il fattore di aggiustamento VAF (valore del Fattore di aggiustamento – VAlue Adjustment Factor).

FP=UFP\cdot VAF=\sum_{i=1}^{5}VP_{i}\cdot \left ( 0.65+0.01\cdot \sum_{i=1}^{14}F_{i} \right )

E’ comodo usare una tabella riepilogativa :

ComponenteBassoMedioAltoTotale
EI0 x 30 x 40 x 60
EO 0 x 4 0 x 5 0 x 70
EQ 0 x 3 0 x 4 0 x 60
ILF 0 x 7 0 x 10 0 x 150
EIF 0 x 5 0 x 7 0 x 10 0
Totale UFP0
VAF0
Totale FP0

Nel caso dell’esempio riportato ecco come si è completata la tabella considerando un VAF =1,1.

ComponenteBassoMedioAltoTotale
EI3 x 3 0 x 40 x 69
EO 1 x 4 0 x 5 0 x 74
EQ 1 x 3 0 x 4 0 x 63
ILF 1 x 7 0 x 10 0 x 157
EIF 0 x 5 0 x 7 0 x 10 0



Totale UFP23



VAF1.1



Totale FP25.3

Posted in Senza categoria | Leave a comment

PHP – Classi – Interfacce

Le interfacce, come le classi astratte, sono delle classi speciali che non possono essere istanziate ma soltanto implementate.

Praticamente esse delineano la struttura di una classe. La dichiarazione di un’interfaccia è simile a quella di una classe, ma include soltanto metodi (privi di implementazione) e costanti

quindi si vede che ho implementato solo dei metodi.

Poi in questa classe implemento i metodi precedenti:

in quest’ulteriore classe implemento nuovamente la stessa interfaccia:

Inoltre, dato che entrambe le classi implementano l’intefaccia IUser, è possibile tramite i metodi setPartner di ognuna, impostare un partner di tipo UserA ad un’istanza di tipo UserB e vice versa

Posted in Senza categoria | Leave a comment

PHP – Classi – Astratte

Le classi astratte invece sono un sistema che permette di definire classi parzialmente completate che lasciano l’implementazione di alcuni metodi alle sottoclassi.

Una classe astratta deve essere definita utilizzando la parola chiave abstract; lo stesso vale per quei metodi astratti della classe .

Una classe astratta non può essere istanziata.

Per capire l’importanza ecco un piccolo programma:

Qui si nota che ho definito un attributo private ed uno public.

l’attributo pubblico può essere usato dalla variabile c mentre l’attributo privato non può essere usato all’esterno.

Il concetto di area però è un concetto astratto nel senso che può essere usato da tutte le figure ossia devo usare una sottoclasse che adatta il concetto di area alla figura generica.

In un database ad esempio la busta paga è un concetto astratto che deve essere poi usata nelle sottoclassi per adattarle ai vari dipendenti!

Posted in Senza categoria | Leave a comment

PHP Classi Final evitare overriding

E’ sufficiente definire le classi della superclasse con l’attributo final, a questo punto le sottoclassi non possono fare l’overriding.

ecco l sorgente senza l’evidenziazione

Ecco il messaggio che compare:

Si può definire anche una classe final in maniera tale che non possa mai avere una sottoclasse.

il messaggio che comparirà sarà:

Ad esempio si può usare quando definisco una classe con le caratteristiche di un amministratore e quindi non deve essere creata una sottoclasse che eredita gli attributi e i metodi della superclasse

Posted in Senza categoria | Leave a comment

PHP – Classi – Overridding

Senza attuare delle particolari strategie, la proprietà o il metodo originale viene sovrascritto da quello nuovo:

Si nota che la funzione sayHello va a riscrivere la funzione sayHello della superclasse.

Da notare inoltre che avendo definito il costruttore nella superclasse esso deve essre usato nella sottoclasse quando istanzio l’oggetto.

Richiamare gli elementi della superclasse parent::

In questa maniera vado a completare la funzione precedente aggingendovi delle proprietà.

La stessa cosa può avvenire con il costruttore.

Ecco il sorgente senza il cerchio in rosso:

Posted in Senza categoria | Leave a comment

PHP – Classi – Costruttore multiplo

PHP purtroppo non supporta nativamente i costruttori multipli nelle sue classi.

Prima possibilità utilizzo di func_num_args()func_get_args() e func_get_arg()

Come si vede ho istanziato la classe Barca sia richiamandola senza alcun valore che con in valore.

Seconda possibilità

Da notare che all’interno dei metodi statici viene impostato un attributo privato del costruttore, una cosa che non sarebbe possibile normalmente

Ecco come istanzio al classe in questo caso:

Posted in Senza categoria | Leave a comment

Java – Swing – Jbutton – JTextField

Il componente Jbutton è caratteristico di ogni applicazione windows ed ad esso si associa sempre un particolare evento cliccandoci sopra.

In questo esempio che descriverò riga per riga si deve conoscere come si gestiscono le classi, il costruttore e poter accedere ai metodi delle superclassi.

Il layout non è perfetto in quanto bisogna capire nei dettagli come impostare l’ordine dei pulsanti.

Il programma è complesso per cui lo commento riga per riga.

qui aggiungo tutti i componenti JFrame, JLabel, JButton e JTextField.

Definisco la dimensione del frame, ed aggiungo i componenti al pannello.

qui chiamo l’azione che deve essere associata al pulsante che effettuerà la somma. Passo alla classe Somma i tre JTextField che ho chiamato Test1, Test2 2 Test3.

Analizzo ora la classe somma.

nella classe somma implemento il metodo ActionListner. Inoltre definisco tre attributi private a cui posso accedere solo con il metodo public Somma per poterlo manipolare nel metodo actionPerformed che mi serve per gestire l’azione click sul pulsante.

Nel metodo actionPeformed vado a fare il cast passando da stringa a numero. Quindi effettuo la somma che viene passata al valore del JtextField che viene valorizzato con il metodo setText. Con getText prendo il valore del campo testo con setText invece valorizzo il campo.

Posted in Senza categoria | Leave a comment

JAVA – Swing – JPanel – Jlabel

Per comprendere bene la parte grafica è veramente molto utile il seguente schema:

Quindi nel Pannello sono inseriti gli altri oggetti che compongono un’applicazione.

Si definisce un Frame che conterrà un Panel a cui poi si aggiungono le altre componenti.

Per apprezzare l’importanza del Jpanel ho introdotto anche Jlabel che saà all’interno di due pannelli diversi con colori diversi.

Ecco i dettagli:

devo importare le classi:

Istanzio le classi:

Istanzio un frame, due pannelli e due label.

Definisco la dimensione del frame e quando l’utente clicca sulla x chiudo la finestra.

Definisco la dimensione del pannello, il colore ed aggiungo al pannello la prima etichetta.

Definisco il colore del secondo pannello ed aggiungo al seconda etichetta.

definisco il contenitore aggiungendo il frame.

Aggiungo i due pannelli al contenitore e rendo visibile la finestra.

Ecco cosa alla fine si vede:

Posted in Senza categoria | Leave a comment

JAVA – SWING – JFRAME

La classe JFrame è una sottoclasse di java.awt.Frame che, a sua volta, è una sottoclasse di java.awt.Window. Per questi motivi JFrame è uno dei componenti GUI di Swing che non è considerato un componente leggero: a differenza della maggior parte dei componenti Swing, JFrame non è scritto esclusivamente in Java, ma va considerato una sorta di “wrapper” sulle finestra native del sistema.

import javax.swing.JFrame;
public class EmptyFrame {
public static void main(String[] args) {
JFrame jFrame = new JFrame(“Empty window”);
// la finestra è creata ma non ancora visibile!
}
}

Quindi un’applicazione dotata di GUI, una volta lanciata, rimane in attesa dell’input utente e termina solo in base ad un determinato evento (es. click su un pulsante close,chiusura della finestra…).

Per default una finestra viene nascosta: questo significa rimossa semplicemente dallo schermo.
Possiamo controllare questo tipo di azione attraverso il metodo setDefaultCloseOperation di JFrame:

import javax.swing.JFrame;
public class EmptyFrame {
public static void main(String[] args) {
JFrame jFrame = new JFrame(“Empty window”);
// definiamo il comportamento per la chiusura
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}

L’interfaccia WindowConstants (una delle interfacce implementate da JFrame) del package javax.swing definisce 3 costanti da utilizzare con questo metodo: DISPOSE_ON_CLOSEDO_NOTHING_ON_CLOSEHIDE_ON_CLOSE (default).

Per default una finestra non viene visualizzata sullo shermo fino a quando non viene chiamato il suo metodo show(), oppure, come fatto precedentemente, chiamando il metodo setVisible(true).

import javax.swing.JFrame;
public class EmptyFrame {
public static void main(String[] args) {
JFrame jFrame = new JFrame(“Finestra Vuota”);
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jFrame.setSize(400,400);
jFrame.setVisible(true);
}
}

e si visualizzerà una finestra vuota.

Posted in Senza categoria | Leave a comment