Design dall'alto verso il basso e dal basso verso l'alto.  Ciao studente Su cosa si basa il design top-down?

Design dall'alto verso il basso e dal basso verso l'alto. Ciao studente Su cosa si basa il design top-down?

subroutine

Programmazione strutturata

La sezione precedente ha discusso gli operatori di base e i tipi di dati necessari per comporre i programmi. Si presumeva che il testo del programma fosse una sequenza lineare di operatori di assegnazione, cicli e operatori condizionali. In questo modo è possibile risolvere problemi non molto complessi e comporre programmi contenenti diverse centinaia di righe di codice. Successivamente, la comprensibilità del testo di origine diminuisce drasticamente a causa del fatto che la struttura generale dell'algoritmo si perde dietro operatori linguistici specifici che eseguono azioni troppo dettagliate ed elementari. Appaiono numerose istruzioni condizionali e loop nidificate, la logica diventa completamente confusa e, quando si tenta di correggere un'istruzione errata, vengono introdotti diversi nuovi errori relativi alle peculiarità del funzionamento di questa istruzione, i cui risultati sono spesso presi in considerazione in vari posti in programma. Per questo motivo, è quasi impossibile digitare ed eseguire il debug di una lunga sequenza lineare di istruzioni.

Quando si creano applicazioni di medie dimensioni (diverse migliaia di righe di codice sorgente), viene utilizzato programmazione strutturata, l'idea è essenzialmente che la struttura del programma dovrebbe riflettere la struttura del problema da risolvere in modo che l'algoritmo di soluzione sia chiaramente visibile dal testo di origine. Per fare ciò, è necessario disporre dei mezzi per creare un programma non solo con l'aiuto di tre semplici operatori, ma anche con l'aiuto di mezzi che riflettano in modo più accurato la struttura specifica dell'algoritmo. A tal fine, il concetto è stato introdotto nella programmazione subroutine - un insieme di operatori che eseguono l'azione desiderata e sono indipendenti da altre parti del codice sorgente. Il programma è suddiviso in tante piccole subroutine (che richiedono fino a 50 istruzioni - una soglia critica per comprendere rapidamente lo scopo della subroutine), ognuna delle quali esegue una delle azioni previste dall'attività originale. Combinando queste subroutine, è possibile formare l'algoritmo finale non da semplici operatori, ma da blocchi di codice completi che hanno un certo carico semantico, e si può fare riferimento a tali blocchi per nome. Si scopre che le subroutine sono nuovi operatori o operazioni del linguaggio, definiti dal programmatore.

La possibilità di utilizzare le subroutine assegna il linguaggio di programmazione alla classe procedurale le lingue.

La presenza di sottoprogrammi consente di progettare e sviluppare un'applicazione dall'alto al basso - questo approccio è solitamente chiamato design dall'alto verso il basso. Innanzitutto, vengono allocate diverse subroutine che risolvono le attività più globali (ad esempio, l'inizializzazione dei dati, la parte principale e il completamento), quindi ciascuno di questi moduli viene dettagliato a un livello inferiore, suddividendosi a sua volta in un piccolo numero di altre subroutine e questo continua fino ad allora, fino a quando l'intera attività non è completata.

Questo approccio è conveniente in quanto consente a una persona di pensare costantemente a livello di soggetto, senza fermarsi a operatori e variabili specifici. Allo stesso tempo, diventa possibile non implementare immediatamente alcune subroutine, ma rimandarle temporaneamente fino al completamento di altre parti. Ad esempio, se è estremamente importante calcolare una funzione matematica complessa, viene assegnata una subroutine separata per tale calcolo, ma viene implementata temporaneamente da un operatore, che assegna semplicemente un valore preselezionato (ad esempio, 5). Quando l'intera applicazione è stata scritta e sottoposta a debug, puoi iniziare a implementare questa funzione.

È anche importante che le piccole subroutine siano molto più facili da eseguire il debug, il che aumenta significativamente l'affidabilità complessiva dell'intero programma.

Una caratteristica molto importante dei sottoprogrammi è la capacità di riutilizzare. Ampie librerie di routine standard sono fornite con sistemi di programmazione integrati, che possono aumentare significativamente la produttività utilizzando il lavoro di qualcun altro per creare routine di uso frequente.

Considera un esempio che dimostri una tecnica di progettazione dall'alto verso il basso. C'è un array Ocenki composto da N (N> 2) voti dei giudici (ogni voto è positivo). In alcuni sport, è consuetudine scartare i voti più grandi e più piccoli per evitare l'influenza di un giudizio parziale e per l'atleta viene presa in considerazione la media aritmetica dei voti rimanenti. Risolviamo questo problema dettagliando gradualmente l'algoritmo (senza essere legati a un linguaggio di programmazione specifico).

1. Il processo di soluzione è descritto più semplicemente dalle subroutine:

Inserisci_valutazioni_in_array;

Rimuovi_la_più_grande_valutazione;

Delete_small_evaluation;

Visualizza_risultati;

Ora puoi iniziare a dettagliare ciascuna di queste routine.

2. Elimina_la_più_grande_valutazione;

Come posso rimuovere il punteggio più grande da un array statico? Invece, puoi semplicemente scrivere il valore 0 e ignorare i valori zero durante il calcolo della media aritmetica.

I = Numero_del_elemento_più grande_in_array;

3. Elimina_la_piccola_valutazione;

I = Number_small_element_in_array;

Quando si implementa la subroutine Number_small_element_in_array, è necessario tenere in considerazione che si dovrà cercare il più piccolo tra positivo valori (zero grande).

Ciò richiede un operatore di ciclo che calcoli la somma di tutti gli elementi nell'array Ocenki.

PER I = 1 A N

SOMMA = SOMMA + Ocenki (I)

SOMMA = SOMMA / (N - 2)

L'ultima affermazione calcola la media aritmetica di tutte le stime. La somma degli elementi dell'array viene divisa per il numero di elementi, ridotto di 2, perché non è necessario considerare le due stime, la più grande e la più piccola.

Se questo compito fosse risolto in sequenza, allora già nella fase di rimozione dei segni, potrebbero sorgere alcuni problemi.

Implementa tu stesso le subroutine Numero_di_elemento_più grande_in_array e Numero_di_elemento_più piccolo_in_array.


  • - Argomento 3.2 Progettazione dall'alto verso il basso

    La progettazione top-down comporta la scomposizione sequenziale della funzione di elaborazione dati complessiva in semplici elementi funzionali ("top-/down"). Di conseguenza, viene costruito uno schema gerarchico, che riflette la composizione e la subordinazione dei singoli ... [leggi tutto]


  • - Design dall'alto verso il basso

    Lezione 12-2 ore Il metodo di progettazione dall'alto verso il basso comporta la scomposizione sequenziale della funzione generale di elaborazione dei dati in semplici elementi funzionali ("alto/basso"). Di conseguenza, viene costruito uno schema gerarchico, che riflette la composizione e la subordinazione ... [leggi tutto]


  • - I percorsi di progettazione possono iniziare dai livelli gerarchici inferiori delle descrizioni (disegno dal basso verso l'alto) o in alto (disegno dall'alto verso il basso).

    C'è una profonda relazione tra tutte le fasi della progettazione. Pertanto, la definizione del progetto definitivo e lo sviluppo di tutta la documentazione tecnica spesso non possono essere completati prima della fine dello sviluppo tecnologico. In fase di progettazione e sviluppo...

  • Domanda 4. Progettazione verso l'alto e verso il basso.

    Nome parametro Significato
    Argomento dell'articolo: Domanda 4. Progettazione verso l'alto e verso il basso.
    Rubrica (categoria tematica) Produzione

    Gli ES si riferiscono a sistemi complessi e la loro progettazione è caratterizzata da un'elevata varietà di compiti di progettazione, dalla presenza di un gran numero di opzioni di soluzione ed è estremamente importante tenere conto di un numero maggiore di fattori.

    Oltre alle procedure di dettaglio in livelli gerarchici, con l'approccio gerarchico a blocchi alla progettazione di ES, viene utilizzata la suddivisione delle rappresentazioni del prodotto in una serie di aspetti in base alla natura delle proprietà visualizzate.

    Gli aspetti di base includono funzionale, di design e topologico.

    Funzionaleè consuetudine chiamare l'aspetto associato alla descrizione delle azioni e dei processi progettati dell'oggetto funzionale .

    V aspetto funzionale si distinguono i livelli di astrazione di sistema o strutturale, funzionale-logico, circuitale e componente.

    A livello di sistema i complessi appaiono come sistemi e i blocchi di apparecchiature come elementi.

    A livello funzionale e logico questi blocchi sono considerati come sistemi costituiti da elementi, che sono unità funzionali.

    A livello schematico questi blocchi sono considerati sistemi con componenti schematici.

    A livello di componenti i componenti stessi sono visti come sistemi e sono considerati i processi che si verificano nei componenti schematici.

    Aspetto del design corrisponde la gerarchia dei costrutti, compresi i livelli di descrizione dei componenti del prodotto, degli elementi discreti e dei microcircuiti, e dei frammenti topologici.

    Tecnologicamente parlando vengono considerati i livelli gerarchici di descrizione dei processi tecnologici sotto forma di percorsi progettuali, un insieme di operazioni e transizioni.

    Data la dipendenza dalla sequenza in cui vengono eseguite le procedure di progettazione, si distinguono due metodi di progettazione:

    Design verso l'alto- progettazione, in cui l'attuazione delle procedure di basso livello precede l'attuazione delle procedure di progettazione relative ai livelli gerarchici superiori (ᴛ.ᴇ. - dal basso verso l'alto).

    Design dall'alto verso il basso- disegno dall'alto verso il basso, ed è caratterizzato dalla sequenza opposta delle procedure.

    Una sequenza tipica di procedure di progettazione top-down ES include:

    - Ingegneria dei sistemi- ϶ᴛᴏ analisi dei requisiti tattici e tecnici per la progettazione di un insieme di alcuni fondamenti dei principi di funzionamento, lo sviluppo di schemi strutturali.

    - progettazione di circuiti- sviluppo di diagrammi funzionali e schematici.

    - ingegneria del design- scelta della forma, disposizione e collocazione delle strutture, instradamento delle interconnessioni e sviluppo della documentazione progettuale.

    - design tecnologico- sviluppo dei percorsi e della base tecnologica, selezione delle attrezzature.

    Design dall'alto verso il basso(fig.3).

    Riso. 3 Sequenza delle fasi di progettazione top-down di ES

    Una tipica sequenza di progettazione dal basso verso l'alto include (Figura 4):

    Strumento e design tecnologico- scelta della tecnologia di base, calcolo della diffusione del profilo, scelta della topologia dei componenti.

    Disegno schematico- ϶ᴛᴏ sintesi di uno schema circuitale, ottimizzazione dei parametri degli elementi.

    Design funzionale e logico- ϶ᴛᴏ sintesi di circuiti logici, implementazione della memoria, sintesi di test di controllo e verifica.

    Design e design tecnologico- posizionamento degli elementi, instradamento delle interconnessioni, verifica della corrispondenza degli schemi topologici ed elettrici, disegno della topologia layer-by-layer.

    Riso. 4 Sequenza di progettazione bottom-up tipica della progettazione di circuiti integrati (IC)

    Allo stesso tempo, sia nella progettazione top-down che bottom-up, la sequenza delle fasi progettuali è caratterizzata da un carattere iterativo, in cui l'approssimazione ai risultati finali viene effettuata mediante l'esecuzione ripetuta della stessa procedura con la correzione di i dati iniziali.

    L'algoritmo per ottenere una soluzione progettuale è mostrato in Figura 5

    Riso. 5 Algoritmo per l'implementazione della procedura di progettazione

    Analisi - la procedura di smembramento mentale o reale di un oggetto proprietà di un oggetto o relazioni tra oggetti (fenomeni o processi) in parti e identificazione delle relazioni tra queste parti.

    Le procedure analitiche sono una delle principali tecniche per ottenere nuovi risultati creativi.

    Sintesi - una procedura inversa all'analisi, che determina la connessione di varie componenti, aspetti di un oggetto in un unico insieme, che si svolge sia nell'attività pratica che nel processo di cognizione mentale della realtà.

    Grado - stabilire la conformità della qualità dell'oggetto (prodotto di sviluppo) ai requisiti.

    Domanda 4. Progettazione verso l'alto e verso il basso. - concetto e tipologie. Classificazione e caratteristiche della categoria "Domanda 4. Design verso l'alto e verso il basso". 2017, 2018.

    Metodi di progettazione del software

    Alla fine del XX secolo, non solo la complessità delle strutture progettate è aumentata in modo significativo, ma anche il loro impatto sulla società e sull'ambiente, la gravità delle conseguenze di incidenti dovuti a errori di sviluppo e funzionamento, elevati requisiti di qualità e prezzo, e una riduzione dei tempi necessari per il rilascio di nuovi prodotti. La necessità di tenere conto di queste circostanze ci ha costretto a modificare la natura e la metodologia tradizionali delle attività del progetto.

    Quando si creavano oggetti, dovevano già essere considerati nella forma sistemi, ovvero un complesso di elementi interni interconnessi con una struttura specifica, un'ampia gamma di proprietà e una varietà di connessioni interne ed esterne. È stata formata una nuova ideologia del design, che si chiama design dei sistemi.

    Ingegneria dei sistemi risolve in modo completo i compiti assegnati, tiene conto dell'interazione e dell'interconnessione dei singoli oggetti-sistemi e delle loro parti sia tra loro che con l'ambiente esterno, tiene conto delle conseguenze socio-economiche e ambientali del loro funzionamento. L'ingegneria dei sistemi si basa su un'attenta considerazione congiunta dell'oggetto di progettazione e del processo di progettazione, che a sua volta include una serie di parti importanti.

    Principi di ingegneria dei sistemi

    L'ingegneria dei sistemi dovrebbe essere basata su un approccio sistemico. Allo stato attuale, è ancora impossibile dire che la loro composizione completa e il contenuto siano noti in relazione alle attività del progetto, ma le più importanti possono essere formulate:

    Utilità pratica:

    o l'attività dovrebbe essere intenzionale finalizzati a soddisfare le reali esigenze di un consumatore reale o di un determinato gruppo sociale, di età o di altro tipo;

    o l'attività dovrebbe essere espediente... È importante rivelare le ragioni che impediscono l'utilizzo delle strutture esistenti per soddisfare nuovi bisogni, identificare le principali contraddizioni che le causano e concentrare gli sforzi sulla soluzione dei problemi principali;

    o l'attività dovrebbe essere sano ed efficace... Sarà ragionevole non utilizzare alcuna soluzione al problema, ma cercare L'opzione migliore;

    Unità dei componenti:

    o è consigliabile considerare qualsiasi oggetto, sia esso complesso o semplice, come il sistema, all'interno del quale è possibile selezionare parti più semplici logicamente correlate - sottosistemi, la cui unità delle proprietà private forma le proprietà qualitativamente nuove del sistema-oggetto;

    o gli oggetti sviluppati sono destinati alle persone, sono creati e gestiti. Pertanto, una persona deve essere considerata anche come uno dei sistemi interagenti. In questo caso, non dovrebbe essere presa in considerazione solo l'interazione fisica, ma anche l'impatto spirituale ed estetico;

    o esterno, o come viene anche chiamato - ambiente di vita, va considerato anche come un sistema interconnesso con l'oggetto progettato;

    Variabilità nel tempo:

    o tenendo conto delle fasi del ciclo di vita dell'oggetto;

    o tenendo conto della storia e delle prospettive per lo sviluppo e l'uso dell'oggetto sviluppato, nonché i campi della scienza e della tecnologia, sui cui risultati si basano gli sviluppi corrispondenti.

    Design dall'alto verso il basso e dal basso verso l'alto

    Si chiama condurre lo sviluppo di un oggetto in sequenza dalle caratteristiche generali a quelle dettagliate design dall'alto verso il basso... Il suo risultato saranno i requisiti per le singole parti e assiemi. Possibile progresso di sviluppo dal privato al generale, che forma un processo design dal basso verso l'alto... Tale progettazione avviene quando una o più parti sono già prodotti finiti (acquistati o già sviluppati).

    Il design top-down e bottom-up hanno i loro meriti e demeriti. Quindi, con la progettazione top-down, possono apparire requisiti che successivamente si rivelano irrealizzabili per ragioni tecnologiche, ambientali o di altro tipo. Con la progettazione bottom-up è possibile ottenere un oggetto che non soddisfa i requisiti specificati. Nella vita reale, a causa della natura iterativa del design, entrambi i suoi tipi sono correlati.

    Ad esempio, quando si sviluppa un progetto top-down di un'auto (dallo schema generale alle sue parti, ad esempio, al motore), è necessario collegare il layout generale alle dimensioni e alla potenza dei motori già prodotti. Altrimenti, dovrai sviluppare un nuovo motore per questo layout o modificare le opzioni originali per la sua posizione o il layout dell'intera vettura.

    Il lavoro del maestro

    1.1.2 Progettazione sequenziale (top-down e bottom-up)

    Il processo di progettazione dei prodotti mediante CAD, di norma, può essere implementato sotto forma di due possibili opzioni:

    * discendente (dall'alto verso il basso);

    * Design dal basso verso l'alto (dal basso verso l'alto).

    Il design top-down risolve le attività a livelli gerarchici superiori prima delle attività a livelli gerarchici inferiori. Nella progettazione dal basso verso l'alto, la sequenza è invertita. La progettazione funzionale di sistemi complessi è molto spesso top-down, la progettazione strutturale è bottom-up. La differenza fondamentale tra queste opzioni è mostrata nella Figura 1.3.

    Figura 1.3 - La differenza fondamentale tra le opzioni di progettazione del prodotto bottom-up e top-down

    La metodologia di progettazione top-down prevede la creazione di una struttura di controllo multilivello contenente tutte le geometrie di base e i parametri di base del prodotto progettato. Al centro della struttura di controllo (una struttura ad albero di singoli blocchi contenente un elenco dei partecipanti al progetto sotto forma di dipartimenti, la composizione di ciascun gruppo di controllo (un insieme di modelli IHP e di allocazione dello spazio (MWM)), designazione, nome e nome del file modello per ogni elemento, fissazione, su quale livello, in quale forma e da quale reparto vengono formati i modelli di progettazione) sono i modelli di geometria principale (componenti dell'assieme, in cui le dimensioni delle unità e delle parti di si determina il prodotto, le dimensioni geometriche caratteristiche dei componenti, la posizione e la forma degli accoppiamenti tra gli elementi, le interfacce esterne del prodotto futuro, giunti e meccanismi mobili, analisi del movimento dei diagrammi cinematici del prodotto, progettazione o dati esterni caratteristici del prodotto futuro vengono presi in considerazione, si sta lavorando per ottimizzare la progettazione del prodotto). A sua volta, MCI è un modello virtuale del prodotto progettato. Quindi, i dati dal master - geometria del livello superiore vengono trasferiti al livello inferiore e integrati dalla geometria di raffinamento, consentendo così di formare un diagramma concettuale del prodotto progettato.

    Lo schema ramificato della struttura di controllo consente di organizzare il lavoro parallelo di diversi dipartimenti di designer e designer. La fase finale è la creazione di modelli di progettazione reali di parti e assiemi con collegamenti a IHP e il rilascio della documentazione di progettazione.

    Nella progettazione bottom-up, lo sviluppo procede dal basso verso l'alto. Nella prima fase vengono sviluppati i prodotti del livello più basso (la geometria di parti e assiemi specifici). A quello successivo, vengono collegati prodotti di livello superiore (creazione di complessi di parti - assiemi) e ne vengono verificate le prestazioni. Nella fase di progettazione finale, viene sviluppato un gruppo di controllo, responsabile della logica dell'intero prodotto.

    Una metodologia di progettazione top-down viene utilizzata per i prodotti di nuova creazione durante il lavoro di progettazione e sviluppo per gestire efficacemente i dati e le modifiche di progettazione.

    La metodologia di progettazione bottom-up viene utilizzata per modificare prodotti già sviluppati.

    Progettazione di un motore a razzo a propellente solido per il terzo stadio di un missile balistico a tre stadi

    L'ugello è un elemento molto importante di qualsiasi motore a razzo. Determina in gran parte tutte le caratteristiche del razzo, poiché è in esso che l'energia potenziale dei gas caldi viene convertita in energia cinetica di un getto di gas in uscita ...

    Sviluppo di un motore a razzo a propellente liquido per il primo stadio di un veicolo di lancio

    La Figura 9 mostra uno schema pneumoidraulico del sistema di propulsione LPRE di 1° stadio, funzionante a cherosene e ossigeno. Nel diagramma, le linee rappresentano le tubazioni, le linee doppie rappresentano i collegamenti meccanici. Un elenco di unità è allegato al diagramma (tabella 1) ...

    Sviluppo di un microsatellite di comunicazione

    I compiti della progettazione balistica includono: 1) costruire una pista, 2) determinare le caratteristiche dell'area di visualizzazione con attrezzature speciali, 3) determinare le aree di visibilità del veicolo spaziale ...

    ingegneria spaziale missilistica automatizzata La progettazione è il processo di creazione di un progetto, prototipo, prototipo di un oggetto presunto o possibile, stato. Nella tecnologia: lo sviluppo del design ...

    Gestione dei dati di ingegneria durante la fase di progettazione concettuale di un veicolo di lancio

    La progettazione parallela tradizionale nello sviluppo di nuovi prodotti di solito include un elenco di progettazione, assemblaggio, test, analisi, analisi, ripetizione iterativa del ciclo fino a quando non si ottiene il risultato desiderato ...

    Se la soluzione di problemi di livelli gerarchici elevati precede la soluzione di problemi di livelli gerarchici inferiori, allora si parla di progettazione verso il basso(dettagli passo passo). Se le fasi associate ai livelli gerarchici inferiori vengono eseguite in precedenza, si chiama progettazione ascendente.

    Ciascuno di questi due tipi di design presenta vantaggi e svantaggi. Nella progettazione top-down, un sistema viene sviluppato in un ambiente in cui i suoi elementi non sono ancora stati definiti e, pertanto, le informazioni sulle loro capacità e proprietà sono congetturali. In un progetto bottom-up, invece, gli elementi sono progettati prima del sistema, e quindi i requisiti per gli elementi sono di natura presunta. In entrambi i casi, a causa della mancanza di informazioni iniziali complete, ci sono deviazioni dai risultati tecnici ottimali potenzialmente possibili. Tuttavia, va ricordato che tali deviazioni sono inevitabili con l'approccio gerarchico a blocchi al design e che non esiste un'alternativa accettabile all'approccio gerarchico a blocchi quando si progettano oggetti complessi. Pertanto, l'ottimalità dei risultati della progettazione gerarchica a blocchi dovrebbe essere considerata dal punto di vista degli indicatori tecnici ed economici, inclusi, in particolare, i costi dei materiali e dei tempi per la progettazione.

    Poiché le ipotesi formulate possono non essere giustificate, è spesso necessario ripetere le procedure di progettazione delle fasi precedenti dopo aver completato le procedure di progettazione delle fasi successive. Tali ripetizioni assicurano che i risultati ottimali vengano affrontati in modo coerente e conducano a un design iterativo. Di conseguenza, l'iterazione dovrebbe essere considerata un importante principio di progettazione per oggetti complessi.

    In pratica, è comune combinare il design bottom-up e top-down. Ad esempio, la progettazione bottom-up avviene a tutti quei livelli gerarchici che utilizzano elementi unificati. Ovviamente, gli elementi unificati, orientati all'uso in un numero di sistemi diversi di una certa classe, sono sviluppati prima di un particolare sistema di questa classe.

    La bellezza del design top-down è che consente agli sviluppatori di concentrarsi su questioni fondamentali e rinviare qualsiasi decisione che non dovrebbe essere presa in questa fase del design. La progettazione top-down richiede fin dall'inizio di impostare e risolvere i problemi più fondamentali, rimandando problemi specifici per una successiva considerazione.

    Programmazione dall'alto.

    Discendente la programmazione è un metodo abbastanza comune per lo sviluppo di programmi modulari. I vantaggi della programmazione top-down sono i seguenti:

    Nelle prime fasi della progettazione, è possibile ottenere i codici sorgente dei moduli di livello superiore, il che in molti casi è importante, poiché l'accuratezza e la completezza della rappresentazione del programma in un vero linguaggio di programmazione è molto più elevata rispetto all'utilizzo di pseudocodice o algoritmo diagrammi;

    Nel processo di programmazione si rivelano contraddizioni e difficoltà che possono passare inosservate per lungo tempo;

    Il design top-down può essere combinato con il debug top-down.