Moduły specjalnościowe – Inżynieria oprogramowania

Moduł: Metodyki programowania

Proces realizacji współczesnego oprogramowania wymaga systematycznego i zdyscyplinowanego podejścia. Podejście to jednak powinno być jednocześnie elastyczne, podatne na zmiany specyfikacji, wczesną detekcję błędów oraz pracę grupową. Wytwarzaniem oprogramowania sterują współczesne metodyki, pozwalające na pogodzenie tych pozornie rozbieżnych celów. Celem modułu Metodyki programowania jest przekazanie wiedzy na temat współczesnych metodyk tworzenia oprogramowania oraz wyrobienie umiejętności ich skutecznego wykorzystania w praktyce pracy programisty. Moduł łączy wiedzę z zakresu metodyk programowania z umiejętnościami ich praktycznego stosowani.

Moduł: Programowanie zespołowe

Realizacja oprogramowania dedykowanego dla rzeczywistych zastosowań wymaga zwykle zaangażowania wielu programistów. Zespołowe tworzenie oprogramowania stawia nowe wymaganie przed programistami — umiejętność pracy grupowej. Ten rodzaj pracy wymaga wykorzystania dodatkowych narzędzi wspomagających, obejmujących repozytoria kodu, systemy kontroli wersji, systemy zgłaszania błędów i usterek, oraz środowiska programistyczne pozwalające na wykorzystanie tych narzędzi. Moduł Programowanie zespołowe ukierunkowany jest na wyrobienie praktycznych umiejętności programowania zespołowego z wykorzystaniem współczesnych metod i narzędzi.

Moduł: Analiza i modelowanie systemów

Tworzenie współczesnych systemów informatycznych jest zagadnieniem złożonym i wielowymiarowym. Oprócz biegłości w zakresie programowania, istotnym elementem jest umiejętność wykonywania analizy problemu, opracowania wymagań dla systemu, ich weryfikacja, opracowanie specyfikacji wymagań, zarządzanie zmianami. Etap analizy powinien w sposób harmonijny prowadzić do fazy modelowania systemu, realizowanej z wykorzystaniem wiodących w tej dziedzinie technik. Moduł Analiza i modelowanie systemów poświęcony jest przekazaniu wiedzy i wyrobieniu umiejętności w zakresie analizy systemowej oraz tworzenia modeli systemu informatycznego, pozwalających na spójne opracowanie założeń projektowych i rozpoczęcie procesu tworzenia oprogramowania.

Moduł: Technologie internetowe w programowaniu

Współczesne zastosowania sieci Internet są znacząco odległe od specyfiki oryginalnych protokołów regulujących wymianę informacji w tym środowisku. Zaowocowało to rozwojem mechanizmów programowania, wyraźnie różniących się w warstwie klienckiej i serwerowej. Moduł Technologie internetowe w programowaniu poświęcony jest metodom, narzędziom i technikom programowania w warstwie klienckiej aplikacji internetowych, osadzonej w środowisku współczesnych przeglądarek internetowych. W ramach zajęć modułu studenci zdobywają wiedzę i umiejętności programowania z wykorzystaniem najnowszej wersji języka znaczników hipertekstowych, stylów, języka JavaScript, dedykowanych pakietów szablonowych oraz specjalizowanych bibliotek programowania grafiki w środowisku przeglądarek. Studenci poznają również zasady wykorzystania grafiki w konstruowania użytecznych interfejsów użytkownika i projektowania aplikacji responsywnych.

Moduł: Programowanie usług serwerowych

Współczesne aplikacje w naturalny sposób wykorzystują środowiska sieciowe, stając się wielowarstwowymi systemami informatycznymi. Dotyczy to zarówno aplikacji WWW, aplikacji mobilnych jak i aplikacji desktopowych. Moduł Programowanie usług serwerowych ukierunkowany jest na wyrobienie umiejętności programowania w warstwie serwerowej, obejmującego zarówno programowanie w warstwie składowania danych, jak i w warstwie aplikacji. W ramach modułu studenci poznają zasady konstruowania warstwy serwerowej, tworzenia interfejsów programistycznych, programowania usług sieciowych. Zakłada się wykorzystanie wiodących języków programowania oraz metod realizacji usług serwerowych.

Moduł: Systemy i aplikacje mobilne

