U ovoj lekciji obrađivaćemo:

  • Karakteristike dizajna
  • Oblast Software Construction prema SWEBOK-u
  • Predviđanje promena
  • Standardi u konstrukciji

 

Karakteristike dizajna su veoma često i karakteristike samog programa. U nastavku su opisane neke karakteristike dizajna.

  1. Minimalna kompleksnost - Primarni cilj dizajna treba da bude minimiziranje kompleksnosti. Treba izbegavati pravljenje "pametnog" dizajna, koji je najčešće težak za razumevanje. Umesto toga preporučuje se kreiranje jednostavnog, lako razumljivog dizajna. Ako je dizajn takav da ne dozvoljava bezbedno ignorisanje ostalih delova programa kada se fokusiramo u samo jedan specifičan deo, tada kažemo da dizajn nije dobar. 
  2. Lakoća održavanja - Lakoća održavanja znači dizajniranje za programera koji će da radi održavanje. Treba se stalno postavljati na njegovo mesto i postavljati pitanja koje bi on postavljao za kod koji se trenutno piše. Njega treba posmatrati kao gledaoca, a pisati kod koji je jasan sam po sebi.
  3. Slabo povezivanje - Slabo povezivanje znači dizajniranje tako da se veze između različitih delova programa drže na minimumu. Koristiti princip dobre apstrakcije u interfejsima klasa, enkapsulaciji i skrivanju informacija, radi razvoja klasa sa što manje internih veza. Minimalna povezanost smanjuje rad tokom integracije, testiranja i održavanja.
  4. Proširljivost - Proširljivost znači mogućnost poboljšanja sistema bez prouzrokovanja nestabilnosti osnovne strukture programa. Mogućnost promene dela sistema bez uticaja na druge delove. Najučestalije promene dovode do najmanjih poremećaja.
  5. Ponovno korišćenje - Ponovno korišćenje znači dizajniranje sistema tako da je moguće ponovno korišćenje nekih delova u drugim sistemima.
  6. Visok broj ulaza (eng. High fan-in) - Visok broj ulaza odnosi se na veliki broj klasa koje koriste datu klasu. Visok broj ulaza podrazumeva da je sistem dizajniran da dobro upotrebljava pomoćne klase na nižim nivoima sistema.
  7. Nizak nivo izlaza (eng. Low fan-out) - Nizak nivo izlaza znači da data klasa koristi mali broj drugih klasa. Visok nivo izlaza znači da klasa koristi veliki broj drugih klasa i može shodno tome biti suviše kompleksna. Istraživanja su pokazala da je princip niskog nivoa izlaza koristan kada se razmatra više rutina koje se pozivaju iz rutine ili iz unutrašnjosti klase [2].
  8. Portabilnost - Portabilnost znači dizajniranje sistema koji se može lako preneti u drugo okruženje.
  9. Uslojavanje - Uslojavanje znači nastojanje da se sačuva slojeviti nivo dekompozicije tako da je moguć pogled na sistem na bilo kom pojedinačnom nivou i dobiti konzistentan pogled. Dizajnirati sistem tako da ga je moguće videti na jednom nivou bez daljeg ulaska u druge nivoe.
  10. Standardizovane tehnike - Što se sistem više bazira na nekim specifičnim i neobičnim rešenjima, to će biti teži za razumevanje nekome ko ga posmatra prvi put. Uvek treba dati sistemu prepoznatljivost korišćenjem standardizovanih, uobičajenih pristupa.

 

Predviđanje promena (eng. anticipation of change)

Većina softvera se menja tokom vremena i predviđanje promena proizvodi mnoge aspekte softverske konstrukcije. Softver je neizbežno deo promena u spoljašnjim okruženjima i promene u ovim spoljašnjim okruženjima utiču na softver na najrazličitije načine.

Softverske performanse usled promene hardverskih karakteristika gotovo svakodnevno dobijaju na značaju. Softver koji je u vreme kreiranja testiran na npr. računaru Pentium 3 sa 512 MB memorije, imaće drugačije ponašanje na dual core računaru sa 2 GB memorije. Granice u tom pogledu se svakodnevno pomeraju.

Izvršavanje programa na različitim okruženjima koja će se takodje neminovno menjati tokom vremena korišćenja (novi operativni sistem, promene mrežnog okruženja i dr.), uslovljava i pažljivo planiranje i izradu i po mogućnosti ostavljanje prostora za unapredjenje i Upgrade programa radi prilagođavanja nastalim promenama.

 

Konstrukcija za verifikaciju

Konstrukcija za verifikaciju (eng. Constructing for verification) znači izgradnju softvera na takav način da greške i nedostaci mogu biti brzo otklonjeni, kao i tokom nezavisnih testiranja i operacionih aktivnosti. Postojanje verifikacije funkcioniše kao i kod drugih oblasti. Specifične tehnike konstrukcije za verifikaciju uključuju standarde kodiranja radi pomoći pri pregledima koda (eng. code reviews), testiranju jedinice (eng. unit testing), organizaciji koda radi podrške automatizovanom testiranju, kao i restriktivnu upotrebu kompleksnih i jezičkih struktura teških za razumevanje.

 

Standardi u konstrukciji

Standardi koji direktno utiču na temu konstrukcije uključuju korišćenje eksternih standarda. Konstrukcija zavisi od korišćenja eksternih standarda za konstrukcione jezike, konstrukcione alatke, tehničke interfejse i interakcije između oblasti softverske konstrukcije i drugih oblasti. Standardi dolaze iz različitih oblasti, uključujući specifikacije hardverskih i softverskih interfejsa, kao što su Object Management Group (OMG - konzorcijum softverskih kompanija, postavlja standarde za distribuirane sisteme i modelovanje, http://www.omg.org) i internacionalne organizacije kao što su IEEE ili ISO.

Važno je i korišćenje internih standarda, odnosno standarda koji su kreirani na organizacionoj osnovi na korporativnom nivou ili za korišćenje u specifičnim projektima. Interni standardi podržavaju koordinaciju grupnih aktivnosti, minimiziranje kompleksnosti, predviđanje promena i konstrukciju pogodnu za verifikaciju.

 

IEEE Standardi

Značajan izvor informacija za dokumentaciju je IEEE (Institute for Electric and Electrical Engineers) Software Engineering Standards.  IEEE standardi su razvijeni od strane grupe stručnjaka i akademika koji su eksperti u određenim oblastima. Svaki standard sadrži pregled oblasti pokrivene standardom i tipično sadrži okvire odgovarajućeg dokumenta za rad u datoj oblasti.

Nekoliko nacionalnih i internacionalnih organizacija učestvuje u radu standarda. Neki standardi su zajednički usvojeni od strane ISO (International Standards Organization), EIA (Electronic Industries Alliance), i IEC (International Engineering Consortium).

Imena standarda su sastavljena od broja standarda, godine kada je standard usvojen i imena standarda. Tako na primer IEEE/EIA Std 12207-1997, Information Technology-Software Life Cycle Processes, predstavlja standard broj 12207, koji je usvojen 1997 godine, od strane IEEE i EIA. Ujedno, to je jedan od najviših standarda je u ovoj oblasti, koji je internacionalni standard koji definiše okvir životnog ciklusa za razvoj i upravljanje softverskim projektima.

U nastavku su navedeni neki od IEEE standarda:

 

Standardi za razvoj softvera

IEEE Std 830-1998, Recommended Practice for Software Requirements Specifications
IEEE Std 1233-1998, Guide for Developing System Requirements Specifications
IEEE Std 1016-1998, Recommended Practice for Software Design Descriptions
IEEE Std 828-1998, Standard for Software Configuration Management Plans
IEEE Std 1063-2001, Standard for Software User Documentation
IEEE Std 1219-1998, Standard for Software Maintenance

 

Standardi za osiguranje kvaliteta softvera

IEEE Std 730-2002, Standard for Software Quality Assurance Plans
IEEE Std 1028-1997, Standard for Software Reviews
IEEE Std 1008-1987 (R1993), Standard for Software Unit Testing
IEEE Std 829-1998, Standard for Software Test Documentation
IEEE Std 1061-1998, Standard for a Software Quality Metrics Methodology

 

Menadžment standardi

IEEE Std 1058-1998, Standard for Software Project Management Plans
IEEE Std 1074-1997, Standard for Developing Software Life Cycle Processes
IEEE Std 1045-1992, Standard for Software Productivity Metrics
IEEE Std 1062-1998, Recommended Practice for Software Acquisition
IEEE Std 1540-2001, Standard for Software Life Cycle Processes - Risk Management
IEEE Std 1490-1998, Guide - Adoption of PMI Standard - A Guide to the Project Management Body of Knowledge

 

 

Reference:

  1. Fred Brooks, "No Silver Bullets: Essence and Accidents of Software Engineering", 1987
  2. David Card, Robert Glass. Measuring Software Design Quality. Englewood Cliffs, NJ: Prentice Hall, 1990
  3. K. Beck, Extreme Programming Explained: Embrace Change, Addison-Wesley, 1999,
  4. J. Bentley, Programming Pearls, second ed., Addison-Wesley, 2000,
  5. IEEE Std 1517-1999, IEEE Standard for Information Technology-Software Life Cycle Processes- Reuse Processes, IEEE, 1999.
  6. IEEE/EIA 12207.0-1996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology- Software Life Cycle Processes, IEEE, 1996.
  7. B.W. Kernighan and R. Pike, The Practice of Programming, Addison-Wesley, 1999,
  8. S. Maguire, Writing Solid Code: Microsoft�s Techniques for Developing Bug-Free C Software, Microsoft Press, 1993,
  9. S. McConnell, Code Complete: A Practical  Handbook of Software Construction, Microsoft Press, second ed., 2004.
  10. I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005.
Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Unutrašnje karakteristike dizajna 1
  • Unutrašnje karakteristike dizajna 2
  • Unutrašnje karakteristike dizajna 3