Documente Academic
Documente Profesional
Documente Cultură
Curs 1
Site :
https://sites.google.com/site/ingswcm
Acces cu
Google account :
ingsw.student.uvt
Password :
ingswuvt
Subiecte tratate
Probleme ale dezvoltrii i asigurrii de suport pentru produsele software
Un program simplu
Un program simplu
Fiind dat o colecie de linii de text (iruri) memorate ntr-un fiier, sortai-le n ordine
alfabetic, i scriei-le n alt fiier.
Ct de rapid trebuie
s fie sortarea?
Cum trebuie stocate datele?
Care este formatul datelor?
Ce facem cu caracterele
nealfabetice?
Sortare ascendent
sau descendent?
Pe ce platforme trebuie s
poat fi executat programul?
Se estimeaz extinderea n
viitor a programului?
Cerine
Clarificai CERINELE.
Cerine program : declaraii are definesc i calific ce trebuie s fac programul.
Ce fel trebuie
de intefa
Sortare
trebuie
s
ascendent
aib programul?
sau descendent?
Ct de rapid
s fie
sortarea?
Care este
dimensiunea
Ceviitor
facem
datelor
cu caracterele
de intrare? nonalfabetice?
Se estimeaz
extinderea
n
a programului?
Pe ce platforme trebuie
Cum tratm
s poat
liniile
rula
vide
programul?
i fiierele vide?
Cerine
Cerine funcionale : Ce trebuie s fac programul.
Definesc funcionalitatea programului.
Atribute de calitate (cerine extra-funcionale) : Maniera n care cerinele funcionale
trebuie ndeplinite.
Alegerea:
Limbajului de programare
etc.
Sortare:
Sortare ascendent sau descendent?
Ce facem cu caracterele nonalfabetice? Numerele nainte sau dup litere? Minuscule i
majuscule.
Decizie: sortarea caracterelor n odine numeric, sortarea fiierului n ordine ascendent.
Performan:
: Ct de rapid trebuie s fie sortarea?
R: Mai puin de 1 min. Pentru sortarea unui fiier de 100 linii a cte 100 caractere.
Decizie: un algoritm cu timp de rspuns corespunztor, selectat pe baza analizei
algoritmilor de sortare existeni.
Modificabilitate :
: Se estimeaz extinderea programului n viitor?
R: E posibil ca n viitor s apar cereri de modificare a ordinii de sortare.
Decizie: Pregtirea programului pentru modificri ulterioare ale ordinii de sortare.
Platforme:
Decizii referitoare la arhitectur, SO, biblioteci disponibile.
Portabilitate relativ limitat extracost implicat de suportarea unei noi platforme
compromis ntre dezvoltare pentru portabilitate i necesitatea anticipat pentru o viitoare
portabilitate.
Algoritmi:
Pot fi dai sub form de constrngeri de proiectare sau ca cerine funcionale.
Pot fi decizii de proiectare influenate de:
Unit testing
Testare la integrare
Testare de acceptare
Scrie codul
Test 1 minut:
Estimai de ct timp avei nevoie pentru a scrie un program care citete linii dintr-un fiier i
scrie liniile sortate ntr-un alt fiier. Trebuie s implementai algoritmul de sortare i s
oferii o GUI cu dou casete text i dou butoane n care utilizatorul poate selecta
fiierul de intrare i fiierul de ieire utiliznd dialogul File Open. Presupunei c putei
lucra fr ntrerupere la aceast program.
Tem :
Estimai un timp ideal (asap) i un timp calendaristic pentru fiecare task din lista urmtoare:
IndexOfBiggest
Sort
Read
Write
GUI
Testare
Estimarea difer mai mult sau mai puin de timpul necesar n realitate
Alegei nume descriptive; lungi pentru elemente care au domeniu global (ex. clase,
metode publice), scurte pentru referine locale (ex. variabile locale, nume private).
Decizii:
1. Bune practici : separai funcionalitatea de sortare de interfaa cu utilizatorul
posibilitatea de a schimba independent fie UI fie funcionalitatea de
sortare.
2.
Clasa: StringSorter
Metode:
Read iruri dintr-un fiier
Sort colecia de iruri
Write iruri ntr-un fiier
3. Mai multe clase UI, cte una pentru fiecare tip de UI.
in.txt
one
two
three
Metode suport:
import java.io.*;
import java.util.*;
public class StringSorter {
ArrayList lines;
public void readFromStream(Reader r) throws IOException{...}
void sort() {
java.util.Collections.sort(lines);
}
}
import java.io.*;
import java.util.*;
public class StringSorter {
ArrayList lines;
import java.io.*;
import java.util.*;
public class StringSorter {
ArrayList lines;
CLI
GUI
Rezumat; concluzii
Un singur program
Dezvoltat de o singur persoan
Puini utilizatori
Probleme:
Dar dac ?
Sistem complex cu componente multiple.
Activiti:
nelegerea cerinelor
Estimarea efortului i posibil planificarea dezvoltrii
Proiectarea soluiei
Implementarea soluiei
Testarea corectitudinii i a acceptrii de ctre utilizator
Un process (simplu).
Documentaie minimal.
Terminologie
Problema ce trebuie rezolvat de un sistem software.
Spaiul problemei domeniul business n care este definit problema.
Specificat de cerinele utilizator.
Subiecte tratate
Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software
Un program simplu
Mrime i complexitate
Mrime :
numrul de
funcii majore
utilizatori simultani
Complexitate :
Dar n cazul creterii mrimii i complexitii unei probleme rezolvate cu un sistem software ?
Subiecte tratate
Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software
Un program simplu
Probleme tehnice
Manipularea mrimii i complexitii:
Descompunerea problemei
Modularizarea soluiei
Separare tematici
Dezvoltare n iteraii incrementale
Discuie:
Probleme tehnice
Technologie i unelte
Alegeri tehnice:
Limbajul de programare:...
Unelte de dezvoltare : IDEs,
Infrastructur : SGBD, reea, middleware,...
Unelte de management : controlul versiunilor,
Probleme tehnice
Proces i metodologie
Procesul de dezvoltare de software (ciclul de via al dezvoltrii de software
SDLC) = Setul de activiti, fluxulDODFHVWRUDFWLYLWi, intrrile i ieirile
acestor activiti, i precondiiile i postcondiiile fiecrei activiti implicate n
producerea de software.
Probleme tehnice
Proces i metodologie
Activiti comune n procesul de dezvoltare de software.
Exist o metodologie pentru culegerea
cerinelor? Ce se ntmpl daca sunt
implicate mai multe persoane?
Culegerea i specificarea
cerinelor
Modelare
Codare / unit test
Din ce este constituit sprijinul pentru utilizator ?
Ce fel de probleme trebuie remediate?
Sprijinire utilizator i
remediere probleme
Integrare i testare
Probleme tehnice
Proces i metodologie o abordare posibil a procesului:
Cerine
Cerine
Arhitectur
Model
Cerine
Model
Cod
Cod
Model
Cod
Cod
Integrare
Test
Fix
Test
Fix
Test
Fix
Ct informaie trebuie s conin descrierea unei probleme? Cine decide nivelul de severitate al unei probleme?
Cum este returnat la tester remedierea unei probleme?
Cum sunt integrate remedierile napoi n cod? &HWUHEXLHIFXWFX problemele care nu sunt remediate?
Probleme nonTehnice
Estimare efort i planificare
Probleme:
Probleme nonTehnice
Asignare i comunicare
Asignare persoane la sarcini.
Competene
Disponibilitate
cu numrul de persoane
Subiecte tratate
Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software
Un program simplu
Adugare, modificare, tergere nume i informaii personale asociate ale tuturor angajailor
Adugare, modificare, tergere toate taxele i alte deduceri asociate tuturor angajailor
Adugare, modificare, tergere toi algoritmii relativi la calcularea plii nete pentru fiecare
angajat
Generarea unui cec de plat sau a unui depozit bancar direct pentru fiecare angajat
Adugare, modificare, tergere nume i informaii personale asociate ale tuturor angajailor
Adugare, modificare, tergere toate taxele i alte deduceri asociate tuturor angajailor
Adugare, modificare, tergere toi algoritmii relativi la calcularea plii nete pentru fiecare
angajat
Generarea unui cec de plat sau a unui depozit bancar direct pentru fiecare angajat
Care este ciclul de realizare a statului de plat?
Care este termenul de transmitere a informaiilor (ex. cretere de salariu).
Performan
Care este volumul tranzaciilor de plat?
Care este viteza de procesare pentru o tranzacie?
Utilizabilitate
Ce experien are utilizatorul n folosirea de interfee grafice?
Care sunt profilele utilizatorilor?
Cum se anuleaz i reproceseaz un cec de plat bazat pe o
nregistrare incorect?
DA ! - grupare funcii
nrudite n componente
Arhitectura ecranului
Layout i stil
Coninut
Relaii de navigare
Baz de date
Reea
Interfee de transmisie
Interfee de imprimare
Medii de dezvoltare
Performan
Procesare erori
Descompunere funcional
Sintez
Disciplin superioar
1Cazurile
Instruirea utilizatorilor
Contexte utilizator
Aplicaie complex :
Subiecte tratate
Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software
Un program simplu
Eforturi de coordonare
Ultimul exemplu demonstreaz necesitatea mai multor activiti ale
ingineriei software (specificarea i analiza cerinelor, proiectarea,
implementatarea, testarea i integrarea, suport,).
Procesului necesar
Personalului necesar
Eforturi de coordonare
Proces:
anii 1990 - mbuntit (extins, complicat) prin:
Eforturi de coordonare
Produs:
Produsul software conine:
Codul executabil
Documentaie: specificaiile cerinelor, modelul proiect, scenariile testelor
funcionale, manualul utilizator
Suport (optional)
Eforturi de coordonare
Persoane:
Resursa uman este crucial n dezvoltarea i asigurarea de suport pentru
produse software !!!
Industria de software este nc labor intensive (! Munc intelectual de
nalt calificare !)
Cum s coordonm activitile persoanelor implicate n dezvoltarea
produsului software ?
Cum gestionm resursa uman ?
Q&A
Ce ?
INGINERIA SOFTWARE !
De ce?
Cum?
Cine?
Cnd?