LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Informatica, cibernetica e programmazione

Iterazione N Il processo di sviluppo software unificato USDP Il modello di caso d'uso descrive i casi in cui verrà utilizzata l'applicazione. Il modello analitico descrive le classi di base per l'applicazione. Un modello di progettazione descrive le relazioni e le relazioni tra le classi e gli oggetti allocati, mentre un modello di distribuzione descrive la distribuzione del software tra computer.

Lezione numero 20
Principi generali e approcci allo sviluppo del software

Modelli di sviluppo software

  1. Cascata
  2. Modello a cascata
  3. Spirale
  4. Programmazione estrema
  5. incrementale
  6. Metodologia MSF

Modello a cascata

Modello a spirale

Sviluppo incrementale

Analisi dei requisiti

Design

Implementazione

Componente

analisi

Integrazione

analisi

totale

Iterazione 1 Iterazione 2 .... Iterazione N

Processo di sviluppo software unificato (USDP)

  1. Il modello del caso d'uso descrive i casi in cui verrà utilizzata l'applicazione.
  2. Il modello analitico descrive le classi di base per l'applicazione.
  3. Il modello di progettazione descrive le relazioni e le relazioni tra le classi e gli oggetti selezionati.
  4. Il modello di distribuzione descrive la distribuzione del software tra computer.
  5. Il modello di implementazione descrive l'organizzazione interna del codice del programma.
  6. Il modello di test è costituito da componenti di test, procedure di test e varie opzioni di test.

Metodologia MSF

Componenti tipici dell'architettura del prodotto software e requisiti software tipici

tolleranza ai guasti- un insieme di proprietà del sistema che aumenta la sua affidabilità rilevando errori, ripristinando e localizzando cattive conseguenze per il sistema. Quando si sviluppa un sistema reale per garantire la tolleranza agli errori, è necessario prevedere tutti i tipi di situazioni che possono portare a guasti del sistema e sviluppare meccanismi per la gestione degli errori.

Affidabilità - la capacità del sistema di resistere a vari guasti e malfunzionamenti.

rinunzia È una transizione di sistema con conseguente errore in uno stato completamente non operativo.

schianto - un errore nel funzionamento del sistema, che non porta al fallimento del sistema.

Meno guasti e guasti per un certo intervallo di tempo, più affidabile è il sistema.


Così come altre opere che potrebbero interessarti

57355. La varietà di composti organici, la loro classificazione. Materia organica della fauna selvatica 48.5 KB
La varietà di composti organici è determinata dalla capacità unica degli atomi di carbonio di unirsi per mezzo di legami semplici e multipli per formare composti con un numero quasi illimitato di atomi collegati in cicli a catena, biciclette, tricicli, carcasse policicliche, ecc.
57359. Modelli informativi di elaborazione testi 291 KB
Concetti di base: modello; modello informativo; modello di informazione verbale; annotazione; astratto. Estratto dal lat. Creare un riepilogo in 2. Salvare il documento nella propria cartella sotto il nome Riepilogo.
57361. Numero ı numero 3. Porzione di numeri tra le righe 3. Numero scritto 3. Numero di numeri 3. Numero di iscrizione 35.5 KB
Skylki di tutta la creatura Hto cento peshto Hto cento appuntato Hto posid numero 1 Hto stoist pid numero 2 Nomina il nome della canzone. Hto subdolo bilochki destro Hto subdolo giraffa Hto є trovalo Hto є trovalo basso Hto in mezzo alla creatura Gras Non mostrarmi alcun segno.

Quando si considera la tecnologia di sviluppo software, è necessario utilizzare un approccio sistematico, che implica non considerare alcuni aspetti specifici del problema di sviluppo del software, ma il problema nel suo insieme. Un approccio sistematico è implementato nello spazio e nel tempo.

L'approccio basato sul tempo del sistema considera la sequenza delle fasi della creazione del software dal momento della formazione di un'esigenza insoddisfatta di software fino alla sua risoluzione e manutenzione in funzione del prodotto software ricevuto.

Approccio sistematico nello "spazio" prevede la considerazione del software sviluppato come parte del sistema.In questo caso, sulla base dello studio delle esigenze di informazione del sistema, che includerà il software in fase di sviluppo, vengono formulati gli obiettivi e una serie di funzioni software, vengono analizzati i prototipi del software. I requisiti software sono generati e documentati.

La moderna tecnologia di sviluppo software considera la programmazione come una delle fasi dello sviluppo nella catena delle fasi successive del ciclo di sviluppo. Tutte queste fasi sono unite dal concetto del ciclo di vita del software e dovrebbero essere supportate da software e hardware strumentali appropriati.

In conformità con lo standard internazionale ISO / IEC 12207 "Tecnologia dell'informazione - Processi del ciclo di vita del software", il processo di sviluppo del software contiene le seguenti fasi del ciclo di vita del software:

1) analisi dei requisiti di sistema e portata;

2) progettazione dell'architettura di sistema;

3) analisi dei requisiti software (specifiche, interfacce esterne,);

4) progettazione dell'architettura software;

5) progettazione dettagliata di ciascuna unità software;

6) codifica software (programmazione)

7) test di unità software;

8) integrazione (combinazione di software) e test di una serie di unità software;

9) test di qualificazione software (test complessi);

10) le unità di integrazione di sistema della struttura del software dovrebbero essere combinate con unità di hardware;

11) test di qualificazione del sistema;

12) installazione del software.

Pertanto, il processo di sviluppo del software ha origine nel sistema, in cui questo software verrà utilizzato e termina nuovamente nel sistema.

Dopo le fasi di sviluppo del ciclo di vita del software, segue la fase di funzionamento e manutenzione del software durante il funzionamento. A volte viene fornito l'elenco delle fasi del ciclo di vita del software con alcune generalizzazioni (ingrandimenti) delle 12 fasi. Ad esempio, le fasi di progettazione del sistema e determinazione dei requisiti software, progettazione di un pacchetto software, progettazione di algoritmi software, programmazione (codifica), debug offline del software, debug completo del software e software operativo.

Trascurando le fasi della progettazione del software, il desiderio di iniziare immediatamente la programmazione senza elaborare sufficientemente algoritmi e problemi di interazione tra unità strutturali del software porta spesso a un processo caotico di sviluppo del software con basse probabilità di successo.

Modello del ciclo di vita del software a spirale. Tecnologie di sviluppo software “veloci e leggere” (veloci)

Il modello del ciclo di vita considerato (LC) si riferisce al modello a cascata. Questo tipo di modello LC è buono per il software, per il quale all'inizio dello sviluppo è possibile formulare in modo completo e accurato tutti i requisiti per il software.

