Softwareentwicklung -Software engineering

Software Engineering ist ein systematischer Engineering- Ansatz zur Softwareentwicklung .

Ein Softwareingenieur ist eine Person, die die Prinzipien der Softwaretechnik anwendet, um Computersoftware zu entwerfen, zu entwickeln, zu warten, zu testen und zu bewerten . Der Begriff Programmierer wird manchmal als Synonym verwendet, kann aber auch keine Konnotationen von Ingenieurausbildung oder -fähigkeiten haben.

Engineering-Techniken werden verwendet, um den Softwareentwicklungsprozess zu informieren, der die Definition, Implementierung, Bewertung, Messung, Verwaltung, Änderung und Verbesserung des Softwarelebenszyklusprozesses selbst umfasst. Es nutzt stark das Software-Konfigurationsmanagement, bei dem es darum geht, Änderungen an der Konfiguration systematisch zu kontrollieren und die Integrität und Rückverfolgbarkeit der Konfiguration und des Codes während des gesamten Systemlebenszyklus aufrechtzuerhalten. Moderne Prozesse verwenden Software-Versionierung .

Geschichte

Ab den 1960er Jahren wurde Software Engineering als eigene Art von Engineering angesehen . Darüber hinaus wurde die Entwicklung des Software-Engineerings als Kampf angesehen. Es war schwierig, mit der Hardware Schritt zu halten, was den Softwareentwicklern viele Probleme bereitete. Zu den Problemen gehörte Software, die das Budget überschritten hatte, Fristen überschritten hatte, umfangreiches Debugging und Wartung erforderte und die Anforderungen der Verbraucher nicht erfüllte oder gar nicht fertiggestellt wurde. 1968 veranstaltete die NATO die erste Software-Engineering-Konferenz, auf der Fragen im Zusammenhang mit Software angesprochen wurden: Richtlinien und bewährte Verfahren für die Entwicklung von Software wurden festgelegt.

Die Ursprünge des Begriffs "Software Engineering" wurden verschiedenen Quellen zugeschrieben. Der Begriff „Software-Engineering“ erschien in einer Liste von Dienstleistungen, die von Unternehmen in der Juni-Ausgabe 1965 von COMPUTERS and AUTOMATION angeboten wurden, und wurde formeller in der August-Ausgabe 1966 von Communications of the ACM (Volume 9, number 8) „letter to the ACM-Mitgliedschaft“ des ACM-Präsidenten Anthony A. Oettinger ist damit auch der Titel einer NATO-Konferenz 1968 von Professor Friedrich L. Bauer verbunden , der ersten Konferenz zum Thema Software Engineering. Margaret Hamilton beschrieb die Disziplin "Software Engineering" während der Apollo-Missionen, um dem, was sie taten, Legitimität zu verleihen. Damals wurde eine „ Softwarekrise “ wahrgenommen. Die 40. International Conference on Software Engineering (ICSE 2018) feiert 50 Jahre „Software Engineering“ mit den Keynotes der Plenary Sessions von Frederick Brooks und Margaret Hamilton .

1984 wurde das Software Engineering Institute (SEI) als staatlich finanziertes Forschungs- und Entwicklungszentrum mit Hauptsitz auf dem Campus der Carnegie Mellon University in Pittsburgh, Pennsylvania, USA, gegründet. Watts Humphrey gründete das SEI Software Process Program, das darauf abzielt, den Softwareentwicklungsprozess zu verstehen und zu verwalten. Die eingeführten Prozessreifegrade würden zum Capability Maturity Model Integration for Development (CMMI-DEV), das definiert, wie die US-Regierung die Fähigkeiten eines Softwareentwicklungsteams bewertet.

Moderne, allgemein akzeptierte Best Practices für Software Engineering wurden vom ISO/IEC JTC 1/SC 7 Subcommittee gesammelt und als Software Engineering Body of Knowledge (SWEBOK) veröffentlicht. Software Engineering gilt als eine der wichtigsten Computerdisziplinen .

Definitionen und Terminologiekontroversen

Bemerkenswerte Definitionen von Software Engineering umfassen:

  • „Die systematische Anwendung wissenschaftlicher und technologischer Kenntnisse, Methoden und Erfahrungen auf das Design, die Implementierung, das Testen und die Dokumentation von Software“ – The Bureau of Labor Statistics – IEEE Systems and Software Engineering – Vocabulary
  • „Die Anwendung eines systematischen, disziplinierten, quantifizierbaren Ansatzes für die Entwicklung, den Betrieb und die Wartung von Software “ – IEEE Standard Glossary of Software Engineering Terminology
  • „eine Ingenieurdisziplin, die sich mit allen Aspekten der Softwareproduktion befasst“ – Ian Sommerville
  • „die Etablierung und Anwendung solider Ingenieursprinzipien, um auf realen Maschinen zuverlässig und effizient arbeitende Software wirtschaftlich zu erhalten“ – Fritz Bauer
  • „ein Zweig der Informatik, der sich mit dem Entwurf, der Implementierung und der Wartung komplexer Computerprogramme befasst “ – Merriam-Webster
  • „‚Software-Engineering‘ umfasst nicht nur das Schreiben von Code, sondern alle Tools und Prozesse, die eine Organisation verwendet, um diesen Code im Laufe der Zeit zu erstellen und zu pflegen. […] Software-Engineering kann als ‚im Laufe der Zeit integriertes Programmieren‘ betrachtet werden .‘“ – Softwareentwicklung bei Google

Der Begriff wurde auch weniger formell verwendet:

  • als umgangssprachlicher zeitgenössischer Begriff für die breite Palette von Aktivitäten, die früher als Computerprogrammierung und Systemanalyse bezeichnet wurden ;
  • als allgemeiner Begriff für alle Aspekte der Praxis der Computerprogrammierung im Gegensatz zur Theorie der Computerprogrammierung, die formal als Unterdisziplin der Informatik studiert wird ;
  • als der Begriff, der die Befürwortung eines bestimmten Ansatzes zur Computerprogrammierung verkörpert, einer, der darauf drängt, dass sie als Ingenieurdisziplin und nicht als Kunst oder Handwerk behandelt wird, und die Kodifizierung empfohlener Praktiken befürwortet.

Etymologie von "Software-Ingenieur"

Margaret Hamilton förderte den Begriff „Software Engineering“ während ihrer Arbeit am Apollo-Programm . Der Begriff "Engineering" wurde verwendet, um anzuerkennen, dass die Arbeit genauso ernst genommen werden sollte wie andere Beiträge zum Fortschritt der Technologie. Hamilton beschreibt ihre Verwendung des Begriffs:

Als ich zum ersten Mal auf den Begriff kam, hatte zumindest in unserer Welt noch niemand davon gehört. Es war lange Zeit ein andauernder Witz. Sie machten mir gern Witze über meine radikalen Ideen. Es war ein denkwürdiger Tag, als einer der angesehensten Hardware-Gurus allen in einem Meeting erklärte, er stimme mir zu, dass der Prozess des Erstellens von Software auch als Ingenieursdisziplin betrachtet werden sollte, genau wie bei Hardware. Nicht wegen seiner Akzeptanz des neuen "Begriffs" per se, sondern weil wir uns seine und die Akzeptanz der anderen im Raum als eigenständiges Ingenieurgebiet verdient hatten.

Eignung des Begriffs

Einzelne Kommentatoren sind sich scharf darüber einig, wie Software Engineering oder seine Legitimität als Engineering-Disziplin definiert werden soll. David Parnas hat gesagt, dass Software Engineering tatsächlich eine Form von Engineering ist. Steve McConnell hat gesagt, dass es nicht so ist, aber dass es so sein sollte. Donald Knuth hat gesagt, dass Programmieren eine Kunst und eine Wissenschaft ist. Edsger W. Dijkstra behauptete, dass die Begriffe Software-Engineering und Software-Ingenieur missbraucht wurden und als schädlich angesehen werden sollten, insbesondere in den Vereinigten Staaten .

