Kontentke ótiw

Programmalıq támiynat dizaynı

Wikipedia, erkin enciklopediya

Programmalıq támiynat dizaynı yamasa Programmalıq támiynattı proektlestiriw ‒ bul programmalıq támiynat sistemasınıń qalay isleytuǵının ámelge asırıwdan yamasa ózgertiwden aldın konceptuallastırıw procesi. Programmalıq támiynat dizaynı sonday-aq dizayn processiniń tiykarǵı nátiyjesine – programmanıń qalay isleytuǵını haqqındaǵı koncepciyalarǵa da tiyisli bolıp, ol dizayn hújjetlerin de, hújjetlestirilmegen koncepciyalardı da óz ishine aladı.

Programmalıq támiynat dizaynı ádette nátiyjelik sistema ushın maqsetler menen basqarıladı hám máseleni sheshiw hám jobalawdı óz ishine aladı - oǵan joqarı dárejeli programmalıq támiynat arxitekturası hám tómengi dárejeli komponent hám algoritm dizaynı kiredi.

Sarqırama rawajlanıw procesi kóz-qarasınan, programmalıq támiynat dizaynı - bul talaplardı anıqlawdan keyingi hám kodlawdan aldınǵı iskerlik.[1]

Ulıwma process

Dizayn procesi dizaynerge programmalıq támiynat sistemasınıń hár qıylı aspektlerin ol islenbesten aldın modellestiriwge múmkinshilik beredi.

Dóretiwshilik, burınǵı tájiriybe, «jaqsı» programmalıq támiynattı ne quraytuǵını haqqındaǵı túsinik hám sapaǵa umtılıw kompetentli dizayn ushın tabıs faktorları bolıp tabıladı. Biraq, dizayn procesi bárqulla tikkeley procedura bolıp tabılmaydı.

Programmalıq támiynat dizayn modeli úy ushın arxitekturalıq joba menen salıstırılıwı múmkin. Joqarı dárejeli jobalar úydiń ulıwma kórinisin kórsetedi (mısalı, úydiń úsh ólshemli kórinisi). Tómen dárejeli jobalar hár bir detaldı qurıw ushın kórsetpeler beredi (mısalı, suw qubırlarınıń jaylasıwı). Usıǵan uqsas, programmalıq támiynat dizayn modeli usınılǵan programmalıq támiynat sheshiminiń hár túrli kórinislerin beredi.

Programmalıq támiynat komponentleri ushın iteraciyalıq dizayn

Programmalıq támiynat sistemaları tiykarınan belgisizlikler menen islesedi, hám programmalıq támiynat komponentleriniń kólemi sistemanıń nátiyjelerine áhmiyetli dárejede unamlı hám unamsız tásir etiwi múmkin. Nil Ford hám Mark Richards komponentlerdi anıqlaw hám olarǵa tuwrı ólshem beriw mashqalasın sheshiw ushın iteraciyalıq tásildi usınadı. Bul usıl komandalar sistema háreketi hám talapları haqqında kóbirek túsinik rawajlandırǵan sayın úziliksiz jetilistiriwge itibar qaratadı.[2]

Bul tásil ádette bir neshe basqıshlardan ibarat cikl menen ámelge asırıladı:

  • Joqarı dárejeli bólistiriw strategiyası belgilenedi, kóbinese texnikalıq yamasa taraw tiykarında kategoriyalanadı. Eń kishi mánili ornalastırılatuǵın birlik, «kvant» dep atalatuǵın, kórsetpeler anıqlanadı. Bul tiykarǵı sheshimler dáslep qabıl etilse de, kerek bolǵan jaǵdayda cikldiń keyingi basqıshlarında qayta qaralıwı múmkin.
  • Dáslepki komponentler belgilengen strategiya tiykarında anıqlanadı.
  • Talaplar anıqlanǵan komponentlerge bólistiriledi.
  • Anıqlıqtı támiyinlew hám bir-birin qaytalawdı minimallastırıw ushın hár bir komponenttiń roli hám juwapkershiligi analizlenedi.
  • Masshtablanıw, qátelerge shıdamlılıq hám saqlap turıw múmkinshiligi sıyaqlı arxitekturalıq ózgeshelikler bahalanadı.
  • Rawajlandırıw komandalarınan alınǵan pikirler tiykarında komponentler qayta dúziliwi múmkin.