Moduł poświęcony jest wyrobieniu umiejętności tworzenia oprogramowania dedykowanego dla platform mobilnych. W ramach zajęć studenci poznają specyfikę współczesnych platform mobilnych, poznają metody oraz narzędzia konstruowania aplikacji dla wiodących platform mobilnych. Studenci poznają specyfikę programowania z wykorzystaniem interfejsów dotykowych, uczą się wykorzystywać szczególne cechy urządzeń mobilnych (moduły GSM, GPS, akcelerometr), wykorzystywać symulatory oraz uruchamiać aplikacje na urządzeniach fizycznych.

Moduł: Wzorce projektowe

Realizacja współczesnych systemów informatycznych to wyjątkowe połączenie kreatywności i nowatorskich pomysłów z dyscypliną wytwarzania oprogramowania bazującą na doświadczeniach tysięcy dobrze opracowanych projektów. Dobre praktyki w zakresie wytwarzania oprogramowania zaowocowały powstaniem dobrze udokumentowanych wzorców projektowych. Moduł poświęcony jest zapoznaniu studentów z wzorcami projektowymi, wyrobieniu umiejętności identyfikowania właściwych zastosowań określonych wzorców, oraz wyrobieniu umiejętności programowania wykorzystującego uznane wzorce projektowe.

Moduł: Projekt zespołowy

Moduł poświęcony jest realizacji projektu zespołowego, mającego na celu zaprojektowanie i realizację systemu informatycznego, wykorzystującego metody, techniki i narzędzia poznane w trakcie realizacji zajęć z pozostałych modułów II semestru oraz modułów semestru I. Z tego względu zajęcia modułu Projekt Zespołowy powinny być skonsolidowane w końcowej fazie trwania semestru. Zakłada się, że realizacja projektu odbywać się będzie w grupach o liczebności uzgadnianej z osobą prowadzącą moduł, zakłada się również, że studenci specjalizacji Inżynieria Oprogramowania będą współpracowali ze studentami specjalności Bezpieczeństwo sieci i systemów teleinformatycznych. Celem współpracy jest wyrobienie umiejętności współpracy pomiędzy specjalistami w zakresie organizacji infrastruktury i konfiguracji sieci komputerowych ze specjalistami z zakresu inżynierii oprogramowania.

Moduł: Inżynieria jakości oprogramowania

Jakość oprogramowania stała istotnym aspektem współczesnego procesu wytwarzania oprogramowania. Zapewnienie jakości oprogramowania obejmuje wiele istotnych czynników, z pragmatycznego punktu widzenia koncentruje się ono na procesie testowania i weryfikacji programowania. Moduł poświęcony jest przekazaniu wiedzy w zakresie wymagań dotyczących jakości oprogramowania, ze szczególnym uwzględnienie zagadnień dotyczących testowania oprogramowania. Moduł ma na celu wyrobienie umiejętności właściwego przygotowania oraz realizacji testów, praktyczne zaznajomienie studentów z metodami testowania oraz narzędziami automatyzacji testów.

Moduł: Zarządzanie projektem informatycznym

Realizacja projektu informatycznego jest procesem podlegającym dynamicznym zmianom, powodowanych różnymi czynnikami. Dotyczą one zarówno uwarunkowań zewnętrznych projektu, zmian i rozwoju technologicznego, jak i szeregu złożonych uwarunkowań wewnętrznych. Celem modułu jest przekazanie wiedzy na temat właściwej organizacji prac projektowych, wyrobienie umiejętności przygotowania, kontroli i weryfikacji realizacji prac projektowych. W ramach zajęć studenci poznają i uczą się w praktyce stosować wiodące metodyki zarządzania projektem.

Programy komputerowe do programowania

Poprzednie Następne Jaki prosty program graficzny będzie najlepszy? W tym zestawieniu umieściliśmy dobre programy graficzne, które zaspokoją potrzeby niemalże każdego grafika. Można tu znaleźć świetne programy graficzne do rysowania, programy graficzne 3D opcje z wymiarowaniem czy programy graficzne dla początkujących oraz porządne, darmowe wersje.

Poprzednie Następne Jaki program do rysowania? Rysunki 3D, wykresy i schematy elektryczne Grafika komputerowa to dynamicznie rozwijająca się branża, która na ten moment zapewnia wszystkim profesjonalistom, ale też adeptom sztuki szereg narzędzi, które znacznie usprawnią i ułatwią tworzenie komputerowych projektów artystycznych, ale też rysunków 3D bądź schematów. Sprawdźmy, na jaki program do rysowania warto postawić.

Poprzednie Następne Windows 10 nie wykrywa drugiego monitora. Jak zaradzić? Drugi monitor jest bardzo przydatny w czasie pracy na komputerze. Podłączyłeś drugi monitor do laptopa lub komputera, jednak mimo tego Windows 10 nadal nie wykrywa drugiego ekranu? Oto najczęstsze przyczyny tego problemu i proste rozwiązania, co zrobić, kiedy Windows 10 nie wykrywa drugiego monitora.

Poprzednie Następne Microsoft Office dla studentów. Który wybrać? Ile kosztuje? Czy jest za darmo? Pakiet Microsoft Office dla studentów jest niezwykle przydatny, ponieważ umożliwia tworzenie dokumentów, prezentacji, a także arkuszy kalkulacyjnych. Czy jest szansa, aby pobrać ten program za darmo? Na to pytanie znajdziesz odpowiedź w naszym artykule.

Poprzednie Następne Jak zainstalować Windows 10 z pendrive’a USB? Instalacja systemu operacyjnego to łatwe zadanie, które nijak nie przypomina trudności, jakich w przeszłości doświadczyły osoby chcące wyposażyć swój komputer w Windows 98 czy Windows XP. Każdy użytkownik komputera z łatwością dokona instalacji najnowszego systemu operacyjnego. Warto jednak zwrócić uwagę na fakt, że powoli odchodzi się od płyt CD, dlatego coraz popularniejszym nośnikiem systemu operacyjnego jest pendrive. Jak dokonać prawidłowej instalacji systemu za pomocą tego nośnika? Poniżej przedstawiony został poradnik, jak wygląda instalacja Windows 10 z USB.

Poprzednie Następne Jaki program do nagrywania gier jest najlepszy? Nagrywanie filmów z gier to w dzisiejszych czasach jedna z najpopularniejszych rozgrywek, którą zajmują się zarówno gwiazdy e-sportu, jak i osoby, które grają hobbystycznie. Bez względu na to, czy chcemy pochwalić się swoimi umiejętnościami, czy planujemy pokazać trudność rozgrywki, przyda nam się dobry program do nagrywania gier. Choć rynek przepełniony jest tego typu oprogramowaniem, my postanowiliśmy wybrać te, które najlepiej radzą sobie z tym zadaniem.

Poprzednie Następne Tryb gry w Windows 10. Jak zoptymalizować system? Wielu graczy zastanawia się, jak jeszcze bardziej podnieść wydajność swojego komputera, aby dawał jak największą przyjemność z gry i jak najlepsze wyniki. Technologia stale się rozwija, a nie każdego stać przecież na wymianę sprzętu co roku. Tym bardziej że ceny „pecetów” i laptopów są od kilkunastu miesięcy mało przystępne. Z pomocą może przyjść tutaj jednak optymalizacja systemu, co w najnowszej odsłonie produktu Microsoftu jest bardzo proste do zrobienia. Pomoże w tym wbudowany w Windows 10 game mode.

Poprzednie Następne Najlepszy antywirus. Ranking programów antywirusowych Dobry antywirus to program, bez którego komputer jest stale zagrożony atakami z sieci. Wykrywa on wirusy, usuwa je oraz chroni sprzęt w czasie rzeczywistym przed wirusami. Jak wybrać najlepszy antywirus? Sprawdź nasz poradnik i ranking programów antywirusowych!

Poprzednie Następne Jaki program do montowania filmów jest najlepszy? Planujecie zmontować fajny filmik z wakacji? A może marzy wam się kariera jutubera, bądź chcecie spróbować nagrać swój pierwszy amatorski film fabularny? W takim razie musicie zdobyć dostęp do odpowiedniego oprogramowania, dzięki któremu będziecie w stanie stworzyć autorskie materiały wideo. W tym zestawieniu przyjrzymy się płatnym programom oraz darmowym edytorom, które powinny wystarczyć do podstawowej obróbki filmów.

Jak napisano pierwszy program, czyli „Kura czy jajko” świata IT

Co było pierwsze, kura czy jajko? Wspomniane pytanie od lat nurtowało wielu uczonych i spędziło sen z powiek nie jednej osoby. Podobne zagwozdki pojawiają się również w kontekście IT. Współczesne oprogramowanie, które wszyscy świetnie znamy z komputerów PC, tabletów, smartfonów, inteligentnych zegarków, a nawet z lodówek powstaje w przeznaczonych do tego programach, np. Microsoft Visual Studio, Android Studio, Xcode, itp. Jednak jak napisano program komputerowy, kiedy jeszcze nie było programów komputerowych?