Aufgaben in Großprojekten

Software Anforderungen

Beim Requirements Engineering geht es um die Erhebung, Analyse, Spezifikation und Validierung von Anforderungen an Software . Softwareanforderungen können von drei verschiedenen Typen sein. Es gibt funktionale Anforderungen , nicht-funktionale Anforderungen und Domänenanforderungen. Der Betrieb der Software sollte durchgeführt werden und es sollte erwartet werden, dass der Benutzer die richtige Ausgabe verwendet. Nichtfunktionale Anforderungen befassen sich mit Themen wie Portabilität, Sicherheit, Wartbarkeit, Zuverlässigkeit, Skalierbarkeit, Leistung, Wiederverwendbarkeit und Flexibilität. Sie werden in die folgenden Typen eingeteilt: Schnittstellenbeschränkungen, Leistungsbeschränkungen (z. B. Reaktionszeit, Sicherheit, Speicherplatz usw.), Betriebsbeschränkungen, Lebenszyklusbeschränkungen (Wartbarkeit, Portabilität usw.) und wirtschaftliche Beschränkungen. Kenntnisse über die Funktionsweise des Systems oder der Software sind erforderlich, wenn es darum geht, nichtfunktionale Anforderungen zu spezifizieren. Domänenanforderungen haben mit der Eigenschaft einer bestimmten Kategorie oder Domäne von Projekten zu tun.

Software-Design

Beim Softwaredesign geht es um den Prozess der Definition der Architektur, Komponenten, Schnittstellen und anderer Merkmale eines Systems oder einer Komponente. Dies wird auch als Softwarearchitektur bezeichnet . Softwaredesign wird in drei verschiedene Designebenen unterteilt . Die drei Ebenen sind Schnittstellendesign , architektonisches Design und detailliertes Design . Interface-Design ist die Interaktion zwischen einem System und seiner Umgebung. Dies geschieht auf einem hohen Abstraktionsniveau zusammen mit dem Innenleben des Systems. Architekturdesign hat mit den Hauptkomponenten eines Systems und ihren Verantwortlichkeiten, Eigenschaften, Schnittstellen und ihren Beziehungen und Wechselwirkungen zu tun, die zwischen ihnen auftreten. Das detaillierte Design umfasst die internen Elemente aller wichtigen Systemkomponenten, ihre Eigenschaften, Beziehungen, Verarbeitung und normalerweise ihre Algorithmen und die Datenstrukturen .

Software-Konstruktion

Die Softwarekonstruktion, die Haupttätigkeit der Softwareentwicklung, ist die Kombination aus Programmierung , Komponententests , Integrationstests und Debugging . Das Testen während dieser Phase wird im Allgemeinen vom Programmierer durchgeführt, während sich die Software im Aufbau befindet, um zu überprüfen, was gerade geschrieben wurde, und um zu entscheiden, wann der Code bereit ist, an den nächsten Schritt gesendet zu werden.

Softwaretest

Softwaretests sind empirische, technische Untersuchungen, die durchgeführt werden, um Stakeholdern Informationen über die Qualität des zu testenden Produkts oder der zu testenden Dienstleistung mit verschiedenen Ansätzen wie Unit-Tests und Integrationstests zu liefern . Es ist ein Aspekt der Softwarequalität . Als separate Phase in der Softwareentwicklung wird sie normalerweise von Qualitätssicherungsmitarbeitern oder einem anderen Entwickler als dem, der den Code geschrieben hat, durchgeführt.

Software-Wartung

