קורס מלא • Software Engineering & Computer Systems

תוכנה

מהו Software? איך רעיון הופך לקוד, איך הקוד הופך לתוכנית שרצה על המעבד, ואיך בונים מערכת תוכנה גדולה, מאובטחת, אמינה וניתנת לתחזוקה?

קורס מקיף על אלגוריתמים, לוגיקה, שפות תכנות, Compiler, Interpreter, Runtime, זיכרון, CPU, מערכת הפעלה, Processes, Threads, APIs, Databases, Networking, Git, Testing, Debugging, Security, Architecture, Cloud ו־Deployment.

מפת הקורס

תוכנה היא שכבות על גבי שכבות: לוגיקה → אלגוריתמים → קוד → קומפילציה/הרצה → מערכת הפעלה → חומרה, ובמקביל APIs, רשת, נתונים, אבטחה ותהליכי פיתוח.

IDE │ ▼ SOURCE CODE │ ├───────────────┐ ▼ ▼ PARSER TYPES │ │ └───────┬───────┘ ▼ COMPILER │ ▼ EXECUTABLE / BYTECODE │ ▼ RUNTIME │ ▼ OPERATING SYSTEM │ ▼ CPU │ ▼ HARDWARE
APPLICATION │ ├── UI ├── BUSINESS LOGIC ├── DATA ACCESS ├── NETWORK └── SECURITY │ ▼ OS / APIs │ ▼ HARDWARE

1. מהי תוכנה?

תוכנה היא מערכת של הוראות, נתונים ורכיבים שמגדירים התנהגות שניתן לבצע באמצעות מחשב.

Program

קוד שמבצע משימה.

Application

מערכת שנועדה לספק יכולת למשתמש.

Library

קוד לשימוש חוזר.

Framework

תשתית שמארגנת ומנחה בניית יישומים.

Operating System

תוכנת מערכת שמנהלת משאבים ומספקת APIs.

Firmware

תוכנה המשולבת במכשיר ובחומרה.

2. לוגיקה

לפני שתוכנית יכולה להיות "קוד", היא צריכה להגדיר דרך חשיבה מדויקת.

Boolean Logic

A B A AND B A OR B NOT A
false false false false true
false true false true true
true false false true false
true true true true false

תנאי

if (age >= 18) {
    allow();
} else {
    deny();
}

לוגיקה כבסיס לתוכנית

INPUT │ ▼ CONDITION │ ├── TRUE ──→ ACTION A │ └── FALSE ─→ ACTION B

3. אלגוריתמים

אלגוריתם הוא סדר פעולות מוגדר לפתרון בעיה.

דוגמה: חיפוש

for (let i = 0; i < items.length; i++) {
    if (items[i] === target) {
        return i;
    }
}

return -1;

אלגוריתמים נפוצים

Linear Search

מעבר איבר אחר איבר.

Binary Search

חיפוש באמצעות חלוקת מרחב החיפוש.

Sorting

מיון נתונים.

Graph Algorithms

עבודה עם קשרים בין צמתים.

Dynamic Programming

פירוק בעיה לתת־בעיות ושימוש בתוצאות.

4. מבני נתונים

מבנה נתונים קובע כיצד מידע מאוחסן ומאורגן.

מבנה רעיון
Array רצף של איברים
Linked List איברים המקושרים זה לזה
Stack LIFO
Queue FIFO
Hash Table מיפוי מפתח לערך
Tree מבנה היררכי
Graph צמתים וקשתות

5. סיבוכיות

סיבוכיות מאפשרת לתאר כיצד עלות אלגוריתם משתנה כאשר גודל הקלט גדל.

Complexity דוגמה כללית
O(1) פעולה קבועה
O(log n) חיפוש בינארי
O(n) מעבר על מערך
O(n log n) מיון יעיל נפוץ
O(n²) שתי לולאות תלויות בקלט
for (let i = 0; i < n; i++) {
    console.log(i);
}

הלולאה רצה בערך n פעמים ולכן סיבוכיות הזמן שלה היא O(n).

6. תכנות

תכנות הוא תהליך הפיכת פתרון פורמלי לקוד שהמחשב יכול לבצע.

PROBLEM ↓ REQUIREMENTS ↓ DESIGN ↓ ALGORITHM ↓ CODE ↓ BUILD ↓ TEST ↓ DEPLOY ↓ MONITOR ↓ MAINTAIN

7. שפות תכנות

Machine Language

הוראות ברמה הקרובה ישירות למעבד.

Assembly

ייצוג סמלי של הוראות מכונה.

C / C++

שפות כלליות עם שליטה נמוכה יחסית במשאבים.

Java / C#

שפות עם runtime ומודלים עשירים של תוכנה.

Python

שפה כללית עם דגש על פרודוקטיביות.

JavaScript

שפה מרכזית ב־Web ובמערכות נוספות.

Rust

שפה עם דגש על בטיחות זיכרון וביצועים.

Go

שפה כללית המתאימה גם למערכות שרת ותשתית.

8. טיפוסים

Type מגדיר כיצד יש לפרש ערך ואילו פעולות ניתן לבצע עליו.

int age = 30;
double price = 19.90;
bool active = true;
string name = "Dana";

Static Typing

טיפוסים נבדקים במידה משמעותית בזמן קומפילציה.

Dynamic Typing

טיפוסים נבדקים בזמן הריצה.

מערכת טיפוסים היא כלי מרכזי לבטיחות, קריאות, כלי פיתוח ולעיתים גם לאופטימיזציה.

9. פונקציות

פונקציה היא יחידת קוד שמקבלת קלט אופציונלי ומחזירה תוצאה או מבצעת פעולה.

function add(a, b) {
    return a + b;
}

const result = add(10, 20);

עקרונות

  • קלט.
  • פלט.
  • Side Effects.
  • Scope.
  • Reuse.
  • Composition.

10. Object-Oriented Programming

OOP מארגנת תוכנה סביב אובייקטים ומערכות יחסים ביניהם.

class User {

    constructor(name) {
        this.name = name;
    }

    greet() {
        return "Hello " + this.name;
    }
}

מושגים

Encapsulation

ריכוז נתונים והתנהגות סביב ממשק מוגדר.

Abstraction

הסתרת פרטי מימוש שאינם נחוצים למשתמש.

Inheritance

בניית טיפוסים המבוססים על טיפוסים אחרים.

Polymorphism

מימושים שונים דרך ממשק משותף.

11. Functional Programming

גישה שמדגישה פונקציות, קומפוזיציה, נתונים וזרימת טרנספורמציות.

const result =
    numbers
        .filter(x => x > 10)
        .map(x => x * 2)
        .reduce((sum, x) => sum + x, 0);

מושגים

  • Pure Functions.
  • Immutability.
  • Higher-Order Functions.
  • Composition.
  • Declarative Programming.

12. זיכרון

תוכנית זקוקה למקום שבו היא יכולה לשמור נתונים בזמן שהיא רצה.

CPU │ ▼ Registers │ ▼ Cache │ ▼ RAM │ ▼ Storage
רכיב מאפיין כללי
Register זיכרון קטן ומהיר בתוך CPU
Cache זיכרון מהיר הקרוב למעבד
RAM זיכרון עבודה
SSD/HDD אחסון מתמשך

13. Stack ו־Heap

Stack

משמש בדרך כלל לניהול מסגרות קריאה ונתונים בעלי משך חיים המתאים למודל הקריאות.

Heap

משמש להקצאות דינמיות של אובייקטים ונתונים. ניהולו משתנה לפי שפת התכנות וה־runtime.

