Software Engineering
Software Engineering
Për Kursin Profesor: Astrit Hyseni
[email protected] Qëllimi: Mësimi dhe aplikimi praktik i të gjitha fazave në implementimin e një projekti softuerik të mirëfilltë. Literatura: Libri kryesor: Ian Sommerville, Software Engineering, Addison Wesley; 8 edition (May 25, 2006) Libri 1: B. Boehm, R. Turner, Balancing Agility and Discipline: A Guide for the Perplexed, Addison-Wesley Professional; 1st edition (August 15, 2003) Libri 2 : Jacobson Ivar, Booch Grady, Rumbaugh James: The unified software development process, Addison-Wesley, 1999
Software Engineering
Për Kursin Notimi: 2 Kollkofiume (50% + 50%)
Software Engineering
Softuer Çka është? •Kod programues •Dokumentacion •Te dhenat konfiguruese Software Gjenerikë •Excel •Word •MySQl Software specifik (costumized) •Programi per numrimin e votave •Programe kontabiliteti •Cili është dallimi esencial? •Specifikacioni?
Software Engineering
Softuer Çka e cilëson një software të mirë? •Maintainability (Mirëmbajtja) •Depandability (Mbështetshmëria – Sigurtë, ) •Efficiency (Efiçienca) •Usability (Përdorshmëria) – User Interface, Dokumentacioni
Software Engineering
Inxhinier ??? Kush është inxhinier në këtë listë? •Hashim Thaçi •Albert Einstein •Maradona •Karl Benz (zbulues i automobilit me benzinë dhe themelues i kompanisë Mercedes- Benz) Latinisht :” ingenium” – “Mençuri” Inxhinierët merren me zgjedhjen e problemeve praktike, duke aplikuar metodat matematike dhe shkencore dhe duke i pas parasysh kufizimet teknike (http://en.wikipedia.org/wiki/Engineer)
Software Engineering
Inxhinier i Software-it??? 1. Aplikim i metodologjisë inxhinierike. •Perdori ne menyrë sistematike metodat me te pershtatshme duke i pase parasysh kufizimet operacionale, buxhetore. •Duhet me funksionu! 2. Përfshin të gjitha aspektet e involvume në zhvillimin e softwareit. Jo vetëm me aspektet teknike të zhvillimit të kodit, po edhe me menaxhim të projektit.
Software Engineering
Dallimi mes shkencave kompjuterike dhe software engineering?
Software Engineering Procesi Softuerik (Software process) 1. Me proces softuerik kuptojmë një grup te aktiviteteve dhe rezultateve të tyre të cilat si rezultat përfundimtarë e kanë një softuer. 2. Varësisht prej projektit ndryshojnë edhe procesi softuerik i cili aplikohet. Nuk ka model universal . 1. Cilat janë hapat bazik ne zhvillimin e softuerit? 1. 2. 3. 4. 5. 6.
Planifikimi fillestar / analiza fizibilitetit Analiza dhe përcaktimi i kërkesave (Requirements) Dizajni Zhvillimi / Implementimi aprovimi dhe dorëzimi Përdorimi dhe Mirëmbajtja
Software Engineering Analiza e fizibiletit 1. Sa ka punë në projekt? 2. A mund të implementohet projekti teknikisht? 3. Cili është profiti? (Material, Social, zbavitës, etj...) • A e vlen? 4. Cili është plani kohorë? 1. A mund të realizohet? Kur shtrohen këto pyetje? • Para se me ja nisë projekti? Çka ka si përfundim kjo analizë? • Po/Jo – Startimin e projektit ose refuzimin e ti.
Software Engineering Analiza dhe përcaktimi i kërkesave (Requirements) Çka nënkuptojmë me përcaktimin e kërkesave? së bashku me klientin/përdoruesin 1. Me i përcaktu detyrat e sistemit. 2. Me i përcaktu kufizimet e sistemit. 3. Me i përcaktu caqet e sistemit. Në mënyrë konsensuale dhe të kuptueshme për te 2 palët 1. Analiza e kërkesave 2. Përcaktimi / definimi i kërkesave 3. Specifikimi i kërkesave Kjo fazë përcakton funksionimin e sistemit prej perspektivës së klientit
Software Engineering Dizajni i sistemi dhe softuereit Çka nënkuptojmë me dizajn të softuerit? Ndamja e kërkesave në sisteme te harduerit dhe të softuerit Dizajn i sistemit Dizajni i softuerit Modelo funksionet e sistemit softuerik në një formë e cila pastaj mund të pasqyrohet në një apo më shumë aplikacione Si p.sh.? UML ? Unified Modeling Language!
Kjo fazë përcakton funksionimin e sistemit prej perspektivës së zhvilluesit të softuerit.
Software Engineering Zhvillimi / Implementimi Cilat softuer procese involvohen në këtë fazë? 1. Programimi 2. Testimi
Testimi Kundraj çkafit testohen modulet e një softueri? • Modulet testohen kundraj specifikacionit të kërkesave
Software Engineering Aprovimi dhe dorezimi Aprovimi 1. I gjithë sistemi testohet kundraj kërkesave të klientit Dorëzimi i softuerit
Software Engineering Përdorimi dhe mirëmbajtja Përdorimi dhe mirëmbajtja Cikli jetësor i një softueri • Përdorimi / Operimi • Mirëmbajtja • Gabimet identifikohen dhe korrektohen • Zhvillimi i mëtutjeshëm • Sistemi evoluon në kohë me ndërrimin e kërkesave, • Shtohen funksionalitete, adaptohen komponentët • Qitja jashtë funksionit
Software Engineering Procesi Softuerik Cilat ken aktivitetet? 1. Planifikimi fillestar / analiza fizibilitetit 2. Analiza dhe përcaktimi i kërkesave (Requirements) 3. Dizajni 4. Zhvillimi / Implementimi 5. aprovimi dhe dorëzimi 6. Përdorimi dhe Mirëmbajtja
Software Engineering Modelet e proceseve softuerike Çka ke një proces softuerik? • Nuk ka ndonjë rregull universale në aplikimin e aktiviteteve në një proces softuerik. • Një model softuerik është një reprezentim abstrakt i një procesi softuerik.
Ka shumë menyra me i strukturu aktivitetet
Software Engineering Modelet e proceseve softuerike •
A po ju kujtohet naj model i një procesi softuerik?
• • •
UML? CASE? Waterfall?
Software Engineering Modeli #1
Waterfall Kerkesat
Studimi i fizibilitetit Analiza e kerkesave
Dizajni
Dizajni i sistemit Implementimi
Dizajni i programit Programimi / Kodimi Testimi Fazat startohen ne mënyrë sekuenciale, secila fazë e pret tjetrën Si po ju doket?
Akceptimi Pranim Dorezimi Perdorimi dhe Mirëmbajtja
Software Engineering Modeli #1
Waterfall
Përparësitë 1. Strukturim i qartë dhe intuitiv i aktiviteteve 1. Mangësit? 1. Mungesa e fleksibilitetit në ndryshimin e parametrave të ndryshëm gjatë procesit softuerik. 2. Me zhvillimin e sistemit, sidomos atyre komplekse, me kalimin në secilën faze thellohet kuptimi i sistemit gjë si konsekuence mund ta ketë rishikimin e kërkesave dhe plotësimin e tyre p.sh. 3. Ndryshimet kanë si konsekuence hedhjen e procesit në fillim dhe me këtë kushtojnë shumë. •
Software Engineering Modeli #2 •
Çasja Evolutive
Sa ma shpejtë me zhvillu/prezentu diçka e pastaj së bashku me klientin me përpunu deri sa të arrihet një gjendje e pranueshme...
Software Engineering Modeli #2
Çasja Evolutive Aktivitet paralele
Kerkesat
Verzioni fillestar
Dizajni
Verzionet e paperfundume
Zhvillimi
Verzioni final
Software Engineering Modeli #2 Vlerësimi
Çasja Evolutive
Kërkesat
Prezentimi i parë Prezentimi i dytë Prezentimi i tretë
Implementimi Design
Software Engineering Modeli #2
Çasja evolutive
Përparësitë? 1. Më efektiv në prodhimin e një sistemi që i plotëson kërkesat e menjëhershme të klientit 2. Zhvillim dhe kuptim hap mbas hapi i kërkesave të sistemit 1. Mangësitë? • Në sisteme komplekse, me grupe të ndryshme, dizajnimi dhe mirëmbajtja e arkitekturës si sistemit e vështirë. •
Software Engineering
www.agilemanifesto.org
Software Engineering Modeli #3 • •
CBSE Component Based SE
Ky model parasheh që një pjesë e sistemit tashmë ekzistojnë. Fokusi në integrimin e komponentave ekzistuese
Software Engineering Modeli #3 CBSE Component Based SE •
Përparësitë?
1. Mangësitë?
Software Engineering Analiza e fizibiletit 1. Sa ka punë në projekt? 2. A mund të implementohet projekti teknikisht? 3. Cili është profiti? (Material, Social, zbavitës, etj...) • A e vlen? 4. Cili është plani kohorë? 1. A mund të realizohet? Kur shtrohen këto pyetje? • Para se me ja nisë projekti? Çka ka si përfundim kjo analizë? • Po/Jo – Startimin e projektit ose refuzimin e ti.
Software Engineering Analiza e fizibiletitv - Sfidat 1. A është lehte të përgjigjen pyetjet e mëparshme në fillim? 1. A ka specifikacion të mirëfilltë të kërkesave 2. A ka njohuri të mirëfilltë të sistemit 3. A mund të planifikohen lehtë resurset dhe buxhetet.
nevojiten eksperta me përvojë
Software Engineering Analiza e fizibiletit 1. Cilat informacione janë esenciale 1. Kush është klienti 2. Shtrirja e punës (scope of Work) 3. Dobia, benefitet 4. Teknike . A ka minimum një mënyrë teknike me implementu projektin 5. Resorset: sa është sasia e resurseve të nevojshme (në kohë, staf, teknikë, etj) 6. Alternativat: Cilat janë opsionet nëse projekti nuk startohet
Software Engineering Analiza e fizibiletit – Shtrirja e punës 1. Shtrirja e punës përkufizon projektin 1. Përmban
2. Përjashton 3. Varet nga 4. Zëvendëson Mospërcaktimi i mirëfillt i shtrirjës së punës shkas i zakonshëm për mosknaqësi nga ana e klientit
Software Engineering
Analiza e kërkesave Te gjitha modele t e kane aktivitetin e analizes se kërkesave
Software Engineering Përcaktimi i kërkesave të softuerit së bashku me klientin/përdoruesin 1. Me i definu detyrat e sistemit. 2. Me i definu kufizimet e sistemit. 3. Me i definu caqet e sistemit. Në mënyrë konsensuale dhe të kuptueshme për te 2 palët Kjo fazë përcakton funksionimin e sistemit prej perspektivës së klientit
Software Engineering Procesi i percaktimit te kerkesave Studimi I
Analiza
fizibilitetit
e kerkesave Klasifikimi/sistemimi i kërkesave
Raporti I fizibilitetit
Specifikimi Se bashku me klientin identifiko kerkesat
Analiza e kerkesave (opcionale)
I kerkesave Sistemoji kerkesat ne menyre te kuptueshme dhe të rregullt Dokumentimi I kerkesave
Software Engineering
Analiza / identifikimi i kërkesave 1. Përcaktim më gjeneral dhe abstrakt i kërkesave 1. Për klientin, përdoruesin, Menagjmentin
2. Duhet të përcaktoj saktë se çka dëshiron klienti 1. Shërbimet që sistemi duhet ti ofrojë 2. Përkufizimet ndër të cilat sistemi duhet të funksionojë Shpesh definohen me një dokument Vegla Kryesore: 1. Takimet me klientin. 1. Mu pregadite para takimit 2. Me marrë shënime 3. Mundësisht në grupe të vogla 4. Nëse nuk kuptohet dicka mos e tejkalo
Software Engineering Analiza e kërkesave - Skenaret Skenari – është një vegël që përdoret gjatë analizës së kërkesave për me përshkru një interaksion të caktuar me sistemin Shembull: Skenari:Klienti perdor online banking per një Transakcion Bankar Personi: Filan Fisteku, pronar i një biznesi. Ambienti:Nga kompanija me notebook personal, permes Mozilla Firefox Skenari: 1. FF starton Firefoxing dhe jep adresen e bankes 2. FF autentikohet përmes loginit dhe kodit 3. Hapet faqja fillestare ku paraqiten të gjitha menyte kryesore 4. FF zgjedh menyne “transakcion bankar”. 5. Hapet forma për transakcione bankare me të gjitha fushat e nevojshme 6. FF jep IBAN e përfituesit dhe shumën e caktuar 7. Sistemi kontrollon IBAN, vlerën e dhënë dhe lajmëron përdoruesin për suksesin apo mos suksesin e transakcionit. 8 FF klikon linkun logoff dhe çlajmërohet.
Software Engineering Modelimi i skenareve permes Use Cases
Klienti
Tërheq paratë
Aktorë – shfrytëzes i sistemit në një rrol të caktuar • Person •Sistem i jashtëm (external system)
Use case – është një punë që duhet ta kryej aktori me ndihmën e sistemit Aktori është gjithmonë përfituesi i use case-it (
Software Engineering Use case – Online Banking System Transfero të holla
Klienti
Kontrollo kontot
Software Engineering Use case – Online Banking System Kontrollo kontot
Personi (assistent)
Kontrollo kontot
Aktori – është rrol e jo individ.
Personi (menaxher)
Transfero të holla
Software Engineering Relacionet mes use cases <>
Kontrollo kontot
<> Autentifikimin
Klienti
Transfero të holla
<>
<> përdoret për ngjarjet që janë pjesë e use case-it burimor
Software Engineering Relacionet mes use cases <>
Kontrollo kontot
<> KEK e nal rrymen
Klienti
Transfero të holla
<>
<> përdoret për ngjarjet e jashtëzakonshme që mund të ndodhin në çdo kohë
Software Engineering Identifikimi dhe përshkrimi i use case 1. Mos u bë perfeksionist. Nuk ka nevojë me ja qëllu me të parën 2. Identifiko aktorët së pari 3. Përcakto se çka duhet të bëjnë aktorët përcakto use cases
4. Përpilo një listë të use cases ID
Emri use casei
Aktori primarë
Kompleksiteti
prioriteti
1
Transfero të hollat
Klienti
Mesatarë
1
2
Shiko kontot
Klienti
I ulet
2
Software Engineering Përcaktimi i use cases 1. Identifiko elementet kryesore të use case-it use Case Element Numri i use case Aplikacioni Emri i use case Përshkrimi Aktori kryesor Parakushtet Trigger Skenari bazik Skenaret e vecanta
Description 1 Cilit modul/sistem i takon Transfero të hollat Përshkrim më i detajshëm i use case Cili është aktori kryesor në këtë use case Cilat janë parakushtet për tu apliku ky rast Cfare ngjarje inicon kete kerkese Rrjedha elementare e use casit, d.m.th. Skenari kur gjithecka shkon si duhet. Pa ngjarje te pazakonshme, ato perpunohen ne skenaret e vecanta. Skenaret e vecanta, sikurse “Kek nal rrymen”
Software Engineering Shembull Pershkruaj procesin e aplikimit për kredi me use case?
Software Engineering I bjen pishman
<>
Aplikon per kredi nënpunësi
Klienti
pranon aplikacionin
analisti
Proceson të hollat <> Tërheq të hollat <>
Aprovon kërkesën
Software Engineering Detyrë Përshkruaj me use case një ueb faqe si e-bay me proceset bazike.
Software Engineering Klasifikimi i kërkesave të softuerit Sipas menyres se fomulimit •
•
Kerkesat e perdoruesve (user requirements) • Nivel ma abstrakt dhe me gjeneral • Pershkrim jo teknik • Kryesisht ne gjuhe natyrale Kerkesat e sistemit (system requirements) • Per implementues te sistemit • Pershkrim i detajshem teknik
Software Engineering Klasifikimi i kërkesave të softuerit Sipas natyres • •
Kërkesat funksionale Kërkesat jo-funksionale
Kërkesat funksionale çka duhët të bëj sistemi • “Klienti duhet të ketë mundësi përmes internetit të procedoj një transaksion bankarë “. •
Dokumentimi i kërkesave funksionale duhet me qenë • Komplet • Konsistent
Software Engineering Klasifikimi i kërkesave të softuerit Kërkesat jo-funksionale • Nuk kanë relacion direkt me kërkesat e përdoruesit • Adresojnë vetitë e sistemi në tërësi • Mbështetshmëria • Siguria • Performanca • Menaxhimi i cilësisë • Menaxhimi i procesit të punës (p.sh.. Me përdorë një proces softuerik të caktuar) • Kërkesat e fushës “domain” requirements • Programi i kontabilitetit duhet të funksionoj sipas ligjit të kosovës
Software Engineering Analiza e kërkesave – kërkesat jo-funksionale
Software Engineering Klasifikimi i kërkesave •
Tipet e kërkesave jo-funksionale • Kërkesat në produkt • Kërkesat jo- funksionale që kanë të bëjnë me produkt • P.sh. Për embeded systems përkufizimi në memorie mund të jetë faktorë • Portabiliteti (çka është?) • Kërkesat organizative • Kërkesat në përcaktimin e procesit softuerik • Kërkesat në përcaktimin e mënyrës së implementimit (gjuha programuese) • Kërkesat e jashtme (external) • Kërkesat ligjore • P.sh. Mbrojtja e të dhënave personale në një sistem medicinial për pacientë • Kërkesat etike
Software Engineering Klasifikimi i kërkesave • • •
Çka janë konsekuencat e mos identifikimit të mirë të kërkesave funksionale Çka janë konsekuencat e mos identifimit të mirë të kërkesave jo-funksionale Cilat verifikohen/testohen më lehtë
Software Engineering Përmbledhje
Kërkesat funksionale
Kërkesat
Kërkesat jofunksinale
System requriements
User requirements
Software Engineering
Specifikimi i kerkesave 1. Kerkesat e perdoruesve mund te mirren ne nje rrafsh me gjeneral? 1. Kerkesat e sistemit duhet pershkrim me i detajshem teknik? Specifikacioni i sistemit si set i modeleve. Perspektivat: • Kontexti/Perkufizimi I sistemit • Sjellja (behavioral) • Struktura (structural)
Software Engineering
Data Flow Modeling Pjese e modelimit te proceseve/ngjarjeve (event) Fokusi ne te dhenat dhe procesimin e tyre. 2 Menyra te modelimit 1 Gane dhe Sarson
Yourdon & Coad
Software Engineering
Data Flow Modeling •Entitetet janë burimi ose caku i te dhënave. •Te dhënat duhet te rrjedhin nga entitetet ne procese.
•Te dhënat qe shkojnë ne entitete duhet te burojnë nga proceset •Proceset dhe bazat e te dhënave duhet te kenë hyrje dhe dalje te dhënave •Inputet ne bazat e te dhënave burojnë vetëm prej proceseve •Outputet ne baza te dhënave shkojnë vetëm ne procese.
Software Engineering
Data Flow Modeling 1. Nivelet
Software Engineering
Data Flow Modeling 1. Kontext diagramet
Software Engineering
Data Flow Modeling
Software Engineering
Data Flow Modeling
Software Engineering
Data Flow Modeling