Die Softwarewartung bezieht sich auf die Aktivitäten, die erforderlich sind, um nach der Auslieferung des Softwareprodukts kostengünstigen Support zu leisten. Bei der Softwarewartung werden Softwareanwendungen nach der Verteilung modifiziert und aktualisiert, um Fehler zu beheben und ihre Leistung zu verbessern. Software hat viel mit der realen Welt zu tun und wenn sich die reale Welt ändert, ist Softwarewartung erforderlich. Die Softwarewartung umfasst: Fehlerbehebung , Optimierung, Löschung ungenutzter und verworfener Funktionen und Erweiterung bereits vorhandener Funktionen. Normalerweise macht die Wartung etwa 40 % bis 80 % der Projektkosten aus, daher hält die Konzentration auf die Wartung die Kosten niedrig.

Ausbildung

Kenntnisse in der Computerprogrammierung sind eine Voraussetzung, um Software-Ingenieur zu werden. Im Jahr 2004 hat die IEEE Computer Society den SWEBOK herausgegeben, der als ISO/IEC Technical Report 1979:2005 veröffentlicht wurde und den Wissensbestand beschreibt, den sie einem graduierten Softwareingenieur mit vier Jahren Erfahrung empfehlen sollten. Viele Softwareingenieure steigen mit einem Hochschulabschluss oder einer Berufsschulausbildung in den Beruf ein. Ein internationaler Standardlehrplan für Bachelor-Abschlüsse in Softwaretechnik wurde von der Joint Task Force on Computing Curricula der IEEE Computer Society und der Association for Computing Machinery definiert und 2014 aktualisiert. Eine Reihe von Universitäten haben Studiengänge für Softwaretechnik; Ab 2010 gab es in den Vereinigten Staaten 244 Campus Bachelor of Software Engineering- Programme, 70 Online-Programme, 230 Master-Programme, 41 Promotions-Programme und 69 Zertifikats-Programme.

Neben der Hochschulausbildung sponsern viele Unternehmen Praktika für Studenten, die Karrieren in der Informationstechnologie anstreben. Diese Praktika können den Studenten in interessante reale Aufgaben einführen, denen typische Softwareingenieure jeden Tag begegnen. Ähnliche Erfahrungen können durch den Wehrdienst im Software Engineering gesammelt werden.

Studiengänge Software Engineering

Die Hälfte aller Praktiker hat heute einen Abschluss in Informatik , Wirtschaftsinformatik oder Informationstechnologie . Eine kleine, aber wachsende Zahl von Praktikern hat einen Abschluss in Softwaretechnik. 1987 führte das Department of Computing am Imperial College London den ersten dreijährigen Bachelor-Abschluss in Softwaretechnik in Großbritannien und der Welt ein. im folgenden Jahr richtete die University of Sheffield ein ähnliches Programm ein. 1996 richtete das Rochester Institute of Technology den ersten Bachelor-Studiengang für Softwaretechnik in den Vereinigten Staaten ein, erhielt jedoch erst 2003 die ABET - Akkreditierung, zur gleichen Zeit wie die Rice University , die Clarkson University , die Milwaukee School of Engineering und die Mississippi State University ihre erhalten. 1997 war das PSG College of Technology in Coimbatore, Indien das erste, das einen fünfjährigen integrierten Master of Science-Abschluss in Software Engineering einführte.

Seitdem wurden an vielen Hochschulen grundständige Software Engineering-Studiengänge etabliert. Zwischen 2001 und 2004 wurde von einem Lenkungsausschuss mit finanzieller Unterstützung der Association for Computing Machinery und der IEEE Computer Society ein internationales Standardcurriculum für Bachelor-Abschlüsse in Softwaretechnik, SE2004 , definiert . Ab 2004 bieten in den USA etwa 50 Universitäten Software-Engineering-Abschlüsse an, die sowohl Informatik als auch technische Prinzipien und Praktiken lehren. Der erste Master-Abschluss für Software-Engineering wurde 1979 an der Seattle University eingerichtet . Seitdem wurden an vielen weiteren Universitäten Software-Engineering-Graduate angeboten. Auch in Kanada hat das Canadian Engineering Accreditation Board (CEAB) des Canadian Council of Professional Engineers mehrere Software-Engineering-Programme anerkannt.

