Grile IP
Prototip și Ingineria Programării
Testați-vă cunoștințele despre ingineria programării și prototipizare cu acest quiz provocator! Conceput pentru profesioniști și studenți, acest quiz acoperă concepte esențiale, tehnici și metode utilizate în dezvoltarea software-ului.
- Dezvoltarea Agile
- Sisteme de operare
- Inginerie software
- Testare și validare
Prototipizarea este o paradigma a ingineriei programarii care se refera la:
Construirea unui prototip al programului si modificarea acestuia
Dezvoltarea rapida a unui model simplificat al programului, interactiunea cu clientul si adaugarea ulterioara a functiilor omise
Construirea aplicatiilor prin metoda top-down
Proiectarea folosind descrieri-tip (prototipuri) ale modulelor de program disponibile
Implementarea asociatiilor se poate realiza prin
Prin mesaje pentru asociatiile "1 la 1" si prin liste inlantuite si iteratori pentru asociatiile "1 la mai multi"
Pentru asociatii "1 la 1" cu pointeri, referinte sau declaratii inline de clase, iar asociatiile "1 la mai multi" se implementeaza de multe ori cu pattern "container"
Includerea unor obiecte de tipul claselor asociate
Redundanta dinamica pentru masurarea pozitiei in sistemul din problema poate fi astfel implementata:
Pozitia este citita dinamic de doua secvente software distincte si o alta secventa compara rezultatele; daca acestea nu sunt egale, se semnaleaza eroare de pozitie
Pozitia este citita dinamic de trei module software distincte si o alta secventa compara rezultatele; rezultatul corect este indicat de votul majoritar
O secventa software apelata dupa masurarea pozitiei verifica daca de la precedenta apelare pozitia s-a modificat cu o valoare "plauzibila" (spre exemplu, daca antena este in miscare, in intervalul de la ultima masurare nu se poate ca deplasarea sa fie prea mare sau prea mica in raport cu dinamica ansamblului mecanic); daca testul semnaleaza ca masurarea este suspicioasa, se semnaleaza eroare de masura.)
Dezvoltarea iterativa furnizeaza clientului o versiune de program care:
Contine de la inceput toate functiile si cu fiecare versiune noua acestea sunt perfectionate si performantele imbunatatite
Contine de la inceput un set restrins de functionalitati si cu fiecare versiune noua se adauga altele noi
Permite instruirea clientului si adaugare de functii noi
Cand, in cadrul sablonului Observer, serverul primeste un apel subscribe
Creaza un obiect de tip ConcreteObserver care adauga stocarea locala in atributele dorite
Creaza un obiect NotificationHandle care include adresa obiectului
Apeleaza periodic o metoda Gimme() de interogare direct a valorii urmarite
Modelul de dezvoltare in spirala presupune:
O abordare euristica in cadrul careia la fiecare etapa de dezvoltare, conceptul de dezvoltare abordat este validat prin metode euristice si solutia aleasa este in continuare dezvoltata in spirala
O abordare iterativa in cadrul careia, la fiecare iteratie, prin analiza riscurilor se compara diferitele alternative din punct de vedere al cerintelor si constrangerilor, iar prototipizarea verifica tezabilitatea inainte ca o anumita alternativa sa fie aleasa
O abordare iterativa in cadrul careia la fiecare iteratie, analiza riscurilor cantareste diferitele alternative din punct de vedere al validarii prin testare, ceea ce permite analiza fezibilitatii inainte ca o anumita alternativa sa fie aleasa
Metoda de dezvoltare software Cleanroom este bazata pe:
Metode orientate pe obiecte
Metode euristice
Metode formale
Metode stohastice
In UML conectarea modelului de obiecte cu modelul cazurilor de utilizare se realizeaza prin aceea ca:
Fiecare caz de utilizare va fi realizat de un set de obiecte care lucreaza impreuna.
Fiecare model de obiecte este realizat de un set de cazuri de utilizare care trimit secvente de mesaje.
Fiecare caz de utilizare corespunde cate unui obiect.
Sablonul Factory
Ofera o interfata unificata pentru un set de interfete dintr-un subsistem
Defineste o interfata pentru crearea unui obiect, dar lasa subclasele sa decida ce clasa trebuie instantiata.
Ofera un surogat local al unui obiect
Uzual, Service Oriented Architecture (SOA) se bazeaza pe:
Standarde de acces specifice Serviciilor Serviciilor WEB (SOAP - Simple Object Access Protocol, REST) interfetele Serviciilor WEB sunt descrise in termeni de WSDL (Web Services Description Language) pentru a putea fi inregistrate in directori publici si cautate in depozite UDDI (Universal Description, Discovery and Integration repositories) iar suportul pentru transportul informatiei este formatul XML (Extensible Markup Language)
Standare de acces specifice Serviciilor WEB (XML - Extensible Markup Language), interfetele Serviciilor WEB sunt descrise in termeni de WSDL (Web Services Description Language) pentru a putea fi inregistrate in directori publici si cautate in depozite UDDI(Universal Description, Discovery and Integration repositories) iar suportul pentru transportul informatiei este formatul SOAP(Simple Object Access Protocol).
Standarde de acces specifice Serviciilor WEB (SOAP - Simple Object Access Protocol, REST), interfetele Serviciilor WEB sunt descrise in termeni de XML(Extensible Markup Language) pentru a putea fi cautate in depozite UDDI (Universal Desription, Discovery and Integration repositories) iar mediul pentru dezvoltarea aplicatiilor este Microsoft Studio.NET sau JAVA.
Pentru testarea aplicatiei descrise in problema se utilizeaza ca si criteriu de oprire a testarii atingerea unui prag de incredere fixat. Pentru a-l determina, programul a fost "plantat" cu 26 erori. In timpul testarii, sunt detectate 15 erori, din care 10 sunt "plantate" si 5 sunt alte erori. Cate erori estimam ca mai sunt in program (nedetectate)?
12
8
6
Nivelurile cerintelor software sunt urmatoarele:
De business, utilizator, functionale
De business, de proiectare, de testare
De sistem, de program, de modul
In cadrul testelor de acceptanta:
Sistemul este testat daca functiile sunt implementate dupa instalarea softului
Sistemul este testat conform descrierii cerintelor clientului
Aplicatia este comparata cu lista cerintelor software si hardware
Regulatorul numeric din sistemul descris este:
Un calcul care se efectueaza in bucla infinita, furnizand o comanda catre sistemul de pozitionare pe baza intrarii de pozitie si a unei prescrieri
Un microprocesor care comanda rotatia antenei
Un calcul care se efectueaza periodic, furnizand o comanda catre sistemul de pozitionare pe baza intrarii de pozitie si a unei prescrieri
Documentatia software de proiectare este necesara, printre altele, pentru:
Elaborarea unui prototip
Prezentarea produsului
Prezentarea produsului si relatiile cu clientii
Activitatea de asistenta tehnica si refolosire software
In UML, o operatie este:
Specificarea unui mesaj
Descrierea unei secvente de apeluri de metode
Specificarea unui comportament
Sistemele de conducere de proces prezinta anumite particularitati, printre acestea numarandu-se:
Prezenta interfetelor cu utilizatorul, puterea foarte mare de procesare, utilizarea memoriilor statice, includerea unui mecanism de watch-dog, toleranta la defectare, fiabilitatea foarte buna, sisteme de operare speciale (OSEK sau AUTOSAR) si functionarea in conditii grele de lucru.
Proiectarea folosind redundanta statica sau dinamica, utilizarea unor microcontrolere speciale, prezenta interfetelor de proces si a interfetelor de vizualizare de semnal, functionarea in conditii grele de lucru.
Prezenta interfetelor de proces, utilizarea memoriilor statice, includerea unui mecanism de watch-dog, eventual existenta mai multor procesoare, modularitatea, toleranta la defectare, fiabilitatea foarte buna, sisteme de operare in timp real, cateodata lipsesc interfetele standard de vizualizare si functionarea in conditii grele de lucru.
Comunicare daisy-chain, stea sau multipunct, existenta unor interfete speciale cu operatorul, sisteme de operare UNIX, Linux sau QNX, toleranta la defectare, fiabilitatea foarte buna, functionarea in conditii grele de lucru.
In cadrul sedintelor de analiza organizate de noi cu reprezentatii clientului pentru sistemul descris, ne vom stradui sa ascultam doleantele clientului mai mult de
Un sfert din timpul alocat
Patru cincimi din timp
Cel putin jumatate din timp
Un proces de descarcare (charge-out) in cadrul unui sistem de gestiune a configuratiilor realizeaza:
Copierea unui modul de program din depozitul de baza (baseline) in spatiul de lucru al programatorului si apoi stergerea acestuia din depozit
Copierea unui modul din depozitul de baza in spatiul de lucru al programatorului si apoi blocarea accesului (lock) la acest modul astfel incat: nimeni altcineva sa nu mai poata realiza un alt proces de descarcare
Crearea unei noi revizii in depozit si eliminarea blocarii accesului astfel incat alti programatori sa poata realiza mai departe revizii
Tipurile de informatii furnizate de clienti (in cadrul activitatii de analiza software) sunt:
Cerinte de business, scenarii de business, restrictii asupra echipamentelor disponibile, cerinte functionale, structuri de date
Specificatii, sugestii de arhitectura software, structuri de date, functii ale sistemului, interfata cu utilizatorul
Cerinte de business, scenarii de business, reguli de business, cerinte functionale, atribute de calitate, constrangeri externe, structuri de date, sugestii pentru posibile solutii
Sistemele de operare dedicate folosesc pentru comunicare intre taskuri:
Cutii postale si semafoare
Mesaje si variabile comune
Mesaje
Zone tampon si conducte
Inspectia codului:
Se foloseste la testele de modul si presupune pregatirea actiunii prin desemnarea unei echipe, prezentarea prealabila a codului, studiul acesteia, formularea unei liste de obiective si organizarea unei sedinte de analiza; se verifica inclusiv corectitudinea algoritmilor, performantele, interfetele etc.
Se foloseste la testele de modul si presupune analiza de colegii din echipa de testare, carora li se explica cele realizate (folosind inclusiv documentatia) si care prin efortul de a intelege cele parcurse pot ajuta la descoperirea unor greseli; discutia este condusa de proiectanti si accentul este pe cod.
Este o metoda de testare utilizata la testele de acceptanta si presupune inspectia codului de catre client, realizata prin comparare cu specificatiile.
Un sistem Delta de stocare de versiuni:
Reprezinta toate versiunile prin utilizarea unei singure copii a codului sursa si diferentele dintre versiuni sunt marcate prin compilare conditionata: codul sursa relevant pentru anumite versiuni este generat de macrocomenzi astfel incat compilatorul poate reconstitui diversele versiuni
Memoreaza o singura versiune completa si le reprezinta pe celelalte prin retinerea diferentelor de la una la alta.
Cuprinde conventiile de nume care sunt folosite pentru a discerne intre situatiile in care fisiere diferite reprezinta versiuni diferite ale aceluiasi modul.
Sablonul Smart Pointer permite utilizarea in siguranta a mecanismului de tip pointer, prin
Testarea validitatii pointerilor prin contorizarea numarului de instantieri si testarea valorii de NULL; utilizarea destructorilor pentru eliberarea memoriei; detectarea conditiei ca obiectul nu mai exista si reefuzarea accesului prin intermediul pointerului.
Folosirea operatorilor new si delete definiti de utilizator pentru a evita accesarea unor zone de memorie nefolosite sau a unora deja eliberate.
Utilizarea constructorilor astfel incat pointerii sa fie initializati cu NULL sau sa indice spre obiecte valide; utilizarea destructorilor care determina daca memoria eliberata nu mai e necesara; detectarea conditiei ca obiectul nu mai exista si refuzarea accesului prin intermediul pointerului.
Pentru identificarea cazurilor de utilizare analistul sta de vorba cu clientul si ii adreseaza intrebari cheie precum:
Care sunt actorii? Care sunt mesajele pe care le trimit si receptioneaza? Care sunt grupele care alcatuiesc cazuri de utilizare?
Care este rolul actorilor si al sistemului in fiecare scenariu? Care sunt interactiunile (fluxurile)? Care sunt secventele de evenimente si date? Si posibile variatiuni.
Care sunt functiile primare ale sistemului? Care sunt functiile secundare ale sistemului? De ce a fost construit sistemul? Ce inlocuieste si de ce?
Solutia pentru sablonul Real-Time Observer consta in aceea ca:
Un singur obiect (Server) furnizeaza automat date pentru clientii sai (Observers) care in prealabil s-au inregistrat la Server cu Subscribe(); acestea sunt clase abstrace care au clase derivate (Concrete Server si Concrete Observer) care adauga comportamentul specializat pentru situatia concreta de functionare.
Un singur obiect (Server) decupleaza clientii sai (Observers) care in prealabil s-au inregistrat la Server cu Subscribe() de la accesul la un alt fir de executie sau proces prin crearea unui surogat al obicetului din acel fir de executie sau proces; daca clientii au nevoie de un serviciu de la obiectul acela, ei cer asta de la Server, Server si Observer sunt clase abstrace care au clase derivate (Concrete Server si Concrete Observer) care adauga comportamentul specializat pentru situatia concreta de functionare.
Obiectul Server furnizeaza la cerere asincrona sau episodica date pentru clientii sai (Observers) care in prealabil s-au inregistrat la Server cu Attach(); acestea sunt clase abstracte care au clase derivate (Concrete Server si Concrete Observer) care adauga comportamentul specializat pentru situatia concreta de functionare.
Middleware este:
Un software care este conceput pentru a rula intr-un nivel ierarhic de mijloc (three-tier) intre utilizatori si bazele de date pentru a permite astfel rularea proceselor multiple pe una sau mai multe echipamente/masini.
Un software de conectivitate care consta dintr-un set de servicii care permit rularea proceselor multiple pe una sau mai multe echipamente/masini in vederea interactiunii de-a lungul unei retele.
Un software de conectivitate care consta dintr-un set de servicii de tip proxy care permit rularea interfetelor utilizator pe una sau mai multe echipamente/masini in vederea interactiunii de-a lungul unei retele.
O stare este:
O descriere complet constructiva de descompunere a comportamentul complex in bucati mai mici, fiecare fiind valabila in anumite conditii specifice
O conditie de existenta a unui clasificator (clasa sau caz de utilizare) care persista o perioada semnificativa de timp si poate fi cumva distinsa fata de alte conditii similare de existena.
O descriere a comportamentului unui obiect in timpul intrarii, iesirii sau persistentei.
Principiile ingineriei programarii se refera la:
Modele folosite in procesul de proiectare
Destinatia activitatii de programare
Modalitatile de atingere a obiectivelor ingieriei programarii
Scopurile programarii
Pentru dezvoltarea produsului conform celor descrise in problema, se va folosi dezvoltarea agila "uzuala". Conducatorul diviziei responsabile va stabili cu membrii echipei, ca si principii calauzitoare, urmatoarele:
Software-ul se livreaza frecvent (saptamanal), chiar si schimbari tarzii sunt acceptate, cooperarea cu clientul este apropiata (daca se poate, zilnica), forma de comunicare dorita este conversatia fata in fata, echipa se auto-organizeaza
Software-ul este livrat o data la doua luni, schimbari dupa doua saptamani nu se accepta, cooperarea cu clientul se face prin intalniri saptamanale, forma de comunicare predilecta este e-mailul, echipa este structurata dupa metoda echipei programatorului-sef.
Software-ul se livreaza frecvent (saptamanal), se defineste, pentru fiecare increment, o descriere a cerintelor la nivelul clientului, se descriu apoi specificatiile functionale, se face proiectarea formala, verificarea corectitudinii, testarea statistica si certificarea, se lucreaza cu echipe organizate riguros si ierarhic.
Intr-un sistem de conducere de proces interactioneaza urmatoarele componente:
Interfete, sisteme de reglare, sisteme de calcul, software
Programe, calculatoare, interfete de proces, manuale de utilizare
Echipamente, software, proceduri de operare, operator uman
Software, hardware
Agregarea este:
Un tip special de asociere care implica proprietatea logica sau fizica.
O relatie de tip clasa parinte/clasa descendent.
O forma tare de compozitie in care partile sunt in intregime in responsabilitatea clasei compozite
Un sablon(pattern):
Abstractizeaza si identifica aspectele cheie ale unei structuri comune de proiectare in care o singura sursa de informatie actioneaza ca un server pentru mai multi clienti
Abstractizeaza si identifica aspectele cheie ale unei structuri comune de proiectare prin utilizarea claselor abstracte si a mostenirii si a functiilor virtuale
Abstractizeaza si identifica aspectele cheie ale unei structuri comune de proiectare pe care o face utila pentru crearea unui design OO, reutilizabil.
(Cateva dintre) obiectivele ingineriei programarii sunt:
Modularitatea, abstractizarea, ascunderea, eficienta, fiabilitatea, perceptibilitatea, confirmabilitatea
Adaptabilitatea(flexibilitatea), eficienta, fiabilitatea, perceptibilitatea
Adaptabilitatea, eficienta, modularitatea, confirmabilitatea, eficienta
Modularitatea, confirmabilitatea, adaptabilitatea, eficienta
Modularitatea inseamna:
Stabilirea unor ierarhii in program
Delimitarea unor secvente de program
Stabilirea riguroasa a intrarilor si iesirilor
Delimitarea unor secvente de program, cu intrai si iesiri bine precizate, intre care se stabilesc relatii ierarhice sau de colaborare
Notiunea de timp real implica:
Proprietatea semnalului de a reactiona la schimbari de proces, intr-un timp mai mic decat o limita prestabilita
Proprietatea de a reactiona in conditii reale a sistemului
Timp minim de reactie
Reactia sistemului in conditii precizate
Redundanta dinamica se implementeaza prin:
Efectuarea unor teste de acceptanta si rularea unei versiuni alternative
Testarea starii taskurilor
Efectuarea unor teste de acceptanta si eventuala rulare a unei versiuni alternative
Dublarea unei functii
Ce sunt regulile euristice de proiectare?
Metodologii de proiectare ale organizatiilor software
Reguli rezultate din aplicarea teoriilor euristice
Metode sistematice de proiectare
Reguli rezultate din experienta practica
Analiza orientata pe obiecte (OOA - Object Oriented Analysis) este
Analiza problemei plecand de la cerintele externe, prin discutii cu clientul, urmand sa se obtina astfel diagrame de clase si diagrame de cazuri de utilizare
Crearea unui model OO plecand de la cerintele externe (un model al domeniului problemei)
Crearea unui set de specificatii OO plecand de la cerintele externe (un model al domeniului solutiei problemei)
In depanarea aplicatiilor in cadrul intretinerii, este bine daca:
Introducem in meniul aplicatiei o comanda numita "Lista erorilor inregistrare"
Avem un log al utilizatorilor, al activitatilor, al erorilor, al utilizatorilor care au modificat inregistrari in baza de date
Avem acces la un simulator de proces
Cate module de program pot fi subordonate unui modul, conform regulilor euristice de proiectare?
Mai mult de 4
Intre 3 si 6
De obicei intre 3-4 si 7, iar daca fan-out este mai mare de 9 sau mai mic de 3-4, este necesara reproiectarea
Maxim 5 si minim 2
Problema dublei intretineri rezulta daca:
Mai multi proiectanti au drepturi pentru acces si modificare simultana a acelorasi date (eventual cod sursa)
Se mentin copii multiple ale aceluiasi cod sursa
Doi proiectanti actualizeaza simultan acelasi cod sursa si astfel este posibil sa se suprascrie unele modificari in copia distribuita
Ingineria programarii se ocupa cu:
Folosirea unor instrumente software adecvate, astfel incat sa creasca productivitatea activitatii de programare
Aplicarea unor principii de programare structurata, astfel incat sa creasca fiabilitatea produselor - program
Utilizarea intr-o maniera disciplinata, sistematica si cu pricepere a unor metode si instrumente asociate, adecvate, avand in vedere anumite obiective si principii de baza
Actorii in sistemul din problema, in acceptiunea UML, sunt:
Antena, utilizatorul, calculatorul PC
Senzorii, sistemul de actionare, traductoarele de masura, utilizatorul, unitatea seriala
Sistemul de actionare al antenei, sistemul de masura de pozitie, interfata cu utilizatorul, unitatea seriala de comunicare cu calculatorul PC, utilizatorul
Sablonul Container este o buna solutie pentru cazul
Cand un obiect are asociere 1-la-mai-multi si dorim sa imbunatatim reuzabilitatea si atunci acea clasa de la capatul "1" va gestiona un set de obiecte stocate intr-un container
Cand devine mai usoara adaugarea unui nou container - un vector extensibil - prin crearea unei interfete care asigura clientilor serviciile cerute de acestia dar folosesc operatiile promitive ale containerelor existente.
Cand un obiect are nevoie de o implementare comuna potrivita pentru o varietate de utilizari
Un sablon facade ofera:
Un acces unificat la o colectie de obiecte, prin intermediul pointerilor
O interfata unificata pentru un set de interfete dintr-un subsistem
O modalitate de a vizualiza unitar orice obiecte dintr-o colectie
Documentul de proiectare arhitecturala trebuie sa:
Specifice rolul fiecarei componente, cerintele care i-au fost alocate, interfata de comunicare cu celelalte componente ale sistemului
Descrie rolul fiecarei componente, cerintele de memorie si timp de calcul alocate, interfata de comunicare cu celelalte componente ale sistemului
Descrie rolul fiecarui programator si al fiecarei componente, respectiv interfata de comunicare cu celelalte componente ale sistemului
Specifice rolul fiecarei functii, cerintele care i-au fost alocate, interfata de comunicare cu utilizatorul, descrierea componentelor sistemului
Obiectivul partenerilor furnizori pentru industria auto care au definit impreuna AUTOSAR (Automotive Open System Architecture) este de
A crea si a stabili un sistem de operare (OSEK-VDK) pentru software pentru vehicule, care sa fie universal, deschis, scalabil si disponibil pentru toti furnizorii de componente auto
A dezvolta un mediu interactiv de dezvoltare si testare care sa poata fi folosit pe scara larga pentru dezvoltarea de aplicatii orientate pe obiecte in industria software Automotive
A crea si stabili standarde deschise pentru arhitecturile software, care vor oferi o infrastructura de baza, pentru a ajuta la dezvoltarea de software de vehicule, interfete utilizator si de management pentru toate domeniile specifice industriei auto
Asocierile sunt:
Codificate prin existenta unei clase asociative
Relatii de colaborare definite prin existenta unui server si respectiv a unui pachet de metode
Relatii care se manifesta la rulare pentru a permite schimb de mesaje intre obiecte
Proiectare structurata se realizeaza prin:
Folosirea proiectarii top-down si a unor structuri standard de control al programatorului: procesare secventiala, decizie, reunire
Proiectarea ingrijita a programelor, astfel incat acestea sa aiba o structura clara
Folosirea unor structuri standard de control al programului: procesare secventiala, decizie, reunire
Proiectarea top-down si modularizare structurala
Sablonul Observer rezolva problema
In care o singura sursa de informatie actioneaza ca un server pentru mai multi clienti care trebuie sa isi actualizeze autonom datele cand acestea se schimba
In care un obiect trebuie sa afiseze periodic (observe) schimbarile survenite in valorile citite de la un senzor
In care un server trebuie sa furnizeze la cerere date citite din proces
Caracteristica esentiala a modelului in V de dezvoltare software este:
Testele de acceptanta valideaza cerintele prin asocierea testelor cu specificatiile, prin conlucrarea dintre client si dezvoltator; aripa stinga poate fi reexecutata pentru a imbunatati cerintele, proiectarea sau codificarea.
Realizarea unui produs dezvoltat partial, care sa permita clientilor si proiectantilor sa examineze anumite aspecte ale produsului (mai ales interfete) pentru a putea coda mai usor; codarea este in virful V-ului.
Fiecare pas de proiectare este asociat cu pasul corespunzator din etapa de testare pentru verificarea corectei implementari a cerintelor si a aspectelor de proiectare si implementare, asociere realizata prin conlucrarea directa a echipelor implicate; aripa stinga poate fi reexecutata pentru a imbunatati cerintele, proiectarea sau codificarea.
Atingerea unui prag fixat pentru increderea in software este:
O modalitate de implementare a imbunatatirii sigurantei in functionare
Un criteriu de oprire a testarii
Un criteriu de optimizare a proiectarii software
Specificatiile urmaresc:
Descrierea structurii aplicatiei software si a comunicarii acesteia cu mediul (aici, multimea tuturor actorilor - a entitatilor exterioare cu care aplicatia interactioneaza in mod semnificativ).
Descrierea comunicarii dintre aplicatia software (vazuta ca o cutie neagra) si mediu (aici, multimea tuturor actorilor - a entitatilor exterioare cu care aplicatia interactioneaza in mod semnificativ).
Descrierea elementelor de arhitectura si de detaliu din aplicatia software, a structurii bazelor de date precum si a interfetelor utilizator.
Penetrabilitatea sistemelor de operare este
Calitatea sistemelor de operare de a fi usor de utilizat si de inteles de catre utilizatori
Raspandirea si asimilarea de catre dezvoltatori software
Raspandirea si asimilarea de catre specialisti si utilizatori
Obiectivele ingineriei programarii stabilesc:
Modelele de proiectare
Modelele si principiile de proiectare
Principiile care trebuie urmate la proiectare
Dezideratele activitatii de proiectare software
Cerintele functionale in UML:
Sunt codificate prin note text.
Sunt reprezentate prin diagrame de secventa si prin diagrame de stare.
Sunt reprezentate direct de cazurile de utilizare.
Adaptabilitatea se refera la:
Obiectivul de realizare a unor programe adaptate unor situatii concrete de functionare
Principiul de programare prin care programul trebuie sa fie usor de modificat
Obiectivul de realizare a unor programe care sa poata fi usor adaptate pentru conditii diferite de functionare
Principiul de proiectare prin care se cere proiectantului sa se adapteze usor la noi cerinte
Care dintre urmatoarele afirmatii este adevarata pentru fragmentul de diagrama ACR de mai jos:
Diagrama este optima(nu mai poate fi imbunatatita)
Nu se respecta regulile de intocmire a unei diagrame ACR
Diagrama poate fi optimizata
Nu se poate specifica nimic semnificativ despre aceasta diagrama
Care dintre urmatoarele afirmatii despre diagrama ACR de mai jos, nu este adevarata?
Respecta regulile de intocmire a unei diagrame ACR
Diagrama poate fi optimizata
Diagrama este incompleta
Contine toate entitatile folosite in metodologia MASCOT
Intr-o diagrama in care apar reprezentate urmatoarele entitati
Taskuri si dispozitive
Taskuri, conducte, cutii postale, dispozitive, semafoare, blocuri eveniment
Module de program, functii, canale, rezervoare
Taskuri(activitati), dispozitive, canale, rezervoare
Secventa urmatoare de program respecta principiile de proiectare structurala?
Da
Nu
Pentru anumite valori ale variabilelor de intrare, da
Pentru anumite valori ale variabilelor de intrare, nu
Etapele de aplicare a metodologiei MASCOT sunt:
Proiectarea generala, proiectare in detaliu, asistenta tehnica
Proiectare preliminara de ansamblu, proiectare detaliata, implementare si testare
Specificatii, programare, implementare
Analiza de sistem, analiza de proces, proiectare de detaliu
De ce sunt necesare taskuri de "luare la cunostinta" intr-un sistem de telemecanica?
Deoarece evenimentele din proces trebuie aduse la cunostinta sistemului
Deoarece telecomenzile trebuie confirmate de catre operator
Deoarece operatorul trebuie sa confirme ca a luat la cunostinta de evenimentele din proces si sunt necesare alte taskuri decat cele de tratare a evenimentelor, din pricina asincronismului reactiilor operatorului cu evenimentele din proces
Deoarece sistemul trebuie sa reactioneze suficient de rapid la evenimentele din proces
Redundanta statica se aplica prin:
Multiplicarea paralela a unei functii de procesare si compararea rezultatelor
Dublarea unei functii
Verificarea unor conditii de functionare corecta
Compararea unor rezultate
Intr-un sistem de telemecanica, efectuarea unei telecomenzi parcurge urmatoarele etape:
Selectie, executie
Selectie, confirmare
Selectie, executie, confirmare din proces
Trimiterea telecomenzii, raspunsul procesului
"Ascunderea" este utila pentru:
Mai buna structurare a programului
Definirea unor intrefete complexe prin ascunderea temporara a detaliilor
Definirea unor restrictii de acces si "ascunderea" detaliilor nesemnificative ale unui modul de program
"ascunderea" detaliilor referitoare la tratarea erorilor
????????
A da sfaturi tehnice
A ajuta la marketingul produsului
A filtra si evita paralelisme, a ajusta solutiile tehnice si a impune tehnici de proiectare si refolosire software
A da sfaturi tehnice, a ajuta la relatiile cu clientii, la reclama produsului, la elaborarea manualului de utilitare al produsului
Configuratia larg distribuita utilizeaza:
Legatura multipunct
Field-bus
Retele WAN si protocoale de comunicatii potrivite
Protocoale de comunicatie Nowell si retele LAN
La Windows NT 4 concurenta era implementata prin:
Preemptiune, cu ordonarea dupa 31 prioritati pe cate 4 paliere(IDLE, NORMAL, REALTIME)
Preemptiune, cu ordonarea dupa 31 prioritati, ordonate pe 2 paliere: 4 clase de prioritate si 5 niveluri pe fiecare clasa
Multithreading
Intreruperi event-driven cu planificare circulara (round-robin)
Categoriile de prestatorii(server) in arhitectura client-server la Windows NT4 sunt:
Monitorul, WIN32, DLL
Windows NT Executive, WIN32
I/O Manager, Win NT Executive, WIN32
NTFS, HPFS, FAT
Un fir de executie in Windows NT 4 este:
Un proces
Un task
Un modul de program care realizeaza apeluri DLL
O cale de executie in interiorul unui proces
Sistemul UNIX nu este foarte raspandit in conducerea de proces deoarece prezinta:
Pret ridicat
Lipsa de unitate, sintaxa criptica, lipsa de interfete grafice, si de software
Nepotrivire cu necesitatile de timp real
Imposibilitatea implementarii multitaskingului
Familiile mai reprezentative de sisteme de operare dedicate sunt:
OS-2, WARP, QNX, OS-9
OS-9, QNX, Windows 95 CE
OS-9, QNX, VxWorks/Microworks
OS-900, QTRM, RTS
Sistemele de operare dedicate folosesc pentru alocarea unitatii centrale:
Prioritati fixe
256 prioritati
Mesaje si variabile
Planificarea circulara(round-robin)
Ce este o revizie?
O noua versiune destinata a inlocui versiunea veche si care reflecta evolutia in dapanarea si imbunatatirea modulului ca functionare si performante
O noua versiune care realizeaza aceleasi functionalitati pentru situatii usor diferite si care este destinata a fi o alternativa interschimbabila cu alta simultana
Un mecanism care arata organizarea unui set de variatii si relatiile dintre acestea
In acceptiunea UML relatiile intre clase sunt:
Moduri, constrangeri, stereotipuri, asociatii, compozitii, generalizare, dependenta, multiplicitate
Asocieri, agregare, compozitii, generalizare, dependenta
Asociatii, agregare, cazuri de utilizare, actori, compozitie, generalizare, multiplicitate
Ce reprezinta in UML figura de mai jos?
O diagrama structurata
O agregare
Un caz de utilizare
Ce este o stare in abordarea UML?
O diagrama reprezentand relatiile dintre diferitele componente ale unui sistem
O conditie de existenta a unui sistem care persista pentru o perioada semnificativa de timp si este reprezentata prin relatiile din cadrul arhitecturii sistemului
O conditie de existenta a unui obiect care persista o perioada semnificativa de timp si poate fi distinsa intr-un anumit mod de alta astfel de conditie de existenta
Cand o clasa trebuie sa gestioneze un numar de obiecte de aceeasi clasa, o abordare in proiectare ar fi sa adauge:
Un model(pattern) de proiectare
O clasa observator intre clasa primara si setul de obiecte
O clasa container intre clasa primara si setul de obiecte
In modelul (pattern) Rendezvous participa urmatoarele obiecte:
Rendevouz, Lock, Thread
Rendezvous, Lock, Client, Context, Thread
Rendezvous, Wait, Semaphore, Client, Context, Thread
Metoda MASCOT presupune, printre altele, elaborarea unei diagrame (numite ACR) care reflecta:
Structurile de date si de apel folosite in program
Relatiile dintre structurile de date si structurile de program
Tranzactiile din sistem
Fluxurile de date din program, care isi au obarsiile in Dispozitivele de intrare si se termina totdeauna la Dispozitive de iesire
Activitatile de proiectare software cuprind urmatoarele:
Proiectarea arhitecturii, specificarea abstracta, proiectarea componentelor si a interfetelor, proiectarea structurilor de date, proiectarea algoritmilor
Un mesaj(UML) este:
O realizare a unei comunicari intre un obiect sursa si un obiect destinatie
Un apel de functie care se realizeaza la aparitia unui eveniment
O abstractie a unei unitati de comunicare intre un obiect sursa si un obiect destiantie
Strategia de identificare a obiectelor numita "sublinierea substantivelor" permite depistarea:
Unor clase de interes, a unor subsisteme, clase neinteresante sau atribute de clase
Unor obiecte de interes, a unor actori, obiecte neinteresante sau atribute de obiecte
Unor asociatii, unor obiecte, clase, atribute, metode si generalizari
O aplicatie informatica de gestiune a configuratiilor permite stocarea
Tuturor fisierelor unui proiect, indiferent de destinatia informatiei (cod-sursa, documentatii, planificari, etc.) stocate intr-un depozit si sub forma tuturor versiunilor create de proiectantii din cadrul echipei
Tuturor fisierelor aferente unui proiect intr-o ierarhie de clase in care relatiile de mostenire sunt corespunzatoare reviziilor succesive
Tuturor fisierelor unui proiect, indiferent de destinatia informatiei (cod-sursa, documentatii, planificari, etc), stocate distribuit, sub forma tuturor versiunilor create de proiectantii din cadrul echipei
Ce fel de relatii sunt implementate in codul sursa de mai jos? (Animal -> caine, peste, mita):
class Animal{
public:
virtual void vorbire (void)=0;
};
class caine: public Animal{
public:
void vorbire (void) {cout<<"Ham!"<<endl; };
};
class peste: public Animal{
public:
void vorbire (void) {cout<<"Bul!"<<endl; };
};
class mita: public Animal{
public:
void vorbire (void) {cout<<"Miau!"<<endl; };
};
void main(void){
Animal *A;
caine c;
peste p;
mita m;
A=&c;
A->vorbire();
A=&p;
A->vorbire();
A=&m;
A->vorbire();
};
Specializare
Generalizare
Extensie
In acceptiune UML, relatiile dintre clase sunt:
Noduri, constrangeri, stereotipuri, asociatii, compozitii, generalizare, dependenta, multiplicitate
Asociatii, agregare, compozitii, generalizare, dependenta
Asociatii, agregare, cazuri de utilizare(use cases), actori, compozitie, generalizare, multiplicitate
Testele de integrare verifica daca:
Aplicatia functioneaza corect in mediul in care va fi folosita
Toate modulele de program, integrate in sistem, functioneaza corect impreuna, conform cerintelor functionale
Clientul certifica corespondenta dintre specificatiile initiale si functionarea aplicatiei
Model-View-Controller este:
Un sablon structural care este de folos atunci cand o referinta sau pointer spre un obiect nu poate fi obtinuta
Un cadru compus din doua sabloane Observer
Un model arhitectural pentru implementarea unor interactiuni in timp real intre doua fire de executie
Analiza software este:
Aceea dintre disciplinele existente in domeniul Software care determina cum trebuie proiectat sistemul software (arhitectura, prelucrari), preluand problema clientului
Aceea dintre disciplinele existente in domeniul Software care determina ce trebuie facut, preluand problema clientului si exprimand-o intr-un mod inteligibil de catre dezvoltator
Activitatea de negociere cu clientul a detaliilor contractului de dezvoltare software, pe baza doleantelor acestuia
Obiectivul primordial al proiectarii software este sa ajunga la o descriere care sa permita:
Delimitarea exacta a muncii in cadrul echipei si pe de alta parte continuarea cu actiunea de codificare (scriere de cod-sursa) in cadrul careia fiecare proiectant sa stie exact ce sa faca pentru a scrie codul ca activitate de rutina
Descrierea exacta a claselor, a relatiilor dintre acestea, stabilirea metodelor, descrierea structurii bazelor de date astfel ca mai departe fiecare proiectant sa stie exact ce sa faca pentru a scrie codul ca activitate de rutina
Delimitarea exacta a muncii in cadrul echipei prin intocmirea corecta a diagramei Gantt si obtinerea diagramei DFD pentru ca mai departe fiecare proiectant sa stie exact ce sa faca pentru a scrie codul ca activitate de rutina
Sistemele de conducere de proces ridica probleme speciale, care maresc gradul de dificultate al proiectarii si implementarii, deoarece:
Impun cerinte speciale privind siguranta in functionare (sisteme safety-critical), respectiv, cele mai multe au cerinte exprese privind implementarea redundantei dinamice
Impun cerinte speciale privind siguranta in functionare (sisteme safety-critical), respectiv, cele mai multe au cerinte exprese privind raspunsul in timp real
Impun cerinte speciale privind raspunsul in timp real, respectiv, cele mai multe au cerinte exprese privind utilizarea unor sisteme de operare speciale.
In cadrul arhitecturii three-tier nivelele aplicatiei sunt:
Prezentare, Logica aplicatiei(business logic), acces la date
Model, View, Controller
Interfata grafica, serverul WEB, Logica aplicatiei (business logic)
Doar una din enumerarile de mai jos contine integral functii ale sistemului de mai sus, corect enuntate:
N pozitionarea antenei prin conducerea pe doua grade de libertate de miscare; n+1 comunicarea cu calculatorul PC, n+2 interfata cu utilizatorul prin intermediul unei tastaturi si a unui afisaj cu cristale lichide
N afisarea mesajelor de eroare; n+1 setarea coordonatelor curente; n+2 comunicarea cu calculatorul PC
N memorarea coordonatelor de orientare; n+1 citirea porturilor de intrare; n+2 rotatia in jurul unei axe verticale
Regulatorul numeric din sistemul de mai sus este:
Un microprocesor care comanda rotatia antenei
Un calcul care se efectueaza periodic, furnizand o comanda catre sistemul de pozitionare pe baza intrarii de pozitie si a unei prescriei
Un calcul care se efectueaza in bucla infinita, furnizand o comanda catre sistemul de pozitionare pe baza intrarii de pozitie si a unei prescriei
Dispozitivele de intrare pentru sistemul de mai sus sunt:
Contorul de impulsuri de la traductorul de pozitie, traductorul potentiometric (de fapt convertorul analog numeric care preia valoarea), tastatura, hard-diskul pentru baza de date, convertoarele analog numerice pentru senzorul de temperatura si de suprasarcina, intrare numerica pentru senzorii antiefractie, placa de retea pentru comunicarea cu PC
Contorul de impulsuri de la traductorul de pozitie, traductorul potentiometric (de fapt convertorul analog numeric care preia valoarea), tastatura, divizorul programabil, convertoarele analog numerice pentru senzorul de suprasarcina, intrare numerica pentru senzorii antiefractie, unitate seriala pentru comunicarea cu PC, senzorul de suprasarcina
Contorul de impulsuri de la traductorul de pozitie, convertorul analog numeric care preia pozitia de la traductorul potentiometric, tastatura, convertoarele analog numerice pentru senzorul de temperatura si de suprasarcina, intrare numerica pentru senzorii antiefractie si limitatoarele de cursa, unitate seriala pentru comunicarea cu PC
In cadrul diagramei ACR, avem urmatoarele fluxuri de informatii:
Fluxul primar de la PC, fluxul secundar de la traductorii de masura, fluxul tertiar de la antena
De pozitie, de prelucrare a semnalului de suprasarcina, de semnalizare (de la senzorii antiefractie si de limitare de cursa), de la operator (de la tastatura), de la PC (de la unitatea seriala), de masurare a temperaturii
De pozitie, de suprasarcina, de preluare din memorie, de rotire a antenei, de calcul numeric
Pentru scrierea cerintelor sistemului, vom organiza sedinte - interviu cu clientii. O sedinta nu va dura mai mult de:
40 minute
1 ora
2-3 ore
Pentru testare se utilizeaza ca si criteriu de oprire a testarii atingerea unui prag de incredere fixat. Pentru a-l determina, programul a fost "plantat" cu 22 erori. In timpul testarii, sunt detectate 12 erori, din care 8 sunt "plantate" si 4 sunt alte erori. Cate erori estimam ca mai sunt in program (nedetectate) ?
11
7
6
Mecanismul watch-dog functioneaza astfel:
Periodic, un software specializat verifica prin teste on-line buna functionare a programului si daca detecteaza eroare produce un restart special
Cand sistemul nu are altceva de lucru, un software specializat verifica prin teste on-line buna functionare a programului si daca detecteaza eroare produce afisarea unui mesaj
Periodic, o secventa software apelata printr-o intrerupere de la un ceas hardware verifica daca un indicator a fost resetat de la precedentul apel; daca nu a fost resetat, inseamna ca secventa principala de program s-a blocat si nu a putut reseta indicatorul; in acest caz, secventa produce un restart special.
Redundanta dinamica pentru masurarea pozitiei poate fi astfel implementata:
Pozitia este citita dinamic de doua secvente software distincte si o alta secventa compara rezultatelel daca acestea nu sunt egale, se semnaleaza eroare de pozitie
O secventa software apelata dupa masurarea pozitiei verifica daca de la precedenta apelare pozitia s-a modificat cu o valoarea "plauzibila" (spre exemplu, daca antena este in miscare, in intervalul de la ultima masurare nu se poate ca deplasarea sa fie prea mare sau prea mica in raport cu dinamica ansamblului mecanic); daca testul semnalizeaza ca masurarea este suspicioasa, se semnaleaza eroare de masura
Pozitia este citita dinamic de trei module software distincte si o alta secventa compara rezultatele; rezultatul corect este indicat de votul majoritar.
Pentru dezvoltarea produsului se va folosi dezvoltarea agila SCRUM. In timpul Sprint-ului:
Nu se admit modificare care ar putea afecta tinta Sprint-ului
Se admit modificari care ar putea afecta tinta Sprint-ului, aceasta fiind una din caracteristicile esentiale ale metodologiilor AGILE
Se admit modificari care ar putea afecta tinta Sprint-ului, renegociate intre Product Owner si echipa de dezvoltare.
Actorii in acest sistem in acceptiunea UML sunt :
Senzorii, sistemul de actionare, traductoarele de masura, utilizatorul, unitatea seriala
Sistemul de actionare al antenei, sistemul de masura de pozitie, interfata cu utilizatorul, unitatea seriala de comunicare cu calculatorul PC, utilizatorul.
Antena, utilizatorul, calculatorul PC
O paradigma in ingineria software este:
O anumita abordare a procesului de proiectare software, care descrie modul de organizare al activitatii de proiectare
O anumita abordare a procesului de proiectare software, care descrie cum se realizeaza elemente de proiectare, ce metode, unelte si proceduri se aplica la fiecare faza
O anumita abordare a procesului de proiectare software, care descrie modul de organizare a interactiunii cu utilizatorul si descrie ciclul de viata al programului
{"name":"Grile IP", "url":"https://www.quiz-maker.com/QPREVIEW","txt":"Testați-vă cunoștințele despre ingineria programării și prototipizare cu acest quiz provocator! Conceput pentru profesioniști și studenți, acest quiz acoperă concepte esențiale, tehnici și metode utilizate în dezvoltarea software-ului.Dezvoltarea AgileSisteme de operareInginerie softwareTestare și validare","img":"https:/images/course7.png"}