Schema del software del ciclo di vita a spirale. Tuttavia, il vero processo di creazione del software non si adatta sempre a uno schema così rigido e spesso è necessario tornare alle fasi precedenti con chiarimenti o revisioni delle decisioni prese.

Per il software e per altri sistemi complessi, i cui requisiti iniziali non sono completi, è caratteristico un processo di sviluppo iterativo. Allo stesso tempo, per alcuni tipi di software è anche consigliabile passare alla fase successiva il più rapidamente possibile. Allo stesso tempo, gli svantaggi inevitabili con un lavoro così sbrigativo vengono eliminati alla successiva iterazione o rimangono per sempre.

Il compito principale è ottenere un software efficiente il più rapidamente possibile, attivando così il processo di chiarimento e integrazione dei requisiti. Questo è il cosiddetto modello a spirale del software LC.

Ad ogni giro della spirale, viene creata una versione del prodotto, vengono specificati i requisiti software e viene pianificato il lavoro del turno successivo. Il modello a spirale del software LC riflette il processo oggettivamente esistente di sviluppo iterativo del software (Fig. 8.2).

Si ritiene che il circuito a spirale del software LC non sia progettato tanto per gli sviluppatori affrettati quanto per i software le cui prime versioni di scarsa qualità sono accettabili ai fini funzionali del software.

C'è una direzione di "Quick Technologies" per lo sviluppo di software (Agile Software Development), che fornisce una giustificazione ideologica per le opinioni associate al modello a spirale del ciclo di vita. Queste tecnologie si basano su quattro idee:

L'interazione interattiva tra individui è più importante delle procedure e degli strumenti formali,

L'esecuzione del software è più importante della documentazione per esso,

La collaborazione con il cliente è più importante dei contratti formali,

Una rapida risposta ai cambiamenti esterni è più importante della rigorosa aderenza ai piani.


Figura. 8.2 - Schema del software del ciclo di vita a spirale

In altre parole, le tecnologie veloci mirano a sostituire le procedure di interazione documentate formali e dispendiose in termini di tempo durante lo sviluppo con quelle interattive, il che è possibile con una piccola dimensione del progetto, qualità selezionate di dipendenti, collocamento di sviluppatori e clienti "in una stanza" e per lo sviluppo di software di sistemi non critici.

La correttezza di questi principi in una certa misura, quando lo sviluppo del software è condotto da un numero limitato di "fan" qualificati e dedicati allo sviluppo di determinati tipi di software, è difficile da contestare. Tuttavia, le tecnologie Agile, e questo è riconosciuto dai loro ideologi, sono applicabili a progetti software di una certa classe e scala, proprio come il modello a spirale della LC in generale, vale a dire, dove gli errori del software portano a qualche inconveniente o perdita di fondi recuperabili.

Laddove un software che funzioni in modo non corretto porta a una minaccia per la vita umana o a grandi perdite di materiale, è necessario utilizzare tecnologie solide e ben ponderate per garantire l'affidabilità del prodotto software.

Con l'aumento della portata del progetto software, l'aumento del numero di persone che vi partecipano, la necessità di una dura tecnologia di sviluppo che costituisce il software LC in cascata sta crescendo. Qui è necessaria la documentazione, poiché in qualsiasi momento è possibile la perdita di uno qualsiasi degli sviluppatori, è necessaria la formalizzazione delle relazioni tra programmi, la gestione delle modifiche del software, ecc. Non è per niente che un modello di ciclo di vita a cascata viene introdotto negli standard di sviluppo del software. Allo stesso tempo, consente anche di implementare un processo di sviluppo iterativo a causa delle fasi previste per la progettazione di STS e software.

Per progetti software molto grandi (un team di sviluppatori di oltre 100), la tecnologia di sviluppo è un fattore chiave che influenza non solo la qualità del software, ma anche la possibilità stessa della sua creazione.

Tecnologie di sviluppo software pesanti e leggere . Gli sviluppatori di molti tipi di software considerano il modello del ciclo di vita a cascata troppo regolato, documentato, difficile e quindi irrazionale. Esiste una direzione delle "Tecnologie veloci" (tecnologie leggere) dello sviluppo del software (Agile Software Development), che fornisce una giustificazione ideologica per queste opinioni. Queste tecnologie si basano su quattro idee:

1. L'interazione interattiva delle persone è più importante delle procedure e degli strumenti formali,

2. il software di lavoro è più importante che disporre di documentazione per esso,

3. la cooperazione con il cliente è più importante degli accordi formali con lui,

4. La risposta rapida ai cambiamenti esterni è più importante della rigorosa aderenza ai piani.

La correttezza di questi principi, oltre al terzo, in una certa misura (lo sviluppo del software è effettuato da un piccolo numero di programmatori qualificati - i "fan" che non necessitano di controllo e motivazione aggiuntiva) è difficile da contestare per lo sviluppo del software. Tuttavia, le tecnologie Agile, e questo è riconosciuto dai loro ideologi, sono applicabili a progetti software di una certa classe e scala, così come in generale il modello a spirale della LC, vale a dire, dove gli errori del software portano a qualche inconveniente o perdita di fondi recuperabili e in cui i requisiti software sono in continua evoluzione , poiché sono stati definiti in modo inadeguato in anticipo ed è necessario un rapido adattamento a questi cambiamenti.

Tecnologia veloce -tenta di raggiungere un compromesso tra la rigorosa disciplina dello sviluppo e la sua totale assenza in nome della riduzione del flusso di documenti che accompagnano lo sviluppo. Le tecnologie veloci non possono fornire un'alta affidabilità di un prodotto software proprio a causa della minimizzazione dei documenti che confermano legalmente la responsabilità dello sviluppatore.

Un esempio di tecnologia Agile è Extreme Programming (XP). Le iterazioni in XP sono molto brevi e consistono in quattro operazioni: codifica, test, ascolto del cliente, progettazione. I principi di XP - minimo, semplicità, coinvolgimento del cliente, ciclo breve, interazioni ravvicinate degli sviluppatori - dovrebbero essere nella stessa stanza, le riunioni operative quotidiane con il cliente sembrano ragionevoli e sono state a lungo utilizzate non solo nelle tecnologie veloci, ma in XP sono state portate a valori estremi.

Un'analisi di molti progetti software ha dimostrato che le tecnologie leggere che predicano i principi dell'autorganizzazione, enfatizzando l'uso delle capacità individuali degli sviluppatori, brevi iterazioni di sviluppo in un modello a spirale, XP, SCRUM sono comuni e spesso portano anche al successo, sfruttando al massimo le funzionalità del lavoro in piccoli team.

