Скачиваний:
2
Добавлен:
23.04.2025
Размер:
335.2 Кб
Скачать

11-ámeliy sabaq. Qosımsha shegaraların (programmalıq ekosistema) belgilew.

Jumıstıń maqseti:

Ámeliy sabaqtıń maqseti - studentlerge programmalıq támiynat qosımshalarınıń shegaraların anıqlaw, programmalıq ekosistemanı túsiniw hám onıń komponentlerin qosımsha islep shıǵıw processinde belgilew bilimlerin úyretiw. Sabaqta studentler programmalıq ekosistemanıń tiykarǵı komponentleri, olardıń baylanısları hám óz-ara qatnasları menen tanısadı. Nátiyjede, studentler programmalıq támiynat qosımshaların proektlestiriw hám rawajlandırıw processinde ekosistema komponentlerin durıs belgilewdi hám olardıń arasındaǵı baylanıslardı optimallastırıw kónikpelerin qáliplestiredi.

Ámeliy bólim:

Programmalıq ekosistema túsinigi hám onıń áhmiyeti

Programmalıq ekosistema - bul programmalıq támiynat qosımshasınıń funkcionallıǵın támiyinlew ushın óz-ara baylanısqan komponentlerdiń jıyındısı. Bul komponentlerge ózińizdiń qosımshańız, sırtqı servisler, API, maǵlıwmatlar bazaları, infrastrukturalar, keyingi tárepli kitapxanalar hám basqalar kiredi. Ekosistema túsinigi biotik hám abiotik faktorlardıń kompleksli óz-ara baylanısına iye bolǵan tábiyiy ekosistemaǵa usaǵan belgili bir ortalıqtı payda etiw principine tiykarlanǵan.

Programmalıq ekosistemanıń áhmiyeti:

1.Anıqlıq: Sistema komponentleriniń anıq shegaraların belgilew, olardıń juwapkershilikli hám óz-ara baylanısların ornatıw múmkinshiligi beredi.

2.Masshtablanıw: Anıq shegaralarǵa iye bolǵan sistema komponentlerin qosıw, óshiriw yamasa modifikaciyalaw jolları menen masshtablanıwı ańsat.

3.Texnikalıq xızmet kórsetiw: Sistema komponenti izolyaciyalanǵan bolsa, onı basqa komponentlerge zıyan keltirmesten ózgertiw yamasa jańartıw múmkin.

4.Ónimlilik: Vertikal hám gorizontal masshtablanıw esabınan ónimlilik optimallastırıladı.

Programmalıq qosımsha shegaraların belgilew

Programmalıq qosımsha shegaraların belgilew processi kompleksli hám kóp aspektli process. Bul process tiykarınan, sistema komponentleriniń funkcionallıq juwapkershilikleri, olardıń óz-ara qatnasları hám interfeyslerin anıqlawdı óz ishine aladı.

Qosımsha shegaraların belgilew ushın tómendegi basqıshlardı orınlaw zárúr:

Sistemanıń maqsetleri hám talapların anıqlaw

Birinshi adım sistemanıń ulıwma maqsetlerin hám oǵan qoyılatuǵın talaplardı anıqlaw. Bul adımda tómendegi sorawlarǵa juwap beriw kerek:

Qosımsha qanday funkciyalardı atqaradı?

Qosımshanıń tiykarǵı paydalanıwshıları kimler?

Qanday funkcionallıq talaplar bar?

Isenimlilik, ónimlilik hám masshtablanıw sıyaqlı funkcionallıq emes talaplar qanday?

Sistemanı domen oblastları boyınsha bóliw

Sistemanı domen oblastlarına bóliw - bul domenge-baǵdarlanǵan dizayn (DomainDriven Design, DDD) principleri tiykarında ámelge asırıladı:

1.Sheklengen kontekstler (Bounded Contexts): Model anıqlamalarınıń,

ózgeshelikleri hám qollanıw oblastlarınıń shegaraların belgilew. Mısalı, "paydalanıwshı" túsinigi ayırım sistemalarda hár qıylı bolıwı múmkin: onlayn dúkanda bul satıp alıwshı, al CRM sistemasında - klient.

2.Domen modeller: Hár bir kontekst ushın domen model dúziw. Bul model kontekst sheńberinde áhmiyetli bolǵan túsiniklerdi óz ishine aladı.

3.Kontekstler arasındaǵı qatnasıqlar: Mısalı, "Klientler" konteksti menen "Buyırtpalar" konteksti arasındaǵı qatnasıqlar.

Qatlamlanǵan arxitektura qollanıw

Qatlamlanǵan arxitektura sistemanı gorizontal dárejedegi logikalıq qatlamlarǵa bóliw menen sistemanıń tiykarǵı shegaraların belgilewge múmkinshilik beredi:

1.Prezentaciya qatlamı: Paydalanıwshı interfeysi, maǵlıwmatlardı kórsetiw hám paydalanıwshı háreketlerin qayta islew. Mısalı, veb-interfeys, mobil qosımsha.

2.Qollanba (Application) qatlamı: Biznes logika, qosımsha xızmetleri hám processler. Mısalı, servisler, utilitalar, biznes logika klassları.

3.Domen qatlamı: Biznes túsiniklerin saqlaytuǵın modeller. Mısalı, domen subektleri.

4.Infrastruktura qatlamı: Maǵlıwmatlar menen islesiw. Mısalı, maǵlıwmatlar bazasına integraciya, sırtqı API menen islesiw.

//Domen modeli mısalı

public class Product { private String id; private String name; private BigDecimal price;

private String description; private ProductCategory category;

//Konstruktor, getterler hám setterler

//Biznes logika metodları

public boolean isAvailable() {

// Ónimnіń qoljetimliligin tekseriw logikası

}

public void applyDiscount(double discountPercentage) { // Jeńillik qollanıw logikası

}

}

Programmalıq ekosistema komponentleri

Programmalıq ekosistema quramına tiykarınan tómendegi komponentler kiredi:

Yadro (Core)

Sistemanıń oraylıq bólimi, ol negizgi biznes logikanı hám domenge tiyisli funkcionallıqtı óz ishine aladı. Yadro modulleri:

// Yadro moduli mısalı package com.example.core;

public interface ProductService { Product getProductById(String id);

List<Product> getProductsByCategory(ProductCategory category);

void createProduct(Product product); void updateProduct(Product product); void deleteProduct(String id);

}

Sırtqı API

Basqa sistemalar hám servisler menen integraciya ushın xızmet etedi. API tiykarınan HTTP protokolı arqalı ámelge asırıladı (REST, GraphQL):

// REST API mısalı @RestController @RequestMapping("/api/products") public class ProductController {

private final ProductService productService;

@Autowired

public ProductController(ProductService productService) { this.productService = productService;

}

@GetMapping("/{id}")

public ResponseEntity<Product> getProduct(@PathVariable String id) {

Product product = productService.getProductById(id); return ResponseEntity.ok(product);

}

@PostMapping

public ResponseEntity<Product> createProduct(@RequestBody Product product) {

productService.createProduct(product); return

ResponseEntity.status(HttpStatus.CREATED).body(product);

}

// Basqa metodlar...

}

Maǵlıwmatlar qatlamı

Maǵlıwmatlardı saqlaw, maǵlıwmatlar bazasına qatnaslar hám maǵlıwmatlar menen operaciyalar ámelge asırıladı:

// Maǵlıwmatlar qatlamı mısalı

@Repository

public class ProductRepositoryImpl implements ProductRepository

{

private final JdbcTemplate jdbcTemplate;

@Autowired

public ProductRepositoryImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate;

}

@Override

public Product findById(String id) {

String sql = "SELECT * FROM products WHERE id = ?"; return jdbcTemplate.queryForObject(sql, new

Object[]{id}, new ProductRowMapper());

}

// Basqa metodlar...

}

Infrastrukturalıq komponentler

Sistemanıń tiykarǵı infrastrukturasın támiyinleytuǵın komponentler: serverler, maǵlıwmatlar bazaları, keshlew, tarmaqlar hám t.b.:

// Kesh konfiguraciyası mısalı

@Configuration

@EnableCaching

public class CacheConfig {

@Bean

public CacheManager cacheManager() { SimpleCacheManager cacheManager = new

SimpleCacheManager();

List<Cache> caches = new ArrayList<>(); caches.add(new ConcurrentMapCache("products")); caches.add(new ConcurrentMapCache("categories")); cacheManager.setCaches(caches);

return cacheManager;

}

}

Integraciyalıq komponentler

Sırtqı servisler hám sistemalar menen integraciyanı támiyinleytuǵın komponentler. Mısalı, tólem sistemaları, elektron pochta sistemaları, xabarlar menen almasıw hám basqalar:

// Tólem sisteması menen integraciya mısalı

@Service

public class PaymentServiceImpl implements PaymentService {

private final RestTemplate restTemplate; private final String paymentApiUrl;

@Autowired

public PaymentServiceImpl(RestTemplate restTemplate, @Value("${payment.api.url}") String

paymentApiUrl) {

this.restTemplate = restTemplate; this.paymentApiUrl = paymentApiUrl;

}

@Override

public PaymentResult processPayment(PaymentRequest request)

{

return restTemplate.postForObject(paymentApiUrl + "/process", request, PaymentResult.class);

}

}

Programmalıq ekosistema shegaraların anıqlaw

Programmalıq ekosistema shegaraların anıqlaw ushın tómendegi principlerdi qollanıw kerek:

Sheklem modulyarizaciya (Bounded Modularity)

Hár bir modul yamasa komponent anıq shegarlar menen belgilengen bolıwı kerek. Bunda:

1.Joqarı kogeziya (High Cohesion): Komponent birdey funkcionallıqtı támiyinleytuǵın klasslardı óz ishine alıwı tiyis.

2.Tómen baylanıs (Low Coupling): Komponent basqa komponentlerge minimal ǵárezli bolıwı kerek.

//Joqarı kogeziya mısalı

//Barlıq inventarizaciya logikası bir pakette

package com.example.inventory;

public class InventoryService {

private InventoryRepository repository;

// Inventarizaciya menen baylanıslı logikası

}

public class InventoryRepository {

// Inventarizaciya maǵlıwmatların saqlaw

}

public class StockLevel {

// Inventarizaciya deńgeylerini anıqlaw

}

API kontraktları

Komponentler arasındaǵı óz-ara háreketlesiw API kontraktları arqalı anıq belgileniwi kerek. Bunda komponentler arasındaǵı óz-ara háreketlesiw usılları, parametrleri hám nátiyjeleri anıq bolıwı kerek.

// API kontrakt mısalı package com.example.api;

public interface OrderService { /**

*Jańa buyırtpa jaratadı

*@param order Buyırtpa maǵlıwmatları

*@return Jaratılǵan buyırtpanıń ID-si

*@throws OrderValidationException eger buyırtpa durıs formatta bolmasa

*/

String createOrder(Order order) throws OrderValidationException;

/**

*Buyırtpa statusın aladı

*@param orderId Buyırtpa ID-si

*@return Buyırtpa statusı yaki null eger buyırtpa tabılmasa

*/

OrderStatus getOrderStatus(String orderId);

// Basqa metodlar...

}

Waqıyaǵa tiykarlanǵan óz-ara háreketlesiw (Event-Driven)

Komponentler arasındaǵı óz-ara háreketlesiw waqıya mexanizmleri arqalı ámelge asırılsa, komponentler arasındaǵı tikkeley baylanıslar azaytıladı.

//Waqıyaǵa tiykarlanǵan óz-ara háreketlesiw mısalı

//Waqıyaǵa jaratıwshı komponent

@Service

public class OrderServiceImpl implements OrderService {

private final ApplicationEventPublisher eventPublisher;

@Autowired

public OrderServiceImpl(ApplicationEventPublisher eventPublisher) {

this.eventPublisher = eventPublisher;

}

@Override

public String createOrder(Order order) {

//Buyırtpanı jaratıw logikası

String orderId = generateOrderId(); order.setId(orderId);

//Buyırtpa jaratılǵanı haqqında oqıyǵa jariyalaw eventPublisher.publishEvent(new

OrderCreatedEvent(order));

return orderId;

}

}

// Waqıya tıńlawshı komponent @Component

public class InventoryUpdateListener {

private final InventoryService inventoryService;

@Autowired

public InventoryUpdateListener(InventoryService inventoryService) {

this.inventoryService = inventoryService;

}

@EventListener

public void handleOrderCreatedEvent(OrderCreatedEvent event)

{

Order order = event.getOrder();

// Buyırtpa jaratılǵannan keyin inventarizaciyanı

jańartıw

inventoryService.updateInventory(order.getItems());

}

}

Programmalıq ekosistema mısalı: E-commerce sistema

Tómende elektron dúkan ekosistemasınıń mısalı keltirilgen:

1. Yadro komponentler:

o Ónimlerdi basqarıw

o Buyırtpalardı basqarıw

oPaydalanıwshılardı basqarıw

2.Sırtqı API komponentler:

oRESTful API ónimler ushın

oRESTful API buyırtpalar ushın

oWebSocket sessiyalar ushın

3.Maǵlıwmatlar qatlamı komponentleri:

oÓnimler maǵlıwmatlar bazası

o Buyırtpalar maǵlıwmatlar bazası

oPaydalanıwshılar maǵlıwmatlar bazası

4.Infrastruktura komponentleri:

oKeshlew sisteması

oQollap quwatlaw sisteması

oMonitoring sisteması

5.Integraciyalıq komponentler:

oTólem sisteması integraciyası

o Jetkerip beriw sisteması integraciyası o Email xabarlandırıw sisteması

Bul komponentler arasındaǵı baylanıslar API kontraktları hám waqıyalar arqalı anıq belgilenedi.

Ámeliy tapsırmalar:

Tapsırma 1: Onlayn oqıtıw platforması ekosistemasın jobalaw

Onlayn oqıtıw platforması ushın programmalıq ekosistema shegaraların anıqlań. Platforma tómendegi funkciyalarǵa iye bolıwı kerek:

Kurslardı basqarıw (jaratıw, redakciyalaw, óshiriw)

Paydalanıwshılardı basqarıw (dizimge alıw, autentifikaciya, avtorizaciya)

Video materiallardı júklew hám kóriw

Tapsırmalardı jaratıw hám orınlaw

Progressti baqlaw hám statistika

Zárúr:

1.Sistemanıń tiykarǵı domenlerin belgileń

2.Hár bir domen ushın model klassların jazıń

3.Komponentler arasındaǵı API kontraktların anıqlań

4.Waqıyaǵa tiykarlanǵan óz-ara háreketlesiw mexanizmin usınıs etiń

5.Sırtqı integraciyalar múmkinshiliklerin anıqlań (mısalı, tólem sisteması, elektron pochta)

Tapsırma 2: E-commerce qosımshası shegaraların implementaciya qılıw

E-commerce qosımshası ushın tómendegi komponentler arasındaǵı shegaralardı anıqlań hám implementaciya qılıń:

Ónimler katalogı (Product Catalog)

Sebet (Shopping Cart)

Buyırtpalar (Orders)

Hár bir komponent ushın:

1.Domen modellerin jazıń

2.API interfeyslerin dúziń

3.Komponentler arasındaǵı oqıyǵalardı anıqlań

4.Maǵlıwmatlar qatlamı menen integraciyanı jazıń

//Mısalı ónimler katalogı komponenti ushın domen modelleri public class Product {

private String id; private String name; private BigDecimal price;

private String description;

private ProductCategory category; // Getterler, setterler...

}

// API interfeysi

public interface ProductCatalogService { Product getProductById(String id);

List<Product> getProductsByCategory(ProductCategory category);

void createProduct(Product product); // Basqa metodlar...

}

// Oqıyǵa klassı

public class ProductCreatedEvent { private final Product product;

public ProductCreatedEvent(Product product) { this.product = product;

}

public Product getProduct() { return product;

}

}

Tapsırma 3: Mikrosevisler arxitekturasındaǵı ekosistema shegaraları

Mikroservisler arxitekturası tiykarında sayaxat buyırtpa qosımshasınıń tómendegi servisler arasındaǵı shegaraların hám óz-ara qatnasların anıqlań:

Paydalanıwshılar servisi

Miymanxana izlew servisi

Avia biletler servisi

Buyırtpalar servisi

Tólem servisi

Zárúr:

1.Hár bir servis ushın API kontraktın anıqlań (REST yaki GraphQL)

2.Servisler arasındaǵı sinxron hám asinxron baylanıslardı belgileń

3.Waqıyaǵa tiykarlanǵan óz-ara háreketlesiwlerdi dúziń

4.Maǵlıwmatlar izolyaciya strategiyasın usınıs etiń (hár bir servis ushın óz maǵlıwmatlar bazası yamasa ulıwma maǵlıwmatlar bazası)

5.API Gateway sxemasın dúziń

Nátiyje retinde, arxitekturalıq diagramma hám tiykarǵı komponentler menen óz-ara qatnaslardıń qısqasha táriypin dúziń.

Соседние файлы в папке Programmalıq injiniringge kirisiw