Die meisten Programmiersprachen sind frei von Formatierungsvorschriften, was den Quellcode betrifft. Trotzdem haben viele Firmen interne Code-Formatierungs-Konventionen, an denen sich alle Entwickler zu halten haben. Dadurch wird ein gleicher Codierungs-Stil gefördert und die gute Lesbarkeit des Source Codes gewährleistet. Die Quelltextformatierung ist als Funktion in manchen IDEs (z.B. Eclipse und Visual Studio) enthalten und wird dabei bei der Erzeugung von Quelltext angewendet. Auch die Editoren Emacs und Vim bieten Formatierungshilfen an. Es gibt aber auch eigenständige Software, sogenannte Quelltext-Formatierer - Beautifier, die es dem Entwickler ermöglichen, bereits vorhandenen Quelltext in ein besser lesbares Format zu bringen. In Python ist die Sourcecode-Formatierung ein Syntaxelement, Blöcke werden hier durch ihre Einrückung festgelegt, wodurch Blanks eine syntaktische Bedeutung haben.
Ein Code Snippet (Code Fragment) bezieht sich im engeren Sinne auf einen Teil des Quellcodes, der von einem Editor Programm oder IDE im Source Code eingefügt wird, und ist eine Form der Copy-and-Paste-Programmierung. Einige IDEs wie Eclipse oder Visual Studio unterstützen die Arbeit mit Code Snippets.
Ein Cheatsheet ist eine Art Merkblatt oder Spickzettel. Es wird für Programmiersprachen, Tastaturkürzel oder Programmfunktionen verwendet und soll dabei helfen den Workflow zu beschleunigen. Die wichtigsten Informationen zu einem Thema werden in einem Cheatsheet zusammengefasst und müssen nicht gesucht werden, sollten sie in Vergessenheit geraten.
Programme, die den Code, den der Programmierer schreibt - den Sourcecode - in die binäre Computersprache übertragen, heißen Compiler und Interpreter. Der Vorteil der Interpreter gegenüber dem Compiler ist, dass der gleiche Quellcode auf jeder Zielplattform ausgeführt werden kann. Skriptsprachen werden meist über Interpreter ausgeführt, während Sprachen wie C oder C++ kompiliert werden. Ein besonderer Fall liegt bei Java vor, der Weg vom Sourcecode zur Maschinencode geht hier über einen Zwischenschritt, den sogenannten Java-Bytecode (Befehlssatz des Java Virtual Machine - JVM). Somit gewinnt man auf der einen Seite den Vorteil der Portabilität, den der Interpreter bietet, auf der anderen Seite der Effizienzgewinn durch den Compiler.
Refactoring (Überarbeitung) bezeichnet die - manuelle oder automatisierte - Restrukturierung einer Software (meist) unter Beibehaltung des Funktionsumfangs. Er ist ein zentraler Bestandteil der Agilen Softwareentwicklung. Kaum hat ein Unternehmen eine neue Version einer Software veröffentlicht, stellen Anwender neue Anforderungen für neue Versionen. Im Laufe der Zeit wächst der Funktionsumfang, doch je umfangreicher und älter eine Software und ihre Architektur werden, desto schwieriger wird die Weiterentwicklung. Hier hilft das Refactoring.
Legacy Software ist Software, die häufig schon lange im Einsatz ist und technologisch nicht mehr auf dem aktuellen Stand ist. Legacy Software bereitet in der Regel mit zunehmendem Alter immer neue Probleme, vor allem wenn sie gemeinsam mit modernerer Technologie betrieben wird. Es gibt aber verschiedene Gründe, warum Unternehmen häufig an diese Legacy Software festhalten: weil diese alte Anwendung bildet die Basis für neuere Software, weil die ursprüngliche Entwickler der Software nicht mehr verfügbar sind, weil dieses Programm auf aktuelle Hardware nicht laufen würde und weil eine Aktualisierung dieses alten Programms (Refactoring) finanziell sich nicht lohnen würde.
Eine Programmbibliothek (Library) ist eine Sammlung von (in der Regel) vorkompilierten, wiederverwendbaren Routinen, die ein Programmierer beim Schreiben von Code aufrufen kann, so dass der Programmierer ihn nicht erneut schreiben muss.
Eine Dynamische Linkbibliothek (Dynamic Link Library - DLL) ist eine Beispiel für so eine Programmbibliothek. Klassenbibliotheken haben Routinen die Klassendefinitionen für die objektorientierten Programmierung (OOP) sind. Komponenten der grafischen Benutzeroberfläche (Graphical User Interface - GUI), wie z.B. Bildlaufleisten, Schaltflächen und Fensterroutinen, werden im Allgemeinen in einer Klassenbibliothek gespeichert.
Ein Software Development Kit (SDK) besteht aus mehreren Tools, die (typischerweise) vom Hersteller einer Hardwareplattform, eines Betriebssystems oder einer Programmiersprache bereitgestellt werden.
Eine API (Application Programming Interface - Programmierschnittstelle) besteht aus mehreren Definitionen und Protokollen zur Entwicklung und Integration von Anwendungssoftware. Eine API ist eine Schnittstelle, die es unabhängigen Anwendungen ermöglicht, miteinander zu kommunizieren und Daten auszutauschen. Mithilfe von APIs können Produkte oder Services unabhängig von ihrer Implementierung untereinander kommunizieren. Auf diese Weise lässt sich die Anwendungsentwicklung optimieren, was wiederum Zeit und Geld spart. Um wettbewerbsfähig zu bleiben, müssen Unternehmen die schnelle Entwicklung und Bereitstellung innovativer Services vorantreiben. Eine Methode zur Beschleunigung dieses Prozesses ist die cloud native Anwendungsentwicklung, die auf der Verknüpfung einer Architektur aus Microservice-Anwendungen über APIs basiert.
Der REST-API (Representational State Transfer) wird hauptsächlich in Zusammenhang mit Webservices genannt. REST ist eine Abstraktion der Struktur und des Verhaltens des World Wide Web. REST hat das Ziel, einen Architekturstil zu schaffen, der den Anforderungen des modernen Web besser genügt.
Embedded Programming beschreibt die Software-Erstellung für eingebettete Systeme. Einngebettete Systeme (Embedded Systems) sind Funktionseinheiten, die über einen eigenen Rechenkern verfügen, der in das System "eingebettet" ist. Bei einer klassischen Computer steht viel Arbeitsspeicher (viele Gigabyte als RAM Speicher und Terabyte in Festplattenspeichern oder mehrere 100 Gigabyte SSD-Speicher) zu Verfügung. Aus Sicht der Applikation werden Programm und Daten in einem gemeinsamen Arbeitsspeicher ausgeführt. Ferner glänzen die PCs durch sehr viel Rechenleistung in Form von sehr schnellen CPUs (Singlecore oder Multicore), die mit Taktraten von mehreren Gigabyte die Software-Verarbeitung durchführen. Damit lassen sich gut sehr große Softwarepakete bearbeiten/abarbeiten/ausführen. Bei Embedded-Systemen stehen jedoch nur begrenzte Speichergrößen zur Verfügung - typischerweise für Programmspeicher weniger als 10 Megabyte und für Datenspeicher weniger als 1 Megabyte. Darüber hinaus sind Programm- und Datenspeicher getrennt. In einigen Mikrocontrollern sind mehrere Core-Lokale und globale Speicher implementiert. Auch bei der Rechenleistung werden meist nur Taktraten von bis zu 200 MHz in den Embedded-CPUs erreicht. Der große Vorteil von Embedded-Systemen im Vergleich zu PC-basierenden Systemen liegt in der Realzeit-Fähigkeit (Echtzeit-Fähigkeit). Darunter versteht man die Möglichkeit, die Verzögerungs- bzw. Verarbeitungszeit eines Embedded-Systems genau zu bestimmen. D.h. Wenn ein Eingangssignal erkannt wird, kann eine maximale Reaktionszeit für die Generierung eines Signals an einem Embedded-Systemausgang genau bestimmt werden. Damit bei gleichen Eingangsbedingungen verhält sich das System immer gleich, und das Systemverhalten ist vorhersagbar.
Typische Anwendungen für Embedded-Systeme
- Automobil-Applikationen, Kommunikations und Steuermodule im Fahrzeug
- Weiße Ware: Steuerungen von Wasch- oder Geschirrspülmaschinen und Kühlschränken
- Unterhaltungselektronik (Braune Ware): digitale Radios, Fernseher, Set-Top-Boxen.
- Telekommunikations-Geräte: Mobiltelefone, Gateways (z.B. Fritz-Boxen)
- Industrie- und Medizintechnik, Luft- und Raumfahrt, Militärtechnik
Ganz spezielle Embedded-Systeme sind die Embedded-PCs, die z.B. in Maschinensteuerungen eingesetzt werden. Die Embedded-Software wird in diesem Fall mit speziellen Embedded-Betriebssystemen (z.B. Embedded-Linux, Windows Embedded) zum Ablauf gebracht. Die Software, die für eingebettete Systeme entwickelt wird (Embedded Systems Software), muss Erweiterungen zum ANSI-C Standard enthalten, damit bei der Programmierung schon die Hardware-Nähe und damit die benötigte Zeit für die Ausführung bestimmt werden kann. Embedded-Software wird auch als Firmware bezeichnet. Typischerweise wird die Firmware in einem Flash-Speicher programmiert. Der Vorteil dieser Speicher ist die Möglichkeit von Software-Updates. Die Embedded-Systeme, in denen Embedded-Software verarbeitet wird, sind eine ideale Plattform für Realzeit-Applikationen (Real-time Applications).
Als Frontend bezeichnet man den sichtbaren Teil von Software (Benutzeroberfläche oder User Interface - UI, auch Graphical User Interface - GUI), mit welchem Nutzer interagieren können. Unter Backend versteht man den Teil der Software, welcher für die Benutzer nicht zugänglich ist.
Eine Virtuelle Maschine (VM) ist im Grunde ein virtueller Computer. Das bedeutet, dass sie die gleichen Funktionen bietet wie ein physischer Rechner, aber eigentlich "nur" aus einer Sammlung von Computerdateien besteht, die auf einem physisch vorhandenen Computer ausgeführt werden.VM-Software ist Voraussetzung für moderne Cloud-Plattformen, welche Infrastructure-as-a-Service (IaaS) anbieten. Dem Self Service-Modell folgend werden Nutzern auf Knopfdruck virtualisierte Ressourcen zugewiesen. Aber auch auf für einzelne Nutzer lohnen sich VM-Programme, denn virtuelle Maschinen dienen als reproduzierbare und sichere Arbeitsumgebungen. Bekannte VM sind VmWare und Oracle VirtualBox.
SPS (Speicherprogrammierbare Steuerung oder PLC - Programmable Logic Controller) ist ein elektronisches Gerät, das Steuerungs- und Regelungsaufgaben im Bereich Automatisierungstechnik übernimmt. Die SPS-Programmierung ist die entsprechende Programmierung dieses Gerätes. Bekannte SPS-Software sind Siemens Step7 und CodeSys.
Die CNC (Computer Numerical Control) - Computergestützte numerische Steuerung findet in Fertigungsunternehmen Anwendung, um Programmanweisungen für Computer zur Steuerung von Werkzeugmaschinen zu erstellen.
CAD (Computer Aided Design) umfasst alle EDV unterstützten Aufgaben bezüglich Design, Konstruktion, Planung und Verbesserung neuer Produkte. CAD-Konstrukteure erstellen am Computer digitale Zeichnungen, Konstruktionspläne und Modelle für Produkte und Maschinen, Häuser und Brücken oder ganze Infrastrukturnetze. Bekannte CAD-Software sind AutoCAD, CATIA, SolidWorks, Autodesk Inventor, SpaceClaim, SketchUp und MicroStation von Bentley Systems. MicroStation hat eine eigene Entwickungssprache, C-basiert. Für die Visualisierung von Vermessungspunkten in CAD kann ein Aufnahmepunktübertragungs-Programm (APU) eingesetzt werden.
Ein Geografisches Informationssystem (GIS) bezeichnet ein System zur Erfassung, Verwaltung und Analyse von räumlichen Daten. Eine GIS-Software verarbeitet räumliche Informationen. Räumliche Daten können damit:
- erfasst
- organisiert/reorganisiert
- gespeichert
- bearbeitet
- modelliert
- (geografisch auf digitalen Landkarten) visualisiert
- analysiert
werden. Die Wurzeln des GIS liegen in der Geografie, doch im GIS werden neben Geodaten noch viele weitere Datentypen verarbeitet. Die gewonnenen Informationen dienen der Steuerung von Abläufen, auf ihrer Grundlage können bessere Entscheidungen getroffen werden. Mithilfe von Karten und 3D-Szenen können Sie die räumliche Lage analysieren und Layer mit verschiedensten Informationen in Visualisierungen verwandeln. Durch diese einzigartige Fähigkeit lässt uns GIS tiefere Einblicke in unsere Daten gewinnen und wir erkennen Muster, Beziehungen und Sachverhalte, die uns zu fundierteren Entscheidungen verhelfen. Zu den bekanntesten Herstellern von GIS-Software zählen Smallworld, ESRI (ArcGIS), Intergraph (GeoMedia), Bentley Systems (MicroStation), Autodesk (Topobase und Map3D) und Google Maps. Für die Kataster-Daten in Deutschland gibt es die Systeme ALK, ALKIS und ATKIS.
Ein Netzinformationssystem (NIS) ist ein Instrument zur Erfassung, Verwaltung, Analyse und Präsentation von Betriebsmitteldaten. Diese beziehen sich auf die Netzwerktopologie die in einem einheitlichen Bezugsrahmen gegeben sein muss. Mit dieser besonderen Ausprägung eines Geo-Informationssystems arbeiten Ver- und Entsorgungsunternehmen. Hierbei steht in erster Linie die geometrische und graphische Dokumentation des Leitungsbestands im Vordergrund. Ein Netzinformationssystem ist also eine besondere Ausprägung eines Geoinformationssystems (GIS). Hierbei steht in erster Linie die geometrische und graphische Dokumentation des Leitungsbestands von Versorgungsunternehmen im Vordergrund. Daher fallen sie ebenso in die Kategorie der Betriebsmittelinformationssysteme (Facility-Management-Systeme). Um in einem Netzinformationssystem überführt werden zu können, müssen erst die umfangreichen analogen Pläne (z.B. Elektrizität - Strom, Fernwärme, Telekommunikation, Abwasser, Kataster) der Ver- und Entsorgungsunternehmen digitalisiert werden (ein sehr arbeitsintensiver Prozess). Die meisten Versorgungsfirmen benutzen heutzutage NIS für die Verwaltung Ihrer Daten. Die Grafik eines CAD, GIS oder Netzinformationssystems wird (meist für die Abgabe an den Kunden) geplotet.
Bei der Datenmigration werden Daten von einem Standort an einen anderen, von einem Format in ein anderes oder von einer Applikation in eine andere verschoben. In der Regel passiert dies nach der Einführung eines neuen Systems oder eines neuen Standorts für die Daten. Heutzutage werden Datenmigrationen häufig gestartet, wenn Unternehmen von einer lokalen Infrastruktur und Anwendungen auf cloud-basierten Storage und Applikationen umsteigen, um sie zu optimieren oder zu transformieren. Datenmigrationen gelten als schwierig und risikoreich. Ein spezieller Fall von Datenmigration ist die GIS-Datenmigration.
Jira ist eine Webanwendung, die in der agilen Softwareentwicklung genutzt wird. Die Schwerpunkte von Jira liegen beim Anforderungsmanagement, der Statusverfolgung, beim Beheben von Fehlern und dem operativen Projektmagement. Das zentrale Element von Jira sind die sogenannten Vorgänge oder auch Tickets bzw. Issues.
Bei der Computer Grafik-Typen unterscheidet man zwischen Vektor- und Rastergrafik. Vektorgrafiken bestehen aus geometrisch definierten Grundelementen. So bestehen die einzelnen Vektoren aus Linien, Kurven, Kreisen oder Polygonen die in ihrer Zusammensetzung komplexe Grafiken ergeben können. Diese sogenannten Primitiven benötigen nur wenige Angaben. Bei einem Kreis ist dies zum Beispiel die Position des Kreismittelpunktes und sein Radius. Zudem lassen sich verschiedene Eigenschaften wie die Linienstärke, die Konturfarbe oder diverse Füllmuster und Verläufe festlegen. Daher eignen sich Vektorgrafiken besonders zur Darstellung von geometrischen Designs und Schriften. Zudem benötigen sie oft bedeutend weniger Speicherplatz als Pixelgrafiken und lassen sich verlustfrei vergrößern oder verkleinern, weshalb sie in der Druckindustrie einen hohen Stellenwert besitzen. Vektorgrafiken lassen sich ohne Qualitätsverlust beliebig skalieren.
Eine Rastergrafik oder Pixelgrafik oder Bitmap genannt, besteht aus einzelnen Bildpunkten, die in einem Raster angeordnet sind und denen jeweils ein Farbwert zugeordnet ist. Diese Grafikart definiert sich daher durch ihre Abmessung aus Höhe und Breite in Pixeln, die auch Bildauflösung genannt wird, sowie durch den Umfang der darstellbaren Farben, den man auch als Farbtiefe bezeichnet. Rastergrafiken eigenen sich daher hervorragend zur Darstellung von Fotos und komplexen Farbverläufen. Ein großer Nachteil besteht jedoch in der starken Verschlechterung der Bildqualität sobald man diese Grafiken vergrößert, da durch die Rasterung ein sogenannter Treppeneffekt entsteht, welcher die Bilder dann pixelig oder unscharf wirken lässt. Zudem wird bei Bildformaten, wie zum Beispiel den JPG-Dateien, eine verlustbehaftete Bildkompression eingesetzt, welche die Qualität weiter mindern kann. Die bekannteteste Rasterformate sind JPG/JPEG, PNG und BMP. Ein kostenloses Tool zu Bearbeitung von Rasterdateien ist Gimp.
HTML ("Hypertext Markup Language"), auf deutsch "Hypertext-Auszeichnungssprache", ist ein Format, in dem Webseiten geschrieben werden.
- In einer HTML-Datei schreibt der Ersteller der Webseite den Text einer Website. Mit der HTML-Datei lässt sich ein Text strukturieren und formatieren (z.B. Schriftgröße und Schriftart). Außerdem binden Sie via HTML Links auf andere Webseiten ein oder ergänzen Ihren Text um Bilder, Videos oder Hintergrundgeräusche.
- Browser wie Chrome, Firefox, Safari, Opera oder MS Edge lesen die HTML-Datei in Bruchteilen von Sekunden und zeigen diese anschließend grafisch an.
- In der Regel werden HTML-Dateien nicht mehr selber geschrieben. Webseiten-Betreibern wird diese Arbeit mit einer grafischen Oberfläche abgenommen - dies geschieht z.B. mit Hilfe eines Content Management Systems (CMS).
- Wenn man mit der rechten Maustaste in einem freien Bereich auf einer Webseite klickt und man wählt die Option "Speichern unter" oder "Seite speichern unter" kann man Anschließend die HTML-Datei dieser Webseite herunterladen und sich den Source Code ansehen.
Mit XML (Extensible Markup Language kann man Daten auf gemeinsam nutzbare Weise definieren und speichern. XML unterstützt den Informationsaustausch zwischen Computersystemen wie Websites, Datenbanken und Anwendungen von Drittanbietern.
Mit JSON (Java Script Object Notation) ist eine Beschreibungssprache, das heißt man kann Informationen mit dieser Sprache speichern und von Computer zu Computer senden. JSON ist ein sehr leichtgewichtiges, menschen- und maschinenlesbares Datenformat und hat sich für den Datenaustausch zwischen webbasierten Software etabliert.
E-Kommerz (Electronic Commerce) umfasst alle Handelsaktivitäten, die auf elektronischem Wege stattfinden. Dazu gehören der Verkauf von Waren und Dienstleistungen, aber auch die Zahlungsabwicklung via Online-Banking, die Koordination der Logistik sowie der Kundenservice per Chat, Telefon oder Mail. Kennzeichnend ist also, dass Transaktionen über das Internet angebahnt und durchgeführt werden. Geschäftspartner treten über weite räumliche Distanzen auf einer Online-Plattform miteinander in Kontakt.
Application Lifecycle Management (ALM) bezeichnet die Überwachung einer Anwendung von ihrer anfänglichen Planung bis zum Support-Ende - also über den gesamten Lebenszyklus hinweg. Das umfasst auch, wie Änderungen an einer Applikation dokumentiert und verfolgt werden. ALM ist ein weit gefasster Begriff, der eine veränderte Wahrnehmung der Softwareentwicklung aufzeigt und sich im DevOps-Begriff widerspiegelt. DevOps bezeichnet die Vermischung von Aufgaben, die in einem Unternehmen vom Entwicklungs- (Development) und IT-Betriebsteams (Operations) wahrgenommen werden. In der Vergangenheit arbeitete das Entwicklungsteam häufig unabhängig von anderen Abteilungen und setzte dabei das Wasserfallmodell ein. Anschließend übergab die Entwicklungsabteilung die fertiggestellte Software an das IT-Betriebsteam, das sich um die Bereitstellung und Wartung der Anwendung kümmern musste. Mittlerweile ist es allerdings zur gängigen Praxis geworden, das Entwickler ein agileres Modell verfolgen und auch nach der Implementierung in die Arbeit an der Anwendung einbezogen werden. Dabei arbeiten sie sowohl mit Anwendern als auch im IT-Betrieb zusammen, um bei Bedarf inkrementelle Änderungen zu betätigen. Ein bekannter ALM ist Agosense Symphony. Andere ALMs sind: codebeamer, Jama Software, Visure Requirements, MeisterTask und Microsoft Azure DevOps.
Ein Customer-Relationship-Management-System (CRM) unterstützt das Management von Kundendaten. Es erleichtert das Vertriebsmanagement, liefert nützliche Erkenntnisse, kann mit sozialen Netzwerken integriert werden und vereinfacht die Teamkommunikation. Cloudbasierte CRM-Systeme ermöglichen komplett mobiles Arbeiten und bieten Zugang zu einem Ökosystem maßgeschneiderter Apps.
ERP (Enterprise Resource Planning) - Unternehmensressourcenplanung ist definiert als ein System, das Geschäftsprozesse in den Bereichen Finanzen, Fertigung, Vertrieb, Lieferkette, Personalwesen und Betrieb automatisiert und verwaltet. Der bekannteste und größte Hersteller von ERP ist SAP.
Unter Cybersicherheit versteht man Maßnahmen, um Computer, Server, Mobile Geräte, elektronische Systeme, Netzwerke und Daten gegen böswillige Angriffe zu verteidigen. Sie wird auch als IT-Sicherheit oder elektronische Datensicherheit bezeichnet. Dazu gehört auch das Einsetzen eines Antivirenprogramms (Virenscanner) und eines Firewalls. Virenscanner sind Software, die Schadprogramme (Malware) z. B. Computerviren, Computerwürmer oder Trojanische Pferde aufspüren, blockieren, gegebenenfalls betroffene Nutzer informieren und die Schadsoftware beseitigen solle. Ein Firewall ist eine Schutzmaßnahme, um unerlaubte Zugriffe von außen auf einen Rechner oder ein Netzwerk zu verhindern. Er verhindert dass Hacker zur den Daten des Computers durchdringen können. Virenscanner können prinzipiell nur bekannte Malware erkennen und somit nicht vor allen Bedrohungen schützen.
Heutzutage ist Cybersicherheit eine milliardenschwere Branche mit einer ständig wachsenden Liste von Unternehmen, die sich auf die Entwicklung und Implementierung von Cybersicherheitslösungen spezialisiert haben. Firewalls und die Verschlüsselung sollen sowohl Einzelpersonen als auch Unternehmen vor der sich ständig weiterentwickelnden Bedrohung durch Cyberkriminalität schützen.
Einer der größten Trends in der Cybersicherheit ist die Integration von künstlicher Intelligenz (KI) und maschinellem Lernen (ML). Diese Technologien haben das Potenzial, unsere Herangehensweise an Cybersicherheit zu revolutionieren, indem sie es uns ermöglichen, riesige Datenmengen zu analysieren und Bedrohungen in Echtzeit zu identifizieren. Mithilfe von Algorithmen für ML können beispielsweise Anomalien im Netzwerkverkehr erkannt, potenzielle Angriffe identifiziert und darauf reagiert werden, bevor sie erheblichen Schaden anrichten können. KI und ML können auch zur Analyse großer Datenmengen eingesetzt werden und dabei helfen, Muster und Trends zu erkennen, die auf einen Cyberangriff hinweisen können. Im Bereich der Cybersicherheit hat das Katz-und-Maus-Spiel zwischen Hackern und Verteidigern mit dem Aufkommen der KI-Technologie eine neue Wendung genommen.
Hacker, immer auf der Suche nach effizienteren und effektiveren Möglichkeiten, die Sicherheit zu durchbrechen, haben die Macht der KI genutzt, um Passwörter auf beispiellose Weise zu knacken. So gibt es fünf Strategien, die Hacker neulich anwenden:
- Intelligente Brute-Force-Angriffe
- Passwortvorhersagemodelle
- KI-gestützte Wörterbuchangriffe
- Auf maschinellem Lernen basierende Angriffe
- Hybride Angriffe
Es gibt 5 Cyber-Angriffe jede Sekunde und es entstehen 203 Milliarden € Schaden pro Jahr durch solche Angriffe auf deutsche Unternehmen. Bei den Cyberangriffen wurden vor allem Attacken auf Passwörter, Phishing und die Infizierung mit Schadsoftware bzw. Malware durchgeführt. Auch DDoS-Attacken, um IT-Systeme lahmzulegen und Ransomware-Attacken waren häufig.
Der Begriff Hacker (auch Computer-Hacker) bezeichnet zumeist Personen oder Personengruppen, die unautorisiert in fremde IT-Systeme eindringen. Als Hack (oder Hacking-Angriff) wird dementsprechend erst einmal der unerlaubte Zugriff auf ein Fremdgerät benannt. Neben kriminellen Hackern beziehungsweise sogenannten Black-Hat-Hackern gibt es auch White-Hat-Hacker und Gray-Hat-Hacker. Ein White-Hat-Hacker (oder ethischer Hacker) wird von einem Unternehmen angeheuert, um die Systeme auf Sicherheitsschwachstellen hin zu prüfen. Dazu führen diese Hacker Penetrationstests durch. Penetrationstests sind simulierte, wiederholte Cyberangriffe auf die Systeme eines Unternehmens.
In der Software-Engineering wird KI immer häufiger eingesetzt und kann Entwicklern dabei helfen, die Generierung und Umgestaltung von Code und die Dokumentation um 20 bis 50% zu beschleunigen (McKinsey-Bericht). Unter generativem Coding versteht man den Einsatz generativer KI zur Unterstützung der Softwareentwicklung. Es war eine der ersten Anwendungen der generativen KI-Technologie, die kommerzialisiert wurde.
Generative KI, GPT-Engineer, ChatGPT und große Sprachmodelle (LLMs) wie GitHub Copilot und andere KI-Codegenerierungstools verändern die Softwareentwicklungspraktiken und die Produktivität.
LISP wurde zu einer gemeinsamen Sprache für die Programmierung von KI. Code Llama ist ein KI-System, das Code auf Englisch generiert und erklärt. Ähnlich wie GitHub Copilot und Amazon CodeWhisperer unterstützt Code Llama Entwickler beim Codieren und Debuggen in verschiedenen Sprachen wie Python, Java und C++. Es bestehen jedoch Bedenken, da KI-Codierungstools Sicherheitslücken schaffen oder geistiges Eigentum verletzen können. Entwickler nutzen immer häufiger kontinuierliche Tests mit generativen KI.
Computer-Simulationen werden in der Welt der Wissenschaft eingesetzt. Diese hat sich in der letzten Jahrzehnten stark verändert. Viele Experimente finden heute nicht mehr in realen Laboren statt, sondern werden virtuell am Computer simuliert. Die heutige Forschung ist ohne Simulationen kaum noch denkbar: sie werden in Medizin, Biowissenschaften, Physik, Material- oder Ingenieurwissenschaften eingesetzt. Sie ermöglichen Einblicke in Bereiche, die uns sonst aus zahlreichen Gründen verwehrt bleiben würden.
Simulationen werden eingesetzt wenn:
-
Experimente zu teuer sind (z.B. Crashtest-Simulationen, Testen des aerodynamischen Verhalten von Transportmittel im Windkanal)
-
Experimente zu gefährlich währen (z.B. Versuche zue Kernschmelze und Speicherung von CO2 im Boden)
-
Ein System sehr groß oder sehr klein ist (z.B. Experimente im Weltall oder im Bereich der Atome und Moleküle)
-
Prozesse sehr schnell oder langsam ablaufen (z.B. Entstehung und Sterben von Galaxien, Explosion eine Supernova)
-
Das System in der Wirklichkeit noch nicht existiert (z.B. Simulieren der Eigenschaften von neuen Materialien)
-
Experimente ethisch nicht vertretbar sind (z.B. in der Medizin oder Pilotenausbildung)
SourceForge ist ein Webhosting-Dienst, der auf die Ablage von Open Source Software spezialisiert ist. Er bietet Programmierern Speicherplatz für Quellcodes, binäre Dateien und eine Projektwebseite.
GitHub ist auch ein Webhosting-Dienst zur Versionsverwaltung für Software-Entwicklungsprojekte. Beide, Sourceforge und GitHub bieten Entwickler das Verwalten ihrer Open-Source-Programme und die Möglichkeit zum Download dieser Anwendungen an.
StackOverflow ist eine internationale Plattform für Programmierer mit 8 Millionen Nutzern.
Anzahl Source Code-Zeilen von bekannter Software
- Betriebssystem Unix, 1971 (20.000 Zeilen)
- Einfaches Spiele-App (50.000 Zeilen)
- Computerspiel Minecraft (285.000 Zeilen)
- Computerspiel "Age of Empires" (2 Millionen Zeilen)
- Software des Hubble Teleskops (2 Millionen Zeilen)
- Software des Space Shuttles (3 Millionen Zeilen)
- Software des Mars Curiosity Rovers (5 Millionen Zeilen)
- Flug-Software des Boeing 787 (6 Millionen Zeilen)
- Betriebssystem Android (12 Millionen Zeilen)
- Betriebssystem Linux 3.2, 2012 (15 Millionen Zeilen)
- Webbrowser Mozilla Firefox (22 Millionen Zeilen)
- Microsoft Visual Studio, 2012 (50 Millionen Zeilen)
- Software des Large Hadron Collider von CERN (50 Millionen Zeilen)
- Betriebssystem Microsoft Windows 7 (40 Millionen Zeilen)
- Facebook (62 Millionen Zeilen)
- Betriebssystem Apple Mac OS Tiger (85 Millionen Zeilen)
- Software des VW Golf 8 (100 Millionen Zeilen)
- SAP NetWeaver, 2007 (238 Millionen Zeilen)
- Alle Internet-Dienste von Google (2 Milliarden Zeilen)