Bul cikl ulıwma tiykar sıpatında xızmet etedi hám túrli tarawlarǵa iykemlestiriliwi múmkin.

Mánisi

Programmalıq támiynat dizayn hújjetleri programmalastırıwdan aldın sheklewlerdi, specifikaciyalardı hám hátte talaplardı dúzetiw ushın kórip shıǵılıwı yamasa usınılıwı múmkin. Programmalastırılǵan simulyaciya yamasa prototipti kórip shıqqannan keyin qayta dizaynlaw júz beriwi múmkin. Programmalıq támiynattı joba yamasa talap analizisiz, kodlaw barısında dizaynlaw múmkin, biraq quramalı joybarlar ushın bul az bolıwı múmkin. Kodlawdan aldın ayrıqsha dizayn kóp tarawlı dizaynerler hám taraw qánigeleriniń (SMEs) paydalı hám texnikalıq jaqtan durıs programmalıq támiynat islep shıǵarıw ushın baǵdarlamashılar menen birge islesiwine múmkinshilik beredi.

Talaplardı analizlew

Programmalıq támiynat dizaynınıń bir komponenti - programmalıq támiynat talapların analizlew (SRA). SRA programmalıq injiniringde qollanılatuǵın specifikaciyalardı dizimge alatuǵın programmalıq támiynattı islep shıǵıw processiniń bir bólegi bolıp tabıladı.

Analizdiń nátiyjesi - sheshiw kerek bolǵan kishirek máseleler. Kerisinshe, dizayn imkaniyatlarǵa itibar beredi, sonlıqtan bir másele ushın bir neshe dizayn bolıwı múmkin. Ortalıqqa baylanıslı, dizayn kóbinese ózgeredi, ol isenimli freymvorklerden dúzilgen yamasa sáykes dizayn úlgileri menen ámelge asırılǵan bolsın.

Artefaktlar

Dizayn procesi aǵım diagramması, qollanıw jaǵdayı, psevdokod, Birgelki modellestiriw tili (UML) modeli hám basqa da tiykarǵı modellestiriw koncepciyaları sıyaqlı artefaktlardı islep shıǵarıwdı óz ishine alıwı múmkin. Paydalanıwshıǵa baǵdarlanǵan programmalıq támiynat ushın, dizayn usı specifikaciyalardı anıqlawǵa járdem beriw ushın scenariy taxtasın jaratıwǵa alıp keletuǵın paydalanıwshı tájiriybesin dizaynlawdı óz ishine alıwı múmkin.

Geyde dizayn procesiniń nátiyjesi dizayn hújjeti boladı.

Dizayn principleri

