codice in java e UML per i diagrammi

UML rappresentazione grafica del codice del software

PASSAGGI FONDAMENTALI

da svolgere per svilluppare un sistema:

1.ANALISI:

Il passaggio di analisi nell’ingegneria del software, spesso definito analisi dei requisiti, ha l’obiettivo fondamentale di definire cosa il sistema deve fare, senza entrare nel dettaglio di come lo farà (compito invece della progettazione). In questa fase, gli analisti e i software engineer interagiscono con gli stakeholder per trasformare le necessità in specifiche tecniche formali.

  • Raccolta dei requisiti (Elicitazione): Intervistare utenti finali e clienti, condurre workshop, osservare i processi aziendali e studiare la documentazione esistente per identificare le necessità.
  • Analisi del Dominio: Studiare il contesto operativo del software per comprendere le regole di business, i vincoli e le funzionalità necessarie.
  • Modellazione dei Requisiti: Creare modelli concettuali (spesso usando UML) per rappresentare il sistema. Questo include diagrammi dei casi d’uso (per definire chi usa il sistema e cosa fa) e diagrammi di sequenza.
  • Negoziazione e Prioritizzazione: Risolvere i conflitti tra i requisiti dichiarati da diversi stakeholder e definire le priorità (quali funzionalità sono indispensabili, quali desiderabili).
  • Documentazione (SRS): Redigere il documento Software Requirements Specification (SRS), che contiene in modo strutturato i requisiti funzionali (cosa fa il sistema), i requisiti non funzionali (prestazioni, sicurezza, usabilità) e i vincoli esterni.
  • Validazione dei Requisiti: Verificare che il documento SRS sia completo, consistente, non ambiguo e realizzabile.

Output principale: Il documento delle specifiche tecniche (SRS) e i modelli grafici (UML) approvati.

Medium

2.PROGETTAZIONE:

OOP

DESIGN PATTERN la maggior parte del corso(importante per superare l’esame), ci da soluzione di progettazione collaudata e riusabile per un problema ricorrente di progettazione per sistemi e oggetti.

Il refactoring (o rifattorizzazione) è una tecnica di ingegneria del software che modifica la struttura interna del codice sorgente per migliorarne la leggibilità, la manutenibilità e la qualità, senza alterarne il comportamento esterno o le funzionalità. Serve a ridurre il debito tecnico, eliminare i “code smell” (codice disordinato) e facilitare futuri sviluppi.

3.IMPLEMENTAZIONE ;

4.TEST(CONVALIDA);

5.MANUTENZIONE:

DOPO la consegna del software

modifiche successive o manutenzione del codice successivo per rimuovere errori o per aggiungere funzionalità, per adattarlo alle necessita o per fare refactoring.

JAVA: BASI

in java suddivido le classi in file diversi, e poi sono tutti contenuti in una cartella.

ogni classe ha un file, i file tutti in una stessa cartella.

SVILUPPO ho bisogno di ragionamento, capire quali obiettivi ho e devo raggiungere che poi mi porta ad una implementazione(uso strutture dati che conosco); mi servono algoritmi che ordinano, estrae max e min e tanto altro.. posso anche inventarne uno nuovo. posso scrivere pseudocodice ma poi deco conoscere sintassi corretta per poi trasformarlo in codice vero e proprio. Devo conoscere fruizioni(API application programming interface) anche delle librerie(input,output, e tanto altro) per scrivere in output, prendere in input…

qui, occorre conoscere buone norme di programmazione ad oggetti, fare verifiche, organizzare il codice, analisi del codice tramite misurazioni degli elementi.

sintassi:

una classe è memorizzata in un singolo file, qui la classe helloworld

public class HelloWorld = il nome è HelloWorld, buona pratica che le classi inizino con Maiuscola, permette di orientarsi meglio nel codice. se si concatenano due parole, la prima lettera della seconda parola va in maiuscola, il cosiddetto CAMEL CASE, cosi distringuiamo da altre cose che non siano classi. NOME DEL FILE UGUALE ESATTAMENTE AL NOME DELLA CLASSE, altrimenti compilatore mi da problemi.

parola chiave CLASS dice al compilatore che sta instanziando una classe, e public è la visibilità della classe. parentesi graffa aperta è l’apertura di un blocco.

classe composta da attributi o metodi. anche l’attributo sarà publico o privato. TUTTI GLI ATTRIBUTI è BENE FARLI privati così solo la classe utilizzerà quell’attributo e in tal modo si ha maggiore protezione del codice(information hiding o incapsulamento)

private static final tipo(string) e nome(msg).

static vive dentro la classe non per le singole istanze, final dice che è una costante(prende un solo valore), il tipo ce ne sono di predefiniti o con libreria o in maniera primitiva, ad esempio STRING é UNA CLASSE, non un tipo primitivo, fa parte di una libreria.

= serve all’inizializzazione, due virgolette quando inizializzo stringa.

Posso implementare i metodi in questo modo:

public static tipo del valore di ritorno nome del metodo ( eventuale lista di parametri ) {
	lista di istruzioni eseguite in maniera sequenziale;
}

costruttore non è indispensabile, ma a volte abbastanza utile.

Il main è punto di avvio di un programma, si trova dentro una classe, e lo implemento una volta sola se ho più classi.

Di solito, sempre

public static void main(String[] args){
 
}

DENTRO LA CLASSE, NON FUORI.