Skip to content

Battulga-dev/Software-Architecture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Software Architecture – Онолын Тайлбар

1. Программ ба Системийн ялгаа

Тодорхойлолт

Программ (Program) гэдэг нь тодорхой нэг даалгаврыг гүйцэтгэх кодын цуглуулга юм.
Систем (System) гэдэг нь олон програм, компонент, өгөгдөл, хэрэглэгч болон дэд бүтэц хамтран ажиллаж нэгэн цогц зорилгыг хэрэгжүүлж буй орчин юм.

Харьцуулсан хүснэгт

Шинж чанар Программ Систем
Хэмжээ Жижиг Том, нийлмэл
Зорилго Нэг тодорхой функц Олон функц, цогц ажиллагаа
Бүтэц Код Программ + Hardware + User + Network
Жишээ Calculator app Online banking system

Бодит жишээ

  1. Calculator програм → Зөвхөн тооцоо хийдэг (Программ)
  2. Facebook → Backend, Frontend, Database, Server, API бүгд нийлсэн (Систем)
  3. Library Management System
  4. E-commerce website

2. Архитектур гэж юу вэ?

Миний ойлголтоор

Software Architecture гэдэг нь системийг хэрхэн зохион байгуулах, компонентуудыг яаж холбох, dependency-г хэрхэн удирдах стратеги юм. Ө.х “Системийн бүтцийн зураглал”.

Архитектурын үндсэн компонентууд

  • UI (User Interface)
  • Business Logic
  • Database
  • External API
  • Infrastructure

Dependency чиглэл

Dependency гэдэг нь нэг класс эсвэл модуль нөгөөгөөсөө хамаарах хамаарал юм.

Зөв чиглэл:

UI → Service → Repository → Database

Буруу чиглэл:

Database → UI

Technology Decision

3. Layered Architecture

Layered Architecture нь системийг давхаргад хувааж зохион байгуулдаг.

Давхаргууд

1. UI Layer

  • Хэрэглэгчтэй харилцана
  • Input / Output авна

2. Service Layer

  • Business logic байрлана
  • Дүрэм, тооцоолол хийнэ

3. Repository Layer

  • Database-тэй харилцана
  • CRUD үйлдэл гүйцэтгэнэ

Жижиг Console жишээ

// UI Layer
public class Main {
    public static void main(String[] args) {
        UserService service = new UserService();
        service.register("Bataa");
    }
}

// Service Layer
class UserService {
    UserRepository repo = new UserRepository();
    
    public void register(String name) {
        repo.save(name);
    }
}

// Repository Layer
class UserRepository {
    public void save(String name) {
        System.out.println("Saved to database: " + name);
    }
}

Энд:

  • UI → Service
  • Service → Repository
  • Repository → Database

4. Low Coupling & High Cohesion

Low Coupling

Coupling гэдэг нь компонентуудын хоорондын хамаарал.
Low Coupling → Бага хамааралтай байх.

Давуу тал:

  • Засварлахад амар
  • Тестлэхэд хялбар
  • Өргөтгөхөд амар

High Cohesion

Cohesion гэдэг нь нэг класс доторх функцууд хэр зэрэг нэг зорилготой холбоотой вэ гэдгийг хэлнэ.
High Cohesion → Нэг класс нэг үүрэгтэй байх

Муу архитектурын жишээ

class UserManager {
    public void saveUser() {}
    public void sendEmail() {}
    public void connectDatabase() {}
    public void printReport() {}
}

Нэг класс олон үүрэгтэй → Low cohesion
Бүх зүйл хоорондоо шууд хамааралтай → High coupling

Сайн архитектурын жишээ

class UserService {}
class EmailService {}
class UserRepository {}
class ReportService {}

Нэг класс = Нэг үүрэг
Dependency зөв чиглэлтэй
Test хийхэд амар

Дүгнэлт

Архитектур яагаад чухал вэ?

  1. Том системийг удирдахад хялбар болгодог
  2. Засвар үйлчилгээ хийхэд амар болгодог
  3. Багийн ажилд тохиромжтой
  4. Системийн scalability нэмэгдэнэ
  5. Алдаа багасна

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors