始终把人民放在心中最高位置

Oprogramowanie (ang. software) – ogó? informacji w postaci zestawu instrukcji, zaimplementowanych interfejsów i zintegrowanych danych przeznaczonych dla komputera do realizacji wyznaczonych celów. Celem oprogramowania jest przetwarzanie danych w wyznaczonym przez twórc? zakresie. Okre?lenie ?oprogramowanie” mo?e funkcjonowa? jako synonim terminów ?program komputerowy” oraz ?aplikacja”, przy czym stosuje si? je zazwyczaj na oznaczenie wi?kszych programów oraz ich zbiorów.
Oprogramowanie tworz? programi?ci w procesie programowania. Oprogramowanie jako przejaw twórczo?ci jest chronione prawem autorskim, twórcy zezwalaj? na korzystanie z niego na warunkach okre?lanych w licencji.
Oprogramowanie pisane jest zazwyczaj przy u?yciu ró?nych j?zyków programowania z wykorzystaniem algorytmów. Programy przekszta?caj?ce oprogramowanie z postaci ?ród?owej na binarn? to kompilatory. Niektóre rodzaje oprogramowania napisane w ca?o?ci w j?zykach interpretowanych, mog? wyst?powa? tylko w jednej postaci, spe?niaj?cej zadania ?ród?a i programu wykonywalnego.
Historia
[edytuj | edytuj kod]Zarys (algorytm) tego, co by?oby pierwszym oprogramowaniem, napisa?a Ada Lovelace w XIX wieku dla planowanej maszyny analitycznej. Jednak ani kompletna maszyna analityczna, ani oprogramowanie do niej nie zosta?y opracowane[1].
Pierwsza teoria na temat oprogramowania (przed stworzeniem dzisiejszych komputerów) zosta?a zaproponowana przez Alana Turinga w jego eseju opublikowanym w roku 1936[2]. Doprowadzi?o to ostatecznie do powstania bli?niaczych akademickich dziedzin informatyki i in?ynierii oprogramowania, które zarówno badaj? oprogramowanie, jak i jego tworzenie. Informatyka jest bardziej teoretyczna (esej Turinga jest przyk?adem informatyki), natomiast in?ynieria oprogramowania koncentruje si? na bardziej praktycznych zagadnieniach.
Przed rokiem 1946 oprogramowanie jakie teraz znamy, czyli programy przechowywane w pami?ci komputerów cyfrowych – jeszcze nie istnia?o.
Narz?dzia do programowania
[edytuj | edytuj kod]Narz?dzie programistyczne to równie? oprogramowanie w postaci programów lub aplikacji internetowych, które twórcy oprogramowania (zwani równie? programistami lub in?ynierami oprogramowania) u?ywaj? do tworzenia, debugowania, utrzymywania (tj. ulepszania lub naprawiania). Oprogramowanie jest napisane w jednym lub kilku j?zykach programowania. Istnieje wiele j?zyków programowania i ka?dy ma przynajmniej jedn? implementacj?, z których ka?da sk?ada si? z w?asnego zestawu narz?dzi programistycznych. Narz?dzia te mog? by? wzgl?dnie samodzielnymi programami, takimi jak kompilatory, debuggery, interpretery, ??czniki i edytory tekstu, które mo?na ??czy? w celu wykonania zadania. Mog? one równie? tworzy? zintegrowane ?rodowisko programistyczne (IDE), które ??czy w sobie wiele funkcji takich samodzielnych narz?dzi.
Architektura
[edytuj | edytuj kod]U?ytkownicy cz?sto postrzegaj? istot? oprogramowania inaczej ni? programi?ci. Osoby korzystaj?ce z nowoczesnych komputerów ogólnego przeznaczenia (w przeciwieństwie do systemów wbudowanych, komputerów analogowych i superkomputerów) zazwyczaj widz? trzy warstwy oprogramowania wykonuj?cego ró?norodne zadania: platform?, aplikacj? i oprogramowanie u?ytkownika.
- Oprogramowanie platformy
Platforma obejmuje oprogramowanie sprz?towe, sterowniki urz?dzeń, system operacyjny i zazwyczaj graficzny interfejs u?ytkownika, który pozwala u?ytkownikowi na interakcj? z komputerem i jego urz?dzeniami peryferyjnymi.
- Oprogramowanie napisane przez u?ytkownika
Systemy do projektowania dostosowane do specyficznych potrzeb u?ytkowników. Oprogramowanie u?ytkownika obejmuje szablony arkuszy kalkulacyjnych i szablony edytorów tekstów. Nawet filtry poczty e-mail s? rodzajem oprogramowania u?ytkownika. U?ytkownicy tworz? to oprogramowanie samodzielnie. W zale?no?ci od tego, w jakim stopniu oprogramowanie napisane przez u?ytkownika zosta?o zintegrowane z domy?lnymi pakietami aplikacji, wielu u?ytkowników mo?e nie by? ?wiadomych rozró?nienia mi?dzy oryginalnymi pakietami, a tym, co zosta?o dodane przez wspó?pracowników.
Wykonanie
[edytuj | edytuj kod]Oprogramowanie komputerowe musi zosta? ?za?adowane” do pami?ci komputera (np. dysku twardego lub pami?ci). Proces ten obejmuje przekazywanie instrukcji z oprogramowania aplikacyjnego, poprzez oprogramowanie systemowe, do sprz?tu, który ostatecznie otrzymuje instrukcj? jako kod maszynowy. Ka?da instrukcja powoduje, ?e komputer przeprowadza operacj? przesuwaj?c dane, wykonuj?c obliczenia lub zmieniaj?c sterowanie instrukcjami.
Przesy?anie danych odbywa si? zwykle z jednego miejsca w pami?ci do drugiego. Czasami obejmuje to przenoszenie danych mi?dzy pami?ci? a rejestrami, które umo?liwiaj? szybki dost?p do danych w CPU. Przenoszenie danych, zw?aszcza du?ych ich ilo?ci, mo?e by? kosztowne. Czasami unika si? tego, wykorzystuj?c zamiast tego ?wska?niki” do danych. Obliczenia obejmuj? proste operacje, takie jak zwi?kszanie warto?ci zmiennego elementu danych. Bardziej skomplikowane obliczenia mog? obejmowa? wiele operacji.
Jako?? i niezawodno??
[edytuj | edytuj kod]Jako?? oprogramowania jest bardzo istotna, szczególnie w przypadku oprogramowania komercyjnego i systemowego, takiego jak Microsoft Office, Microsoft Windows i Linux. Wadliwo?? oprogramowania mo?e na przyk?ad doprowadzi? do awarii komputerowej.
Oprogramowanie cz?sto jest równie? ofiar? tak zwanego starzenia si?, post?puj?cej degradacji wydajno?ci wynikaj?cej z kombinacji niewidocznych b??dów. Wiele b??dów jest odkrywanych i eliminowanych (debugowanych) podczas testowania oprogramowania. Jednak testowanie oprogramowania rzadko – je?li w ogóle – eliminuje ka?dy b??d. Niektórzy programi?ci mówi?, ?e ?ka?dy przetestowany program ma co najmniej jeszcze jeden b??d” (prawo Lubarskiego).
Oprogramowanie mo?na testowa? za pomoc? testów jednostkowych, testów regresji i innych metod, które s? wykonywane r?cznie lub najcz??ciej automatycznie, poniewa? ilo?? kodu do przetestowania mo?e by? do?? du?a. Na przyk?ad NASA ma wyj?tkowo rygorystyczne procedury testowania oprogramowania dla wielu systemów operacyjnych i funkcji komunikacyjnych. Wiele operacji opartych na NASA wchodzi w interakcje i identyfikuje si? nawzajem za pomoc? programów steruj?cych. Dzi?ki temu wiele osób pracuj?cych w NASA mo?e sprawdza? i ocenia? ogólnie systemy funkcjonalne. Programy zawieraj?ce oprogramowanie steruj?ce pozwalaj? na ?atwiejsze wspó?dzia?anie in?ynierii sprz?towej i operacji systemowych.
Rodzaje oprogramowania
[edytuj | edytuj kod]Oprogramowanie dzieli si? ze wzgl?du na przeznaczenie:
- oprogramowanie systemowe – realizuj?ce funkcje konieczne dla dzia?ania systemu komputerowego,
- oprogramowanie u?ytkowe – maj?ce bezpo?redni kontakt z u?ytkownikiem i realizuj?ce us?ugi dla tego u?ytkownika za pomoc? aplikacji. Z technicznego punktu widzenia jest to oprogramowanie korzystaj?ce z us?ug m.in. systemu operacyjnego (oprogramowania systemowego). Poj?cie "oprogramowanie systemowe" jest znacznie szersze ni? "system operacyjny". W jego sk?ad wchodzi te? oprogramowanie serwerowe oraz inne oprogramowania z którymi u?ytkownik nie ma bezpo?redniej styczno?ci. Przyk?ady oprogramowania u?ytkowego:
- oprogramowanie po?rednicz?ce
- system ekspertowy
- system zarz?dzania baz? danych (DBMS)
- oprogramowanie sprz?towe
Zobacz te?
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ Micha? Chrobot , Chc? zbudowa? komputer na par? - Plan 28 - rusza projekt budowy maszyny analitycznej Babbage'a - komputer parowy [online], Komputer ?wiat, 14 pa?dziernika 2010 [dost?p 2025-08-07] .
- ↑ Alan M. Turing. On Computable Numbers, with an Application to the Entscheidungsproblem. ?Proceedings of the London Mathematical Society”. 2 (42), s. 230–265, 1936. (ang.).
Bibliografia
[edytuj | edytuj kod]- Department of Information and Computing Sciences
- System Software. home.olemiss.edu. [zarchiwizowane z tego adresu (2025-08-07)].
- Embedded Software–Technologies and Trends
- scripting-intelligence-book-examples