Программ (Program) гэдэг нь тодорхой нэг даалгаврыг гүйцэтгэх кодын цуглуулга юм.
Систем (System) гэдэг нь олон програм, компонент, өгөгдөл, хэрэглэгч болон дэд бүтэц хамтран ажиллаж нэгэн цогц зорилгыг хэрэгжүүлж буй орчин юм.
| Шинж чанар | Программ | Систем |
|---|---|---|
| Хэмжээ | Жижиг | Том, нийлмэл |
| Зорилго | Нэг тодорхой функц | Олон функц, цогц ажиллагаа |
| Бүтэц | Код | Программ + Hardware + User + Network |
| Жишээ | Calculator app | Online banking system |
- Calculator програм → Зөвхөн тооцоо хийдэг (Программ)
- Facebook → Backend, Frontend, Database, Server, API бүгд нийлсэн (Систем)
- Library Management System
- E-commerce website
Software Architecture гэдэг нь системийг хэрхэн зохион байгуулах, компонентуудыг яаж холбох, dependency-г хэрхэн удирдах стратеги юм. Ө.х “Системийн бүтцийн зураглал”.
- UI (User Interface)
- Business Logic
- Database
- External API
- Infrastructure
Dependency гэдэг нь нэг класс эсвэл модуль нөгөөгөөсөө хамаарах хамаарал юм.
UI → Service → Repository → Database
Database → UI
Layered Architecture нь системийг давхаргад хувааж зохион байгуулдаг.
- Хэрэглэгчтэй харилцана
- Input / Output авна
- Business logic байрлана
- Дүрэм, тооцоолол хийнэ
- Database-тэй харилцана
- CRUD үйлдэл гүйцэтгэнэ
// 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
Coupling гэдэг нь компонентуудын хоорондын хамаарал.
Low Coupling → Бага хамааралтай байх.
- Засварлахад амар
- Тестлэхэд хялбар
- Өргөтгөхөд амар
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 хийхэд амар
- Том системийг удирдахад хялбар болгодог
- Засвар үйлчилгээ хийхэд амар болгодог
- Багийн ажилд тохиромжтой
- Системийн scalability нэмэгдэнэ
- Алдаа багасна