<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="de">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Kompetenzorientierte Lehre im Software Engineering</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Axel</forename><surname>Böttcher</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">TNG Technology Consulting GmbH</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Veronika</forename><surname>Thurner</surname></persName>
							<email>ab|thurner@cs.hm.edu</email>
							<affiliation key="aff0">
								<orgName type="institution">TNG Technology Consulting GmbH</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Hochschule</forename><surname>München</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">TNG Technology Consulting GmbH</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Gerhard</forename><surname>Müller</surname></persName>
							<email>gerhard.mueller@tngtech.com</email>
							<affiliation key="aff0">
								<orgName type="institution">TNG Technology Consulting GmbH</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">Kompetenzorientierte Lehre im Software Engineering</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">794B98F9347B0786ED20677A467264B7</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T17:55+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract/>
		</profileDesc>
	</teiHeader>
	<text xml:lang="de">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Zusammenfassung</head><p>Software Engineering ist eine komplexe Aufgabe, die von den Beteiligten ausgeprägte Kompetenzen in vielen verschiedenen Bereichen fordert. Die Vermittlung dieser Kompetenzen über das reine Fachwissen hinweg ist eine zentrale Aufgabe, die eine Software-Engineering-Ausbildung leisten muss, um Absolventen für den Einsatz in der Praxis zu qualifizieren. Ausgehend von den zu vermittelnden Kompetenzen zeigen wir, wie wir in unserer Lehrpraxis mit Hilfe eines möglichst einfach gehaltenen, aber so komplex wie nötig gestalteten durchgängigen Beispiels sowie durch innovative Lehrmethoden praxisnah eine fundierte Einführung in die komplexen Tätigkeiten des Software Engineerings vermitteln.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Motivation</head><p>Anforderungen an Softwaresysteme werden heute zunehmend umfangreicher und komplexer. Analog dazu entwickeln sich auch die Technologien und Werkzeuge für Software Engineering stetig weiter und werden immer mächtiger -und damit selbst komplexer. Da sich diese Technologien und Werkzeuge laufend weiter entwickeln, ist die Halbwertzeit der dazu erworbenen Kompetenzen entsprechend kurz.</p><p>Aufgrund der Menge und Komplexität des erforderlichen Wissens und wegen der Größe der zu erstellenden Systeme wird Software in der heutigen Praxis nahezu immer im Team entwickelt. Neben den rein technisch-fachlichen Kompetenzen werden damit in zunehmendem Maße auch Fähigkeiten wichtig, die sich mit der Positionierung einer Einzelperson im Team sowie mit der Integration und Interaktion aller Beteiligten untereinander befassen.</p><p>Eine Software-Engineering-Ausbildung, die nicht nur theoretisch fundiert, sondern auch praxisnah und berufsbefähigend sein soll, muss diesen Entwicklungen Rechnung tragen. Hier stößt die Lehre sehr schnell auf das heute bereits klassische Dilemma, dass die verfügbare Lernzeit in der initialen Ausbildungsphase eines Menschenlebens seit Jahren in etwa konstant bleibt, die Menge des verfügbaren und als wichtig empfundenen Wissens aber exponentiell an-steigt <ref type="bibr" target="#b5">(Spitzer, 2006)</ref>. Da dieser Entwicklung alleine mit erhöhter Packungsdichte in der Wissensvermittlung nicht mehr beizukommen ist, ist zwangsweise Selektion erforderlich. Eine "gute" Selektion wird somit zu einer der wesentlichen Herausforderungen bei der Konzeption der Software-Engineering-Ausbildung.</p><p>Im Folgenden definieren wir zunächst kompetenzorientierte Lernziele für die Software-Engineering-Ausbildung. Diese basieren im Wesentlichen auf drei Quellen:</p><p>• klassischer Software-Engineering-Literatur,</p><p>• einer umfangreichen Befragung von Absolventen unserer Fakultät aus den letzten fünf Jahrgängen sowie</p><p>• Aussagen von Spezialisten aus der beruflichen Praxis über die Eigenschaften und Fähigkeiten, die sie von potenziellen neuen Mitarbeitern/innen erwarten.</p><p>Im Anschluss daran beschreiben wir ein Beispielprojekt und die zugehörigen Lehrkonzepte, die wir in den Bachelor-Studiengängen Informatik sowie Wirtschaftsinformatik einsetzen. Abschließend setzen wir die mit unserem Lehrkonzept gemachten Erfahrungen in Beziehung zu den zuvor definierten Kompetenzzielen.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Definition von Lernzielen</head><p>Grundlage einer adäquaten Selektion von Ausbildungsinhalten und -methoden ist die Definition der zu erreichenden Lernziele. In der Regel stellt die Definition dieser Lernziele bereits selbst eine Auswahl dar, da in der meist begrenzten verfügbaren Zeit realistischer Weise nicht immer alle eigentlich gewünschten Ziele erreicht werden können <ref type="bibr">(Lehner, 2009)</ref>.</p><p>Ausbildung und Lernziele müssen sich dabei zum einen an Kompetenzen auf unterschiedlichen Wissensgebieten orientieren. Zum anderen sollen sie die Studierenden auf die Übernahme verschiedener Rollen vorbereiten. Analog zu Schott und Ghanbari <ref type="bibr" target="#b4">(Schott u. Ghanbari, 2009)</ref> betrachten wir Kompetenzen als diejenigen Eigenschaften und Fähigkeiten, die man besitzen muss, um eine bestimmte Menge von Aufgaben sinnvoll ausführen zu können. Als Grundlage für die Definition von zu vermittelnden Kompetenzen und daraus abzuleitenden Lernzielen, empfiehlt sich zunächst der "Software Engineering Body of Knowledge" <ref type="bibr" target="#b0">(Abran u. a., 2005)</ref>. Die dort genannten Kompetenzfelder haben wir für die Durchführung der Lehre in den Bachelor-Studiengängen Informatik und Wirtschaftsinformatik priorisiert und in Tabelle 1 zusammengefasst. Der Themenbereich "Software Maintenance" wird aktuell nur am Rande adressiert. Das liegt unter anderem daran, dass Software Maintenance zum einen sehr technologiespezifisch ist und zum anderen stark auf anderen Kompetenzen aufbaut. Diese müssen somit zuerst vermittelt werden, bevor diese Thematik auf technisch anspruchsvollem Niveau behandelt werden kann.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Softwarekompetenzen (SWEBOK) Inf</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>WI</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Requirements</head><p>Als ergänzende Informationsquelle haben wir eine Umfrage herangezogen, die unter unseren Absolventen der Informatik und Wirtschaftsinformatik der letzten Jahre durchgeführt wurde -also unter Personen, die sich bereits mit den bei uns erworbenen Fähigkeiten in der Industrie bewähren müssen. Darüber hinaus befragten wir erfahrene Praktiker aus der Industrie, welche konkreten Anforderungen die Praxis an unsere Absolventen stellt. Die auf diese Weise identifizierten Kompetenzbedarfe gliedern wir im Folgenden nach den vier Bereichen Sach-, Methoden-, Selbst-und <ref type="bibr">Sozialkompetenz (vergleiche (Schaeper u. Briedis, 2004)</ref>). Dabei ordnen wir Kompetenzen, die mehr als einen dieser Bereiche bedienen, demjenigen Kompetenzbereich zu, zu dem sie nach unserer Einschätzung den stärksten Beitrag leisten.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Sachkompetenz</head><p>Der Bereich der Sachkompetenz fokussiert das erworbene Fachwissen und dessen zielgerichtete Anwendung. Hierzu zählen die in Tabelle 1 aufgelisteten Kompetenzbereiche aus dem SWEBOK. Diese wurden aus der Praxis durch die folgenden Kompetenzforderungen ergänzt.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>• Modellierung und Entwurf</head><p>Um eine "ordentliche", d.h. professionelle und nachhaltige Softwareentwicklung rein technischhandwerklich überhaupt zu ermöglichken müssen Software-Ingenieure/innen modellieren und designen können. Dazu gehören unter anderem auch das Verständnis für bzw. der Einsatz von Design Patterns, SOLID-Prinzipien und ggf. Domain Driven Development <ref type="bibr" target="#b1">(Evans, 2003)</ref>.</p><p>• Beschreibung von Architekturen Software-Ingenieure/innen müssen in der Lage sein, technische und fachliche Architekturen zu konzipieren und so darzustellen, dass sie als klar verständliche Grundlage für die Kommunikation aller Projektbeteiligten dienen können. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Methodenkompetenz</head><p>Im Bereich der Methodenkompetenz sind grundlegende Arbeitstechniken zusammengefasst, sowie Fähigkeiten und Verfahren, die ein effektives, ergebnisorientiertes Arbeiten ermöglichen.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>• Denken in Systemen</head><p>Wer nicht in übergeordneten Strukturen denkt, beschränkt sich auf lokale Optimierungen und tendiert dazu, "echte" Probleme nicht anzugehen. Strukturprobleme anzugehen erfordert auch Mut. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Selbstkompetenz</head><p>Zum Bereich der Selbstkompetenz zählen Fähigkeiten, die eigene Situation wahrzunehmen, eigene Bedüfnisse zu erkennen und zu artikulieren, eigenverantwortlich zu handeln und über all diese Punkte selbstkritisch und konstruktiv zu reflektieren. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Sozialkompetenz (Soft Skills)</head><p>Der Bereich der Sozialkompetenz fokussiert schließlich die Fähigkeit, die Bedürfnisse und Interessen anderer Menschen wahrzunehmen, sich mit diesen auseinander zu setzen und konstruktiv und erfolgreich mit anderen Menschen zusammenzuarbeiten.</p><p>• Verständnis für Andere Software entsteht nicht in einem luftleeren Raum, sondern durch die Zusammenarbeit verschiedenster Gruppen, wie beispielsweise Management, Benutzer, Fachexperten, QA, Operations und vielen anderen. Schon die Zielfindung in einem Entwicklungsprojekt erfordert intensive Kommunikation zwischen den Beteiligten sowie eine offene Wahrnehmung der Belange und Interessen aller Beteiligten.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>• Teamfähigkeit</head><p>In der Praxis ist Software heutzutage fast immer das Produkt eines Teams. Entsprechend kommt der Fähigkeit, sinnvoll, effektiv und gerne (!) in einem Team zusammenzuarbeiten eine fundamentale Bedeutung zu: Wer das nicht kann, kann nichts von dem, was er/sie kann, sinnvoll im komplexeren Umgebungen einbringen. Zu den zentralen Teilfähigkeiten gehören unter anderem eher pragmatische Punkte wie ein freundlicher Umgangston, nett sein und zuhören können. Gerade in kritischen Situationen gewinnt darüber hinaus theoretisch fundiertes Wissen über Team-Regeln an Bedeutung, wie beispielsweise das Tucker-Modell, das Vier-Ohren-Modell von Schulz von Thun. Ebenfalls nützlich sind Change Management, wie z.B. (Rising u. <ref type="bibr" target="#b3">Manns, 2004)</ref>, sowie ein Grundstock an psychologischem Grundwissen, wie beispielsweise in <ref type="bibr" target="#b6">(Vigenschow u. Schneider, 2007)</ref> beschrieben.</p><p>Nicht alle dieser eigentlich wünschenswerten Kompetenzen können in der zur Verfügung stehenden Lehrund Lernzeit im vollen Umfang vermittelt werden. In den Kompetenzbereichen, die wir nicht vollständig bedienen können, soll unsere Ausbildung zumindest das Bewusstsein für die Notwendigkeit dieser Kompetenzen wecken, indem sie deutlich macht, für welche Aufgaben, Disziplinen und Rollen diese Kompetenzen erforderlich sind.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Lehrkonzept</head><p>Um dem Curriculum der von uns bedienten Bachelor-Studiengänge "Informatik" und "Wirtschaftsinformatik" mit nur einem Beispiel gerecht zu werden konzipierten wir dieses als eine moderne Webapplikation. Bislang kommt dieses Beispiel in folgenden Modulen zum Einsatz, deren Umfang jeweils bei zwei SWS seminaristischem Unterricht und zwei SWS Praktikum liegt und mit fünf ECTS-Punkten gewichtet ist:</p><p>• Modul "Software Engineering I" im 3. Semester des Bachelorstudiengangs Wirtschaftsinformatik  Der zweite fachliche Schnitt "Verwaltung der Leihobjekte" ist ebenfalls ausgearbeitet, je nach Fokus der Lehrveranstaltung aber nur teilweise oder gar nicht für die Studierenden verfügbar. In der Lehrveranstaltung "Softwarearchitektur" (Bachelor Informatik) erhalten die Studierenden die vorgefertigten Analyse-und Entwurfsdokumente, die sie anschließend in eine funktionsfähige Implementierung umsetzen. In "Software Engineering" (Bachelor Informatik und Wirtschaftsinformatik) dagegen erstellen die Studierenden selbst die benötigten Analyse-und Entwurfsdokumente und setzen anschließend ihre eigene Spezifikation um. Bei Bedarf ist das Beispiel um zusätzliche fachliche Schnitte erweiterbar.</p><p>Wir setzen das Lehrmaterial in den einzelnen Veranstaltungen wie folgt ein:</p><p>Software Engineering I: Hier stehen die Kompetenzfelder Requirements, Design sowie Engineering Management und Process im Vordergrund. Vorgabe für das Praktikum ist daher lediglich eine ausgearbeitete Spezifikation für den ersten fachlichen Schnitt "Benutzerverwaltung". Die Studierenden müssen mindestens einen weiteren fachlichen Schnitt selbstständig spezifizieren.</p><p>Software Engineering II: Dieses Modul deckt den Kompetenzbereich Construction ab. Hier müssen die Studierenden den im ersten Teil spezifizierten fachlichen Schnitt implementieren. Als Vorgabe erhalten sie eine referenzimplementierung des ersten Schnittes.</p><p>Software-Architektur: Lernziel ist hier die Fähigkeit, moderne Architekturen für komplexe Software-Systeme zu bewerten, zu entwerfen, zu realisieren und zu betreiben (kompetenzbereiche design. Construction, Testing). Die Studierenden bekommen für den ersten fachlichen Schnitt sowohl eine Spezifikation als auch deren Implementierung als Vorgabe. Sie müssen den zweiten fachlichen Schnitt implementieren und bekommen dazu die Spezifikation als Vorgabe.</p><p>Als Lehrmethode im seminaristischen Unterricht wurde eine Mischung aus interaktiver Vorlesung, Lernen durch Lehren, Gruppenpuzzle und Projektarbeit in wechselnden Teams eingesetzt.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Abgleich Lehrkonzept vs. Lernziele</head><p>Nach den bisherigen Erfahrungen adressiert unser Lehrkonzept eine Vielzahl der Schlüsselkompetenzen, die aus der Praxis geforderten wurden.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Sachkompetenz</head><p>Die Studierenden durchlaufen im Rahmen der Projektarbeit mindestens einen kompletten Softwareentwicklungszyklus, vom Skizzieren erster Anforderungen bis hin zum Integrationstest. Das vorgefertigte, durchgängige Beispiel hilft dabei, neu eingeführte Techniken und deren zielgerichtete Verwendung zu veranschaulichen. Des Weiteren dient es als Anhaltspunkt für die Lösungsbestandteile, welche die Studierenden im Rahmen ihrer Projektarbeit nach und nach selbst entwickeln.</p><p>Das Beispiel ist aktuell auf der Basis von Servlets implementiert. Als Frameworks kommen Hibernate, Google Guice (Dependency Injection), Apache Click, Log4j und Selenium zum Einsatz. Die zugehörigen Technologien und Frameworks werden in der Lehrveranstaltung sukzessive vermittelt und von den Studierenden bei der Erstellung ihrer eigenen Lösungsanteile entsprechend weiterverwendet.</p><p>Für die Modellierung stehen verschiedene Modellierungswerkzeuge zur Verfügung, beispielsweise der IBM Rational Software Modeler oder die UML2-Modellierungsumgebung der aktuellen Eclipse-Version. Entwickelt wird mit dem JEE-Plug-in-Set von Eclipse.</p><p>Die Software des vorgefertigten Beispiels wird den Studierenden in einem Subversion-Repository zur Verfügung gestellt. Über dieses Repository koordinieren die Studierenden den Austausch der im Team erstellten Artefakte. Des Weiteren geben sie darüber ihre Ergebnisse ab.</p><p>Im Rahmen der Projektarbeit experimentieren die Studierenden mit verschiedenen Vorgehensmodellen. Neben einem klassischen, iterativ-inkrementell orien-tierten ingenieurmäßigen Vorgehen kommt als Repräsentant der agilen Ansätze auch Scrum zum Einsatz. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Methodenkompetenz</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Selbstkompetenz</head><p>Im Rahmen der verschiedenen Phasen der Projektund Teamarbeit erhalten die Studierenden Feedback von Kommilitonen und Dozenten, sowohl über ihren Arbeitsprozess als auch über die erzielten Ergebnisse. Beispielsweise stellen einzelne Projektteams Teile ihrer Arbeiten den anderen Gruppen vor. Ziel dabei ist das Erlernen des konstruktiven fachlichen Austausches, sowohl in der Rolle des Präsentierenden als auch in der Rolle des kritisch Hinterfragenden. Beide Rollen fallen erstaunlich vielen Studierenden zunächst schwer. Eine wichtige Voraussetzung für die Vermittlung von Reflexions-und Kritikfähigkeit besteht darin, in der Lehrveranstaltung eine Atmosphäre der vertrauensvollen Zusammenarbeit zu schaffen, in der alle Beteiligten auf Augenhöhe wertschätzend miteinander umgehen.</p><p>Bzgl. der Vermittlung ethischen Handelns stoßen wir mit der Ausbildung in dieser Form schnell an Grenzen. Als Dozenten können wir hier im Wesentlichen sensibilisieren, den Blickwinkel auf grundlegende Fragestellungen richten und natürlich versuchen, als gutes Beispiel voranzugehen. Die hinter dem ethischen Handeln liegenden Wertesysteme lassen sich "mal eben so nebenbei" aber nur ansatzweise vermitteln -und auch nur dann, wenn die der Hochschule vorgelagerte Erziehung und Bildung den Grundstock dafür gelegt hat.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Sozialkompetenz</head><p>Durch den relativ hohen Anteil an Teamarbeit kommt dem Bereich der Sozialkompetenz quasi als "Hintergrundprozess" eine fortlaufend wichtige Rolle zu. Bereits beim Bilden der Teams und bei der Aufteilung der zu erledigenden Arbeiten treffen unterschiedliche Interessen und Vorlieben aufeinander. Die Dozenten beobachten aufmerksam, aber unaufdringlich das Zusammenspiel innerhalb der einzelnen Teams. Bei Bedarf greifen sie (möglichst minimalistisch) in das Geschehen ein, beispielsweise durch das Setzen von gruppendynamischen Impulsen. Des Weiteren moderieren sie zu ausgewählten Meilensteinen der Projektarbeit den Prozess der Gruppenreflexion über Ergebnisse und Ablauf der Teamarbeit.</p><p>Ergänzend wird theoretisch fundiertes Grundlagenwissen zu Sozialkompetenzen in spezialisierten Veranstaltungen vermittelt und gezielt praktisch eingeübt.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Zusammenfassung und Ausblick</head><p>Mit dem hier vorgestellten Beispiel lassen sich viele zentrale Aspekte des Software Engineerings von der Machbarkeitsanalyse bis hin zum Abnahmetest zeigen. Der besondere Fokus liegt dabei auf der Integration der einzelnen Disziplinen. Dadurch werden für die Lernenden die Zusammenhänge zwischen einzelnen Arbeitsschritten und Artefakten klar ersichtlich und nachvollziehbar. Insbesondere werden dadurch die Auswirkungen einzelner Entwicklungsentscheidungen greifbar verdeutlicht. Das Beispiel und die zugehörigen Lernmaterialien ermöglichen so einen ganzheitlichen Einstieg in die komplexe Materie des Software Engineerings.</p><p>Im Rahmen einer qualitativen Evaluierung haben unsere Studierenden die folgenden repräsentativen Aussagen gemacht. Als positiv wurde die Praxisnähe des Beispiels empfunden, sowie die Tatsache, dass in den Lehrveranstaltungen ein Beispiel von realistischer Komplexität behandelt wird. Diese Komplexität wurde jedoch gleichzeitig auch als negativ empfunden, da zu Beginn der Veranstaltung sehr viele Dinge gleichzeitig zu lernen sind, beispielsweise verschiedene Frameworks. Des Weiteren wurde die Größe der Aufgabe kritisiert.</p><p>Der beschrittene Weg, für ein signifikant großes Projekt einzelne Teile in einer ausgearbeiteten Form vorzugeben, die auch kritischen Blicken aus der Praxis Stand hält, hat sich also im Ansatz bewährt. An manchen Stellen haben wir einen Teil unserer Studierenden mit der Komplexität des Beispiels aber offenbar überfordert.</p><p>In folgenden Punkten haben wir konkret Verbesserungspotenzial sowohl für das Beispiel als auch für die eingesetzten didaktischen Methoden identifiziert:</p><p>• Kleinere Wissenseinheiten vermitteln Die Darstellung von Technologien und Basistechniken müssen wir gezielt in einem überschaubaren Kontext aufbereiten.</p><p>• Referenzimplementierung inkrementell einführen Wir werden Referenzimplementierungen zukünftig in kleineren Zwischenschritten vorgeben. Zum Einstieg haben wir ein minimalistisches Beispiel gebaut, das sich auf einen Server (Tomcat, Jetty) "deployen" lässt und einen Login für einen hart codierten Benutzer mit entsprechendem Service, aber ohne eine Datenbank, realisiert.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>• Mehr Diskussion individueller Lösungen</head><p>Wir wollen mit den Studierenden stärker deren Lösungen diskutieren. Hier stoßen wir allerdings von der Betreuungsrelation und unserem Zeitbudget an Grenzen.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>Abbildung 1: Struktur des durchgängigen Beispiels</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>die funktionalen Anforderungen im Vergleich dazu eine eher untergeordnete Rolle spielen. Um auf systematische Weise adäquat performante Systemarchitekturen konzipieren zu können müssen Software-Ingenieure/innen ein Gefühl für Größenordnungen entwickeln, beispielsweise bzgl. algorithmischer Komplexität, Anzahl der Transaktionen pro Sekunde, Speicherbedarf pro Session, IO-Geschwindigkeit, CPU-Geschwindigkeit, Bandbreite, Ressourcenbedarf pro Benutzer oder in Summe, ... Darüber hinaus ist ein Verständnig für die Auswirkungen dieser Werte erforderlich sowie die Fähigkeit, ggf. passende Konsequenzen daraus herzuleiten. Ohne dieses Verständnis werden die erarbeiteten Lösungen nicht auf angemessene Weise skalierbar.</figDesc><table><row><cell>• Einarbeitung in große, fremde Projekte</cell></row><row><cell>Softwaresysteme entstehen heute häufig im</cell></row><row><cell>Kontext bereits bestehender Systemlandschaf-</cell></row><row><cell>ten. Eine wichtige Fähigkeit von Software-</cell></row><row><cell>Ingenieuren/innen ist somit die Einarbeitung in</cell></row><row><cell>umfangreiche fremde Projekte. Typische Aufga-</cell></row><row><cell>benstellung ist das Bug-Fixing in fremdem Code,</cell></row><row><cell>aber auch das Einbauen neuer Features in ein be-</cell></row><row><cell>stehendes System.</cell></row><row><cell>• Gesamtsicht auf Zusammenspiel von Frameworks</cell></row><row><cell>Moderne Softwaresysteme sind gekennzeichnet</cell></row><row><cell>durch das Zusammenwirken vieler Bibliotheken</cell></row><row><cell>und Frameworks. Jeder dieser Bausteine ist für</cell></row><row><cell>sich genommen nicht schwierig zu verstehen. Die</cell></row><row><cell>Integration dieser Frameworks in einem Produkt</cell></row><row><cell>erhöht die Komplexität jedoch sprungartig. Ent-</cell></row><row><cell>sprechend müssen diese Bausteine in der Lehre</cell></row><row><cell>nicht nur einzeln, sondern auch in ihrer Gesamt-</cell></row><row><cell>sicht vermittelt werden.</cell></row><row><cell>• Beherrschung grundlegender Werkzeuge</cell></row><row><cell>Damit alle Beteiligten auf technischer Ebene</cell></row><row><cell>reibungsfrei zusammen arbeiten können ge-</cell></row><row><cell>hört die Beherrschung grundlegender Werkzeuge</cell></row><row><cell>zum elementaren Handwerkszeug von Software-</cell></row><row><cell>Ingenieuren/innen, wie beispielsweise die verwen-</cell></row><row><cell>dete IDE oder die Versionsverwaltung incl. Kennt-</cell></row><row><cell>nissen zu geeigneten Branching-Strategien.</cell></row></table><note>• Test Driven Development Test Driven Development ist in der heutigen Praxis eine Basistechnik der professionellen, nachhaltigen Softwareentwicklung. Damit einher gehen das Erlernen eines sauberen Designs, Continuous Integration, Refactoring und Techniken wie das Pair Programming. • Verständnis für Lebensdauer von Code Die Praxis zeigt, dass der Quelltext geschäftsrelevanter Softwaresysteme oft über Jahrzehnte im Einsatz bleibt. Entsprechend müssen Software-Ingenieure/innen ein Verständnis für die Lebensdauer von Code entwickeln die Wichtigkeit vonInformationen erkennen, die in "Clean Code" beschrieben sind<ref type="bibr" target="#b2">(Martin, 2008)</ref>. Daarüber hinaus müssen Sie in der Lage sein, selbst sauberen Code zu schreiben. Ebenfalls erforderlich ist ein Veständnis für die Kosten von Zeit.• Größenordnungen verstehenIn der Praxis bestimmen nicht-funktionale Requirements oft zu ca. 80% die Systemarchitek-tur, während• Aufwandsschätzung Aufwandsschätzungen bilden nicht nur die Grundlage für viele planerischen und organisatorischen Tätigkeiten im Software Engineering, sondern beispielsweise auch für die Entscheidung zwischen verschiedenen Realisierungsalternativen. Um verlässliche Aussagen zu Machbarkeit, Zeitund Ressourcenbedarf treffen zu können müssen Software-Ingenieure/innen Aufwände auf realistisch treffende Weise schätzen können.• Vorgehensmodelle Der in der Theorie gelegentlich verfolgte Grundgedanke eines universell einsetzbaren Vorgehensmodells ("One size fits all") funktioniert in der Praxis in der Regel nicht. Entsprechend müssen Software-Ingenieure/innen verschiedene Vorgehensmodelle wie z.B. Scrum, XP, Crystal-Familie, RUP und V-Modell-XT kennen und deren Vor-bzw. Nachteile und Einsatzgebiete einschätzen können.Insbesondere sind Kompetenzen sowohl zu klassisch ingenieurwissenschaftlichen als auch zu aktuellen agilen Vorgehensmodellen von Nöten.</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head></head><label></label><figDesc>Ohne diese Eigenschaft werden die vielen Innovationen und die steigende Komplexität eher als Belastung empfunden und nicht als Anreiz. In einer solchen Konstellation kann die Informatik mit ihren vielen Änderungen auf Dauer keinen Spaß machen -und dann werden auch keine vernünftigen Ergebnisse erzielt.</figDesc><table><row><cell>das Geben von konstruktiv verwertbarem Feed-</cell></row><row><cell>back ist in diesem Kontext eine wesentliche Schlüs-</cell></row><row><cell>selkompetenz.</cell></row><row><cell>• Dinge "richtig" machen</cell></row><row><cell>Die Informatik allgemein, und damit auch das</cell></row><row><cell>Software Engineering, erfordern nicht nur eine</cell></row><row><cell>präzise Denkweise und ein hohes Maß an Wis-</cell></row><row><cell>sen, sondern auch eine ständige Aktualisierung</cell></row><row><cell>dieses Wissens, um mit den ständig neuen Ent-</cell></row><row><cell>wicklungen Schritt halten zu können. Der Wunsch,</cell></row><row><cell>Dinge "richtig" zu machen, gepaart mit dem Stre-</cell></row><row><cell>ben nach lebenslangem Lernen und Verbessern,</cell></row><row><cell>sollte in Software-Ingenieuren/innen intrinsisch</cell></row><row><cell>motiviert sein. • Ethisches Handeln</cell></row><row><cell>Softwaresysteme durchziehen heute nahezu al-</cell></row><row><cell>le Bereiche des beruflichen und privaten Le-</cell></row><row><cell>bens. Damit beeinflusst die Informatik in ho-</cell></row><row><cell>hem Maße, wie andere Menschen leben und ar-</cell></row><row><cell>beiten. Software-Ingenieure/innen gestalten so-</cell></row><row><cell>mit mehr oder weniger direkt die Zukunft. Dies</cell></row><row><cell>bringt nicht nur eine kaum absehbare Vielzahl an</cell></row><row><cell>(Geschäfts-)Möglichkeiten mit sich, sondern auch</cell></row><row><cell>ein sehr hohes Maß an Verantwortung für die Rol-</cell></row><row><cell>le der Informatik in der Welt. Eine ganzheitliche</cell></row><row><cell>Software-Engineering-Ausbildung sollte in ange-</cell></row><row><cell>henden Software-Ingenieuren/innen zumindest</cell></row><row><cell>das Bewusstsein für diese Verantwortung wecken,</cell></row><row><cell>sowie ein gewisses Maß an kritischem Weitblick</cell></row><row><cell>aufbauen und fördern.</cell></row><row><cell>• Reflexions-und Kritikfähigkeit</cell></row><row><cell>Reflexions-und Kritikfähigkeit sind Grundvoraus-</cell></row><row><cell>setzungen für eine erfolgreiche Berufstätigkeit,</cell></row><row><cell>nicht nur im Umfeld des Software Engineerings.</cell></row><row><cell>Ziel der Reflektion ist es, sich selbst und die</cell></row><row><cell>(Projekt-)Umgebung immer wieder zu hinterfra-</cell></row><row><cell>gen, um so sicherzustellen, dass "das Richtige"</cell></row><row><cell>getan wird. Kritikfähigkeit ermöglicht es, das ggf.</cell></row><row><cell>kritische Feedback Anderer nicht als persönlichen</cell></row><row><cell>Angriff zu werten, sondern als Verbesserungspo-</cell></row><row><cell>tenzial anzuerkennen und daraus zu lernen. Auch</cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Guide to the Software Engineering Body of Knowledge 2004 Version SWEBOK</title>
		<author>
			<persName><forename type="middle">A</forename><surname>Abran U</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Abran</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Moore</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Dupuis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Tripp</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2005">2005. 2005</date>
			<publisher>IEEE Computer Society Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Domain-Driven Design: Tackling Complexity in the Heart of Software</title>
		<author>
			<persName><forename type="first">;</forename><surname>Evans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Eric</forename><surname>Evans</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Viel Stoff -wenig Zeit</title>
				<editor>
			<persName><forename type="first">M</forename><surname>Lehner</surname></persName>
		</editor>
		<meeting><address><addrLine>Amsterdam; Stuttgart</addrLine></address></meeting>
		<imprint>
			<publisher>Haupt Verlag</publisher>
			<date type="published" when="2003">2003. 2003. 2009. 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Clean Code: A Handbook of Agile Software Craftsmanship</title>
		<author>
			<persName><forename type="first">;</forename><surname>Martin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Robert</forename><forename type="middle">C</forename><surname>Martin</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008">2008. 2008</date>
			<publisher>Prentice Hall International</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Fearless Change: Patterns for Introducing New Ideas</title>
		<author>
			<persName><forename type="first">Rising</forename><forename type="middle">U</forename><surname>Manns</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Rising</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Linda</forename><forename type="middle">;</forename><surname>Manns</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mary</forename><forename type="middle">L</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Kompetenzen von Hochschulabsolventinnen und Hochschulabsolventen, berufliche Anforderungen und Folgerungen für die Hochschulreform</title>
				<editor>
			<persName><forename type="first">H</forename><surname>Schaeper</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">K</forename><surname>Brie-Dis</surname></persName>
		</editor>
		<imprint>
			<publisher>HIS-Kurzinformation</publisher>
			<date type="published" when="2004">2004. 2004. 2004</date>
		</imprint>
	</monogr>
	<note>Schaeper u. Briedis 2004</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Modellierung, Vermittlung und Diagnostik der Kompetenz kompetenzorientiert zu unterrichten -wissenschaftliche Herausforderung und ein praktischer Lösungsversuch</title>
		<author>
			<persName><surname>Schott U</surname></persName>
		</author>
		<author>
			<persName><surname>Ghanbari</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Schott</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Ghanbari</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Lehrerbildung auf dem Prüfstand</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="10" to="27" />
			<date type="published" when="2009">2009. 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<author>
			<persName><forename type="first">;</forename><surname>Spitzer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Manfred</forename><surname>Spitzer</surname></persName>
		</author>
		<title level="m">Lernen: Gehirnforschung und die Schule des Lebens</title>
				<imprint>
			<publisher>Spektrum Akademischer Verlag</publisher>
			<date type="published" when="2006">2006. 2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">U</forename><surname>Vigenschow</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Schneider</surname></persName>
		</author>
		<author>
			<persName><surname>Vigenschow</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Uwe</surname></persName>
		</author>
		<author>
			<persName><surname>Schneider</surname></persName>
		</author>
		<title level="m">Börn: Soft Skills für Softwareentwickler -Fragetechniken, Konfliktmanagement, Kommunikationstypen und -modelle</title>
				<imprint>
			<publisher>dpunkt.verlag</publisher>
			<date type="published" when="2007">2007. 2007</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