Laddove un software che funzioni in modo errato porta a una minaccia alla vita umana o a grandi perdite materiali, si dovrebbero usare tecnologie “pesanti” formalizzate ordinate, ponderate e prevedibili per garantire l'affidabilità del prodotto software anche nel caso di sviluppatori di livello medio. in lui sta crescendo la necessità di una tecnologia di sviluppo rigida e formale che fissi la responsabilità di ciascun partecipante allo sviluppo che costituisce un software LC a cascata. Non è per niente che un modello di ciclo di vita a cascata è stato introdotto negli standard di sviluppo del software.

In grandi team di sviluppatori, il problema della gestione viene alla ribalta.

Per progetti software di grandi dimensioni, i temi dello sviluppo coordinato ordinato: strutturazione, integrazione, garanzia della corretta interazione dei programmi, organizzazione della corretta e coordinata attuazione di inevitabili cambiamenti sono fondamentali e influenzano la possibilità stessa della loro creazione.

Nei piccoli progetti software, le delizie algoritmiche, l'influenza delle singole personalità di talento gioca un ruolo decisivo, mentre nei grandi progetti questi fattori sono livellati e non hanno un'influenza decisiva sul processo di sviluppo.

Gli sviluppatori di software con capacità medie, e la maggior parte di loro, e osservando la disciplina tecnologica nel quadro della giusta tecnologia, dovrebbero sviluppare software della qualità richiesta. "Mantieni l'ordine e ti supporterà."

Esistono modelli di sviluppo software. E ci sono metodologie. Ci sono molte informazioni contrastanti su Internet su cosa sono cosa e come distinguerle. È difficile per uno specialista alle prime armi capirlo. In questo articolo, tratteremo tutti i.

Fasi del ciclo di vita del software

Qualsiasi software ha un ciclo di vita - le fasi attraverso le quali passa dall'inizio della creazione alla fine dello sviluppo e dell'implementazione. Molto spesso si tratta di preparazione, progettazione, creazione e supporto. Le fasi possono essere chiamate in modo diverso e suddivise in fasi più piccole.

Considera questi passaggi come un esempio del ciclo di vita di un negozio online.

Formazione. Ivan ha deciso di lanciare una libreria online e ha iniziato ad analizzare quali siti simili sono già rappresentati sulla rete. Raccolte informazioni sul loro traffico, funzionalità.

Design. Ivan ha scelto un'azienda appaltatrice e ha discusso con i suoi specialisti l'architettura e il design del futuro negozio online.

Creatura. Ivan ha concluso un accordo con gli sviluppatori. Cominciarono a scrivere codice, disegnare disegni e scrivere documentazione.

Supporto. Ivan firmò l'atto di accettazione e l'appaltatore pubblicò un negozio online sui server "da battaglia". Gli utenti hanno iniziato a visitarlo e a segnalare bug in supporto e ai programmatori: risolverlo rapidamente.

Modellolo sviluppo del software descrive quali fasi del ciclo di vita attraversa e cosa succede in ognuna di esse.

E metodologia include una serie di metodi di gestione dello sviluppo: queste sono le regole, le tecniche e i principi che lo rendono più efficace.

Principali modelli di sviluppo software

  • Codice e correzione: codifica e modello di correzione degli errori;
  • Modello a cascata - modello a cascata, o "cascata";
  • Modello a V - Modello a forma di V, sviluppo attraverso test;
  • Modello incrementale - modello incrementale;
  • Modello iterativo - un modello iterativo (o iterativo);
  • Modello a spirale - modello a spirale;
  • Modello di caos - modello di caos;
  • Prototype Model è un modello prototipo.

Di questi modelli, i cinque più popolari sono i principali: a cascata, a forma di V, incrementale, iterativo e a spirale. Analizziamoli in modo più dettagliato.

Cascata (modello a cascata o "cascata")

In questo modello, lo sviluppo viene effettuato in più fasi: ogni fase successiva inizia solo dopo quella precedente. Se tutto è fatto correttamente, la "cascata" sarà il modello più semplice e veloce. È stato usato per quasi mezzo secolo dagli anni '70.

I vantaggi della "cascata"

  • Lo sviluppo è facile da controllare. Il cliente sa sempre cosa stanno facendo i programmatori, può gestire tempistiche e costi.
  • Il costo del progetto è determinato nella fase iniziale. Tutti i passaggi sono già programmati nella fase dell'accordo di accordo, il software viene scritto continuamente "da e verso".
  • Non è necessario assumere tester con una seria formazione tecnica. I tester potranno fare affidamento su una documentazione tecnica dettagliata.

Gli svantaggi del modello a cascata

  • I test iniziano nelle fasi finali di sviluppo. Se è stato commesso un errore nei requisiti del prodotto, risolverlo sarà costoso. I tester lo troveranno quando lo sviluppatore ha già scritto il codice e gli autori tecnici: la documentazione.
  • Il cliente vede il prodotto finito alla fine dello sviluppo e solo allora può dare un feedback.È probabile che il risultato non gli piacerà.
  • Gli sviluppatori scrivono molta documentazione tecnica, che ritarda il lavoro. Più ampia è la documentazione del progetto, più modifiche è necessario apportare e più tempo devono essere concordate.

Waterfall è adatto per lo sviluppo di progetti in industria medica e spaziale, dove è già stato formato un ampio database di documenti(SNiP e specifiche), in base ai quali è possibile scrivere i requisiti per il nuovo software.

Quando si lavora con un modello a cascata, l'attività principale è quella di scrivere requisiti di sviluppo dettagliati. Nella fase di test, non dovrebbe essere rivelato che hanno un errore che interessa l'intero prodotto.

Modello a V (sviluppo attraverso test)

Questo è un modello a cascata avanzato in cui un cliente con un team di programmatori compila contemporaneamente i requisiti di sistema e descrive come verranno testati in ogni fase. La storia di questo modello inizia negli anni '80.

Vantaggi del modello a forma di V.

    Il numero di errori nell'architettura software è ridotto al minimo.

Gli svantaggi del modello a V

    Se viene commesso un errore nello sviluppo dell'architettura, sarà costoso restituirlo e ripararlo, come in una "cascata".

Modello V adatto per progetti in cui l'affidabilità è importante e il costo dell'errore è molto elevato. Ad esempio, quando si sviluppano airbag per auto o sistemi di monitoraggio dei pazienti nelle cliniche.

Modello incrementale (modello incrementale)

