
Programmalıq injiniringge kirisiw / 10-ameliy PI_K
.pdf10-ámeliy sabaq. Qosımsha arxitekturası hám eko-sistemanı anıqlaw. Tiykarǵı arxitekturalıq patternler haqqında qısqasha maǵlıwmat.
Arxitekturalıq patternler hám proektlestiriw.
Jumıstıń maqseti:
Bul ámeliy sabaqtıń maqseti - studentlerge programmalıq támiynat arxitekturasınıń tiykarǵı túsinikleri, arxitekturalıq patternler hám olardı qollanıw principleri menen tanısıw. Sabaq dawamında arxitekturalıq sheshimlerdiń programmalıq támiynattı islep shıǵıw processindegi áhmiyeti, hár qıylı arxitekturalıq patternlerdi qollanıw jaǵdayları hám olardı durıs tanlawdıń sebepleri túsindiriledi. Bunday bilimler joqarı sapalı, masshtablanatuǵın hám qollaw-qolaylı programmalıq támiynat ónimlerin proektlestiriw ushın zárúr.
Ámeliy bólim:
Programmalıq támiynat arxitekturası - bul programmalıq sistemanıń komponentleri, olardıń arasındaǵı baylanıslar hám sırtqı ortalıq penen óz-ara qatnasların anıqlawshı qurılma. Arxitektura sistemanıń funkcionallıq talapların qanaatlandırıwǵa baǵdarlanǵan hám sonıń menen birge ónim sapası, ónimdarlıq, masshtablanıw, texnikalıq xızmet kórsetiw hám t.b. funkcionallıq emes talaplardı da esapqa aladı.
Programmalıq támiynat arxitekturasın anıqlaw processinde mına máselelerge itibar beriwimiz kerek:
1.Sistema komponentleri: Sistemanıń negizgi bólekleri qanday funkciyalardı atqaradı?
2.Baylanıs mexanizmleri: Komponentler arasında maǵlıwmatlar qalay almasadı?
3.Interfeysler: Komponentler qanday interfeysler arqalı óz-ara háreketlesedi?
4.Qásiyetleri: Sistemanıń qanday sapalıq ózgeshelikleri (masshtablanıw, isenimlilik, qáwipsizlik) talap etiledi?
5.Sheklewler: Sistema qanday texnikalıq yaki biznes sheklewlerge iye?
2.Tiykarǵı arxitekturalıq patternler
Arxitekturalıq patternler - bul kónlikpeli programmalıq máselelerdi sheshiw ushın qollanılatuǵın úlgi qálipler. Tómende eń keń tarqalǵan arxitekturalıq patternler haqqında maǵlıwmat beriledi:
2.1. Qatlamlı arxitektura (Layered Architecture)
Bul patternde sistema bir neshe qatlamlarǵa bólinedi. Hár bir qatlam ózinen tómengi qatlamǵa ǵárezli boladı. Mısalı:
Prezentaciya qatlamı: Paydalanıwshı interfeysi (UI), maǵlıwmatlardı kórsetiw
Biznes logika qatlamı: Sistemanıń tiykarǵı logikası hám biznes-qaǵıydaları
Maǵlıwmatlar menen islesiw qatlamı: Maǵlıwmatlar bazasına kiriw hám saqlaw operaciyaları
Maǵlıwmatlar bazası qatlamı: Maǵlıwmatlardı fizikalıq saqlaw
Qollanıw sheńberi: Veb-qosımshalar, korporativlik sistemalar.
2.2. Klient-server arxitekturası (Client-Server)
Sistema eki komponentke bólinedi:
Klient: Paydalanıwshı interfeysin támiyinleydi hám serverge sorawlar jiberedi
Server: Sorawlardı qabıl etedi, qayta isleydi hám nátiyjelerdi qaytaradı
Qollanıw sheńberi: Veb-qosımshalar, tarmaq qosımshaları, maǵlıwmatlar bazası qosımshaları.
2.3. MVC (Model-View-Controller)
Bul pattern úsh komponentten turadı:
Model (Model): Maǵlıwmatlar strukturası hám biznes logika
Kóriniw (View): Paydalanıwshıǵa maǵlıwmatlardı kórsetiw
Basqarıwshı (Controller): Paydalanıwshı háreketlerin qabıl etiw hám modeldi basqarıw
Qollanıw sheńberi: Grafikalıq interfeysli qosımshalar, veb-qosımshalar.
2.4. Mikroservisler arxitekturası (Microservices)
Sistema kóp sanlı kishkene, avtonom xızmetlerge bólinedi. Hár bir mikroservis óz aldına jumıs isleydi hám basqa mikroservisler menen API arqalı baylanısadı.
Qollanıw sheńberi: Úlken masshtablanatuǵın sistemalar, bólistirilgen sistemalar.
2.5. Waqıyaǵa basqarılatuǵın arxitektura (Event-Driven Architecture)
Sistema komponentleri waqıyalar arqalı baylanısadı. Komponentler waqıyalardı jaratadı hám waqıyalarǵa juwap beredi.
Qollanıw sheńberi: Real waqıt rejiminde isleytuǵın sistemalar, bólistirilgen sistemalar, integraciyalıq platformalar.
3. Arxitekturalıq patternlerdi qollanıwǵa mısal
Mısal retinde onlayn-dúkan qosımshasın alıp, onı MVC patterni tiykarında dúzeyik:
Modeller (Models):
// Ónim modelі
public class Product { private int id; private String name; private double price;
private String description;
// Konstruktorlar, getterler hám setterler
public Product(int id, String name, double price, String description) {
this.id = id; this.name = name; this.price = price;
this.description = description;
}
// Getterler
public int getId() { return id; } public String getName() { return name; }
public double getPrice() { return price; }
public String getDescription() { return description; }
// Setterler
public void setName(String name) { this.name = name; } public void setPrice(double price) { this.price = price; } public void setDescription(String description) {
this.description = description; }
}
Basqarıwshı (Controller):
// Ónimler basqarıwshısı
public class ProductController {
private ProductRepository repository;
public ProductController(ProductRepository repository) { this.repository = repository;
}
public List<Product> getAllProducts() { return repository.findAll();
}
public Product getProductById(int id) { return repository.findById(id);
}
public void addProduct(Product product) { repository.save(product);
}
public void updateProduct(Product product) { repository.update(product);
}
public void deleteProduct(int id) { repository.delete(id);
}
}
Kórinis (View):
// Ónimler kóriniwi (konsol interfeysi retinde) public class ProductView {
private ProductController controller;
public ProductView(ProductController controller) { this.controller = controller;
}
public void showProductsList() {
List<Product> products = controller.getAllProducts(); System.out.println("Ónimler dizimi:");
for (Product product : products) { System.out.println(product.getId() + ". " +
product.getName() +
" - " + product.getPrice() + "
tenge");
}
}
public void showProductDetails(int id) {
Product product = controller.getProductById(id); if (product != null) {
System.out.println("Ónim haqqında tolıq maǵlıwmat:");
System.out.println("ID: " + product.getId()); System.out.println("Atı: " + product.getName()); System.out.println("Bahası: " + product.getPrice() +
" swm");
System.out.println("Táriyp: " + product.getDescription());
} else {
System.out.println("Ónim tabılmadı!");
}
}
public void processUserInput() {
Scanner scanner = new Scanner(System.in);
boolean running = true;
while(running) { System.out.println("\nTańlań:");
System.out.println("1. Barlıq ónimlerdi kórsetiw"); System.out.println("2. Ónim haqqında tolıq
maǵlıwmat");
System.out.println("3. Shıǵıw");
int choice = scanner.nextInt(); scanner.nextLine(); // buferdi tazalaw
switch(choice) { case 1:
showProductsList();
break; case 2:
System.out.println("Ónim ID-sin kiritiń:"); int id = scanner.nextInt(); showProductDetails(id);
break; case 3:
running = false; break;
default:
System.out.println("Nadurıs tańlaw!");
}
}
scanner.close();
}
}
Arxitekturalıq sheshimlerdi qabıl etiw hám bahalaw
Arxitekturalıq sheshimlerdi qabıl etiw processinde tómendegi faktorlardı esapqa alıw kerek:
1.Masshtablanıw talapları: Sistema keleshekte qanshelli ósiwi múmkin?
2.Ónimlilik talapları: Sistema qanday jumıs ónimliligin kórsetiwi kerek?
3.Qáwipsizlik talapları: Qanday qáwipsizlik mexanizmleri kerek?
4.Texnikalıq xızmet kórsetiw qıyınshılıǵı: Sistemanı qollap-quwatlaw qanshelli ańsat bolıwı kerek?
5.Komandadaǵı kónlikpeler: Komanda aǵzalarınıń texnikalıq kónlikpeleri qanday?
6.Byudjet hám múddetler: Resurslar hám waqıt sheklewleri qanday?
5.Arxitekturanı dokumentlestiriw

Arxitekturanı dokumentlestiriw ushın tómendegi áhmiyetli komponentlerdi kirgiziw kerek:
1.Arxitekturalıq kóz-qaras: Sistemanıń joqarı dárejedegi strukturası hám negizgi komponentler
2.Komponentler diagramması: Sistemanıń tiykarǵı komponentleri hám olardıń arasındaǵı baylanıslar
3.Klasslar diagramması: Klasslar hám olardıń arasındaǵı qatnasıqlar
4.Baylanıs diagramması: Sistema komponentleriniń óz-ara háreketlesiw usılları
5.Maǵlıwmatlar modelі: Sistema saqlaytuǵın maǵlıwmatlar strukturası
6.API specifikaciyası: Sırtqı interfeysler hám olardıń funkcionallıǵı
Ámeliy tapsırmalar:
Tapsırma 1: Arxitekturalıq patternlerdi analizlew hám tańlaw
Tómendegi talaplar tiykarında mobil qosımshaǵa sáykes arxitekturalıq pattern tańlań:
o Paydalanıwshılar qosımshada awqat receptlerin kóre aladı o Receptlerdi kategoriyalar boyınsha filtrlew múmkin
o Paydalanıwshılar receptlerdi saqlap qoyıwı múmkin o Qosımsha offlayn rejimde de isley aladı
o Server menen sinxronizaciya boladı
Siz tańlaǵan arxitekturalıq pattern ushın arxitekturalıq diagramma jaratıń
(UML yaki basqa ápiwayı formatta)
Usı arxitekturanıń artıqmashılıqların hám kemshiliklerin talqılań Tapsırma 2: Arxitekturalıq patterndi qollanıw
MVC patterni tiykarında ápiwayı studentler maǵlıwmatların basqarıw sistemasınıń kodın jazıń:
o Student klasın jaratıń (id, atı-familiyası, topar, kurs)
oStudentlar dizimin saqlaw hám basqarıw ushın ModellController jaratıń
oStudentlar dizimin konsolde kórsetiw ushın View klasın jaratıń
Hár bir komponentti táriyipleń hám olardıń arasındaǵı baylanıstı anıqlań
Sistemaǵa jańa Studentti qosıw, Studentti ózgertiw hám Studentti óshiriw funkciyaları menen tolıqtırıń
Tapsırma 3: Mikroservisler arxitekturasın proektlestiriw
Onlayn-dúkannıń mikroservisler arxitekturasın proektlestiriń: o Ónimler servisi (ónimlerdi basqarıw)
o Paydalanıwshılar servisi (paydalanıwshılar akkauntların basqarıw) o Buyırtpalar servisi (buyırtpalardı basqarıw)
oTólem servisi (tólemlerdi qayta islew)
Hár bir servistiń APIs anıqlań
Servisler arasındaǵı baylanıslardı kórsetiń (sinxron hám asinxron baylanıslar)
Mikroservisler arxitekturasın qollanıwdıń potencial qıyınshılıqların anıqlań hám olardı sheshiw usılların usınıs etiń.