1998 richtete die US Naval Postgraduate School (NPS) das weltweit erste Promotionsprogramm in Software Engineering ein. Darüber hinaus sind viele fortgeschrittene Online-Abschlüsse in Software Engineering erschienen, wie z. B. der Master of Science in Software Engineering (MSE), der vom Computer Science and Engineering Department der California State University in Fullerton angeboten wird . Steve McConnell meint, dass es einen Mangel an echten Software-Ingenieuren gibt, weil die meisten Universitäten eher Informatik als Software-Engineering lehren. Die ETS (École de technologie supérieure) University und die UQAM (Université du Québec à Montréal) wurden vom IEEE beauftragt, den Software Engineering Body of Knowledge ( SWEBOK ) zu entwickeln, der zu einem ISO-Standard geworden ist, der den Wissensbestand eines Softwareingenieurs beschreibt.

Beruf

Die gesetzlichen Anforderungen für die Lizenzierung oder Zertifizierung professioneller Softwareingenieure sind weltweit unterschiedlich. Im Vereinigten Königreich gibt es keine Lizenz oder gesetzliche Verpflichtung, die Berufsbezeichnung Software Engineer anzunehmen oder zu verwenden. In einigen Gebieten Kanadas, wie Alberta, British Columbia, Ontario und Quebec, können Softwareingenieure die Bezeichnung Professional Engineer (P.Eng) und/oder Information Systems Professional (ISP) tragen. In Europa können Software Engineers die Berufsbezeichnung European Engineer (EUR ING) erwerben.

Die Vereinigten Staaten bieten seit 2013 eine NCEES Professional Engineer- Prüfung für Software Engineering an, wodurch Software Engineers lizenziert und anerkannt werden können. NCEES wird die Prüfung nach April 2019 wegen mangelnder Teilnahme beenden. Lizenzierungspflichten werden derzeit noch stark diskutiert und als kontrovers wahrgenommen. In einigen Teilen der USA, wie z. B. Texas, ist die Verwendung des Begriffs „Ingenieur “ gesetzlich geregelt und nur Personen vorbehalten, die über eine „Professional Engineer“ -Lizenz verfügen.

Die IEEE Computer Society und die ACM , die beiden wichtigsten in den USA ansässigen Berufsverbände für Software-Engineering, veröffentlichen Leitfäden für den Beruf des Software-Engineering. Der IEEE Guide to the Software Engineering Body of Knowledge – Version 2004 oder SWEBOK definiert das Gebiet und beschreibt das Wissen, das das IEEE von einem praktizierenden Software-Ingenieur erwartet. Das aktuellste SWEBOK v3 ist eine aktualisierte Version und wurde 2014 veröffentlicht. Das IEEE veröffentlicht auch einen „Software Engineering Code of Ethics“.

Beschäftigung

Das US Bureau of Labor Statistics (BLS) zählte 2018 1.365.500 Softwareentwickler mit Jobs in den USA . Aufgrund seiner relativen Neuheit als Studienfach wird die formale Ausbildung in Softwareentwicklung oft als Teil eines Informatiklehrplans gelehrt, und viele Softwareingenieure haben einen Abschluss in Informatik. Die BLS schätzt, dass Computer Software Engineering von 2014 bis 2024 um 17 % zunehmen wird. Dies ist ein Rückgang gegenüber der BLS-Schätzung von 2012 bis 2022 von 22 % für Softwareentwicklung. Und sie liegt weiter unter ihrer BLS-Schätzung von 30 % für 2010 bis 2020. Aufgrund dieses Trends ist das Beschäftigungswachstum möglicherweise nicht so schnell wie im letzten Jahrzehnt, da Arbeitsplätze, die an Computersoftwareingenieure in den Vereinigten Staaten gegangen wären, stattdessen an Computersoftwareingenieure in Ländern wie Indien und anderen Ländern ausgelagert würden. Darüber hinaus prognostiziert der BLS Job Outlook for Computer Programmers, 2014–24 einen Rückgang von –8 % (in ihren Worten ein Rückgang), dann einen Rückgang des Job Outlook, 2019–29 von –9 % und einen Rückgang von 10 % für 2020-2030 für diejenigen, die Computer programmieren. Darüber hinaus ist der Frauenanteil in vielen Softwarebereichen im Vergleich zu anderen Ingenieurbereichen im Laufe der Jahre zurückgegangen. Dieser Trend kann sich jedoch in Zukunft ändern oder verlangsamen, da viele aktuelle Softwareingenieure auf dem US-Markt den Beruf verlassen oder in den nächsten Jahrzehnten vom Markt verschwinden.