STACK ┌───────────────┐ │ function B │ ├───────────────┤ │ function A │ ├───────────────┤ │ main │ └───────────────┘ HEAP ┌─────────────────────────┐ │ object │ │ object │ │ array │ │ data │ └─────────────────────────┘

14. CPU

ה־CPU מבצע הוראות מכונה ומפעיל את החישובים הבסיסיים של התוכנית.

FETCH ↓ DECODE ↓ EXECUTE ↓ MEMORY ↓ WRITE BACK ↓ NEXT INSTRUCTION

Arithmetic Logic Unit

ALU מבצע פעולות חשבון ולוגיקה.

Registers

Registers הם מקומות אחסון קטנים ומהירים מאוד בתוך המעבד.

15. Machine Code

בסופו של דבר המעבד מבצע הוראות בפורמט שהארכיטקטורה שלו מגדירה.

MOV R1, R2
ADD R1, R3
STORE R1, [address]

התחביר בדוגמה הוא המחשה בלבד ואינו מייצג בהכרח תחביר של ISA מסוים.

ISA

Instruction Set Architecture מגדירה את הממשק בין תוכנה לבין הוראות שהמעבד יודע לבצע.

16. Compiler

Compiler מתרגם תוכנית מצורה אחת לצורה אחרת, לעיתים לקוד מכונה או לצורה ביניים.

SOURCE CODE ↓ LEXING ↓ PARSING ↓ AST ↓ SEMANTIC ANALYSIS ↓ INTERMEDIATE REPRESENTATION ↓ OPTIMIZATION ↓ CODE GENERATION ↓ OBJECT / MACHINE CODE

Lexer

ממיר רצף תווים ל־Tokens.

Parser

בונה מבנה תחבירי.

AST

Abstract Syntax Tree הוא ייצוג מבני של הקוד.

17. Interpreter

Interpreter מריץ או מעריך תוכנית דרך מנגנון ביצוע שפועל בזמן הריצה.

SOURCE ↓ PARSER ↓ INTERNAL REPRESENTATION ↓ EXECUTION

בפועל מערכות מודרניות יכולות לשלב כמה טכניקות: Interpretation, Compilation ו־JIT.

18. Runtime

Runtime הוא הסביבה שתומכת בביצוע התוכנית.

Memory Management
Garbage Collection
Threads
I/O
Exceptions
Standard Library
הקוד שלך אינו חי בוואקום. הוא רץ בתוך שכבות Runtime שמספקות שירותים ומתווכות בינו לבין מערכת ההפעלה והחומרה.

19. מערכת הפעלה

מערכת ההפעלה מנהלת משאבים ומספקת abstractions שמאפשרים לתוכנות להשתמש במחשב.

CPU Scheduling
Memory
Files
Networking
Devices
Security
APPLICATION │ ▼ SYSTEM API │ ▼ KERNEL │ ▼ DRIVERS │ ▼ HARDWARE

20. Processes

Process הוא מופע רץ של תוכנית עם משאבים ומרחב כתובות משלו לפי מודל מערכת ההפעלה.

PROCESS │ ├── Virtual Address Space ├── Code ├── Heap ├── Stack ├── Handles └── Threads

Virtual Memory

מערכת ההפעלה מספקת לכל Process מרחב כתובות וירטואלי, ומנהלת את המיפוי לזיכרון הפיזי.

21. Threads

Thread הוא יחידת ביצוע בתוך Process. Threads באותו Process יכולים לשתף חלק ממשאבי התהליך.

PROCESS │ ├── Thread A │ ├── Thread B │ └── Thread C │ └── Shared Memory

בעיה

כאשר Threads ניגשים לאותו מידע במקביל, יכולים להיווצר Race Conditions.

22. Concurrency

Concurrency עוסקת בניהול מספר עבודות שנמצאות במצב של התקדמות חופפת.

Parallelism

Parallelism הוא ביצוע ממש בו־זמני של עבודה על יחידות חישוב שונות, כאשר החומרה מאפשרת זאת.

Synchronization

Mutex

נעילה הדדית.

Semaphore

ניהול מספר גישות למשאב.

Atomic Operation

פעולה שאינה נצפית כחלקית במסגרת המודל המתאים.

Message Passing

תקשורת באמצעות העברת הודעות.

23. קבצים

מערכת הפעלה מציגה קבצים כמנגנון מרכזי לשמירת מידע מתמשך.

open()
read()
write()
close()

File Format

סיומת הקובץ אינה בהכרח קובעת לבדה את המבנה שלו. התוכן עצמו צריך להתאים לפורמט שהתוכנה מצפה לו.

24. I/O

Input/Output הוא תקשורת בין התוכנית לבין העולם החיצוני: קבצים, רשת, התקנים, מסוף ועוד.

PROGRAM │ ├── INPUT │ └── OUTPUT │ ├── FILE ├── NETWORK ├── DEVICE └── TERMINAL

25. APIs

API הוא ממשק מוגדר שבאמצעותו תוכנה אחת יכולה להשתמש ביכולות של תוכנה אחרת.

דוגמה

GET /api/users/42

ה־API מגדיר בין היתר אילו פעולות זמינות, איזה קלט מתקבל ואיזה פלט מוחזר.

Library API
Operating System API
Web API
Database API

26. Networking

APPLICATION ↓ HTTP / HTTPS ↓ TCP / QUIC ↓ IP ↓ NETWORK

Client

הצד שיוזם בקשה או צורך שירות.

Server

הצד שמספק שירות או משאב.

27. Client / Server

CLIENT │ │ Request ▼ SERVER │ ├── Business Logic ├── Database └── External Services │ │ Response ▼ CLIENT

הפרדה זו מאפשרת לחלק מערכת לרכיבים בעלי אחריות שונה.

28. מסדי נתונים

Relational

נתונים בטבלאות עם קשרים מוגדרים.

Document

נתונים כמסמכים.

Key-Value

מפתח וערך.

Graph

צמתים וקשרים.

Index

Index מאפשר למצוא מידע ביעילות רבה יותר במקרים המתאימים, במחיר של אחסון ועבודה נוספת.

29. SQL

SELECT name, email
FROM users
WHERE active = true
ORDER BY name;

CRUD

פעולה SQL
Create INSERT
Read SELECT
Update UPDATE
Delete DELETE

30. Transactions

Transaction מאפשרת לבצע קבוצת פעולות כיחידה לוגית בהתאם לכללי מסד הנתונים.

BEGIN ↓ OPERATION A ↓ OPERATION B ↓ COMMIT או ROLLBACK

ACID

Atomicity
Consistency
Isolation
Durability

31. ארכיטקטורת תוכנה

Architecture עוסקת בחלוקת מערכת לרכיבים ובהגדרת היחסים ביניהם.

APPLICATION │ ┌──────────┼──────────┐ ▼ ▼ ▼ UI BUSINESS DATA LOGIC ACCESS │ ▼ DATABASE

Separation of Concerns

כאשר רכיבים מקבלים אחריות ברורה, קל יותר להבין, לבדוק ולשנות את המערכת.

Coupling

מידת התלות בין רכיבים.

Cohesion

מידת הקשר בין האחריויות בתוך רכיב.

32. Design Patterns

Factory

יצירת אובייקטים דרך ממשק ייעודי.

Adapter

התאמת ממשק אחד לאחר.

Observer

הודעה למאזינים על שינוי.

Strategy

החלפת אלגוריתם או התנהגות.

Repository

הפרדת גישה לנתונים.

Dependency Injection

העברת תלויות מבחוץ.

33. Git

Git היא מערכת Version Control שמאפשרת לעקוב אחר שינויים בקוד ולעבוד בצוות.

WORKING TREE │ ▼ STAGE │ ▼ COMMIT │ ▼ BRANCH │ ▼ REMOTE
git status
git add .
git commit -m "Add feature"
git push

Branch

Branch מאפשר לפתח קו שינויים נפרד לפני שילובו בקו אחר.

34. Testing

Unit Test

בדיקת יחידה קטנה.

Integration Test

בדיקת שילוב בין רכיבים.

End-to-End

בדיקת תרחיש משתמש מלא.

Regression

בדיקה ששינוי לא שבר התנהגות קיימת.

test("adds numbers", () => {
    expect(add(2, 3)).toBe(5);
});

35. Debugging

Debugging הוא תהליך של מציאת הסיבה להתנהגות שגויה.

1. Reproduce
שחזר את התקלה.
2. Observe
אסוף מידע.
3. Isolate
צמצם את מקור הבעיה.
4. Hypothesis
נסח השערה.
5. Test
בדוק את ההשערה.
6. Fix
תקן.
7. Verify
ודא שהתקלה נפתרה.
8. Prevent
הוסף בדיקה או מנגנון שמקטין סיכוי לחזרה.

36. אבטחת תוכנה

עקרונות

Least Privilege

הענקת הרשאות מינימליות הנדרשות.

Defense in Depth

מספר שכבות הגנה.

Input Validation

בדיקת נתונים נכנסים.

Secure Defaults

ברירות מחדל בטוחות.

איומים נפוצים

  • Injection.
  • Authentication failures.
  • Authorization failures.
  • Data exposure.
  • Memory safety bugs.
  • Supply-chain attacks.

37. Authentication

Authentication

מי המשתמש?

Authorization

מה המשתמש רשאי לעשות?

USER │ ▼ AUTHENTICATION │ ▼ IDENTITY │ ▼ AUTHORIZATION │ ▼ RESOURCE

Passwords

סיסמאות אינן אמורות להישמר כמחרוזת גלויה. מערכות צריכות להשתמש במנגנוני hashing מתאימים ובשיטות אחסון שמיועדות לסיסמאות.

38. Performance

תחום דוגמאות
CPU אלגוריתמים, חישובים
Memory הקצאות, Cache, מבני נתונים
I/O קבצים, רשת, התקנים
Database Queries, Indexes
Network Latency, Bandwidth
כלל חשוב: לא משפרים ביצועים רק לפי תחושה. מודדים, מזהים צוואר בקבוק, משנים, ומודדים שוב.

39. Build

Build הוא תהליך הפיכת קוד המקור לארטיפקט שניתן להריץ או להפיץ.

SOURCE ↓ DEPENDENCIES ↓ COMPILE ↓ LINK ↓ BUNDLE ↓ TEST ↓ ARTIFACT

Artifacts

Artifact יכול להיות executable, package, container image, library או קובץ הפצה.

40. Deployment

CODE ↓ BUILD ↓ TEST ↓ PACKAGE ↓ DEPLOY ↓ SERVER ↓ USERS

סביבות

  • Development
  • Testing
  • Staging
  • Production

41. Cloud

Cloud הוא מודל שבו משאבי מחשוב ושירותים מסופקים דרך תשתית מרוחקת ומנוהלת במידה משתנה.

Compute

מכונות וירטואליות או שירותי הרצה.

Storage

אחסון אובייקטים, קבצים או דיסקים.

Database

מסדי נתונים מנוהלים או עצמאיים.

Networking

רשתות, Load Balancers ו־Routing.

42. Containers

Container אורז תוכנה ואת התלויות הדרושות לה בסביבה מבודדת יחסית ברמת מערכת ההפעלה.

APPLICATION + DEPENDENCIES + CONFIGURATION │ ▼ CONTAINER IMAGE │ ▼ CONTAINER │ ▼ HOST OS

Container אינו מכונה וירטואלית מלאה; הוא משתמש במנגנוני מערכת ההפעלה של המארח ומבודד משאבים לפי מנגנוני הפלטפורמה.

43. CI/CD

