stanford-oval/wikipedia huggingface dataset:
Nama cuatrocienegensis

| Nama cuatrocienegensis> Phân loại khoa học |
| --- | --- |
Giới (regnum): Plantae
(không phân hạng): Angiospermae
(không phân hạng): Eudicots
Bộ (ordo): Chưa đặt
Họ (familia): Boraginaceae
Chi (genus): Nama
Danh pháp hai phần
Nama cuatrocienegensis G.L. Nesom, 1992 
Nama cuatrocienegensis là loài thực vật có hoa trong họ Mồ hôi. Loài này được G.L. Nesom mô tả khoa học đầu tiên năm 1992.
Chú thích

↑  The Plant List (2010). “Nama cuatrocienegense”. Truy cập ngày 11 tháng 6 năm 2013.
NGC 5575

| NGC 5575 |
| --- | --- |
SDSS image of NGC 5575
Dữ liệu quan sát (Kỷ nguyên J2000)
Chòm sao: Xử Nữ
Xích kinh: 14h 20m 59.374s
Xích vĩ: +06° 12′ 09.54″
Dịch chuyển đỏ: 7651 km/s
Vận tốc xuyên tâm Mặt Trời: 0.025521
Khoảng cách: 350 Mly (108 Mpc)
Cấp sao biểu kiến (B): 14.5
Đặc tính
Kiểu: S0
Kích thước biểu kiến (V): 0.9′ × 0.9′
Tên gọi khác
NGC 5575, PGC 51272, UGC 9184, MCG +01-37-008
NGC 5575  (hay NGC 5578) là một thiên hà dạng hạt đậu trong chòm sao Xử Nữ. Vật thể được phát hiện vào ngày 8 tháng 5 năm 1864 bởi nhà thiên văn học người Đức Albert Marth.
Hymenophyllum fuciforme

| Hymenophyllum fuciforme |
| --- | --- |

Phân loại khoa học
Giới (regnum): Plantae
Ngành (divisio): Pteridophyta
Lớp (class): Polypodiopsida /  Pteridopsida (disputed)
Bộ (ordo): Hymenophyllales
Họ (familia): Hymenophyllaceae
Chi (genus): Hymenophyllum
Loài (species): H. fuciforme
Danh pháp hai phần
Hymenophyllum fuciforme Sw., 1806 
Hymenophyllum fuciforme là một loài thực vật có mạch trong họ Hymenophyllaceae. Loài này được Sw. miêu tả khoa học đầu tiên năm 1806.
Chú thích

↑  The Plant List (2010). “Hymenophyllum fuciforme”. Truy cập ngày 13 tháng 8 năm 2013.
Soğukpınar, Çat

| Soğukpınar |
| --- | --- |
—  Xã  —
 
SoğukpınarVị trí ở Thổ Nhĩ Kỳ
Quốc gia:  Thổ Nhĩ Kỳ
Tỉnh: Erzurum
Huyện: Çat
Dân số (2011)
 • Tổng cộng: 845 người
Múi giờ: EET (UTC+2)
 • Mùa hè (DST): EEST (UTC+3)
Soğukpınar là một xã thuộc huyện Çat, tỉnh Erzurum, Thổ Nhĩ Kỳ. Dân số thời điểm năm 2011 là 845 người.
Chú thích

↑  “Cities, towns and villages in Erzurum”. Viện thống kê Thổ Nhĩ Kỳ. Lưu trữ bản gốc ngày 14 tháng 7 năm 2012. Truy cập ngày 16 tháng 9 năm 2012.Quản lý CS1: bot: trạng thái URL ban đầu không rõ (liên kết)
Acromyrmex mesopotamicus

| Acromyrmex mesopotamicus> Phân loại khoa học |
| --- | --- |
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Lớp (class): Insecta
Bộ (ordo): Hymenoptera
Họ (familia): Formicidae
Phân họ (subfamilia): Myrmicinae
Tông (tribus): Attini
Chi (genus): Acromyrmex
Loài (species): A. mesopotamicus
Danh pháp hai phần
Acromyrmex mesopotamicus Gallardo, 1916 
Acromyrmex mesopotamicus là một loài kiến ăn lá Tân Thế giới, trong họ Myrmicinae thuộc chi Acromyrmex. Loài này thuộc một trong hai chi kiến nấm thuộc tông Attini.
Chú thích

↑  “Acromyrmex mesopotamicus”. SIB. Truy cập ngày 20 tháng 8 năm 2010.
Erionomus studti

| Erionomus studti> Phân loại khoa học |
| --- | --- |
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Lớp (class): Insecta
Bộ (ordo): Coleoptera
Họ (familia): Passalidae
Chi (genus): Erionomus
Loài (species): E. studti
Danh pháp hai phần
Erionomus studti Kuwert, 1890 
Erionomus studti là một loài bọ cánh cứng trong họ Passalidae. Loài này được Kuwert miêu tả khoa học năm 1890.
Chú thích

↑  Hallan, J.  (2010) Synopsis of the described Coleoptera of the World 6 juni 2010
NGC 5584

| NGC 5584 |
| --- | --- |
Composite of several exposures taken in visible light between January and April 2010 with Hubble's Wide Field Camera 3.  Ghi công: NASA, ESA, A. Riess (STScI/JHU), L. Macri (Texas A&M University), and Hubble Heritage Team (STScI/AURA)
Dữ liệu quan sát (Kỷ nguyên J2000)
Chòm sao: Virgo
Xích kinh: 14h 22m 3.811s
Xích vĩ: −00° -23′ 14.82″
Dịch chuyển đỏ: 0.005525
Vận tốc xuyên tâm Mặt Trời: 1652
Cấp sao biểu kiến (B): 12.80
Đặc tính
Kiểu: SABc
Tên gọi khác
NGC 5584, K73 626, QDOT B1419491-000919, Z 1419.8-0009, 6dFGS gJ142223.8-002315, LEDA 51344, SDSS J142223.76-002315.6, Z 19-8, GSC 04977-00156, 2MASX J14222381-0023148, TC 541, HIPASS J1422-00, MCG+00-37-001, UGC 9201, IRAS 14198-0009, PSCz Q14198-0009, UZC J142223.7-002310
NGC 5584 là một thiên hà xoắn ốc dạng thanh, có chiều dài hơn 50.000 năm ánh sáng, nằm cách xa 72 triệu năm ánh sáng trong chòm sao Xử Nữ.
Các khu vực màu xanh lam trong hình ảnh của Kính viễn vọng Không gian Hubble là những ngôi sao trẻ, khu vực tối hơn là các đường bụi, trong khi các điểm màu đỏ và các mảnh vỡ là các thiên hà trong nền.
250 biến Cepheid đã được quan sát trong NGC 5584.
Hình ảnh này là tổng hợp của một số phơi sáng được chụp trong ánh sáng khả kiến giữa tháng 1 và tháng 4 năm 2010 với Máy ảnh trường rộng 3 của Hubble.
Rhaphidophora cryptantha

| Rhaphidophora cryptantha> Phân loại khoa học |
| --- | --- |
Giới (regnum): Plantae
(không phân hạng): Angiospermae
(không phân hạng): Monocots
Bộ (ordo): Alismatales
Họ (familia): Araceae
Chi (genus): Rhaphidophora
Loài (species): R. cryptantha
Danh pháp hai phần
Rhaphidophora cryptantha P.C.Boyce & C.M.Allen 
Rhaphidophora cryptantha là một loài thực vật có hoa trong họ Ráy (Araceae). Loài này được P.C.Boyce & C.M.Allen mô tả khoa học đầu tiên năm 2001.
Chú thích

↑  The Plant List (2010). “Rhaphidophora cryptantha”. Truy cập ngày 3 tháng 6 năm 2013.
Polygala oxyphylla

| Polygala oxyphylla> Phân loại khoa học |
| --- | --- |
Giới (regnum): Plantae
(không phân hạng): Angiospermae
(không phân hạng): Eudicots
Bộ (ordo): Fabales
Họ (familia): Polygalaceae
Chi (genus): Polygala
Loài (species): P. oxyphylla
Danh pháp hai phần
Polygala oxyphylla DC., 1824 
Polygala oxyphylla là một loài thực vật có hoa trong họ Polygalaceae. Loài này được DC. miêu tả khoa học đầu tiên năm 1824.
Chú thích

↑  The Plant List (2010). “Polygala oxyphylla”. Truy cập ngày 17 tháng 9 năm 2013.
Neoennearthron

| Neoennearthron> Phân loại khoa học |
| --- | --- |
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Lớp (class): Insecta
Bộ (ordo): Coleoptera
Họ (familia): Ciidae
Chi (genus): Neoennearthron Miyatake, 1954
Neoennearthron là một chi bọ cánh cứng trong họ Ciidae.
Các loài

Neoennearthron bicarinatum Miyatake, 1954
Neoennearthron hisamatsui Miyatake, 1959
Chú thích

↑  I. Lobl & A. Smetana (2008). Catalogue of Palaearctic Coleoptera, Volume 5: Tenebrionoidea. Stenstrup, Denmark: Apollo. tr. 55–62. ISBN 87-88757-84-6.
Racovițeni

| Racoviteni |
| --- | --- |
—  Xã  —
 
 

RacoviteniVị trí ở România
Quốc gia:  România
Hạt: Buzău
Thủ phủ: Racovițeni 
Dân số (2002)
 • Tổng cộng: 1.482 người
Múi giờ: EET (UTC+2)
 • Mùa hè (DST): EEST (UTC+3)
Mã bưu chính: 127505 
Racoviteni là một xã thuộc hạt Buzău, România. Dân số thời điểm năm 2002 là 1482 người.
Chú thích

↑  “Communes of Romania” (bằng tiếng Anh). statoids.com. Truy cập ngày 14 tháng 6 năm 2012.
Nama havardii

| Nama havardii> Phân loại khoa học |
| --- | --- |
Giới (regnum): Plantae
(không phân hạng): Angiospermae
(không phân hạng): Eudicots
Bộ (ordo): Chưa đặt
Họ (familia): Boraginaceae
Chi (genus): Nama
Loài (species): N. havardii
Danh pháp hai phần
Nama havardii A. Gray, 1885 
Nama havardii là loài thực vật có hoa trong họ Mồ hôi. Loài này được A. Gray mô tả khoa học đầu tiên năm 1885.
Chú thích

↑  The Plant List (2010). “Nama havardii”. Truy cập ngày 11 tháng 6 năm 2013.
Phần mềm

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, lần lượt giao tiếp với phần cứng. Các mũi tên chỉ luồng thông tin.
Phần mềm máy tính (tiếng Anh: software), hay còn gọi đơn giản là phần mềm, còn được gọi là nhu liệu, là tập hợp dữ liệu hoặc các câu lệnh hướng dẫn máy tính cho máy tính biết cách làm việc. Điều này trái ngược với phần cứng vật lý, từ đó hệ thống được xây dựng và thực sự thực hiện công việc. Trong khoa học máy tính và kỹ thuật phần mềm, phần mềm máy tính là tất cả thông tin được xử lý bởi hệ thống máy tính, chương trình và dữ liệu. Phần mềm máy tính bao gồm các chương trình máy tính, thư viện và dữ liệu không thể thực thi liên quan, chẳng hạn như tài liệu trực tuyến hoặc phương tiện kỹ thuật số. Phần cứng và phần mềm máy tính yêu cầu lẫn nhau và không thể tự sử dụng một cách thực tế.
Ở cấp độ lập trình thấp nhất, mã thực thi bao gồm các hướng dẫn ngôn ngữ máy được hỗ trợ bởi một bộ xử lý riêng lẻ, có thể là  bộ xử lý trung tâm (CPU) hoặc đơn vị xử lý đồ họa (GPU). Một ngôn ngữ máy bao gồm các nhóm giá trị nhị phân biểu thị các lệnh hướng dẫn cách thực hiện của bộ xử lý thay đổi trạng thái của máy tính từ trạng thái trước đó. Ví dụ: một lệnh có thể thay đổi giá trị được lưu trữ ở một vị trí lưu trữ cụ thể trong máy tính, một hiệu ứng mà người dùng không thể quan sát trực tiếp. Một lệnh cũng có thể gọi một trong nhiều thao tác nhập hoặc xuất dữ liệu, ví dụ hiển thị một số văn bản trên màn hình máy tính; gây ra những thay đổi trạng thái được hiển thị cho người dùng. Bộ xử lý thực hiện các lệnh theo thứ tự chúng được cung cấp, trừ khi nó được hướng dẫn "nhảy" sang một lệnh khác hoặc bị hệ điều hành làm gián đoạn. Tính đến  năm 2015, hầu hết các máy tính cá nhân, thiết bị điện thoại thông minh và máy chủ đều có bộ xử lý với nhiều đơn vị thực thi hoặc nhiều bộ xử lý thực hiện tính toán cùng nhau và điện toán đã trở thành một hoạt động đồng thời hơn nhiều so với trước đây.
Phần lớn phần mềm được viết bằng các ngôn ngữ lập trình cấp cao. Chúng dễ dàng và hiệu quả hơn cho các lập trình viên vì chúng gần với ngôn ngữ tự nhiên hơn ngôn ngữ máy. Các ngôn ngữ cấp cao được dịch sang ngôn ngữ máy bằng trình biên dịch hoặc trình thông dịch hoặc kết hợp cả hai. Phần mềm cũng có thể được viết bằng một hợp ngữ mức thấp, trong đó có các lệnh mạnh để hướng dẫn ngôn ngữ máy của máy tính và được dịch sang ngôn ngữ máy bằng cách dùng phần mềm lắp ráp.
Phân loại

Trên hầu hết tất cả các nền tảng máy tính, phần mềm có thể được nhóm thành một vài loại lớn.
Phân loại > Mục đích hoặc lĩnh vực sử dụng

Dựa trên mục tiêu, phần mềm máy tính có thể được chia thành:
Phần mềm ứng dụng 
 là phần mềm sử dụng hệ thống máy tính để thực hiện các chức năng đặc biệt hoặc cung cấp các chức năng giải trí ngoài hoạt động cơ bản của chính máy tính. Có nhiều loại phần mềm ứng dụng khác nhau, bởi vì phạm vi các tác vụ có thể được thực hiện với một máy tính hiện đại là rất lớn, xem danh sách phần mềm.
Phần mềm hệ thống là phần mềm để quản lý hành vi phần cứng máy tính , để cung cấp các chức năng cơ bản được người dùng yêu cầu hoặc phần mềm khác để chạy đúng, nếu có. Phần mềm hệ thống cũng được thiết kế để cung cấp một nền tảng để chạy phần mềm ứng dụng, và nó bao gồm:
Hệ điều hành (operating system)
là các bộ sưu tập thiết yếu của phần mềm quản lý tài nguyên và cung cấp các dịch vụ chung cho các phần mềm khác chạy "trên đỉnh" của chúng. Các chương trình giám sát, bộ tải khởi động, hệ vỏ và hệ thống cửa sổ là những phần cốt lõi của hệ điều hành. Trong thực tế, một hệ điều hành đi kèm với phần mềm bổ sung (bao gồm cả phần mềm ứng dụng) để người dùng có thể thực hiện một số công việc với một máy tính chỉ có một hệ điều hành.
(driver)
vận hành hoặc điều khiển một loại thiết bị cụ thể được gắn vào máy tính. Mỗi thiết bị cần ít nhất một trình điều khiển thiết bị tương ứng; bởi vì một máy tính thường có ít nhất một thiết bị đầu vào và ít nhất một thiết bị đầu ra, một máy tính thường cần nhiều hơn một trình điều khiển thiết bị.
Tiện ích (utility)
là những chương trình máy tính được thiết kế để hỗ trợ người dùng trong việc bảo trì và chăm sóc máy tính của họ.
Phần mềm độc hại hoặc malware 
đó là phần mềm được phát triển để gây hại và phá hỏng máy tính. Như vậy, phần mềm độc hại là không mong muốn. Phần mềm độc hại có liên quan chặt chẽ với các tội phạm liên quan đến máy tính, mặc dù một số chương trình độc hại có thể được thiết kế như những trò chơi khăm.
Phân loại > Bản chất hoặc miền thực thi

Các ứng dụng máy tính để bàn như trình duyệt web và Microsoft Office, cũng như các ứng dụng điện thoại thông minh và máy tính bảng (được gọi là " ứng dụng "). (Có một sự thúc đẩy trong một số phần của ngành công nghiệp phần mềm để hợp nhất các ứng dụng máy tính để bàn với các ứng dụng di động, ở một mức độ nào đó. Windows 8, và sau đó là Ubuntu Touch, đã cố gắng cho phép sử dụng cùng một kiểu giao diện người dùng ứng dụng trên máy tính để bàn, máy tính xách tay và điện thoại di động.)
Các tập lệnh JavaScript là các phần mềm được nhúng truyền thống trong các trang web được chạy trực tiếp bên trong trình duyệt web khi một trang web được tải mà không cần plugin trình duyệt web. Phần mềm được viết bằng các ngôn ngữ lập trình khác cũng có thể được chạy trong trình duyệt web nếu phần mềm được dịch sang JavaScript hoặc nếu một plugin trình duyệt web hỗ trợ ngôn ngữ đó được cài đặt; ví dụ phổ biến nhất sau này là các tập lệnh ActionScript, được hỗ trợ bởi plugin Adobe Flash.
Phần mềm máy chủ, bao gồm:
Các ứng dụng web, thường chạy trên máy chủ web và xuất các trang web được tạo động sang trình duyệt web, sử dụng ví dụ: PHP, Java, ASP. NET, hoặc thậm chí JavaScript chạy trên máy chủ. Trong thời hiện đại, những thứ này thường bao gồm một số JavaScript được chạy trong trình duyệt web, trong trường hợp đó, chúng thường chạy một phần trên máy chủ, một phần trong trình duyệt web.
Plugin và tiện ích mở rộng là phần mềm mở rộng hoặc sửa đổi chức năng của một phần mềm khác và yêu cầu phần mềm đó phải được sử dụng để hoạt động;
Phần mềm nhúng embedded software như firmware trong hệ thống nhúng, thiết bị dành riêng cho việc sử dụng đơn lẻ hoặc một vài công dụng như xe hơi và TV (mặc dù một số các thiết bị nhúng như chipset không dây có thể là một phần của một hệ thống máy tính thông thường, không nhúng như một PC hoặc điện thoại thông minh). Trong bối cảnh hệ thống nhúng đôi khi không có sự phân biệt rõ ràng giữa phần mềm hệ thống và phần mềm ứng dụng. Tuy nhiên, một số hệ thống nhúng chạy hệ điều hành nhúng và các hệ thống này vẫn giữ được sự khác biệt giữa phần mềm hệ thống và phần mềm ứng dụng (mặc dù thông thường sẽ chỉ có một ứng dụng cố định luôn chạy).
Microcode là một loại phần mềm nhúng đặc biệt, tương đối khó hiểu, cho bản thân bộ xử lý biết cách thực thi mã máy, vì vậy nó thực sự là một cấp độ thấp hơn mã máy. Nó thường thuộc sở hữu của nhà sản xuất bộ xử lý và mọi cập nhật phần mềm vi mã chỉnh sửa cần thiết đều được cung cấp cho người dùng (rẻ hơn nhiều so với vận chuyển phần cứng bộ xử lý thay thế). Do đó, một lập trình viên bình thường sẽ không bao giờ phải đối phó với nó.
Phân loại > Công cụ lập trình

Bài chi tiết: Công cụ lập trình
Các công cụ lập trình cũng là phần mềm dưới dạng chương trình hoặc ứng dụng mà các nhà phát triển phần mềm (còn được gọi là lập trình viên, lập trình viên, tin tặc hoặc kỹ sư phần mềm) sử dụng để tạo, gỡ lỗi, bảo trì (tức là cải thiện hoặc sửa chữa) hoặc nói cách khác là hỗ trợ phần mềm.
Phần mềm được viết bằng một hoặc nhiều ngôn ngữ lập trình; có nhiều ngôn ngữ lập trình tồn tại và mỗi ngôn ngữ có ít nhất một triển khai, mỗi ngôn ngữ bao gồm một bộ công cụ lập trình riêng đi kèm. Các công cụ này có thể là các chương trình tương đối khép kín như trình biên dịch, trình gỡ lỗi, trình thông dịch, trình liên kết và trình soạn thảo văn bản, có thể được kết hợp với nhau để hoàn thành một nhiệm vụ; hoặc chúng có thể tạo thành một môi trường phát triển tích hợp (IDE), kết hợp nhiều hoặc tất cả các chức năng của các công cụ độc lập đó. IDE có thể làm điều này bằng cách gọi các công cụ riêng lẻ có liên quan hoặc bằng cách thực hiện lại chức năng của chúng theo một cách mới. Một IDE có thể giúp thực hiện các tác vụ cụ thể dễ dàng hơn, chẳng hạn như tìm kiếm trong các tệp trong một dự án cụ thể. Nhiều triển khai ngôn ngữ lập trình cung cấp tùy chọn sử dụng cả hai công cụ riêng lẻ hoặc IDE.
Chủ đề > Kiến trúc

Bài chi tiết: Kiến trúc phần mềm
Người dùng thường thấy mọi thứ khác với lập trình viên. Những người sử dụng máy tính đa năng hiện đại (trái ngược với hệ thống nhúng, máy tính tương tự và siêu máy tính) thường thấy ba lớp phần mềm thực hiện nhiều nhiệm vụ khác nhau: nền tảng, ứng dụng và phần mềm người dùng.
Phần mềm nền tảng 
Nền tảng bao gồm phần sụn, trình điều khiển thiết bị, hệ điều hành và thường là giao diện người dùng đồ họa, nói chung, cho phép người dùng tương tác với máy tính và các thiết bị ngoại vi (thiết bị đi kèm). Phần mềm nền tảng thường đi kèm với máy tính. Trên PC, người ta thường có khả năng thay đổi phần mềm nền tảng.
Phần mềm ứng dụng 
Phần mềm ứng dụng hoặc ứng dụng là những gì hầu hết mọi người nghĩ đến khi họ nghĩ về phần mềm. Ví dụ điển hình bao gồm gói ứng dụng văn phòng và trò chơi video. Phần mềm ứng dụng thường được mua riêng, độc lập với phần cứng máy tính. Đôi khi các ứng dụng cũng được đóng gói cùng với máy tính, nhưng điều đó không thay đổi thực tế là chúng chạy như các ứng dụng độc lập. Các ứng dụng thường là các chương trình độc lập với hệ điều hành, mặc dù chúng thường được thiết kế riêng cho từng nền tảng cụ thể. Hầu hết người dùng nghĩ về trình biên dịch, cơ sở dữ liệu và "phần mềm hệ thống" khác như là các ứng dụng.
Phần mềm do người dùng tự viết 
Hệ thống có khả năng được điều chỉnh cho phép người dùng cuối tự lập trình để đáp ứng nhu cầu cụ thể của người dùng. Phần mềm người dùng bao gồm các mẫu bảng tính và các mẫu xử lý văn bản. Ngay cả các bộ lọc email là một loại phần mềm do người dùng tùy biến. Người dùng tự tạo phần mềm này và thường bỏ qua tầm quan trọng của nó. Tùy thuộc vào mức độ thành thạo của phần mềm do người dùng viết vào các gói ứng dụng mặc định, nhiều người dùng có thể không nhận ra sự khác biệt giữa các gói ban đầu và những gì đã được các đồng nghiệp thêm vào.
Chủ đề > Thực hiện - chạy - thực thi

Phần mềm máy tính phải được "tải" vào bộ lưu trữ của máy tính (như ổ cứng hoặc bộ nhớ). Khi phần mềm đã được tải, máy tính có thể thực thi phần mềm. Điều này liên quan đến việc chuyển các hướng dẫn từ phần mềm ứng dụng, thông qua phần mềm hệ thống, đến phần cứng cuối cùng nhận được lệnh dưới dạng mã máy. Mỗi lệnh làm cho máy tính thực hiện thao tác dữ liệu di chuyển, thực hiện tính toán hoặc thay đổi luồng điều khiển của lệnh.
Việc di chuyển dữ liệu thường từ nơi này trong bộ nhớ sang nơi khác. Đôi khi nó liên quan đến việc di chuyển dữ liệu giữa bộ nhớ và các thanh ghi, điều này cho phép truy cập dữ liệu tốc độ cao trong CPU. Di chuyển dữ liệu, đặc biệt là khi di chuyển số lượng lớn dữ liệu, có thể khá mất thời gian. Vì vậy, điều này đôi khi được tránh bằng cách sử dụng "con trỏ" để thay thế cho dữ liệu thực sự. Việc tính toán bao gồm các hoạt động đơn giản như tăng giá trị của một yếu tố dữ liệu biến. Các tính toán phức tạp hơn có thể liên quan đến nhiều phép toán và các yếu tố dữ liệu khác nhau.
Chủ đề > Chất lượng và độ tin cậy

Bài chi tiết: Chất lượng phần mềm, Kiểm tra phần mềm, và Tính tin cậy của phần mềm
Chất lượng phần mềm rất quan trọng, đặc biệt đối với các phần mềm thương mại và hệ thống như Microsoft Office, Microsoft Windows và Linux. Nếu phần mềm bị lỗi (lỗi), nó có thể xóa công việc của một người, làm hỏng máy tính và làm những việc không mong muốn khác. Lỗi và lỗi được gọi là "lỗi" thường được phát hiện trong quá trình thử nghiệm alpha và beta. Phần mềm cũng thường là nạn nhân của sự lão hóa phần mềm, sự suy giảm hiệu suất lũy tiến do sự kết hợp của các lỗi không nhìn thấy được.
Nhiều lỗi được phát hiện và loại bỏ (gỡ lỗi) thông qua kiểm tra phần mềm. Tuy nhiên, việc kiểm thử phần mềm hiếm khi được xử lý nếu có thể loại bỏ mọi lỗi; Một số lập trình viên nói rằng "mọi chương trình đều có ít nhất một lỗi nữa" (Luật của Lubarsky). Trong thác phương pháp phát triển phần mềm, các đội kiểm tra riêng biệt thường được sử dụng, nhưng trong cách tiếp cận mới hơn, gọi chung là lập trình linh hoạt, các nhà phát triển thường làm tất cả những thử nghiệm riêng của họ, và chứng minh phần mềm cho người dùng / khách hàng thường xuyên để có được thông tin phản hồi. Phần mềm có thể được kiểm tra thông qua kiểm tra đơn vị, kiểm tra hồi quy và các phương pháp khác, được thực hiện thủ công hoặc phổ biến nhất, vì số lượng mã được kiểm tra có thể khá lớn. Chẳng hạn, NASA có quy trình kiểm thử phần mềm cực kỳ nghiêm ngặt đối với nhiều hệ điều hành và chức năng giao tiếp. Nhiều hoạt động dựa trên NASA tương tác và xác định lẫn nhau thông qua các chương trình chỉ huy. Điều này cho phép nhiều người làm việc tại NASA kiểm tra và đánh giá tổng thể các hệ thống chức năng. Các chương trình chứa phần mềm chỉ huy cho phép kỹ thuật phần cứng và vận hành hệ thống hoạt động dễ dàng hơn nhiều.
Chủ đề > Giấy phép

Giấy phép của phần mềm cung cấp cho người dùng quyền sử dụng phần mềm trong môi trường được cấp phép và trong trường hợp giấy phép phần mềm miễn phí, cũng cấp các quyền khác như quyền sao chép.
Phần mềm độc quyền có thể được chia thành hai loại:
phần mềm miễn phí, bao gồm danh mục phần mềm "dùng thử miễn phí" hoặc phần mềm " freemium " (trước đây, thuật ngữ phần mềm chia sẻ thường được sử dụng cho phần mềm dùng thử / freemium miễn phí). Như tên cho thấy, phần mềm miễn phí có thể được sử dụng miễn phí, mặc dù trong trường hợp dùng thử miễn phí hoặc phần mềm freemium, điều này đôi khi chỉ đúng trong một khoảng thời gian giới hạn hoặc với chức năng hạn chế.
phần mềm có sẵn cho một khoản phí, thường được gọi là " phần mềm thương mại " không chính xác, chỉ có thể được sử dụng hợp pháp khi mua giấy phép sử dụng.
Mặt khác, phần mềm nguồn mở đi kèm với giấy phép phần mềm miễn phí, cấp cho người nhận quyền sửa đổi và phân phối lại phần mềm.
Chủ đề > Bằng sáng chế

Bằng sáng chế phần mềm, giống như các loại bằng sáng chế khác, về mặt lý thuyết được cho là cung cấp cho nhà phát minh một giấy phép độc quyền, có giới hạn thời gian cho một ý tưởng chi tiết (ví dụ: thuật toán) về cách triển khai một phần mềm hoặc một thành phần của một phần mềm. Các ý tưởng cho những điều hữu ích mà phần mềm có thể làm và các yêu cầu của người dùng, không được coi là có thể được cấp bằng sáng chế và việc triển khai cụ thể (nghĩa là các gói phần mềm thực tế thực hiện bằng sáng chế) thường không được cấp bằng sáng chế. tự động. Vì vậy, bằng sáng chế phần mềm được cho là bao gồm khu vực giữa, giữa các yêu cầu và thực hiện cụ thể. Ở một số quốc gia, yêu cầu phát minh được tuyên bố là có ảnh hưởng đến thế giới vật lý cũng có thể là một phần trong các yêu cầu đối với bằng sáng chế phần mềm phải có hiệu lực, mặc dù tất cả các phần mềm hữu ích đều có tác dụng đối với thế giới vật lý, yêu cầu này có thể là mở để tranh luận. Trong khi đó, luật bản quyền của Mỹ đã được áp dụng cho các khía cạnh khác nhau của việc viết mã phần mềm.
Bằng sáng chế phần mềm đang gây tranh cãi trong ngành công nghiệp phần mềm với nhiều người giữ các quan điểm khác nhau về chúng. Một trong những nguồn gây tranh cãi là sự phân chia nói trên giữa các ý tưởng ban đầu và bằng sáng chế dường như không được tôn vinh trong thực tế bởi các luật sư sáng chế, ví dụ như bằng sáng chế cho Lập trình hướng đối tượng (AOP), có ý định đòi quyền đối với bất kỳ công cụ lập trình nào thực hiện ý tưởng về AOP, dù thực hiện thế nào. Một nguồn tranh cãi khác là ảnh hưởng đến sự đổi mới, với nhiều chuyên gia và công ty nổi tiếng cho rằng phần mềm là một lĩnh vực chuyển động nhanh đến mức các bằng sáng chế phần mềm chỉ tạo ra chi phí và rủi ro kiện tụng lớn, và thực sự làm chậm sự đổi mới. Trong trường hợp tranh luận về bằng sáng chế phần mềm bên ngoài Hoa Kỳ, người ta đã đưa ra lập luận rằng các tập đoàn lớn và luật sư sáng chế của Mỹ có thể là người hưởng lợi chính trong việc cho phép hoặc tiếp tục cho phép bằng sáng chế phần mềm.