Questo è un modello di sviluppo frammentario (incremento tradotto dall'inglese - incremento) radicato negli anni '30. Consideralo sull'esempio della creazione di un social network.

  1. Il cliente decise che voleva avviare un social network e scrisse un compito tecnico dettagliato. I programmatori hanno proposto di implementare le funzioni di base: una pagina con informazioni personali e chat. E quindi testare gli utenti, "decollare o no".
  2. Il team di sviluppo mostra il prodotto al cliente e lo immette sul mercato. Se al cliente e agli utenti piace il social network, il lavoro su di esso continua, ma in parte.
  3. I programmatori creano contemporaneamente funzionalità per caricare foto, condividere documenti, ascoltare musica e altre azioni concordate con il cliente. Incremento per incremento, migliorano il prodotto, avvicinandosi a quanto descritto nei termini di riferimento.

Vantaggi del modello incrementale

  • Non è necessario investire molti soldi nella fase iniziale. Il cliente paga per la creazione di funzioni di base, riceve il prodotto, lo "implementa" sul mercato e, in base al feedback, decide se continuare lo sviluppo.
  • È possibile ottenere rapidamente feedback dagli utenti e aggiornare rapidamente i termini di riferimento. Ciò riduce il rischio di creare un prodotto di cui nessuno ha bisogno.
  • L'errore è più economico.Se viene commesso un errore nello sviluppo dell'architettura, la sua riparazione non costerà tanto quanto in un modello a "cascata" o a V.

Svantaggi del modello incrementale

  • Ogni team di programmatori sviluppa le proprie funzionalità e può implementare l'interfaccia del prodotto a modo suo. Per evitare ciò, è importante nella fase di discussione dei termini di riferimento spiegare cosa sarà, in modo che tutti i partecipanti al progetto abbiano una comprensione comune.
  • Gli sviluppatori rinviano il perfezionamento della funzionalità principale e "tagliano le piccole cose". Per evitare che ciò accada, il project manager deve controllare ciò che ogni squadra fa.

Modello incrementale adatto per progetti in cui i termini esatti di riferimento sono già registrati all'inizio e il prodotto dovrebbe entrare rapidamente nel mercato.

Modello iterativo (modello iterativo)

Questo è un modello in cui il cliente non è tenuto a comprendere quale prodotto desidera ottenere di conseguenza e potrebbe non prescrivere immediatamente un'attività tecnica dettagliata.

Considera l'esempio della creazione di un messenger come funziona questo modello.

  1. Il cliente ha deciso di voler creare un messenger. Gli sviluppatori hanno creato un'applicazione in cui è possibile aggiungere un amico e avviare una chat per due.
  2. Il messenger è stato "implementato" nel negozio di applicazioni, gli utenti hanno iniziato a scaricarlo e utilizzarlo attivamente. Il cliente si è reso conto che il prodotto è popolare e ha deciso di finalizzarlo.
  3. I programmatori hanno aggiunto la possibilità di visualizzare video, caricare foto, registrare messaggi audio sul messenger. Migliorano gradualmente la funzionalità dell'applicazione, adattandola alle esigenze del mercato.

I vantaggi di un modello iterativo

  • Rilascio rapido minimo del prodottoconsente di ricevere rapidamente feedback dal cliente e dagli utenti. Ciò significa concentrarsi sulle funzioni software più importanti e migliorarle in base alle esigenze del mercato e ai desideri dei clienti.
  • Test continuo dell'utente Consente di rilevare e correggere rapidamente gli errori.

Svantaggi del modello iterativo

  • Uso iniziale di database o server- i primi sono difficili da scalare e i secondi non possono sopportare il carico. Potrebbe essere necessario riscrivere la maggior parte dell'applicazione.
  • Mancanza di un budget fisso e scadenze. Il cliente non sa quale sia l'obiettivo finale e quando lo sviluppo finirà.

Il modello iterativo è adatto per lavorare su grandi progetti con requisiti incertio per attività con approccio innovativoquando il cliente non è sicuro del risultato.

Modello a spirale

Utilizzando questo modello, il cliente e il team di sviluppo analizzano seriamente i rischi del progetto ed eseguono iterazioni. La fase successiva si basa su quella precedente e alla fine di ogni round - ciclo di iterazione - viene presa la decisione se continuare il progetto. Questo modello ha iniziato ad essere utilizzato nel 1988.

Consideriamo come funziona questo modello, usando come esempio lo sviluppo del sistema Smart Home.

  1. Il cliente decise che voleva realizzare un tale sistema e ordinò ai programmatori di implementare il controllo del bollitore dal telefono. Hanno iniziato ad agire secondo il modello "a cascata": hanno ascoltato l'idea, analizzato le offerte sul mercato, discusso dell'architettura del sistema con il cliente, deciso come implementarlo, sviluppato, testato e "implementato" il prodotto finale.
  2. Il cliente ha apprezzato il risultato e i rischi: quanto gli utenti hanno bisogno della prossima versione del prodotto, già con il controllo TV. Ha calcolato i termini, il budget e ordinato lo sviluppo. I programmatori hanno agito secondo il modello a cascata e hanno presentato al cliente un prodotto più complesso sviluppato sulla base del primo.
  3. Il cliente ha pensato che fosse tempo di creare funzionalità per controllare il frigorifero dal telefono. Ma, analizzando i rischi, mi sono reso conto che è difficile integrare un modulo Wi-Fi nel frigorifero e i produttori non sono interessati alla cooperazione su questo problema. Di conseguenza, i rischi superano i potenziali benefici. Sulla base dei dati ricevuti, il cliente ha deciso di interrompere lo sviluppo e migliorare le funzionalità esistenti al fine di comprendere nel tempo come sviluppare il sistema Smart Home.

Il modello a spirale è simile a quello incrementale, ma molto più tempo è dedicato alla valutazione del rischio. Con ogni nuova spirale, il processo diventa più complicato. Questo modello è spesso usato in progetti di ricerca e dove i rischi sono elevati.

Vantaggi del modello a spirale

    Molta attenzione è rivolta allo studio dei rischi.

Svantaggi del modello a spirale

  • Esiste il rischio di rimanere bloccati nella fase iniziale- Migliora continuamente la prima versione del prodotto e non passa a quella successiva.
  • Lo sviluppo richiede molto tempo ed è costoso.

Basato su un modello iterativo, è stato creato Agile, non un modello o una metodologia, ma piuttosto un approccio allo sviluppo.

Che cos'è Agile?

Agile ("agile") è tradotto dall'inglese come "flessibile". Include pratiche, approcci e metodologie che aiutano a creare un prodotto in modo più efficiente:

  • programmazione estrema (Extreme Programming, XP);
  • sviluppo software snello (Lean);
  • scrum framework di gestione del progetto;
  • sviluppo guidato da funzionalità (FDD)
  • sviluppo attraverso test (sviluppo test-driven, TDD);
  • metodologia di ingegneria del software per camere bianche;
  • metodo di sviluppo iterativo-incrementale (OpenUP);
  • metodologia di sviluppo di Microsoft Solutions Framework (MSF);
  • metodo di sviluppo di sistemi dinamici (DSDM);
  • metodo di gestione dello sviluppo kanban.

Le differenze tra Agile e il tradizionale approccio di sviluppo sono riassunte nella tabella seguente:

Non tutto ciò che è elencato è metodologia. Ad esempio, Scrum viene spesso definito non una metodologia, ma un framework. Qual è la differenza? Un framework è una metodologia più matura con regole rigorose. Nella mischia, tutti i ruoli e i processi sono chiaramente definiti. Oltre a Scrum, viene spesso utilizzato Kanban.

Kanban

Oggi è una delle metodologie di sviluppo software più popolari. Il team sta lavorando con una scheda virtuale, che è divisa in fasi del progetto. Ogni partecipante vede quali compiti sono al lavoro, che sono bloccati in una delle fasi e che hanno già raggiunto la sua rubrica e richiedono attenzione.

A differenza della mischia, in kanban, puoi svolgere immediatamente compiti urgenti per lo sviluppo, senza aspettare l'inizio dello sprint successivo. È conveniente usare kanban non solo sul lavoro, ma anche per scopi personali - per distribuire i propri piani o attività per la famiglia per il fine settimana, per monitorare visivamente i progressi.

Molto presto organizzeremo una tre giorni. Su di esso, imparerai come utilizzare tutti i vantaggi di questo approccio, gestire lo sviluppo e rilasciare progetti di qualsiasi complessità. Ti aspetto!

1. Lo scopo della tecnologia di programmazione. Storia dello sviluppo della tecnologia di programmazione. Tipi di progetti software. Componenti della tecnologia di programmazione. Progetto, prodotto, processo e personale

2. Il ciclo di vita del programma. La natura ciclica dello sviluppo. Concetti di base della tecnologia di programmazione. Processi e modelli. Fasi e curve. Pietre miliari e manufatti. Persone interessate e dipendenti.

3. Identificazione e analisi dei requisiti. Requisiti software Schema di sviluppo dei requisiti. Gestione dei requisiti.

4. Progettazione architettonica e dettagliata. Implementazione e codifica. Test e verifica. Processo di controllo di qualità. I metodi della "scatola bianca" e della "scatola nera". Ispezione e recensioni. Obiettivi del test. Verifica, validazione e test del sistema. Manutenzione e sviluppo continuo.

5. Modelli del processo di sviluppo. Modelli a cascata e nastri trasportatori. Modelli a spirale e incrementali. Modelli flessibili del processo di sviluppo.

6. Progettazione di un modello di processo. Individuazione dei requisiti di processo. Fasi, pietre miliari e manufatti usati. La scelta dell'architettura di processo. La procedura per la realizzazione di un progetto standard. Procedure documentate.

7. Modelli del team di sviluppo. La natura collettiva dello sviluppo. La dimensione ottimale della squadra. Sottoordinazione dei partecipanti al progetto. Sviluppo del team e sviluppo del personale. Specializzazione, cooperazione e interazione.

8. Modelli del team di sviluppo. Modello di squadra gerarchica. Il metodo del team chirurgico. Modello di squadra peer.

9. La natura della programmazione. La scienza della programmazione. L'arte della programmazione. Il mestiere della programmazione. Paradigmi di programmazione. Programmazione strutturale. Programmazione logica Programmazione orientata agli oggetti

10. Architettura del software. Gestione di eventi. Architettura client / server. Servizio. Architettura a tre strati. Progettazione di programmi. Design concettuale. Progettazione logica. Design dettagliato.

1. Novikov si avvicina allo sviluppo del software ”http: // window. /window_catalog/files/r60368/itmo307.pdf.

2. Programmazione estrema. - San Pietroburgo: Peter, 2002.

3. Tecnologia di sviluppo software. - SPb. : Peter, 2004.

4. Brooks Jr. i sistemi software sono progettati e creati. M .: Nauka, 1975; nuova edizione della traduzione: Mythical man-month. San Pietroburgo: SIMBOLO +, 1999.

5. Algoritmi + strutture dati \u003d programmi. M., Mondo, 1978.

6. Programmazione sistematica. introduzione M .: Mir, 1977.

7. Programmazione strutturale. M .: Mir, 1975.

8. La disciplina della programmazione. M .: Mir, 1978.

9. Tecnologie di sviluppo software. - San Pietroburgo: Peter, 2002.

10. Programmazione di Terekhov. M.: BINOM, 2006.

11. Rambo J. Processo di sviluppo software unificato. San Pietroburgo: Peter, 2002.

Teoria economica per manager

Teorie microeconomiche di base. Esempi di applicazione nell'analisi dei processi economici. Teorie macroeconomiche di base. Esempi di applicazione nell'analisi dei processi economici. Principi e metodi di gestione dei processi economici. Toolkit per la valutazione del livello di sviluppo dei processi economici Problemi di riproduzione estesa. Fattori di crescita economica dell'economia russa. Criteri e indicatori di sviluppo sostenibile. Levigare le vibrazioni cicliche. Il ruolo del moltiplicatore e dell'acceleratore nella valutazione del ritmo dello sviluppo economico. Funzioni di produzione nell'economia. Esempi di applicazione nell'analisi dei processi economici. Profitto. Calcolo di indicatori che incidono sul profitto, un'immagine grafica del punto di pareggio. Metodologia per l'attuazione della politica di investimento.

Il corso di teoria economica: un libro di testo per università / Ed. . –Kirov: ASA, 2004. Kolemaev, modellistica matematica. Modellazione di processi e sistemi macroeconomici: un libro di testo. M .: UNITY-DANA, 2005. Bazhin cibernetica. Kharkov: Console, 2004. Workshop Leushin sui metodi di modellistica matematica: un manuale di addestramento. Stato di Nižnij Novgorod Tech. Univ. - N. Novorod, 2007. Politics on Economics: lezioni di premi Nobel per l'economia. M.: Economia moderna e diritto, 2005. Cheremnykh. Livello avanzato: Textbook.-M .: INFRA-M, 2008. L'evoluzione delle istituzioni della mini-economia. Institute of Economics, Ural Branch of the Russian Academy of Sciences, - M.: Nauka, 2007.

Tecnologie per lo sviluppo e l'adozione di decisioni manageriali [N]

Il processo decisionale come base del gestore. Introduzione alla teoria delle decisioni. Concetti di base della teoria delle decisioni. Modelli di gestione aziendale e loro impatto sul processo decisionale. Diversi modi per classificare le soluzioni. Classificazioni: per grado di formalità, per grado di routine, per frequenza, per urgenza, per grado di raggiungimento degli obiettivi, attraverso la scelta di un'alternativa. Metodi decisionali di base. Metodi decisionali decisi. Obiettivi decisionali. È ora di trovare soluzioni. Principali errori Metodi matematici decisionali. Aspetti matematici della teoria delle decisioni. Ricerche operative. L'approccio matematico al processo decisionale. Albero decisionale. Modelli per lo sviluppo e il processo decisionale. Teoria del gioco. Metodi matematici per il processo decisionale. Aspetti matematici della teoria delle decisioni. Modelli di teoria delle code. Modelli di gestione dell'inventario. Modello di programmazione lineare. Compiti di trasporto. Modellazione di simulazione. Analisi di rete. Analisi economica. I limiti dei modelli razionali. Caratteristiche dello sviluppo e del processo decisionale nel gruppo. Un metodo per determinare la coesione di gruppo in base al grado di connettività degli insiemi. Tecniche decisionali collettive. Metodo di consenso Metodi di voto. Metodi decisionali creativi. Brainstorm. Conferenza di idee. Consigli sulla nave. Il metodo dei cappelli della mente di de Bono. Teoria dell'inventive Problem Solving (TRIZ). La soluzione definitiva perfetta. Esempi di problemi e relative soluzioni con TRIZ. Applicazione dei metodi TRIZ nel prendere decisioni uniche e creative. Metodi di sviluppo di idee per soluzioni e loro adattamento alla situazione. Obiettivi dell'albero del modello. Strategia di consenso. Formazione di decisioni sul coordinamento degli interessi. Metodi per determinare gli interessi delle controparti. Sistemi di supporto alle decisioni (sistemi esperti). Storia dei sistemi decisionali. Classificazione dei sistemi decisionali. Struttura tipica di un sistema esperto. Modi per rappresentare la conoscenza. Metodi di inferenza. L'applicazione di sistemi esperti in pratica.

I. Teoria del processo decisionale: un libro di testo. - M .: Esame, 2006 .-- 573 p. I. Processo decisionale. Teoria e metodi di sviluppo delle decisioni di gestione. Tutorial. - M.: Mart, 2005. - 496 s Sviluppo di una decisione manageriale - M: Casa editrice "Delo", 2004 - 392 s. G. Valutazioni degli esperti e processo decisionale. - M.: Brevetto, 1996. - 271 p. Taha // Introduzione alla ricerca operativa \u003d Ricerca operativa: un'introduzione. - 7 ° ed. - M .: "Williams", 2007. - S. 549-594. G. Tale. Previsioni economiche e processo decisionale. M .: "Progress" 1970. K. D. Lewis. Metodi di previsione degli indicatori economici. M.: "Finanza e statistica" 1986. G. S. Kildishev, A. A. Frenkel. Analisi e previsioni di serie storiche. M .: "Statistica" 1973. O. Kim, C. W. Muller, W. R. Kleck e altri. Analisi fattoriale, discriminante e di gruppo. M.: "Finanza e statistica" 1989. Responsabile effettivo. Libro 3. Processo decisionale. - MIM LINK, 1999 Turevsky e gestione dell'impresa di trasporto automobilistico. - M .: Higher School, 2005.,; sotto la direzione di . Analisi del sistema nella gestione: un manuale di addestramento. - M .: Finance and Statistics, 2006., Tinkov: libro di testo. - M .: KNORUS, 2006.

Modellazione di processi aziendali in sistemi di gestione integrati

Quali principi contraddistinguono i processi aziendali? Qual è il problema di una descrizione olistica dei processi aziendali. Che cos'è un sistema, quali proprietà ha? Il ruolo dell'analisi dei sistemi nella modellizzazione dei processi aziendali? Il processo come oggetto di gestione. L'ambiente del processo. Elementi chiave di un processo aziendale. Vantaggi e svantaggi della gestione funzionale e di processo. Ciclo di gestione PDCA. Fasi del ciclo di controllo del processo. Ciclo PDCA e implementazione dei requisiti della norma ISO 9001: 2008. Metodologia SADT (analisi strutturata e tecnica di progettazione - metodo di analisi strutturale e progettazione). Essenza. Le principali disposizioni. Come appare il modello di attività funzionale nella metodologia IDEF0? Cosa significano i lavori nei diagrammi del modello funzionale, come vengono visualizzati secondo la metodologia IDEF0? A cosa servono le frecce nei diagrammi del modello funzionale, quali sono i loro tipi e tipi? Metodologia DFD. Essenza. I componenti principali dei diagrammi DFD. Quali sono le caratteristiche dei diagrammi DFD, cosa sono descritti in essi? Quali sono le caratteristiche degli oggetti grafici DFD? Cosa significano le frecce nel diagramma DFD? Metodologia IDEF3. Essenza. Strumenti di documentazione e modellazione. Quali sono le caratteristiche dei diagrammi IDEF3, cosa sono descritti in essi? Quali sono le caratteristiche degli oggetti diagramma IDEF3? E il tiratore? Classificazione dei processi. Processi aziendali tipici. Reingegnerizzazione e la sua tecnologia. Quando è consigliabile utilizzare la reingegnerizzazione quando si gestisce un'azienda? Processi di monitoraggio e misurazione. Indicatori del processo organizzativo. Valutazione numerica e di valutazione dei processi.

"Business Process Modeling con AllFusion Process Modeler (BPwin 4.1) Dialog-MEPhI" 2003 "Creazione di sistemi di informazione con AllFusion Modeling Suite" ed. Dialog-MEPhI 2003 "La pratica della modellazione funzionale con AllFusion Process Modeler 4.1. (BPwin) Dove? Perché? Come?" ed. Dialog-MEPhI 2004 Dubeykovsky modellazione con AllFusion Process Modeler (BPwin). ed. Dialog-MEPhI 2007 D. Mark, C. McGowan "Metodologia di analisi strutturale e progettazione di SADT" 1993. Lavoro classico sulla metodologia di SADT. Analisi di sistemi Cheremny: tecnologia IDEF, modellizzazione e analisi di sistemi. Tecnologia IDEF. laboratorio M.: Finance and statistics, 2001., "Modelli strutturali di business: tecnologia DFD" http: // www. /Level4.asp? ItemId \u003d 5810 "Teoria e pratica della riorganizzazione dei processi aziendali" 2003 / P50.1 .. Metodologia della modellizzazione funzionale. M.: Gosstandart of Russia, 2000. http: // www. IDEF0, IDEF3, DFD http: // www. Modellazione dei processi aziendali mediante BPwin http: // www. / department / se / devis / 7 / IDEF0 nella modellizzazione dei processi di gestione aziendale http: /// content / view / 21/27 / http: // www. /dir/cat32/subj45/file1411/view1411.html http: // www. http: // www.

Valutazione della produttività del software

1. Architettura IT

2. Domini dei processi di gestione.

3. L'elenco dei processi di dominio Pianificazione e organizzazione

4. Elenco dei processi di acquisizione e implementazione del dominio

5. L'elenco dei processi nel dominio Funzionamento e manutenzione

6. Elenco dei processi di dominio Monitoraggio e valutazione

7. Caratterizzazione dei livelli del modello di maturità del processo

9. KPI e KGI loro relazione e scopo

1. 10. Misure di controllo generali in IT e misure di controllo delle applicazioni. Aree di responsabilità e responsabilità di business e IT.

Cobit 4.1 edizione russa.

Regolamentazione legale della creazione e dell'uso della proprietà intellettuale

1. Elencare i diritti intellettuali sui risultati dell'attività intellettuale e divulgare i loro contenuti.

2. Elencare i tipi di contratti in base all'ordine del diritto esclusivo. Descrivere ciascuno di questi contratti in ordine di diritto esclusivo.

4. Descrivere le principali disposizioni della protezione legale del Programma per computer come oggetto di copyright.

5. Confrontare le principali disposizioni sulla protezione legale del Database come oggetto di copyright e come oggetto di diritti connessi.

6. Descrivere le condizioni di brevettabilità dei diritti di brevetto: invenzioni; modelli di utilità; disegni industriali.

7. Espandere il contenuto dei criteri di brevettabilità dell'invenzione: novità; passo inventivo; applicabilità industriale.

8. Descrivere le condizioni e la procedura per ottenere un brevetto per un'invenzione, un modello di utilità o un disegno industriale, nonché le condizioni che garantiscono la validità dei brevetti e la loro validità.

9. Fornire la definizione di "know-how" ed elencare le condizioni alle quali sorge e si realizza la creazione della protezione legale dei segreti di produzione.

10. Elencare i mezzi di individualizzazione protetti e fornirne una descrizione comparativa.

1., Diritto della proprietà intellettuale nella Federazione Russa, libro di testo // M, Prospect, 2007

2., Diritto della proprietà intellettuale, libro di testo // M, RIOR, 2009

Gestione dello sviluppo di progetti e software [I]

Che cos'è una metodologia, perché è necessaria. La struttura generale della metodologia, i principali elementi della metodologia. Principi di progettazione della propria metodologia. Esempi di vari manufatti, ruoli, competenze, condizioni al contorno. La struttura della metodologia secondo Cowbern, metriche della metodologia. Criteri di progetto Cowbern. Criteri di selezione della metodologia, matrice Cowbern. Ciclo di vita del progetto. Cascata e modelli iterativi del ciclo di vita. I limiti di applicabilità per la cascata e modelli iterativi. RUP come esempio di metodologia iterativa. I concetti di base di RUP, i limiti dell'applicabilità. Il ruolo dell'uomo nello sviluppo del software. Metodologie flessibili, principi di base di metodologie flessibili. La ragione dell'emergere di metodologie flessibili. Scrum come esempio di una metodologia flessibile. Ruoli, manufatti, attività in Scrum. Limiti di applicazione Scrum. Extreme Programming (XP) Idee, valori, pratiche fondamentali, limiti di applicabilità. Somiglianze e differenze tra Scrum e XP. Raccolta e gestione dei requisiti. Pratiche di base, termini, principi. Approcci alla documentazione di progetto e di prodotto, i principali tipi di documenti. Esempi di pratiche di gestione dei requisiti dalle metodologie esaminate nel corso. Pianificazione dello sviluppo software. Tipi di piani, gestione del rischio, rischi popolari. Esempi di pratiche di pianificazione dello sviluppo dalle metodologie discusse nel corso. Test nello sviluppo di software. Il concetto di assemblaggio (build) di un prodotto software. Metodi di prova di base, termini. Esempi di pratiche di test delle metodologie esaminate nel corso. Il concetto di assembly (build), modi per memorizzare il codice, strumenti. Due principi per l'organizzazione del lavoro con un sistema di controllo della versione. Funzionalità del processo di rilascio / visualizzazione del prodotto per diverse categorie di prodotti, esempi di pratiche. Concetti di architettura software moderna, architetture multilivello, criteri di architettura. Elenco delle soluzioni necessarie per la progettazione del software, approcci alla scelta di un sistema di archiviazione.

Kent Beck - Programmazione estrema Frederick Brooks - Il mitico mese umano o come vengono creati i sistemi software. Tom de Marco - Scadenza. Un romanzo sulla gestione dei progetti. Tom de Marco, Timothy Lister - Waltzing with the Bears. Tom de Marco, Timothy Lister - The Human Factor - progetti e team di successo. Alistair Cowbern - Ogni progetto ha una sua metodologia. Alistair Cowburn - Le persone come componenti non lineari e più importanti nello sviluppo del software. Andriy Orlov - Note di un automatore. Confessione professionale. Philippe Crachten - Introduzione al processo unificato razionale. Henrik Knieberg - Scrum e XP: Note con Advanced. Presentazioni di lezioni frontali sul corso


Modello a cascata Analisi dei requisiti Progettazione Implementazione Test di integrazione Specifiche del prodotto in fase di compilazione Architettura del prodotto in fase di elaborazione Sviluppo del codice sorgente Integrazione di singole parti del codice sorgente Test e risoluzione dei problemi












Unified Software Development Process (USDP) Il modello del caso d'uso descrive i casi in cui verrà utilizzata l'applicazione. Il modello analitico descrive le classi di base per l'applicazione. Un modello di progettazione descrive le relazioni e le relazioni tra le classi e gli oggetti allocati, mentre un modello di distribuzione descrive la distribuzione del software tra computer. Il modello di implementazione descrive l'organizzazione interna del codice del programma. Il modello di test è costituito da componenti di test, procedure di test e varie opzioni di test.








Componenti tipici dell'architettura del prodotto software e requisiti software tipici Organizzazione del programma Classi principali del sistema Organizzazione dei dati Regole aziendali Interfaccia utente Gestione delle risorse Sicurezza Prestazioni Scalabilità Interazione con altri sistemi (integrazione) Internazionalizzazione, localizzazione Input / output dei dati Gestione degli errori


Componenti tipici dell'architettura del prodotto software e requisiti software tipici Tolleranza ai guasti: un insieme di proprietà del sistema che ne aumentano l'affidabilità rilevando errori, ripristinando e localizzando conseguenze negative per il sistema. Quando si sviluppa un sistema reale per garantire la tolleranza agli errori, è necessario prevedere tutti i tipi di situazioni che possono portare a guasti del sistema e sviluppare meccanismi per la gestione degli errori. Affidabilità: la capacità del sistema di resistere a vari guasti e guasti. Il fallimento è la transizione del sistema a seguito di un errore a uno stato completamente non operativo. Errore: un errore nel sistema che non porta al fallimento del sistema. Meno guasti e guasti per un certo intervallo di tempo, più affidabile è il sistema.




Componenti tipici di un'architettura di prodotto software e requisiti software tipici Possibilità di implementazione dell'architettura sviluppata. Possibilità di implementare l'architettura in via di sviluppo. Funzionalità ridondante. Funzionalità ridondante. Prendere una decisione per l'acquisto di componenti software standard. Prendere una decisione per l'acquisto di componenti software standard. Strategia per il cambiamento. Strategia per il cambiamento.


L'organizzazione generale del programma è chiaramente descritta? Le specifiche includono una panoramica dell'architettura e delle sue motivazioni? L'organizzazione generale del programma è chiaramente descritta? Le specifiche includono una panoramica dell'architettura e delle sue motivazioni? Le componenti principali del programma sono adeguatamente definite, le loro aree di responsabilità e l'interazione con altre componenti. Le componenti principali del programma sono adeguatamente definite, le loro aree di responsabilità e l'interazione con altre componenti. Tutte le funzioni specificate nella specifica dei requisiti sono implementate da un numero ragionevole di componenti di sistema. Tutte le funzioni specificate nella specifica dei requisiti sono implementate da un numero ragionevole di componenti di sistema. È una descrizione delle classi più importanti e la loro giustificazione fornita. È una descrizione delle classi più importanti e la loro giustificazione fornita. Esiste una descrizione dell'organizzazione del database. Esiste una descrizione dell'organizzazione del database. Sono definite tutte le regole aziendali. Sono definite tutte le regole aziendali. Viene descritto il loro effetto sul sistema? Viene descritto il loro effetto sul sistema? Un elenco di domande che ti consente di trarre una conclusione sulla qualità dell'architettura:


Un elenco di domande che ci consente di trarre una conclusione sulla qualità dell'architettura: viene descritta la strategia di progettazione dell'interfaccia utente? È stata descritta la strategia di progettazione dell'interfaccia utente? L'interfaccia utente è stata modulare in modo che le sue modifiche non influiscano sul resto del sistema? L'interfaccia utente è stata modulare in modo che le sue modifiche non influiscano sul resto del sistema? È una descrizione della strategia di input / output dei dati descritta. È una descrizione della strategia di input / output dei dati descritta. Esiste un'analisi delle prestazioni del sistema che verrà implementata usando questa architettura. Esiste un'analisi delle prestazioni del sistema che verrà implementata usando questa architettura. Se viene eseguita l'analisi dell'affidabilità del sistema progettato. Se viene eseguita l'analisi dell'affidabilità del sistema progettato. Se l'analisi delle problematiche di scalabilità ed estensibilità del sistema. Se l'analisi delle problematiche di scalabilità ed estensibilità del sistema.


Ripetizioni del codice di refactoring del software; l'implementazione del metodo è troppo ampia; troppa nidificazione dei cicli o il ciclo stesso è molto grande; la classe ha scarsa connettività (le proprietà e i metodi della classe dovrebbero descrivere solo 1 oggetto); l'interfaccia di classe non forma un'astrazione coerente; Il metodo accetta troppi parametri. È necessario provare in modo che il numero di parametri sia ragionevolmente minimo; le singole parti della classe vengono modificate indipendentemente dalle altre parti della classe; Il refactoring comporta l'adattamento del software al nuovo hardware e ai nuovi sistemi operativi, nuovi strumenti di sviluppo, nuovi requisiti, nonché architettura e funzionalità del software. Si tratta di un cambiamento nella struttura interna del software senza modificarne il comportamento esterno, progettato per fornire modifiche al software. Ragioni ragionevoli di refactoring:


Il refactoring del software durante la modifica di un programma richiede una modifica parallela di più classi. Se si verifica una situazione del genere, è necessario riorganizzare le classi al fine di minimizzare in futuro i luoghi di possibili cambiamenti; È necessario modificare diverse gerarchie di ereditarietà in parallelo Devi modificare diversi blocchi di case. È necessario modificare il programma in modo tale da eseguire l'implementazione del case case e richiamarlo nel numero di volte richiesto nel programma; gli elementi di dati di pari livello utilizzati insieme non sono organizzati in classi. Se si utilizza ripetutamente lo stesso insieme di elementi di dati, è consigliabile considerare la combinazione di questi dati e posizionare le operazioni eseguite su di essi in una classe separata;


Il metodo di refactoring del software utilizza più elementi di un'altra classe rispetto alla propria. Ciò significa che il metodo deve essere spostato in un'altra classe e chiamato da quello precedente; il tipo di dati elementare è sovraccarico. È meglio usare una classe per descrivere l'essenza del mondo reale piuttosto che sovraccaricare qualsiasi tipo di dati esistente; la classe ha funzionalità troppo limitate. È meglio sbarazzarsi di questa classe trasferendo la sua funzionalità in un'altra classe; I dati "vaganti" vengono trasmessi lungo la catena di metodi. I dati trasferiti a un metodo solo in modo da passarli a un altro metodo sono chiamati "randagi". Se si presentano situazioni del genere, prova a cambiare l'architettura delle classi e dei metodi per sbarazzartene.


Il refactoring del software dell'oggetto intermediario non fa nulla. Se il ruolo di una classe è ridotto al reindirizzamento delle chiamate del metodo ad altre classi, è meglio eliminare tale oggetto intermediario ed effettuare chiamate direttamente ad altre classi; una classe sa troppo di un'altra classe. In questa situazione, è necessario rendere l'incapsulamento più rigoroso al fine di garantire una conoscenza minima dell'erede sul genitore; Il metodo ha un brutto nome; i dati dei membri sono pubblici. Ciò confonde la linea tra l'interfaccia e l'implementazione, viola inevitabilmente l'incapsulamento e limita la flessibilità del programma; Pubblica commenti nel codice sorgente


Il refactoring del software di una sottoclasse utilizza solo una piccola parte dei metodi dei suoi antenati. Tale situazione si presenta quando viene creata una nuova classe solo per ereditare diversi metodi dalla classe base e non per descrivere alcuna nuova entità. Per evitare ciò, è necessario trasformare la classe base, in modo che dia accesso alla nuova classe solo ai metodi di cui ha bisogno; Il codice contiene variabili globali. Solo le variabili effettivamente utilizzate in tutto il software dovrebbero essere globali. Tutte le altre variabili devono essere locali o devono diventare proprietà di qualsiasi oggetto; Il programma contiene codice che un giorno potresti aver bisogno. Quando si sviluppa il sistema, è consigliabile fornire luoghi in cui il codice sorgente possa essere aggiunto in futuro.

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam