thumb|Một kỹ sư phần mềm đang viết mã Java
Kỹ sư phần mềm (tiếng Anh: software engineer) là người áp dụng các nguyên tắc/nguyên lý của công nghệ phần mềm vào việc thiết kế, phát triển, bảo trì, kiểm thử, và đánh giá phần mềm và hệ thống khiến máy tính hay bất cứ thứ gì chứa phần mềm đó sẽ hoạt động.
Kỹ sư phần mềm là người áp dụng các nguyên tắc của kỹ thuật phần mềm để thiết kế, phát triển, bảo trì, kiểm tra và đánh giá phần mềm máy tính. Thuật ngữ lập trình viên đôi khi được sử dụng như một từ đồng nghĩa, nhưng cũng có thể thiếu hàm ý về giáo dục kỹ thuật hoặc kỹ năng.
Các kỹ thuật được sử dụng để thông báo cho quá trình phát triển phần mềm bao gồm định nghĩa, triển khai, đánh giá, đo lường, quản lý, thay đổi và cải tiến chính trong quy trình phát triển phần mềm. Nó chủ yếu sử dụng quản lý cấu hình phần mềm
Ngày nay, ISO/IEC JTC 1/SC 7 được chấp nhận chung về kỹ thuật phần mềm thu thập và được xuất bản dưới dạng Software Engineering Body of Knowledge (SWEBOK). Kỹ thuật phần mềm được coi là một trong những ngành máy tính chính.
Những tranh cãi về định nghĩa và thuật ngữ
Các định nghĩa đáng chú ý về kỹ sư phần mềm bao gồm:
- "Việc áp dụng có hệ thống các kiến thức, phương pháp và kinh nghiệm khoa học và công nghệ vào việc thiết kế, triển khai, thử nghiệm và tài liệu hóa phần mềm"—The Bureau of Labor Statistics—IEEE Systems and software engineering – Vocabulary
- "Việc áp dụng một cách tiếp cận có hệ thống, có kỷ luật, có thể định lượng được để phát triển, vận hành và bảo trì phần mềm"—IEEE Standard Glossary of Software Engineering Terminology
- "một ngành kỹ thuật liên quan đến tất cả các khía cạnh của sản xuất phần mềm"—Ian Sommerville
- "thiết lập và sử dụng các nguyên tắc kỹ thuật hợp lý để có được một phần mềm đáng tin cậy, có tính kinh tế và hoạt động hiệu quả trên các máy thực"—Fritz Bauer
- "một nhánh của khoa học máy tính liên quan đến việc thiết kế, triển khai và bảo trì các chương trình máy tính phức tạp"—Merriam-Webster
- "'kỹ sư phần mềm 'không chỉ bao gồm hành động viết mã, mà tất cả các công cụ và quy trình mà một tổ chức sử dụng để xây dựng và duy trì mã đó theo thời gian. [...] Kỹ sư phần mềm có thể được coi là 'lập trình được tích hợp theo thời gian.'"—Software Engineering at Google
Thuật ngữ này cũng đã được sử dụng một cách ít chính thức hơn:
- là thuật ngữ không chính thức đương thời cho một loạt các hoạt động mà trước đây được gọi là lập trình máy tính và phân tích hệ thống;
- là thuật ngữ rộng cho tất cả các khía cạnh của thực hành lập trình máy tính, trái ngược với lý thuyết về lập trình máy tính, vốn được chính thức nghiên cứu như một phân ngành của khoa học máy tính;
- là thuật ngữ thể hiện sự ủng hộ của một phương pháp tiếp cận cụ thể đối với lập trình máy tính, một phương pháp thúc giục rằng nó được coi như một bộ môn kỹ thuật hơn là nghệ thuật hay một nghề thủ công và ủng hộ việc mã hóa các phương pháp thực hành được đề xuất.
👁️
1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
thumb|Một kỹ sư phần mềm đang viết mã Java **Kỹ sư phần mềm** (tiếng Anh: **software engineer**) là người áp dụng các nguyên tắc/nguyên lý của công nghệ phần mềm vào việc thiết kế, phát
Phần mềm là các lệnh được lập trình mà được lưu trữ trong bộ nhớ được lưu trữ của các máy tính kỹ thuật số để bộ xử lý thực hiện. Phần mềm là một
**Công nghệ phần mềm** () là sự áp dụng một cách tiếp cận có hệ thống, có kỷ luật, và định lượng được cho việc phát triển, sử dụng và bảo trì phần mềm. Ngành
**Kiểm thử phần mềm** (tiếng Anh: **Software testing**) là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ
nhỏ| Một sơ đồ cho thấy cách người dùng tương tác với [[phần mềm ứng dụng trên một máy tính để bàn thông thường. Lớp phần mềm ứng dụng giao tiếp với hệ điều hành,
**Phát triển phần mềm** là việc chuyển nhu cầu của người dùng hoặc mục tiêu tiếp thị thành một sản phẩm phần mềm. Phát triển phần mềm đôi khi được hiểu là sự bao gồm
**Nhà phát triển phần mềm** là một cá nhân hay một tổ chức có liên quan đến các vấn đề trong quá trình phát triển phần mềm ở mức cao hơn việc chỉ thiết kế
liên_kết=https://en.wikipedia.org/wiki/File:ClamTk_5.27.png|nhỏ|300x300px|[[ClamTk, một phần mềm diệt vi-rút mã nguồn mở dựa trên công cụ diệt virus ClamAV, ban đầu được Tomasz Kojm phát triển vào năm 2001.]] nhỏ|255x255px|Ảnh chụp giao diện phần mềm diệt virus có
**Phần mềm dạng dịch vụ** (**SaaS** ) là mô hình cấp phép và phân phối phần mềm trong đó phần mềm được cấp phép trên cơ sở đăng ký và được lưu trữ tập trung.
**Xây dựng phần mềm** (tiếng Anh:_Software construction_) là một quy tắc kỹ thuật phần mềm. Nó là quá trình tạo ra chi tiết của phần mềm thông qua sự kết hợp của viết mã, xác
thumb|alt=Màn hình máy tính của hệ điều hành, màn hình hiển thị các ứng dụng phần mềm tự do khác nhau.|Ví dụ về một hệ điều hành phần mềm tự do hiện đại chạy một
**Phần mềm tự do nguồn mở** (Tiếng Anh: _Free and open-source software_ (Viết tắt là F/OSS, FOSS) hoặc _Free/Libre/open-source software_ (Viết tắt là FLOSS)) là loại phần mềm được bao gồm Phần mềm tự do
**Phần mềm gián điệp**, còn được dùng nguyên dạng Anh ngữ là **spyware**, là loại phần mềm chuyên thu thập các thông tin từ các máy chủ (thông thường vì mục đích thương mại) qua
**Phát triển phần mềm linh hoạt** hoặc **lập trình linh hoạt** (tiếng Anh: **_Agile software development_** hay **_Agile programming_**) là một phương thức thực hiện các dự án công nghệ phần mềm, phương thức này
[[Phần cứng|Phần cứng máy tính là nền tảng cho xử lý thông tin (sơ đồ khối). ]] **Lịch sử phần cứng máy tính** bao quát lịch sử của phần cứng máy tính, kiến trúc của
**Wine** là một lớp tương thích tự do nguồn mở dùng để chạy các phần mềm viết cho Windows trên các hệ điều hành tương tự Unix (Linux, FreeBSD,...). Wine cũng cung cấp một thư
**Phần mềm xử lý bảng tính** hay **Bảng tính** (tiếng Anh**: Spreadsheet**) là một phần mềm ứng dụng dùng để tổ chức, phân tích và lưu trữ dữ liệu thông qua các bảng tính (gọi
nhỏ|400x400px|Giấy phép phần mềm trong bối cảnh bản quyền theo Mark Webbink. Từ trái sang phải ít quyền cho người được cấp phép/user của một phần mềm và nhiều hơn nữa quyền giữ lại bởi
**Phần mềm ác ý**, còn gọi là **phần mềm ác tính**, **phần mềm độc hại**, **phần mềm gây hại** hay **mã độc** (tiếng Anh: **malware** là sự ghép của hai chữ _malicious_ và _software_) là
nhỏ|phải|Một ổ USB Flash Driver đặt bên cạnh một thước milimet **Portable application**, còn gọi là **portable software**, tạm dịch là **phần mềm xách tay**, là phần mềm không cần phải cài đặt vào máy
**Quy trình phát triển phần mềm** _(software development methodology)_ là một cấu trúc bao gồm tập hợp các thao tác và các kết quả tương quan sử dụng trong việc phát triển để sản xuất
thumb|Mô hình vòng đời phát hành phần mềm Một **vòng đời phát hành phần mềm** là một sự tổng hợp các pha phát triển phần mềm từ giai đoạn sơ khai cho đến giai đoạn
Các hệ điều hành máy tính cung cấp một tập chức năng cần thiết và được dùng ở hầu hết các chương trình trên máy tính, và các liên kết cần để kiểm soát và
**Công ty phần mềm** là một công ty có các sản phẩm chính là các phần mềm, công nghệ phần mềm, phân phối và phát triển sản phẩm phần mềm. Công ty phần mềm là
**Origin** là một nền tảng phân phối kỹ thuật số được phát triển bởi Electronic Arts để mua và chơi các trò chơi điện tử. Phần mềm này có sẵn cho máy tính và
**Zoom** là phần mềm gọi video phát triển bởi Zoom Video Communications. Phiên bản miễn phí cung cấp gọi video với tối đa 100 thiết bị cùng lúc, và giới hạn thời gian là 40
nhỏ|Ảnh chụp màn hình trò chơi giáo dục Chinese Tap trên Android để dạy học tiếng Trung. **Phần mềm giáo dục** là phần mềm máy tính có nhiệm vụ chính là hỗ trợ dạy học
**Quản lý dự án phần mềm** việc lên kế hoạch có tính khoa học và nghệ thuật trong quá trình quản lý các dự án phần mềm. Nó chính là quy trình quản lý dự
thumb|right|Logo Ngày Phần mềm Tự do **Ngày Phần mềm Tự do**, **Software Freedom Day** (**SFD**) là một lễ kỷ niệm hàng năm trên toàn thế giới của cộng đồng Tự do nguồn mở được tổ
**Hóa đơn nguyên vật liệu phần mềm** (BOM phần mềm) là danh sách các thành phần trong một phần mềm. Các nhà cung cấp phần mềm thường tạo ra các sản phẩm bằng cách lắp
**Telegram Messenger** là một dịch vụ nhắn tin tức thời miễn phí, đa nền tảng, mã hóa. Ứng dụng này cũng cung cấp các cuộc trò chuyện được mã hóa đầu cuối, thường được gọi
**Trường hợp sử dụng** (còn gọi **ca sử dụng**; hay usecases) là một kỹ thuật được dùng trong kỹ thuật phần mềm và hệ thống để nắm bắt yêu cầu chức năng của hệ thống.
thumb|upright|Biểu đồ dòng thời gian cho thấy sự phát triển của các [[bản phân phối Linux, với mỗi nhánh rẽ trong sơ đồ được gọi là "một fork".]] Trong phát triển phần mềm, **fork** ()
**Line** (cách điệu: **LINE**) là một ứng dụng và dịch vụ miễn phí của Nhật Bản dành cho nhắn tin tức thời và mạng xã hội, được điều hành bởi công ty Nhật Bản LY
**Quỹ Phần mềm Tự do** hay **Tổ chức Phần mềm Tự do** (tiếng Anh: _Free Software Foundation_, viết tắt **FSF**) là một tổ chức phi lợi nhuận do Richard Stallman thành lập ngày 4 tháng
**RPM Package Manager** (**RPM**) (ban đầu là **Red Hat Package Manager**; bây giờ là một từ viết tắt đệ quy) là một trình quản lý gói. Tên gọi RPM đề cập đến: định dạng file.rpm,
**Robert Cecil Martin**, thường được gọi là "Uncle Bob", người Mỹ. Ông là một kỹ sư phần mềm, người tư vấn, và là tác giả của nhiều cuốn best-seller. Ông được công nhận nhiều nhất
**Phần mềm quảng cáo** hay **nhu liệu quảng cáo** thường đính kèm với những mẩu quảng cáo nhỏ, chúng thường được phân phát dưới hình thức phần mềm miễn phí hay phiên bản dùng thử.
Là loại kỹ sư thiết lập, tính toán, vẽ ra nguyên lý, kết cấu, chi tiết các cơ cấu, cụm cơ cấu, máy móc, công trình hay phần mềm thể hiện qua tài liệu thiết
**Kỹ sư** (hay **_Kĩ sư_** - theo tiếng lóng; **_Bác vật_** - từ cũ ở miền Nam), là danh từ chỉ học vị của người đã qua đào tạo chuyên môn về khoa học ứng
**Phần mềm miễn phí** (tiếng Anh: _freeware_) là phần mềm mà người sử dụng không phải trả bất kỳ chi phí nào, không hạn chế thời gian sử dụng, có thể tải tự do về
**Nessus** là một công cụ quét lỗ hổng bảo mật độc quyền được phát triển bởi Công ty An ninh mạng Tenable, được phát hành miễn phí cho việc sử dụng phi thương mại. Theo
**Hệ thống phần mềm** (tiếng Anh: **software system**) là một hệ thống các thành phần liên lạc nội bộ dựa trên phần mềm để tạo nên một phần của hệ thống máy tính (một sự
**Mir** là một máy chủ hiển thị máy tính và gần đây, bộ tổng hợp Wayland cho hệ điều hành Linux, được phát triển bởi Canonical Ltd. Nó đã được lên kế hoạch thay thế
**Phần mềm giỏ hàng** (Tiếng Anh: _Shopping cart software_) là một phần mềm thương mại điện tử (e-commerce software) cho phép khách hàng truy cập vào một trang web, chọn lựa và mua sắm các
Trong công nghệ phần mềm, một **mẫu thiết kế** (tiếng Anh: design pattern) là một giải pháp tổng thể cho các vấn đề chung trong thiết kế phần mềm. Một mẫu thiết kế không phải
**Blender** là một phần mềm đồ họa 3D miễn phí và nguồn mở, được sử dụng để làm phim hoạt hình, kỹ xảo, ảnh nghệ thuật, mẫu in 3D, phần mềm tương tác 3D và
**Jenkins** là một phần mềm tự động hóa, mã nguồn mở và viết bằng Java. Dự án được tách ra từ dự án ban đầu là Hudson, sau khi xảy ra sự tranh chấp với
**Công** **nghiệp phần mềm** bao gồm các doanh nghiệp phát triển, bảo trì và xuất bản phần mềm đang sử dụng các mô hình kinh doanh khác nhau, chủ yếu là "dựa trên giấy phép
100 Ý Tưởng Bán Hàng Hay Nhất Mọi Thời Đại The 100 Greatest Sales Ideas Of All Time Chúng ta luôn sống trong mối quan hệ tương tác với mọi người xung quanh và để