PUSH ↓ BUILD ↓ UNIT TESTS ↓ INTEGRATION TESTS ↓ SECURITY CHECKS ↓ PACKAGE ↓ DEPLOY ↓ VERIFY

Continuous Integration

שילוב שינויים לעיתים קרובות והרצת בדיקות אוטומטיות.

Continuous Delivery / Deployment

אוטומציה של הכנת תוכנה להפצה ולעיתים גם של הפריסה עצמה, בהתאם למדיניות הארגון.

44. Observability

Logs

אירועים ותיעוד.

Metrics

מדדים מספריים לאורך זמן.

Traces

מעקב אחר זרימת בקשה בין רכיבים.

USER REQUEST │ ▼ LOAD BALANCER │ ▼ SERVICE A │ ▼ SERVICE B │ ▼ DATABASE ↓ OBSERVABILITY ↓ ┌──────┼──────┐ ▼ ▼ ▼ LOGS METRICS TRACES

45. תחזוקת תוכנה

רוב חיי התוכנה אינם מסתיימים כאשר הגרסה הראשונה מגיעה למשתמשים.

Bug Fixes
תיקון תקלות.
Features
הוספת יכולות.
Refactoring
שיפור מבנה הקוד ללא שינוי מכוון בהתנהגות החיצונית.
Dependencies
עדכון ספריות ותלויות.
Security
טיפול בחולשות.
Scalability
התאמת המערכת לעומסים גדולים יותר.

46. פרויקט גמר

בנה מערכת תוכנה מלאה קטנה, משלב הרעיון ועד Deployment.

שלב 1 — Requirements
הגדר מה המערכת צריכה לעשות.
שלב 2 — Architecture
חלק את המערכת לרכיבים.
שלב 3 — Data Model
הגדר את הנתונים.
שלב 4 — API
הגדר את הממשק.
שלב 5 — Implementation
כתוב את הקוד.
שלב 6 — Testing
כתוב Unit ו־Integration Tests.
שלב 7 — Security
Authentication, Authorization ו־Input Validation.
שלב 8 — Git
נהל היסטוריית שינויים.
שלב 9 — Build
צור Artifact.
שלב 10 — Deployment
הרץ את המערכת בסביבה אמיתית.
שלב 11 — Monitoring
אסוף Logs, Metrics ו־Traces.
שלב 12 — Maintenance
תקן, שפר והרחב.
SOFTWARE SYSTEM │ ┌──────────────────┼──────────────────┐ │ │ │ ▼ ▼ ▼ UI API WORKERS │ │ │ └──────────────────┼──────────────────┘ ▼ BUSINESS LOGIC │ ┌────────────┼────────────┐ ▼ ▼ ▼ DATABASE CACHE EXTERNAL API │ ▼ STORAGE SECURITY / LOGGING / METRICS │ ▼ DEPLOYMENT │ ▼ USERS
היעד של הקורס אינו רק לדעת לכתוב קוד. היעד הוא להבין כיצד תוכנה שלמה נוצרת: מהבעיה, דרך הלוגיקה והאלגוריתמים, דרך הקוד וה־Runtime, ועד מערכת שרצה בעולם האמיתי.

מילון מושגים

Algorithm
סדרת פעולות לפתרון בעיה.
Data Structure
מבנה לארגון מידע.
Compiler
מתרגם תוכנית לצורת יעד.
Interpreter
מנגנון להרצת תוכנית דרך סביבת ביצוע.
Runtime
סביבת התמיכה בזמן הריצה.
Process
מופע רץ של תוכנית.
Thread
יחידת ביצוע בתוך Process.
API
ממשק בין רכיבי תוכנה.
Library
קוד לשימוש חוזר.
Framework
תשתית לפיתוח יישומים.
Database
מערכת לניהול נתונים.
SQL
שפה לעבודה עם מסדי נתונים יחסיים.
Git
מערכת ניהול גרסאות.
Testing
בדיקת התנהגות התוכנה.
Debugging
מציאת ותיקון תקלות.
Deployment
הפיכת תוכנה לזמינה בסביבת יעד.
Container
סביבת אריזה והרצה מבודדת יחסית.
CI/CD
אוטומציה של Build, Test והפצה.
Observability
הבנת מצב המערכת דרך Logs, Metrics ו־Traces.
Refactoring
שיפור מבנה הקוד בלי לשנות בכוונה את ההתנהגות החיצונית.