Tiykarǵı dizayn principleri programmalıq támiynat injenerine dizayn procesinde jol tabıwǵa múmkinshilik beredi. Devis programmalıq támiynat dizaynı ushın principler toplamın usınıs etedi, olar tómendegi dizimde beyimlestirilgen hám keńeytilgen:

  • Dizayn procesi «tunnel kórinisi»nen zıyan kórmewi kerek. Jaqsı dizayner alternativ tásillerdi qarap shıǵıwı kerek, hár birin máseleniń talapları, jumıstı islew ushın bar bolǵan resurslar tiykarında bahalawı kerek.
  • Dizayn analiz modeline izbe-iz bolıwı kerek. Dizayn modeliniń bir elementi kóbinese birneshe talaplarǵa qaytıp izbe-iz bolıwı múmkin bolǵanlıqtan, talaplardıń dizayn modeli tárepinen qalay qanaatlandırılǵanın qadaǵalaw ushın qural bolıwı zárúr.
  • Dizayn dóńgelekti qayta oylap tabıwı kerek emes. Sistemalar dizayn úlgileri toplamı menen qurıladı, olardıń kópshiligi burın ushırasqan bolıwı múmkin. Bul úlgiler bárhama qayta oylap tabıwǵa alternativa sıpatında tańlanıwı kerek. Waqıt qısqa hám resurslar sheklengen; dizayn waqtı (qollanılatuǵın jaǵdayda) álleqashan bar bolǵan úlgilerdi biriktiriw arqalı (haqıyqattan jańa) ideyalardı kórsetiwge jumsalıwı kerek.
  • Dizayn programmalıq támiynat penen haqıyqıy dúnyadaǵı másele arasındaǵı «intellektual aralıqtı» minimumǵa túsiriwi kerek. Yaǵnıy, programmalıq támiynat dizaynınıń strukturası ilajı bolǵanınsha másele tarawınıń strukturasına uqsas bolıwı kerek.
  • Dizayn bir tekli hám integraciyalanǵan bolıwı kerek. Eger dizayn tolıq baylanıslı kórinse, ol bir tekli boladı. Bul nátiyjege erisiw ushın, dizayn jumısı baslanbastan aldın dizayn komandası ushın stil hám format qaǵıydaları belgileniwi kerek. Eger dizayn komponentleri arasındaǵı interfeyslerdi anıqlawda itibar berilse, dizayn integraciyalanǵan boladı.
  • Dizayn ózgerislerdi qabıllaw ushın strukturalanıwı kerek. Kelesi bólimde talqılanatuǵın dizayn koncepciyaları dizaynnıń bul principke erisiwine múmkinshilik beredi.
  • Dizayn hátte anomal maǵlıwmatlar, waqıyalar yamasa operaciyalıq sharayatlar payda bolǵanda da áste-aqırın tómenlewge strukturalanıwı kerek. Jaqsı dizaynlanǵan programmalıq támiynat hesh qashan «qulap qalmawı» kerek; ol ádetten tıs jaǵdaylarǵa shıdamlı bolıwǵa dizaynlanıwı kerek, al eger ol processti toqtatıwı kerek bolsa, bunı mádeniyatlı túrde islewi kerek.
  • Dizayn - bul kodlaw emes, kodlaw - bul dizayn emes. Hátte programma komponentleri ushın tolıq proceduralıq dizaynlar jaratılǵanda da, dizayn modeli dárejesi derek kodınan joqarı boladı. Kodlaw dárejesinde qabıl etilgen jalǵız dizayn sheshimleri proceduralıq dizaynnıń kodlanıwına múmkinshilik beretuǵın kishi implementaciya detalların qamtıwı kerek.
  • Dizayn jaratılıp atırǵan waqıtta sapa ushın bahalanıwı kerek, keyin emes. Rawajlanıw processi dawamında sapanı bahalawda dizaynerge járdem beriw ushın hár túrli dizayn koncepciyaları hám dizayn ólshemleri bar.
  • Dizayn konceptual (semantikalıq) qátelerdi minimumǵa túsiriw ushın qayta kórip shıǵılıwı kerek. Dizayn qayta kórip shıǵılǵanda, geyde mayda-shúyde nárselerge dıqqat awdarıw tendenciyası boladı, bul ormandı aǵashlardan kóre almawǵa alıp keledi. Dizayn komandası dizayn modeli sintaksisi haqqında qáweterleniwden aldın dizaynnıń tiykarǵı konceptual elementleri (qaldırıp ketiwler, eki mánililik, qarama-qarsılıq) sheshilgenine isenim payda etiwi kerek.

Dizayn koncepciyaları:

Dizayn koncepciyaları dizaynerge quramalıraq usıllardı qollanıw ushın tiykar beredi. Dizayn koncepciyalarınıń bir qatarı rawajlandı, olar qatarına tómendegiler kiredi:

  • Abstrakciya - Abstrakciya bul koncepciya yamasa baqlanatuǵın qubılıstıń informaciya mazmunın azaytıw arqalı ulıwmalastırıw processi yamasa nátiyjesi bolıp, ádette tek belgili bir maqset ushın áhmiyetli bolǵan informaciyanı saqlap qalıw ushın islenedi. Bul fonlıq detallardı yamasa túsindirmelerdi kirgizbesten áhmiyetli ózgesheliklerdi kórsetiw háreketi.
  • Jetilistiriw - Bul tolıqtırıw processi. Funkciyanıń makroskopiyalıq málimlemesin programmalastırıw tili málimlemelerine jetkenshe basqıshpa-basqısh ajıratıw arqalı ierarxiya rawajlandırıladı. Hár bir basqıshta, berilgen programmanıń bir yamasa bir neshe kórsetpeleri kóbirek detallı kórsetpelerge ajıratıladı. Abstrakciya hám Jetilistiriw bir-birin tolıqtırıwshı koncepciyalar.
  • Modullik - Programmalıq támiynat arxitekturası moduller dep atalatuǵın komponentlerge bólinedi.
  • Programmalıq támiynat Arxitekturası - Bul programmalıq támiynattıń ulıwma strukturasına hám sol strukturanıń sistema ushın konceptual pútinlikti qalay támiyinleytuǵınına qatnaslı. Jaqsı programmalıq támiynat arxitekturası joybardıń qálegen nátiyjesine qatnaslı jaqsı qaytıw beredi, mısalı, ónimdarlıq, sapa, keste hám qárejet kózqarasınan.
  • Basqarıw Ierarxiyası - Programma komponentiniń shólkemlestiriliwin kórsetetuǵın hám basqarıw ierarxiyasın bildiretuǵın programma strukturası.
  • Strukturalıq Bóliw - Programma strukturası gorizontal hám vertikal bóliniwi múmkin. Gorizontal bóliniwler hár bir tiykarǵı programma funkciyası ushın modullik ierarxiyanıń ayırım tarmaqların anıqlaydı. Vertikal bóliniw bolsa basqarıw hám jumıstıń programma strukturasında joqarıdan tómenge qaray bólistiriliwi kerekligin usınıs etedi.
  • Maǵlıwmatlar Strukturası - Bul maǵlıwmattıń ayırım elementleri arasındaǵı logikalıq baylanıstıń kórsetiliwi.
  • Programmalıq támiynat Procedurası - Bul hár bir moduldi ayırım qayta islewge itibar beredi.
  • Informaciyanı Jasırıw - Moduller sonday etip belgileniwi hám jobalanıwı kerek, modul ishindegi informaciya basqa moduller ushın ashıq emes bolıwı kerek, eger olar bul informaciyaǵa mútáj bolmasa.

Óziniń obekt modelinde, Greydi Buch tiykarǵı programmalıq támiynat dizayn principleri sıpatında Abstrakciya, Inkapsulyaciya, Modullestiriw hám Ierarxiyanı atap ótedi.[3] Bul tórt tiykarǵı principke qatnaslı PHAME (Ierarxiya, Abstrakciya, Modullestiriw hám Inkapsulyaciya Principleri) qısqartpası geyde qollanıladı.[4]

Dizayn máseleleri

Programmalıq támiynattıń bir bólegin dizaynlawda kóp aspektlerdi esapqa alıw kerek. Hár bir dodalawdıń áhmiyeti programmalıq támiynattıń jaratılıwındaǵı maqsetler hám kútiliwlerdi sáwlelendiriwi kerek. Bul aspektlerdiń geyparaları:

  • Úylesimlilik - Programmalıq támiynat basqa ónim menen birgelikte islew ushın dizaynlanǵan basqa ónimler menen isley aladı. Mısalı, programmalıq támiynattıń bir bólegi óziniń eski versiyası menen keri úylesimli bolıwı múmkin.
  • Keńeytiliwshilik - Tiykarǵı arxitekturada úlken ózgerisler islemesten programmalıq támiynatqa jańa múmkinshilikler qosıla aladı.
  • Modullik - nátiyjede alınǵan programmalıq támiynat jaqsı anıqlanǵan, ǵárezsiz komponentlerden turadı, bul jaqsıraq saqlanıwǵa alıp keledi. Komponentler qálegen programmalıq támiynat sistemasın qurıw ushın integraciyalanıwdan aldın ayırım túrde ámelge asırılıwı hám testleniwi múmkin. Bul programmalıq támiynattı islep shıǵıw joybarında jumıstı bóliwge múmkinshilik beredi.
  • Qátelerge shıdamlılıq - Programmalıq támiynat komponent isten shıqqan jaǵdayda qarsılıq kórsete aladı hám onnan qayta tiklene aladı.
  • Saqlanıwshılıq - Qátelerdi dúzetiw yamasa funkcional ózgerislerdi qanshelli ańsat ámelge asırıw múmkinliginiń ólshemi. Joqarı saqlanıwshılıq modullik hám keńeytiliwshiliktiń nátiyjesi bolıwı múmkin.
  • Isenimlilik (Programmalıq támiynattıń bekkemligi) - Programmalıq támiynat belgilengen shártler astında belgili bir waqıt dawamında talap etilgen funkciyanı orınlay aladı.
  • Qayta qollanıwshılıq - Aldın bar bolǵan programmalıq támiynattıń geybir yamasa barlıq aspektlerin basqa joybarlarda az yamasa hesh qanday ózgerissiz qollanıw uqıplılıǵı.
  • Bekkemlik - Programmalıq támiynat stress astında isley aladı yamasa boljawǵa bolmaytuǵın ya nadurıs kiris maǵlıwmatlarına shıday aladı. Mısalı, ol tómen yad shárayatlarına shıdamlı etip dizaynlanıwı múmkin.
  • Qáwipsizlik - Programmalıq támiynat dushpanlıq háreketler hám tásirlerge qarsı tura aladı hám olarǵa shıday aladı.
  • Qollanıwǵa qolaylılıq - Programmalıq támiynattıń paydalanıwshı interfeysi maqsetli paydalanıwshı/auditoriya ushın qollanıwǵa qolaylı bolıwı kerek. Parametrler ushın standart mánisler kópshilik paydalanıwshılar ushın jaqsı tańlaw bolatuǵınday etip tańlanıwı kerek.[5]
  • Ónimdarlıq - Programmalıq támiynat óz wazıypaların paydalanıwshı ushın qolaylı bolǵan waqıt sheńberinde orınlaydı hám oǵan kóp yad talap etilmeydi.
  • Kóshiriliwshilik - Programmalıq támiynat bir qatar hár túrli shárayatlar hám ortalıqlarda qollanıla alıwı kerek.
  • Masshtablanıwshılıq - Programmalıq támiynat maǵlıwmatlardıń kóbeyiwine yamasa qosımsha funkciyalar ya paydalanıwshılar sanınıń artıwına jaqsı beyimlesedi. Mark Brukerdiń aytıwınsha: «sistema qosımsha jumıs júklemesiniń shetki qunı derlik turaqlı bolǵan aralıqta masshtablanıwshı boladı.» Serversiz texnologiyalar bul anıqlamaǵa tuwrı keledi, biraq tek infrastruktura qunın emes, ulıwma iyelik qunın esapqa alıw kerek.[6]