Szukając odpowiedzi na to podchwytliwe pytanie musimy cofnąć się wiele lat wstecz, aż do XIX wieku. Dokładnie 2 listopada 1815 r. urodził się słynny angielski matematyk i filozof, George Boole, którego osiągnięcia przyczyniły się do rozwoju systemów matematycznych. Otaczający nas świat jest złożony i skomplikowany, a wiele wręcz wykracza poza naszą wyobraźnię, np. nieskończoność wszechświata. Boole pokazał, że nie musi być to prawdą, a każdą, nawet bardzo złożoną informację, można zapisać za pomocą dwóch wartości (0 lub 1), co dało początek Algebrze Boole’a oraz stanowiło podłoże dla dzisiejszej informatyki.

W tym samym roku urodziła się Ada Lovelace, uznawana za matkę pierwszego programu. Żyła w czasach, gdy istniał projekt, tzw. maszyny analitycznej zdolnej do wykonania dowolnej sekwencji działań i obliczeń matematycznych w zależności od tego, jak zostanie zaprogramowana.

Źródło: Wikipedia

Choć maszyna nie została w pełni zbudowana, to - w oparciu o teorię - Ada napisała algorytm przeznaczony do wykonania na wspomnianej maszynie, co sprawia, iż uznaje się go za pierwszy program, a Adę za pierwszą programistkę w historii. Jednakże daleko temu do oprogramowania, z jakim mamy styczność obecnie. System zero-jedynkowy, języki niskiego i wysokiego poziomu, kompilatory i szeroki wachlarz innych rozwiązań pojawiły się znacznie, znacznie później.

Źródło: Wikipedia

Ich osiągnięcia zostały wykorzystane w rozwoju techniki, co stopniowo doprowadziło do powstania komputerów, jakie znamy obecnie. Wraz z rozwojem społeczeństwa oraz szeroko pojętej technologii zwiększała się również ilość danych, które należało przetworzyć. Był to proces czasochłonny, więc stale poszukiwano sposobów na jego usprawnienie. Problemy zaczęły nasilać się wraz z wybuchem I oraz II Wojny Światowej, a co za tym idzie z rozwojem broni palnej, artylerii oraz szeroko pojętych pojazdów mechanicznych (samochody, czołgi, samoloty) i statków, ponieważ dokładne obliczenie trajektorii lotu pocisków nie było prostym zadaniem, a wyliczenia różniły się w zależności od modelu broni.

Sztuka wojenna to również jedna z dziedzin, gdzie każda informacja jest na wagę złota i może przesądzić o losach bitwy, a nawet wojny. W związku tym na przestrzeni wieków narodziło się wiele sposobów na szyfrowanie danych tak, by nie można ich było odczytać, gdy wpadną w niepowołane ręce, czyli w szeregi wroga. W okresie II Wojny Światowej niemieccy żołnierze przekazywali informacje za pomocą dalekopisów, z których każda była zaszyfrowana za pomocą maszyny szyfrującej. A konkretnie za pomocą Maszyny Lorenza, której budowa nieco przypominała sławną Enigmę, lecz różniła się zasadą działania.

Mówi się, że potrzeba jest matką wynalazków. W tym przypadku potrzebą było odczytanie niemieckich komunikatów wojskowych, co przyczyniło się do powstania pierwszego programowalnego komputera zasilanego prądem elektrycznym. 14 kwietnia 1943 roku w brytyjskim ośrodku kryptograficznym Bletchley Park (80km na północ od Londynu) powstała maszyna o nazwie Colossus, której przeznaczeniem było łamanie szyfrów Maszyny Lorenza, co stanowiło istotną zaletę dla wojsk Aliantów.

Za drugi komputer we współczesnym rozumowaniu, uważa się Atanasoff-Berry Computer (ABC), który do działania wykorzystywał 300 lamp elektronowych. Trzecie miejsce na podium zajmuje ENIAC (ang. Electronic Numerical Integrator And Computer – Elektroniczny, Numeryczny Integrator i Komputer) opracowany w 1945 roku przez naukowców z University of Pennsylvania's Moore School of Electical Engineering. Było to ogromne urządzenie. ENIAC składał się z 42 szaf zajmujących powierzchnię 167 m2, z których każda mierzyła ponad 2,4 metra wysokości. Całość ważyła około 27 ton i pożerała 150 kW mocy, co doprowadziło do powstania pogłosek, jakoby każdy rozruch maszyny prowadził do przygaśnięcia świateł w Filadelfii. Ta monstrualna maszyna oferowała taktowanie na poziomie 0,1 MHz, a do jej obsługi wymagany był sztab wykwalifikowanych osób.

Na obecne komputery składa się wiele komponentów, w tym CPU, czyli procesor. Współczesne układy wykorzystują miliardy tranzystorów (Intel Core i7-6700K ma ich 1,75 mld), które mogą przyjmować jeden z dwóch stanów reprezentujących wartości 0 oraz 1.

Jednak, o ile współczesne komputery wykonują kolejne instrukcje i obliczenia bez ingerencji użytkownika, o tyle pierwsze komputery wymagały w pełni manualnego wprowadzania kolejnych poleceń i informacji. W przypadku komputera EINAC służyło do tego około 1,500 przekaźników oraz 6,000 ręcznych przełączników pełniących rolę tranzystorów. Każdy przekaźnik może przyjąć jeden z dwóch stanów:

przez przekaźnik nie przepływa prąd przez przekaźnik przepływa prąc

Można przyrównać to do kranu z wodą. Zależnie od ustawienia kurka woda może się lać lub nie. Analogiczna sytuacja zachodzi w przełącznikach światła w domu. Włączając światła po prostu doprowadzamy do stykania się obwodu, co pozwala na przepływ prądu. Wyłączając światło, przepływ jest zatrzymywany. Każdy z tych stanów ma przypisaną wartość 0 lub 1. Początkowo wartości te wprowadzano poprzez przepinanie kabelków oraz przełączanie przełączników, co było procesem bardzo pracochłonnym.

(1:14-2:35)

Skrócenie czasu potrzebnego na wprowadzenie instrukcji było możliwe dzięki zapisaniu instrukcji na fizycznym nośniku, do czego posłużyły taśmy perforowane (ang. Punch Cards). Były to prostokątne taśmy z kolumnami cyfr. Każda pozycja odpowiadała pojedynczemu bitowi informacji i przenosiła wartości 0 lub 1 (w zależności od tego, czy w danej pozycji była dziurka, czy też nie). Można powiedzieć, że to bardzo daleki przodek znanych obecnie dysków HDD, SSD oraz pamięci Flash.

Zdjęcie: Pete Birkinshaw

Rozwój komputerów prowadził do coraz to większych możliwości, a wprowadzanie kolejnych instrukcji bit za bitem stawało się coraz bardziej nieefektywne.

W związku z tym opracowano język symboliczny (ang. Symbolic Optimal Assembly Program), który pojawił się w 1949 roku i pozwolił na stopniowe przejście ze złożonego kodu maszynowego (zer i jedynek) na prostszy i zrozumiały dla człowieka zestaw poleceń, np. ADD (polecenie: dodaj) czy SUB (polecenie: odejmij). Za ich przełożenie na zestaw instrukcji zrozumiałych dla maszyny odpowiedzialny był asembler. Pozwoliło to na automatyczny rozruch komputera (ang. bootstrapping, choć obecnie funkcjonuje w skróconej formie 'boot'), który mógł następnie wykonać zestaw poleceń zapisanych w asemblerze. Te zazwyczaj przechowywano na taśmach perforowanych lub magnetycznych. Przez wzgląd na niskopoziomowy charakter asemblera konieczne było pisanie programów przeznaczonych dla konkretnego zestawu podzespołów komputerowych, więc program działający na jednej maszynie, nie musiał działać na innej. Oczywiście proces pisania programów dla konkretnej maszyny by w pełni manualny.

(3:35-do końca)

W podobnym czasie, bo w 1948 roku powstał pierwszy komputer z programem zapisanym w pamięci elektronicznej. Z czasem asembler oraz pamięć elektroniczna zdolna do przechowywania kodu (zamiast zapisywania go na taśmach perforowanych) stały się wystarczająco wyrafinowane, by znaleźć program znajdujący się pod konkretnym adresem i go uruchomić, co przyspieszyło rozwój kompilatorów (programów służących do tłumaczenia kodu napisanego w języku programowania na kod maszynowy) oraz języków wysokiego poziomu. Wraz z upływem lat i postępującym rozwojem informatyki pojawiły się pierwsze systemy oparte na tekstowym interfejsie użytkownika - w tym DOS, czyli pradziadek jednego z najpopularniejszych systemów na świecie, jakim bez wątpienia jest Windows (system operacyjny również jest zbiorem programów wymagających uruchomienia, za co - przynajmniej w przypadku Windowsa - odpowiada BIOS, który wczytuje MBR (Master Boot Record) zawierający lokalizację partycji systemowej) – pozwalające na wprowadzanie określonych komend.

Jarosław Kułak
Jarosław Kułak

Leave a Comment