Die externe Softwareentwicklung wird von IT-Herstellern, herstellernahen Beratern und unabhängigen Beratern sowie freien Softwarenentwicklern angeboten. Sie reicht von der Implementierung und Anpassung von Standardsoftware bis zur schlüsselfertigen Lieferung individuell programmierter Software. Ein besonders Konzept stellt die Entwicklung lizenzfreier Software, sogenannter Open-Source-Software dar.
Wenn Aufgaben oder Prozesse nicht mit (angepasster) Standardsoftware abgewickelt werden können, ist individuelle Programmierung gefragt. Sie wird von externen Softwarehäusern wie von Freelancern angeboten. Auswahlkriterien sind Branchenerfahrung und Zuverlässigkeit, ggf. durch Referenzen nachgewiesen, sowie die Kenntnis der Anwendungsplattform und der Betriebssysteme.
Die Entwicklung von datenbank-basierten Anwendungen von herstellernahen und von unabhängigen Beratern angeboten. Entscheidungskriterien sind Branchenerfahrung und Zuverlässigkeit.
Die Entwicklung von Software für Automatisierung und industrielle Kommunikation muss sich in der Regel an den technischen Gegebenheiten orientieren, wenn die Basistechniken (noch) nicht standardisiert sind. In der Automatisierungstechnik liegt der Fokus auf Sensortechnik, industrieller Bildverarbeitung, Robotik, Ablaufsteuerung und Gebäudetechnik. In der industriellen Kommunikation - als Basis der Automatisierungstechnik - werden häufig noch unterschiedliche und inkompatible Systeme eingesetzt; hier können systemübergreifende Lösungen den individuellen Entwicklungsaufwand reduzieren.
Mikrocontroller werden meist in den hardwarenahen Programmiersprachen Assembler oder C bzw. C-Derivaten programmiert. Softwareentwickler können die Kundenanforderungen in eine dieser Sprachen umsetzen.
Chatbots sind, zunächst allgemein betrachtet, verschiedenartige text- oder sprachbasierte Dialogsysteme, die es einem menschlichen Nutzer ermöglichen sollen, mit natürlicher Sprache mit einem technischen System zu kommunizieren. Der Begriff Chatbot setzt sich aus den englischen Wörtern "chat" für "Plauderei" und "bot" für gekürzt "Roboter" zusammen. Sinn und Zweck eines jeden Chatbots ist es, das Anliegen bzw. die Absicht des menschlichen Dialogpartners anhand seiner Eingaben zu erkennen, um automatisiert eine qualifizierte Antwort, in der Regel eine themenbezogene Information, geben zu können und/oder selbsttätig eine Aktion anzustoßen. Die einfachsten Chatbots (Keyword Chatbots) antworten auf einfache, textbasierte Fragen anhand von Schlüsselwörtern, die in einer Datenbank hinterlegt und mit einer entsprechenden Antwort verknüpft sind. Andere Chatbots suchen nach systematischen Mustern (Pattern) in der Anfrage (per Text oder Sprache) und gelangen über einen zuvor programmierten Entscheidungsbaum und ggf. einem Thesaurus zu einer qualifizierten Antwort. Diese beiden Typen von Chatbots arbeiten streng regelbasiert und sind nur themenspezifisch einzusetzen; sie werden oft bei FAQ-Prozessen und bei einfacheren Servicediensten verwendet. Zu einer anderen Kategorie von Chatbots zählen zum einen die gerätebezogenen persönlichen Assistenten (Assistance Chatbots), die auf Sprachbefehle reagieren und beispielsweise elektronische Kalendereinträge vornehmen (Beispiel Siri, Cortana) und zum anderen die mit externen Geräten vernetzbaren Chatbots, die bevorzugt über Sprachsteuerung auch Multi-Mediageräte, Haushaltsgeräte etc. steuern können, wie z. B. Google Assistant und Alexa. Diese erwähnte Art von Chatbots beherrscht das Natural Language Processing (NLP) zur Sprachsteuerung, ist selbstlernend mittels Methoden der Künstlichen Intelligenz (Deep Learning) und kann universell eingesetzt werden. Softwareentwicklern stehen zur Einbindung der Chatbots entsprechende Entwicklungsplattformen offen zur Verfügung.
Software-Reengineering bezeichnet die grundlegende Überarbeitungung von Software - meist bei gleichbleibender Funktionalität - zur Verbesserung der Qualität oder zur Portierung auf eine andere Plattform. Fehlen Spezifikation oder Dokumentation der Software, so werden diese vorab per "Reverse Engineering" erstellt.
Softwareanpassungen erfolgen meist bei Standardsoftware, um sie für für die individuellen Gegebenheiten und Anforderungen zu optimieren.
Application-Change-Services unterstützen die Migration von Softwaresystemen auf eine neue Plattform. Nicht zu verwechseln mit "Application Change Lifecycle Management".
Softwarewartung dient der Erhaltung der Einsatzfähigkeit einer Software unter veränderten Bedingungen, Softwarepflege dient der Verbesserung.
Die Software-Integration verknüpft verschiedene Anwendungen - zur Verringerung und Vermeidung von Schnittstellen. Dabei können mehrere arbeitsteilige Applikationen in einer Anwendung zusammengefasst werden (Funktionsintegration), ein einheitliches Datenmodell verwendet werden (Datenintegration) oder die verschiedenen Funktionen entlang der Geschäftsprozesse mit Hilfe einer Integrationsplattform miteinander integriert werden (Geschäftsprozessintegration). Bei der Systemintegration werden Software und Hardware verschiedener Hersteller beim Kunden zu einer funktionsfähigen Plattform zusammengeführt.
Software-Rollout (auch Software-Distribution) bezeichnet den Vorgang des Verteilens von Software auf die Computer-Arbeitsplätze eines Unternehmens oder einer Organisation. Spezielle Rollout-Software unterstützt diesen Vorgang - vor allem bei vielen betroffenen Arbeitsplätzen. Wird die Software (wieder) zentral gehostet, dann beschreibt der Begriff Rollout organisatorische Maßnahmen wie Marketing, Training, Monitoring und Reporting.
Die Verteilung von Software auf die Computer-Arbeitsplätze eines Unternehmens oder einer Organisation wird als Software-Rollout oder Software-Distribution bezeichnet. Die zu verteilende Software wird hierfür durch "Paketieren" in das Format der verwendeten Verteilsoftware zusammengestellt.
Softwareinstallation erfolgt - je nach Plattform - durch standardisierte Installationsprogramme (PC) oder - in komplexen Umgebungen - in "Handarbeit" durch interne oder externe Experten.
Softwaretests - im engeren Sinne - werden im Rahmen der Softwareentwicklung durchgeführt, häufig mit entsprechender Testsoftware. Bewertet wird die Funktionalität und Qualität der Software gemäß den Vorgaben, die Ergebnisse dienen der Fehlerbehebung. Umgangssprachlich beschreibt "Softwaretest" alle Maßnahmen zur Sicherstellungung der Softwarequalität (Planung, Vorbereitung, Steuerung, Durchführung, Dokumentation, Usability usw.).
Unter Usability-Tests versteht man die Untersuchung der Gebrauchstauglichkeit von Software- und Hardwareprodukten durch eine (kleine) Gruppe unabhängiger Benutzer auf Probe, um bereits möglichst noch im Entwicklungsstadium etwaige vorhandene Mängel oder Schwächen in der Benutzerführung oder allgemein in der Mensch-Maschine-Interaktion auszumachen. Um genau die kritischen Punkte der Handlungsabläufe, z. B. Abbruchvorgänge usw., der Probanden festhalten zu können, werden verschiedene Formen der Aufzeichnung wie z. B. Mausbewegungen, Mausklicks, Tastatureingaben, Blickbewegungen sowie Bildschirmaufzeichnungen, Ton- und Videoaufnahmen zur Auswertung herangezogen. Außerdem werden die Testpersonen anschließend zu dem Produkt befragt. Ziel von Usability-Tests ist es, die Benutzerfreundlichkeit eines Produktes so zu gestalten, dass seine Bedienung und Anwendung als möglichst einfach und verständlich empfunden wird. Unter User-Experience versteht man allgemein das "Nutzungserlebnis" oder "Anwendererlebnis" eines Produkts, einer Software oder eines Dienstes, wird aber meist in Verbindung mit Websites, Portalen oder Apps gebracht. Spezielle Tests mit Versuchspersonen sollen beispielsweise klären, ob eine Website trotz Bedienungsfehler stabil bleibt, ob die angebotenen Funktionen als nützlich angesehen werden und wie schnell sich dem Nutzer der Sinn und Zweck einer interaktiven Website erschließt. Bei User-Experience-Tests werden insbesondere die Wahrnehmungen (z. B. über Blickerfassung), die psychologischen und physiologischen Reaktionen sowie die Erwartungen der Versuchspersonen untersucht, die sich während der Benutzung eines Produktes, einer Anwendungssoftware, einer Website etc. ergeben.
Software-Lokalisierung (oft mit L10N abgekürzt) umfaßt die Anpassung an die in einem Land (einer Region) vorherrschende Sprache und ggf. an weitere rechtliche und kulturelle Rahmenbedingungen.
Anwendungsvirtualisierung ermöglicht die Ausführung von Anwendungen auf einem Arbeitsplatz-PC, ohne dass diese auf dem PC installiert werden müssen. Die virtualisierte Anwendung läuft stattdessen auf einem Server in einer virtuellen Umgebung; dort sind auch alle Registry-Einträge, Dateien und andere Komponenten vorhanden, die das Programm zur Ausführung benötigt.
Beim "Nearshoring" - als Sonderform des "Offshoring" - wird die Softwareentwicklung in nahe gelegene Länder verlagert - aus deutscher Sicht sind das Südosteuropa und Osteuropa.
Beim "Offshoring" wird die Softwareentwicklung in fernere Länder verlagert - Schwerpunkte sind Indien, China und weitere asiatische Länder, engagiert sind aber auch nordafrikanische und südamerikanische Länder.