Modellestiriw tili

Modellestiriw tili informaciyanı, bilimdi yamasa sistemalardı qáliplesken qaǵıydalar toplamı menen anıqlanǵan strukturada ańlatıw ushın qollanılıwı múmkin. Bul qaǵıydalar struktura ishindegi komponentlerdi interpretaciya qılıw ushın qollanıladı. Modellestiriw tili grafikalıq yamasa tekstlik bolıwı múmkin. Programmalıq támiynat dizaynı ushın grafikalıq modellestiriw tilleriniń mısallarına tómendegiler kiredi:

  • Arxitekturanı táriyiplew tili (ADL) programmalıq támiynat sistemasınıń arxitekturasın táriyiplew hám kórsetiw ushın qollanılatuǵın til.
  • Biznes processlerin modellestiriw belgisi (BPMN) processlerdi modellestiriw tiliniń mısalı bolıp tabıladı.
  • EXPRESS hám EXPRESS-G (ISO 10303-11) xalıqaralıq standart ulıwma maqsetli maǵlıwmatlardı modellestiriw tili.
  • Keńeytilgen kárxana modellestiriw tili (EEML) ádette bir qatar qatlamlar boyınsha biznes processlerin modellestiriw ushın qollanıladı.
  • Blok-sxemalar algoritmlerdiń yamasa basqa da basqıshlı processlerdiń sxemalıq kórinisi bolıp tabıladı.
  • Tiykarǵı modellestiriw koncepciyaları (FMC) programmalıq támiynatqa tiykarlanǵan sistemalar ushın modellestiriw tili bolıp tabıladı.
  • IDEF - bul modellestiriw tilleriniń shańaraǵı bolıp, onıń eń belgili túrlerine funkcional modellestiriw ushın IDEF0, informaciyanı modellestiriw ushın IDEF1X hám ontologiyalardı modellestiriw ushın IDEF5 kiredi.
  • Djekson Strukturalıq Programmalastırıw (JSP) - bul maǵlıwmat aǵımı strukturası menen programma strukturası arasındaǵı sáykesliklerge tiykarlanǵan strukturalıq programmalastırıw usılı.
  • LePUS3 - bul obektke baǵdarlanǵan vizual Dizayn Táriyiplew Tili hám tiykarınan úlken obektke baǵdarlanǵan (Java, C++, C#) programmalar hám dizayn úlgilerin modellestiriw ushın qolaylı formal specifikaciya tili.
  • Birgelki Modellestiriw Tili (UML) - bul programmalıq támiynattı hám strukturalıq, hám funkcional jaqtan táriyiplew ushın ulıwma modellestiriw tili. Ol grafikalıq belgilewge iye hám Profil (UML) járdeminde keńeytiwge múmkinshilik beredi.
  • Alloy (specifikaciya tili) - bul programmalıq támiynat sistemasındaǵı quramalı strukturalıq sheklewler hám is-háreketlerdi ańlatıw ushın ulıwma maqsetli specifikaciya tili. Ol birinshi tártipli qatnasıq logikasına tiykarlanǵan qısqa til tiykarın usınadı.
  • Sistemalar Modellestiriw Tili (SysML) - bul sistemalıq injeneriya ushın jańa ulıwma maqsetli modellestiriw tili.
  • Xızmetke baǵdarlanǵan modellestiriw strukturası (SOMF)[7]

Dizayn úlgileri

Programmalıq támiynat dizayneri burın basqalar tárepinen qaralǵan hám bálkim sheshilgen dizayn aspektin anıqlawı múmkin. Ulıwma máselege sheshim sıpatında táriyiplengen shablon yamasa úlgi dizayn úlgisi dep ataladı. Bunday úlgilerdi qayta qollanıw programmalıq támiynattı islep shıǵıw tezligin arttırıwı múmkin.[8]

Kod dizayn sıpatında

Programmalıq támiynatqa baylanıslı «dizayn» terminin qollanıwdıń qıyınshılıǵı sonnan ibarat, geybir mániste, programmanıń derek kodı - bul ol payda etetuǵın programmanıń dizaynı bolıp tabıladı. Bul qanshelli durıs bolsa, «programmalıq támiynat dizaynı» dizaynnıń dizaynın bildiredi. Edsger V. Deykstra semantikalıq dárejelerdiń bunday qatlamlasıwın kompyuter programmalastırıwdıń «radikal jańalıǵı» dep ataǵan,[9] al Donald Knut TeX jazıw tájiriybesin qollanıp, programmanı ámelge asırıwdan aldın onı dizaynlawǵa urınıwdıń paydasızlıǵın táriyiplegen:

Eger men TEX ti tek ǵana anıqlap, onıń dáslepki ámelge asırılıwına tolıq qatnaspaǵanımda, ol tolıq sátsizlikke ushıraǵan bolar edi. Ámelge asırıw processi úziliksiz meni kútilmegen sorawlarǵa hám dáslepki specifikaciyalardı qalay jaqsılaw múmkinligi haqqında jańa túsiniklerge alıp keldi.[10]  

Derekler

  1. Freeman, Peter; David Hart (2004). "A Science of design for software-intensive systems". Communications of the ACM 47 (8): 19–21 [20]. doi:10.1145/1012037.1012054. 
  2. Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media, 2020. ISBN 978-1492043454. 
  3. Booch, Grady. Object-Oriented Analysis and Design with Applications, 3rd, MA, US: Addison Wesley, 2004. ISBN 0-201-89551-X. 
  4. Suryanarayana, Girish. Refactoring for Software Design Smells. Morgan Kaufmann, November 2014. ISBN 978-0128013977. 
  5. Scenario-Based Design: Envisioning Work and Technology in System Development. New York: John Wiley & Sons. ISBN 0471076597. 
  6. Building Serverless Applications on Knative. O'Reilly Media. ISBN 9781098142049. 
  7. Bell, Michael. Service-Oriented Modeling: Service Analysis, Design, and Architecture. Wiley & Sons. ISBN 978-0-470-14111-3. 
  8. Judith Bishop. „C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems“. C# Books from O'Reilly Media. — „If you want to speed up the development of your .NET applications, you're ready for C# design patterns -- elegant, accepted and proven ways to tackle common programming problems.“. Qaraldı: 15-may 2012-jıl.
  9. Dijkstra. „On the cruelty of really teaching computing science“ (1988). Qaraldı: 10-yanvar 2014-jıl.
  10. Knuth, Donald E. „Notes on the Errors of TeX“ (1989).