תרגול מסכם

1. מה ההבדל בין תוכנית לבין אלגוריתם?
פתרון

אלגוריתם הוא דרך מוגדרת לפתרון בעיה; תוכנית היא מימוש של לוגיקה כקוד שניתן להריץ בסביבת מחשוב מסוימת.

2. מה תפקיד ה־Compiler?
פתרון

Compiler מנתח קוד מקור ומתרגם אותו לצורת יעד, למשל קוד מכונה או ייצוג ביניים, בהתאם לשפה ולכלי הבנייה.

3. מה ההבדל בין Process ל־Thread?
פתרון

Process הוא מופע רץ של תוכנית עם משאבים ומרחב כתובות; Thread הוא יחידת ביצוע בתוך Process. Threads באותו Process יכולים לשתף חלק מהמשאבים.

4. למה צריך מבני נתונים?
פתרון

כי הדרך שבה מידע מאורגן משפיעה על האופן שבו ניתן לגשת אליו, לשנות אותו ולעבד אותו ועל עלויות הזמן והזיכרון.

5. מה ההבדל בין Authentication ל־Authorization?
פתרון

Authentication עונה על השאלה "מי אתה?", ואילו Authorization עונה על השאלה "מה מותר לך לעשות?".

6. למה משתמשים ב־Git?
פתרון

כדי לנהל היסטוריית שינויים בקוד, ליצור ענפים, לשתף עבודה ולשלב שינויים בצורה מבוקרת.

7. מהו API?
פתרון

ממשק מוגדר שבאמצעותו רכיב תוכנה אחד יכול לבקש שירות או להשתמש ביכולת של רכיב אחר.

8. מהו Deployment?
פתרון

התהליך שבו תוכנה או Artifact הופכים לזמינים בסביבת היעד שבה אמורים להשתמש בהם.

9. מהי סיבוכיות O(n)?
פתרון

מודל שבו עלות החישוב גדלה באופן פרופורציונלי בקירוב לגודל הקלט n.

10. מהי ארכיטקטורת תוכנה?
פתרון

האופן שבו מערכת מחולקת לרכיבים, האחריות של כל רכיב והקשרים והממשקים ביניהם.

השרשרת המלאה

PROBLEM │ ▼ REQUIREMENTS │ ▼ LOGIC │ ▼ ALGORITHMS │ ▼ DATA STRUCTURES │ ▼ SOURCE CODE │ ▼ ┌──────────┴──────────┐ ▼ ▼ COMPILER RUNTIME │ │ └──────────┬──────────┘ ▼ OPERATING SYSTEM │ ▼ PROCESSES │ ▼ THREADS │ ▼ CPU │ ▼ MEMORY │ ▼ HARDWARE ובמקביל: APPLICATION │ ├── APIs ├── NETWORK ├── DATABASE ├── SECURITY ├── TESTING ├── GIT ├── BUILD ├── DEPLOYMENT └── OBSERVABILITY
זהו המודל המאוחד של הקורס: תוכנה מתחילה בבעיה ולוגיקה, הופכת לאלגוריתם ולקוד, מתורגמת ומורצת דרך שכבות תוכנה, משתמשת במערכת ההפעלה ובחומרה, ומסביב לה קיימת מערכת שלמה של נתונים, רשת, אבטחה, בדיקות, Deployment ותחזוקה.
Hosted & Compiled with HtmlRunner.com