Viele Softwareentwickler arbeiten als Angestellte oder Auftragnehmer. Softwareingenieure arbeiten mit Unternehmen, Regierungsbehörden (zivil oder militärisch) und gemeinnützigen Organisationen zusammen. Einige Softwareingenieure arbeiten für sich selbst als Freelancer . Einige Organisationen haben Spezialisten, die jede der Aufgaben im Softwareentwicklungsprozess ausführen . Andere Organisationen verlangen von Softwareingenieuren, dass sie viele oder alle von ihnen ausführen. In großen Projekten kann es vorkommen, dass sich Mitarbeiter nur auf eine Rolle spezialisieren. In kleinen Projekten können Personen mehrere oder alle Rollen gleichzeitig besetzen. Viele Unternehmen stellen Praktikanten , oft Universitäts- oder Hochschulstudenten während der Sommerferien, oder Praktika ein . Zu den Spezialisierungen gehören Analysten , Architekten , Entwickler , Tester , technischer Support , Middleware-Analysten , Projektmanager , Pädagogen und Forscher .

Die meisten Softwareingenieure und Programmierer arbeiten 40 Stunden pro Woche, aber etwa 15 Prozent der Softwareingenieure und 11 Prozent der Programmierer arbeiteten 2008 mehr als 50 Stunden pro Woche. Mögliche Verletzungen in diesen Berufen sind möglich, da sie wie andere Arbeitnehmer lange sitzen Ingenieure und Programmierer, die vor einem Computerterminal auf einer Tastatur tippen, sind anfällig für Überanstrengung der Augen, Rückenbeschwerden und Hand- und Handgelenksprobleme wie das Karpaltunnelsyndrom .

Zertifizierung

Das Software Engineering Institute bietet Zertifizierungen zu spezifischen Themen wie Sicherheit , Prozessverbesserung und Softwarearchitektur an . IBM , Microsoft und andere Unternehmen sponsern auch ihre eigenen Zertifizierungsprüfungen. Viele IT - Zertifizierungsprogramme sind auf bestimmte Technologien ausgerichtet und werden von den Anbietern dieser Technologien verwaltet. Diese Zertifizierungsprogramme sind auf die Institutionen zugeschnitten, die Personen beschäftigen würden, die diese Technologien verwenden.

Eine breitere Zertifizierung allgemeiner Software-Engineering-Fähigkeiten ist über verschiedene Fachgesellschaften erhältlich. Bis 2006 hatte das IEEE über 575 Softwarefachleute als Certified Software Development Professional (CSDP) zertifiziert. 2008 fügten sie eine Einstiegszertifizierung hinzu, die als Certified Software Development Associate (CSDA) bekannt ist. Die ACM hatte Anfang der 1980er Jahre ein professionelles Zertifizierungsprogramm, das aufgrund mangelnden Interesses eingestellt wurde. Die ACM untersuchte Ende der 1990er Jahre die Möglichkeit einer professionellen Zertifizierung von Softwareingenieuren, entschied jedoch schließlich, dass eine solche Zertifizierung für die professionelle industrielle Praxis der Softwareentwicklung ungeeignet sei.

Im Vereinigten Königreich hat die British Computer Society eine gesetzlich anerkannte Berufszertifizierung namens Chartered IT Professional (CITP) entwickelt, die vollqualifizierten Mitgliedern ( MBCS ) zur Verfügung steht. Software-Ingenieure können für eine Mitgliedschaft in der Institution of Engineering and Technology in Frage kommen und sich so für den Chartered Engineer-Status qualifizieren. In Kanada hat die Canadian Information Processing Society eine gesetzlich anerkannte professionelle Zertifizierung namens Information Systems Professional (ISP) entwickelt . In Ontario, Kanada, sind Software-Ingenieure, die ein vom Canadian Engineering Accreditation Board (CEAB) akkreditiertes Programm absolvieren, die Professional Practice Examination (PPE) von PEO ( Professional Engineers Ontario ) erfolgreich absolvieren und über mindestens 48 Monate akzeptable Ingenieurerfahrung verfügen, berechtigt, lizenziert zu werden durch die Professional Engineers Ontario und kann Professional Engineers P.Eng werden. Das PEO erkennt jedoch keinen Online- oder Fernunterricht an; und betrachtet Informatikprogramme trotz der enormen Überschneidung zwischen den beiden nicht als gleichwertig mit Softwareentwicklungsprogrammen. Dies hat Kontroversen und einen Zertifizierungskrieg ausgelöst. Es hat auch die Zahl der P.Eng-Inhaber für den Beruf außergewöhnlich niedrig gehalten. Die überwiegende Mehrheit der Berufstätigen in diesem Bereich hat einen Abschluss in CS, nicht in SE. Angesichts des schwierigen Zertifizierungsweges für Inhaber von Nicht-SE-Abschlüssen machen sich die meisten nie die Mühe, die Lizenz zu erwerben.

Auswirkungen der Globalisierung

Die anfänglichen Auswirkungen des Outsourcing und die relativ niedrigeren Kosten für internationale Humanressourcen in Entwicklungsländern der Dritten Welt führten zu einer massiven Migration von Softwareentwicklungsaktivitäten von Unternehmen in Nordamerika und Europa nach Indien und später: China, Russland und andere Entwicklungsländer. Dieser Ansatz hatte einige Mängel, vor allem die Unterschiede zwischen Entfernung und Zeitzone, die eine menschliche Interaktion zwischen Kunden und Entwicklern verhinderten, und die massive Auftragsübertragung. Dies hatte negative Auswirkungen auf viele Aspekte des Berufes des Softwareentwicklers. Beispielsweise meiden einige Studenten in den Industrieländern eine Ausbildung im Zusammenhang mit Softwareentwicklung, weil sie Angst vor Offshore-Outsourcing (Import von Softwareprodukten oder -diensten aus anderen Ländern) und der Verdrängung durch ausländische Visa-Mitarbeiter haben . Obwohl Statistiken derzeit keine Bedrohung für das Software-Engineering selbst zeigen; eine verwandte Karriere, Computerprogrammierung, scheint betroffen gewesen zu sein. Dennoch hat die Fähigkeit, Offshore- und Nearshore-Ressourcen über den Follow-the-Sun- Workflow intelligent zu nutzen, die allgemeine Betriebsfähigkeit vieler Unternehmen verbessert. Wenn Nordamerikaner ihre Arbeit verlassen, kommen Asiaten gerade zur Arbeit. Wenn Asiaten die Arbeit verlassen, kommen Europäer zur Arbeit. Dies bietet eine kontinuierliche Möglichkeit, geschäftskritische Prozesse rund um die Uhr von Menschen zu überwachen, ohne Überstundenausgleich zu zahlen oder eine wichtige Personalressource, den Schlafrhythmus, zu stören.

Während das globale Outsourcing mehrere Vorteile hat, kann die globale – und allgemein verteilte – Entwicklung aufgrund der Entfernung zwischen den Entwicklern auf ernsthafte Schwierigkeiten stoßen. Dies ist auf die Schlüsselelemente dieser Art von Distanz zurückzuführen, die als geografische, zeitliche, kulturelle und kommunikative Faktoren identifiziert wurden (einschließlich der Verwendung verschiedener Sprachen und Dialekte des Englischen an verschiedenen Orten). In den letzten 15 Jahren wurde im Bereich der globalen Softwareentwicklung geforscht und eine umfangreiche Sammlung relevanter Arbeiten veröffentlicht, die die Vorteile und Probleme im Zusammenhang mit dieser komplexen Aktivität hervorheben. Wie bei anderen Aspekten der Softwaretechnik wird in diesem und verwandten Bereichen geforscht.

Preise

Im Bereich Software Engineering gibt es mehrere Preise:

  • Die Codie Awards sind eine jährliche Auszeichnung, die von der Software and Information Industry Association für herausragende Leistungen in der Softwareentwicklung innerhalb der Softwarebranche verliehen wird.
  • Jolt Awards sind Auszeichnungen in der Softwarebranche.
  • Stevens Award ist ein Softwareentwicklungspreis, der in Erinnerung an Wayne Stevens vergeben wird.

Kritik

Software Engineering sieht seine Praktiker als Personen, die klar definierten technischen Ansätzen zur Problemlösung folgen. Diese Ansätze werden in verschiedenen Software-Engineering-Büchern und Forschungsarbeiten spezifiziert, immer mit den Konnotationen Vorhersagbarkeit, Präzision, Risikominderung und Professionalität. Diese Perspektive hat zu Forderungen nach Lizenzierung, Zertifizierung und kodifizierten Wissensbeständen als Mechanismen zur Verbreitung des Ingenieurwissens und zur Reifung des Fachgebiets geführt.

Software-Engineering erweitert das Engineering und stützt sich auf das Engineering-Modell, dh Engineering-Prozess, Engineering-Projektmanagement, Engineering-Anforderungen, Engineering-Design, Engineering-Konstruktion und Engineering-Validierung. Das Konzept ist so neu, dass es kaum verstanden und weithin falsch interpretiert wird, einschließlich in Softwareentwicklungslehrbüchern, Artikeln und in den Gemeinschaften von Programmierern und Handwerkern.

Eines der Kernprobleme im Software-Engineering ist, dass seine Ansätze nicht empirisch genug sind, da eine reale Validierung von Ansätzen normalerweise fehlt oder sehr begrenzt ist und daher Software-Engineering oft als nur in einer "theoretischen Umgebung" machbar fehlinterpretiert wird.

Edsger Dijkstra , der Begründer vieler Konzepte, die heute in der Softwareentwicklung verwendet werden, lehnte die Idee des „Software Engineering“ bis zu seinem Tod im Jahr 2002 mit dem Argument ab, dass diese Begriffe schlechte Analogien für das seien, was er die „radikale Neuheit“ der Informatik nannte :

Einige dieser Phänomene wurden unter dem Namen „Software Engineering“ gebündelt. So wie die Ökonomie als "Die miserable Wissenschaft" bekannt ist, sollte die Softwaretechnik als "Die dem Untergang geweihte Disziplin" bekannt sein, dem Untergang geweiht, weil sie sich ihrem Ziel nicht einmal nähern kann, da ihr Ziel in sich widersprüchlich ist. Das Software-Engineering präsentiert sich natürlich als eine weitere gute Sache, aber das ist Augenwischerei: Wenn Sie seine Literatur sorgfältig lesen und analysieren, was seine Anhänger tatsächlich tun, werden Sie feststellen, dass das Software-Engineering als seine Charta akzeptiert hat: „Wie man programmiert, wenn man nicht kann ."

Siehe auch

Studieren und üben

Rollen

Berufliche Aspekte

Verweise

Zitate

Quellen

  • Abran, Alain; Moore, James W.; Bourque, Pierre; Dupuis, Robert; Tripp, Leonard L. (2004). Leitfaden zum Software Engineering Body of Knowledge . IEEE. ISBN 978-0-7695-2330-9.
  • Sommerville, Ian (2010). Software Engineering (7. Aufl.). Pearson Ausbildung. ISBN 978-81-7758-530-8. Abgerufen am 10. Januar 2013 .

Weiterlesen

Externe Links