Softwarequalität - Lösungen zu den Übungen PDF

Summary

Dieses Dokument beinhaltet Lösungen zu den Übungen im Bereich Softwarequalität. Es behandelt entscheidende Aspekte wie z.B. Qualität in der Softwareentwicklung, sowie Fragen im Zusammenhang mit Softwareprojekten, dem Qualitätsmanagement und verschiedenen Testmethoden. Das Dokument liefert detaillierte Antworten zu den Fragen, die in dem Dokument gestellt werden.

Full Transcript

Softwarequalität ······························································································ Lösungen zu den Übungen Kapitel 1.7 Welche Aspekte sind entscheidend, um die Qualität in der Softwareentwicklung zu sichern oder zu steigern? Multiple-Choice-Fragen: A) ausschließliche...

Softwarequalität ······························································································ Lösungen zu den Übungen Kapitel 1.7 Welche Aspekte sind entscheidend, um die Qualität in der Softwareentwicklung zu sichern oder zu steigern? Multiple-Choice-Fragen: A) ausschließliche Konzentration auf die Codierung B) ausgiebiges Testen nach dem „Code-and-Fix“-Ansatz C) Implementierung von organisatorischen, analytischen und konstruktiven Maß- nahmen (richtig) D) Verlass auf Fehlermeldungen der Compiler als Hauptqualitätssicherungsme- thode Antwort (lang): Die Qualität in der Softwareentwicklung zu sichern oder zu steigern, ist ein multidi- mensionales Unterfangen, das über die reine Codierung hinausgeht. Es erfordert eine sorgfältige Planung, Koordination und Kommunikation. Organisatorische Maß- nahmen helfen dabei, Strukturen und Prozesse im Projektmanagement zu schaffen. Analytische Maßnahmen umfassen das sorgfältige Prüfen von Anforderungen und Design, bevor der Code geschrieben wird. Konstruktive Maßnahmen beinhalten den Einsatz von Designprinzipien und Programmierstandards, um die Wartbarkeit und Erweiterbarkeit der Software zu gewährleisten. Der „Code-and-Fix“-Ansatz und eine übermäßige Abhängigkeit von Fehlermeldungen der Compiler sind hingegen veral- tet und nicht ausreichend, um die komplexen Herausforderungen moderner Soft- wareprojekte zu bewältigen. Stattdessen sind ein integrierter Ansatz und die Imple- mentierung von organisatorischen, analytischen und konstruktiven Maßnahmen entscheidend, um qualitativ hochwertige Software zu entwickeln und die häufigsten Fehlerquellen zu vermeiden. Welcher der folgenden Ansätze beschreibt Qualität als Übereinstimmung mit vor- gegebenen Spezifikationen und betont die Bedeutung von strengen Kontrollen sowie die präzise Ausführung von Entwicklungs- und Produktionsprozessen? Multiple-Choice-Fragen: ···················································································································· 117 Softwarequalität ······························································································ A) der transzendentale Ansatz B) der prozessbezogene bzw. herstellerbezogene Ansatz (richtig) C) der anwenderinnenbezogene Ansatz D) der produktbezogene Ansatz Antwort (lang): Der prozessbezogene bzw. herstellerbezogene Ansatz sieht Qualität als die Überein- stimmung mit vorgegebenen Spezifikationen. Nach dieser Sichtweise wird Qualität durch das korrekte Ausführen von Instruktionen und Tätigkeiten sichergestellt. Ent- wicklungs- und Produktionsprozesse sind zentral für die Qualitätsbildung und wer- den streng kontrolliert, auditiert und inspiziert. Es wird wenig Spielraum für eigen- mächtige Entscheidungen der Mitarbeiter gelassen; stattdessen liegt der Fokus auf präzisen Spezifikationen und der Effizienz der Produktionsabläufe, beispielsweise durch den Einsatz von Robotik und automatisierten Systemen. In der Softwareent- wicklung bedeutet dies die sorgfältige Auswahl und Anpassung von Entwicklungs- methoden und die Verwendung analytischer Qualitätssicherungsverfahren, um die Einhaltung von Prozess- und Produktanforderungen zu gewährleisten. Auch in der agilen Entwicklung, wo Anforderungen nicht formell festgehalten werden, sind gute User Stories und der Dialog mit den Stakeholdern unerlässlich, um qualitativ hoch- wertige Software zu entwickeln. Fehler in der Anforderungsphase sind nach diesem Ansatz häufig die Ursache für spätere Softwarefehler. Welcher Aspekt spielt eine wesentliche Rolle für die langfristige Lebensdauer und Marktpräsenz von Softwareprodukten? Multiple-Choice-Fragen: A) Die Endkontrolle und Fehlerprüfung unmittelbar vor der Markteinführung eines Software-Produkts. B) Die kontinuierliche Aktualisierung und Verbesserung der Benutzerschnittstellen nach dem neuesten Design-Trend. C) Die anfängliche Geschwindigkeit und Performance der Software bei der Markteinführung. D) Die Möglichkeit, Software nach der Markteinführung zu korrigieren, zu modifi- zieren und zu erweitern, also ihre Wartbarkeit. (richtig) Antwort (lang): ···················································································································· 118 Softwarequalität ······························································································ Die Wartbarkeit oder Maintainability ist ein zentrales Qualitätsmerkmal für die Nachhaltigkeit von Softwareprodukten. Sie bezeichnet die Fähigkeit, Software nach der Markteinführung korrigieren, anpassen und weiterentwickeln zu können. Oft- mals wird die Bedeutung der Wartbarkeit unterschätzt, und die Projektplanung be- rücksichtigt nicht die Notwendigkeit der Fehlerbehebung nach der Inbetriebnahme. Ebenso kann die Vernachlässigung der langfristigen Wartung bei der Beauftragung von Subunternehmern für die Entwicklung von Softwarekomponenten zu Schwierig- keiten führen. Eine vorausschauende Betrachtung der Wartbarkeit ist daher ent- scheidend für die Wettbewerbsfähigkeit und das Überdauern am Markt, da sie die Grundlage für eine fortlaufende Anpassung und Verbesserung der Software bildet und so deren Lebenszyklus verlängert. Was ist der Hauptunterschied zwischen Standards und Normen im Kontext von Quality Engineering? Multiple-Choice-Fragen: A) Standards sind formeller und von anerkannten Normungsorganisationen, wäh- rend Normen von einer breiteren Palette von Organisationen entwickelt werden. B) Normen haben oft einen weniger formalen Charakter als Standards und ihre An- wendung ist in der Regel freiwillig. C) Standards sind konzeptionelle Rahmenwerke, die zur Beschreibung, Entwicklung und Verbesserung von Prozessen dienen. D) Normen sind in der Regel formeller und werden von anerkannten Normungsor- ganisationen herausgegeben, deren Einhaltung häufig verbindlich ist. (richtig) Antwort (lang): Der wesentliche Unterschied zwischen Standards und Normen liegt in ihrer Her- kunft, Verbindlichkeit und dem Grad ihrer formalen Anerkennung. Normen sind in der Regel formeller und werden von anerkannten Normungsorganisationen wie ISO, DIN oder ANSI herausgegeben. Sie zielen darauf ab, einheitliche Spezifikationen und Verfahren zu schaffen, und ihre Einhaltung kann verbindlich sein, besonders wenn sie durch Gesetze oder in bestimmten Industrien als Mindestanforderungen aner- kannt werden. Standards hingegen haben oft einen weniger formalen Charakter und ihre Anwendung ist meist freiwillig. Sie bieten allgemeine Richtlinien oder An- forderungen und werden von einer Vielzahl von Organisationen, wie Industriegrup- pen, Fachverbänden oder einzelnen Unternehmen, entwickelt. Sie müssen nicht ···················································································································· 119 Softwarequalität ······························································································ unbedingt von einer offiziellen Normungsorganisation anerkannt werden. Im Ge- gensatz dazu sind Modelle flexible konzeptionelle Rahmenwerke, die Organisatio- nen dabei unterstützen, ihre Prozesse zu verstehen und systematisch zu verbessern. Modelle bieten einen strukturierten Ansatz und umfassen häufig Best Practices und Methoden zur Implementierung von Verbesserungen. Was ist der Hauptzweck von Prozessnormen im Qualitätsmanagement? Multiple-Choice-Fragen: A) Die Sicherstellung, dass Produkte bestimmte Qualitäts- und Sicherheitsstandards erfüllen. B) Die Vereinheitlichung von Produktspezifikationen zur Förderung von Effizienz- steigerung und Kostenreduktion. C) Die Optimierung der Art und Weise, wie ein Endprodukt entsteht, um die Effizi- enz und Qualität von Prozessen zu verbessern. (richtig) D) Die Definition von Gebrauchstauglichkeit und die Messung der Benutzerzufrie- denheit, Effizienz und Effektivität. Antwort (lang): Prozessnormen haben das Ziel, nicht nur die Qualität des Endprodukts zu gewähr- leisten, sondern vor allem die Prozesse zu optimieren, die zu diesem Endprodukt führen. Sie reflektieren das Bedürfnis, die Effizienz und Qualität der Herstellungs- oder Dienstleistungsprozesse selbst zu verbessern. Prozessnormen fördern Best Practices und kontinuierliche Verbesserung, was letztendlich zu einer höheren Pro- duktqualität und Kundenzufriedenheit führt. Dies zeigt sich beispielsweise in Quali- tätsmanagementsystemen wie ISO 9000. Ein Vorteil dieser Normen ist die Förde- rung effizienter und effektiver Verfahren, während ein potenzieller Nachteil der Auf- wand und die Kosten sein können, die mit der Implementierung dieser Normen ver- bunden sind, insbesondere für kleinere Unternehmen. Prozessnormen wie die ISO 19011 bieten Leitlinien für das Auditieren von Managementsystemen, was für die kontinuierliche Verbesserung und Aufrechterhaltung der Konformität mit Standards unerlässlich ist. Sie sind ein integraler Bestandteil eines umfassenden Qualitätsma- nagementsystems, das darauf abzielt, die Gesamtleistung einer Organisation zu verbessern und durch eine kohärente Integration von Qualitätsmaßnahmen in allen Aspekten die Kundenzufriedenheit zu erhöhen. ···················································································································· 120 Softwarequalität ······························································································ Welcher Standard bietet einen umfassenden Rahmen für die Bewertung der Soft- warequalität, der sich über den gesamten Lebenszyklus der Softwareentwicklung erstreckt? Multiple-Choice-Fragen: A) DIN EN ISO 9241-11:2018-11 B) ISO 9126 C) ISO/IEC 25000-Reihe (richtig) D) ANSI/IEEE Standard 729-1983 Antwort (lang): Die ISO/IEC 25000-Reihe, auch bekannt als SQuaRE (Software Product Quality Re- quirements and Evaluation), bietet einen umfassenden Rahmen für die Bewertung der Softwarequalität, der weit über die reine Produktbewertung hinausgeht. Sie deckt den gesamten Lebenszyklus der Softwareentwicklung ab und legt dabei einen besonderen Schwerpunkt auf die Messbarkeit von Softwarequalität. Im Gegensatz zur ISO 9126, die sich hauptsächlich auf die Definition von Qualitätsmerkmalen und Untermerkmalen konzentrierte, liefert die ISO/IEC 25000-Serie detaillierte Anleitun- gen für die Bewertung und Verbesserung von Softwareprodukten. Dies beinhaltet das Definieren von Qualitätsmerkmalen wie Funktionalität, Zuverlässigkeit, Benutz- barkeit, Effizienz, Wartbarkeit und Portabilität und das Bereitstellen von Methoden für deren Messung. Die Serie unterstützt auch das Qualitätsmanagement durch Empfehlungen zur Etablierung, Implementierung, Aufrechterhaltung und kontinu- ierlichen Verbesserung von Qualitätsmanagementsystemen, speziell ausgerichtet auf Softwareprodukte. Dadurch bildet sie eine solide Grundlage für ein hohes Qua- litätsniveau in der Softwareentwicklung und trägt zur Steigerung der Kundenzufrie- denheit bei. ···················································································································· 121 Softwarequalität ······························································································ Kapitel 2.5 Welche Rolle spielen Managementprozesse in der Qualitätssicherung von Soft- wareentwicklungsprojekten? Multiple-Choice-Fragen: A) Managementprozesse dienen ausschließlich der Budgetierung und Finanzierung in Softwareentwicklungsprojekten. B) Sie fokussieren auf individuelle Leistung der Entwicklerinnen und Entwickler ohne Einbeziehung von Prozessen oder Infrastruktur. C) Managementprozesse betreffen nur die Auswahl und Verwaltung von Software- und Hardware-Infrastruktur. D) Managementprozesse umfassen Strategien und Verfahren, die eine strukturierte Umsetzung von Softwareprojekten ermöglichen und tragen zur Qualitätssicherung bei, indem sie systematische Abläufe und die Nutzung adäquater Ressourcen si- cherstellen. (richtig) Antwort (lang): Managementprozesse in der Softwareentwicklung sind entscheidend für die Quali- tätssicherung, da sie den organisatorischen Rahmen für systematische und struktu- rierte Projektablaufpläne bereitstellen. Sie definieren eine Sequenz von Schritten, die bei der Umsetzung eines Softwareprojekts befolgt werden, und beinhalten die Nutzung von Ressourcen wie produktbezogene Dokumente, Infrastruktur und Per- sonal. Durch die Etablierung klarer Managementprozesse kann ein Unternehmen sicherstellen, dass Projekte effizient und effektiv durchgeführt werden, was wiede- rum zu hochwertigen Softwareprodukten führt. Diese Prozesse sind anpassbar und sollten auf die spezifischen Bedingungen des Projekts und der Unternehmensstruk- tur zugeschnitten sein. Dabei dienen Vorgehensmodelle wie das V-Modell als Richt- schnur für die Entwicklung, bieten aber auch die Flexibilität, angepasst zu werden, um individuelle Herausforderungen und Ressourcen zu berücksichtigen. Was kennzeichnet die Validierung im Kontext des V-Modells in der Softwareent- wicklung? Multiple-Choice-Fragen: A) Validierung bezieht sich auf die Überprüfung der Codequalität und Optimierung der Leistungsfähigkeit einzelner Softwaremodule. ···················································································································· 122 Softwarequalität ······························································································ B) Sie umfasst das Testen von Softwarekomponenten in isolierten Umgebungen, um deren individuelle Funktionalität zu bestätigen. C) Validierung bedeutet die Überprüfung, ob das System die Anforderungen und Bedürfnisse des Endanwenders erfüllt. (richtig) D) Die Validierung ist ein automatisierter Prozess, der ohne menschliche Eingriffe die Spezifikation der Software bestätigt. Antwort (lang): Im Rahmen des V-Modells ist die Validierung ein Prozess, der gegen Ende des Ent- wicklungszyklus stattfindet. Sie dient dazu zu bestätigen, dass das entwickelte Soft- wareprodukt den Bedürfnissen und Anforderungen des Kunden oder Benutzers ent- spricht. Dies geschieht typischerweise durch Abnahmetests, die in einer Umgebung durchgeführt werden, die der tatsächlichen Betriebsumgebung nachempfunden ist. Im Gegensatz zur Verifikation, die technisch überprüft, ob die Software korrekt nach der Spezifikation implementiert wurde, beantwortet die Validierung die Frage, ob das Produkt tatsächlich das Problem löst, für das es entworfen wurde. In sicher- heitskritischen und fehlertoleranten Systemen ist diese Phase von großer Bedeu- tung, da sie die Eignung und Tauglichkeit des Produkts für seinen vorgesehenen Ein- satz bestätigt. Welches der folgenden Ziele wird primär durch die Implementierung von Reife- gradmodellen in der Softwareentwicklung verfolgt? Multiple-Choice-Fragen: A) Die Reduzierung der Entwicklungszeit für einzelne Softwaremodule. B) Die ausschließliche Verbesserung der Benutzeroberflächen von Softwareproduk- ten. C) Die Steigerung der Gesamtqualität von Softwareprodukten durch verbesserte Prozessreife. (richtig) D) Die Erhöhung der Anzahl veröffentlichter Softwareprodukte innerhalb eines Ge- schäftsjahres. Antwort (lang): Reifegradmodelle wie das Capability Maturity Model (CMM), das Capability Matu- rity Model Integration (CMMI) und ISO 15504 (auch bekannt als SPICE) zielen darauf ab, die Qualität der Softwareprodukte durch eine systematische Verbesserung der ···················································································································· 123 Softwarequalität ······························································································ Entwicklungsprozesse und organisatorischen Strukturen zu erhöhen. Diese Modelle bieten einen Rahmen für Organisationen, um ihre Entwicklungs- und Geschäftspro- zesse zu bewerten und zu optimieren. Durch die Einführung von Best Practices und die Bewertung der Prozesseffizienz tragen sie dazu bei, die Zuverlässigkeit und Leis- tung von Softwareprodukten zu steigern. Besonders in einer Zeit, in der Software immer komplexer wird und eine zentrale Rolle in vielen Lebens- und Geschäftsberei- chen spielt, ist eine hohe Softwarequalität unerlässlich, um das Risiko von Fehlern zu minimieren und die Kundenzufriedenheit zu maximieren. Indem sie die Reife der Prozesse verbessern, helfen Reifegradmodelle Unternehmen nicht nur, hochwertige Software zu entwickeln, sondern auch, ihre Abläufe effizient und effektiv zu gestal- ten. Welche Rolle spielt die Build-Automatisierung im Kontext der Software-Infra- struktur? Multiple-Choice-Fragen: A) Sie dient der manuellen Durchführung von Softwaretests nach der Implementie- rung. B) Build-Automatisierung ist hauptsächlich für das Design und die Verbesserung der Benutzeroberfläche verantwortlich. C) Sie ermöglicht das direkte Deployment von Software in die Produktionsumge- bung ohne vorherige Tests. D) Build-Automatisierung ermöglicht das automatisierte und wiederholbare Kom- pilieren von Code-Segmenten, wodurch die Entwicklung effizienter und konsisten- ter wird. (richtig) Antwort (lang): Die Build-Automatisierung ist ein integraler Bestandteil der Software-Infrastruktur, der es ermöglicht, den Prozess des Kompilierens und Zusammenfügens von Code automatisch durchzuführen. Diese Automatisierung ist entscheidend für die Effi- zienzsteigerung innerhalb des Entwicklungszyklus, da sie das wiederholbare und konsistente Erstellen von Software-Builds ohne manuelle Eingriffe erlaubt. Mit Tech- niken wie der inkrementellen Kompilierung werden nur die veränderten Teile des Codes neu kompiliert, was zu einer deutlichen Zeitersparnis führt. Darüber hinaus unterstützt die dezentrale Organisation des Build-Prozesses, oft durch Cloud-Infra- strukturen ermöglicht, eine skalierbare und flexible Entwicklung, die schnelle ···················································································································· 124 Softwarequalität ······························································································ Anpassungen und kontinuierliche Integration unterstützt. All diese Faktoren tragen dazu bei, die Zuverlässigkeit und Qualität der Software zu verbessern und die Pro- duktivität der Entwicklerteams zu erhöhen. Kapitel 3.5 Welche der folgenden ist KEINE konstruktive Qualitätsmaßnahme in der Soft- wareentwicklung? Multiple-Choice-Fragen: A) Designmuster anwenden B) Code nach der Implementierung testen (gehört NICHT dazu) C) Usability während des Entwurfs berücksichtigen D) Architektonische Vorgaben festlegen Antwort (lang): Konstruktive Qualitätsmaßnahmen in der Softwareentwicklung beinhalten proak- tive Schritte zur Qualitätssicherung, um die Entstehung von Fehlern von vornherein zu verhindern. Dies umfasst die Anwendung von bewährten Verfahren, Strukturen und Bestandteilen, die bereits in der Vergangenheit zur Verbesserung spezifischer Qualitätsaspekte beigetragen haben. Option B, das Testen des Codes nach der Im- plementierung, fällt nicht unter konstruktive, sondern unter analytische Qualitäts- maßnahmen, da sie darauf ausgerichtet ist, bereits entstandene Fehler zu finden und zu beheben, anstatt deren Entstehung zu vermeiden. Daher ist Option B die richtige Antwort, da es sich hierbei um eine reaktive Maßnahme handelt und nicht um eine präventive Strategie, wie sie für konstruktive Maßnahmen charakteristisch ist. Welche Rolle spielen Notationskonventionen in der Softwareentwicklung? Multiple-Choice-Fragen: A) Sie bieten verschlüsselte Sicherheitsprotokolle für Datenübertragungen. ···················································································································· 125 Softwarequalität ······························································································ B) Sie stellen Anleitungen für konsistenten und lesbaren Code bereit. (richtig) C) Sie regulieren die Performance von Netzwerkkomponenten. D) Sie geben die grafische Benutzeroberfläche einer Software vor. Antwort (lang): Notationskonventionen in der Softwareentwicklung sind entscheidend, um eine ein- heitliche Codebasis zu gewährleisten. Sie dienen als standardisierte Richtlinien, die von Entwicklern befolgt werden, um die Lesbarkeit, Wartbarkeit und Konsistenz des Codes zu verbessern. Dies erleichtert das Verständnis und die Zusammenarbeit zwi- schen Teammitgliedern und fördert eine effiziente Codepflege und -erweiterung. Sie tragen nicht direkt zu Aspekten wie Netzwerkleistung oder UI-Design bei, sind aber ein fundamentales Element guter Entwicklungspraktiken. Warum ist der Einsatz von „bewährten Bestandteilen“ in der Softwareentwick- lung von großer Bedeutung? Multiple-Choice-Fragen: A) Sie erfordern eine längere Entwicklungszeit. B) Sie sind mit höheren sofortigen Kosten verbunden. C) Sie erhöhen die Wahrscheinlichkeit von Fehlern in neuen Projekten. D) Sie tragen zu einer beschleunigten Fertigstellung und höheren Qualitätsstan- dards bei. (richtig) Antwort (lang): Der Einsatz von „bewährten Bestandteilen“ ist in der Softwareentwicklung von gro- ßer Bedeutung, da er zu einer beschleunigten Fertigstellung von Projekten und hö- heren Qualitätsstandards beiträgt. Bewährte Komponenten, Bibliotheken, Frame- works und Tools haben ihren Wert bereits in der Praxis unter Beweis gestellt. Ihre Verwendung erlaubt es Entwicklern, auf bereits vorhandene, getestete und opti- mierte Algorithmen, Datenstrukturen und Funktionen zurückzugreifen, ohne diese neu programmieren zu müssen. Dies spart nicht nur Zeit, sondern sichert auch die Qualität der Software, da bewährte Bestandteile typischerweise von früheren ···················································································································· 126 Softwarequalität ······························································································ Fehlern bereinigt sind. Im Gegensatz zu den Optionen A, B und C, die jeweils nega- tive Aspekte suggerieren, reflektiert Option D korrekt die Vorteile des Einsatzes be- währter Bestandteile: Effizienzsteigerung, Kostensenkung, Fehlerreduktion und Qualitätsverbesserung in der Softwareentwicklung. Welche internationale Norm legt Prinzipien und Leitlinien für das mensch- zentrierte Design von interaktiven Systemen fest? Multiple-Choice-Fragen: A) ISO 9001 B) ISO 9241-210 (richtig) C) ISO 13407 D) ISO 14001 Antwort (lang): Die internationale Norm ISO 9241-210, bekannt unter dem Titel „Ergonomie der Mensch-System-Interaktion – Teil 210: Menschzentrierte Gestaltung von interakti- ven Systemen“, legt Prinzipien und Leitlinien für das menschzentrierte Design von interaktiven Systemen fest. Diese Norm, die früher als ISO 13407 bekannt war, be- tont die Bedeutung der Benutzereinbeziehung in den Gestaltungsprozess und zielt darauf ab, Systeme zu entwickeln, die nutzbar und auf die Bedürfnisse, Präferenzen und Einschränkungen der Endnutzer abgestimmt sind. Die Norm befasst sich mit wichtigen Themen wie dem Verständnis und Definieren des Kontexts der Nutzung, dem Identifizieren der Nutzerbedürfnisse und Anforderungen, der Gestaltung der Interaktion und des Interfaces sowie der Durchführung von Nutzertests und der Be- wertung der Usability. ISO 9241-210 ist somit ausschlaggebend für Usability und User Experience (UX) und stellt einen zentralen Bezugspunkt für Fachleute im Be- reich der Gestaltung benutzerzentrierter interaktiver Systeme dar. ···················································································································· 127 Softwarequalität ······························································································ Kapitel 4.4 Welcher der folgenden Aktivitäten gehört NICHT zum dreistufigen Vorgehen nach Schneider (2012) für die Erstellung eines Qualitätsmodells? Multiple-Choice-Fragen: A) Die abstrakten Qualitätsziele werden zuerst festgelegt, wobei standardisierte Be- griffe genutzt werden. B) Die spezifischen Kundensituationen und Projektkontexte werden zur Anwen- dung der abstrakten Qualitätsziele herangezogen. C) Die konkreten Qualitätsmerkmale werden durch wichtige und typische Beispiele verdeutlicht. D) Die Implementierung von Designprototypen erfolgt als Teil der konkreten Quali- tätsmerkmale. (gehört NICHT dazu) Antwort (lang): Das dreistufige Vorgehen nach Schneider (2012) für die Erstellung eines Qualitäts- modells beinhaltet die Festlegung abstrakter Qualitätsziele, die Anpassung dieser Ziele auf spezifische Kundensituationen und Projekte und die Definition von Indika- toren und Metriken zur Messung der Zielerreichung. Die richtige Antwort auf die gestellte Multiple-Choice-Frage ist Option D, da die Implementierung von Design- prototypen nicht explizit als Teil des Vorgehens erwähnt wird. In der Beschreibung nach Schneider konzentriert sich der Prozess auf die Definition und Spezifikation von Qualitätszielen, -merkmalen und -metriken, nicht auf die Schritte der Implementie- rung oder des Designs. Die Schritte, die Schneider beschreibt, zielen darauf ab, ein individuelles Qualitätsverständnis des Kunden in einem maßgeschneiderten Modell abzubilden, das als Entwicklungsrichtlinie und Bewertungskriterium für Software dient. Welche Aussage über Softwaremetriken ist gemäß Schneider (2012) korrekt? Multiple-Choice-Fragen: A) Softwaremetriken können nur numerische Werte als Ergebnisse haben. B) Softwaremetriken sollten nur Produktmaße beinhalten, um relevant zu sein. C) Softwaremetriken können den Softwareentstehungsprozess messen und nutzen Zahlen, Zeichen oder Symbole als Ergebnisse. (richtig) ···················································································································· 128 Softwarequalität ······························································································ D) Softwaremetriken bewerten ausschließlich die Qualität des Quellcodes einer Software. Antwort (lang): Softwaremetriken sind gemäß Schneider (2012) weit gefasste Instrumente zur Be- wertung und Messung verschiedener Aspekte der Software und ihres Entwicklungs- prozesses. Die erweiterte Definition nach Schneider besagt, dass eine Softwa- remetrik eine Funktion ist, die eine Softwarekomponente oder ihren Entstehungs- prozess in einen messbaren Wert oder in Zeichen, eventuell mit einer zugehörigen Maßeinheit, überführt, und anzeigt, inwiefern ein entsprechendes Qualitätsziel er- reicht wird. Dies geht über das reine Messen numerischer Werte hinaus und bezieht Zeichen und Symbole mit ein, um ein umfassendes Bild der Softwarequalität oder - effizienz zu gewährleisten. Schneider betont auch, dass Metriken notwendig sind, die nicht nur die Software an sich, sondern auch den Prozess ihrer Entwicklung mes- sen, da dieser einen erheblichen Einfluss auf die Produktqualität hat. Zudem wird vorgeschlagen, Softwaremetriken nach verschiedenen Kriterien zu klassifizieren, wie Produktmaße, Prozessmaße und Projektmaße, um ein ganzheitliches Verständ- nis und Management von Softwareprojekten zu ermöglichen. Daher ist Antwort C korrekt, da sie diese breitere und inklusivere Sicht auf Softwaremetriken widerspie- gelt, die nicht nur quantifizierbare, sondern auch qualitative, prozessorientierte und projektbezogene Bewertungen ermöglichen. Was misst die zyklomatische Komplexität nach Thomas J. McCabe? Multiple-Choice-Fragen: A) die Anzahl der Zeilen im Quellcode eines Programms B) die Anzahl der Bugs pro Zeile des Quellcodes C) die Anzahl der Funktionen und Methoden in einem Programm D) die Anzahl der linearen unabhängigen Pfade durch den Quellcode (richtig) Antwort (lang): Die zyklomatische Komplexität ist eine Softwaremetrik, die von Thomas J. McCabe im Jahr 1976 eingeführt wurde und die dazu dient, die Komplexität eines Programms zu messen. Sie erreicht dies durch die Ermittlung der Anzahl der linearen unabhän- gigen Pfade durch den Quellcode des Programms. Diese Pfade repräsentieren die ···················································································································· 129 Softwarequalität ······························································································ verschiedenen Wege, die bei der Ausführung des Programms potenziell durchlaufen werden können. Die Metrik korreliert direkt mit der Anzahl der Entscheidungspunkte im Code, wie zum Beispiel If-Anweisungen, Schleifen und Fallunterscheidungen (case oder switch Anweisungen). Ein Programm mit einer höheren Anzahl von Ent- scheidungspunkten wird mehr potenzielle Pfade haben, was zu einer höheren zyklo- matischen Komplexität führt. Die zyklomatische Komplexität V(G) eines Programms wird durch die Formel V(G) = E – N + 2P berechnet, wobei E die Anzahl der Kanten im Kontrollflussgraphen, N die Anzahl der Knoten und P die Anzahl der zusammen- hängenden Komponenten repräsentiert. Diese Metrik ist besonders nützlich, um Einblicke in die strukturelle Komplexität eines Programms zu erhalten, was wiede- rum die Verständlichkeit und Wartbarkeit des Codes beeinflusst. In der Software- entwicklung ist es üblich, Funktionen oder Methoden mit einer zyklomatischen Kom- plexität von mehr als 10 zu überarbeiten, um die Komplexität zu reduzieren und da- mit den Code verständlicher und wartungsfreundlicher zu gestalten. Warum bilden klassische Software-Metriken wie die McCabe- und Halstead-Met- riken die Komplexität objektorientierter Programme nicht vollständig ab? Multiple-Choice-Fragen: A) Sie berücksichtigen nicht die Klassenstruktur und Beziehungen in objektorien- tierten Programmen. (richtig) B) Sie messen nur die Anzahl der Klassen und Methoden, nicht aber ihre Qualität. C) Sie sind ausschließlich für prozedurale Programmiersprachen anwendbar. D) Sie basieren auf der Anzahl der Codezeilen, was für objektorientierte Programme irrelevant ist. Antwort (lang): Die etablierten Software-Metriken, einschließlich McCabe und Halstead, sind auf den Prinzipien der imperativen Programmierung aufgebaut und behandeln Pro- gramme als Sequenzen von Anweisungen, die prozedurale Aspekte wie Prozeduren und Funktionen betonen. Da sie in einer Zeit entwickelt wurden, bevor Konzepte wie Objektorientierung weit verbreitet waren, berücksichtigen sie nicht die speziellen Eigenschaften objektorientierter Programme wie Klassenstrukturen und deren Be- ziehungen zueinander. Diese Metriken sind zwar grundsätzlich auch auf objektori- entierte Sprachen anwendbar, aber sie adressieren nicht die Komplexität, die sich ···················································································································· 130 Softwarequalität ······························································································ aus den Beziehungen zwischen Objekten und der Vererbungshierarchie ergibt. Sie erfassen somit nicht die vollständige Komplexität eines objektorientierten Software- Systems und erlauben keine umfassende Bewertung der Systemkomplexität. Dar- über hinaus bieten sie keine Lösung für die besonderen Herausforderungen objekt- orientierter Sprachen, besonders im Hinblick auf Vererbung und die Nichtberück- sichtigung geerbter Methoden, was die Verbindung zwischen der Menge des Codes und der Komplexität einer Klasse schwächt. Um signifikante Ergebnisse zu liefern, müssen daher die prozeduralen Metriken erweitert werden, um die besonderen Merkmale objektorientierter Programmiersprachen einzubeziehen. Kapitel 5.4 Welcher der folgenden Tests wird genutzt, um die Widerstandsfähigkeit einer Software gegen externe Fehler zu prüfen? Multiple-Choice-Fragen: A) Performance-Test B) Usability-Test C) Robustheitstest (richtig) D) Dokumentationstest Antwort (lang): Der Robustheitstest ist darauf ausgerichtet zu überprüfen, wie gut die Software ex- terne Fehlerquellen handhaben kann, insbesondere solche, die von Nutzereingaben stammen könnten. Im Gegensatz dazu bewerten Performance-Tests die Verarbei- tungs- und Antwortzeiten unter Last, Usability-Tests fokussieren auf die Benutzer- freundlichkeit, und Dokumentationstests stellen sicher, dass die Nutzer- und Ent- wicklerdokumentationen vollständig und korrekt sind. Was wird mit einem dynamischen Softwaretest hauptsächlich überprüft? Multiple-Choice-Fragen: A) die statische Struktur des Codes B) die Softwarequalität ohne Codeausführung C) die Korrektheit der Dokumentation ···················································································································· 131 Softwarequalität ······························································································ D) das tatsächliche Verhalten der Software während der Ausführung (richtig) Antwort (lang): Ein dynamischer Softwaretest zielt darauf ab, das Programm oder den Code inner- halb einer Laufzeitumgebung auszuführen, um Fehler, Schwachstellen oder Abwei- chungen von den definierten Anforderungen zu identifizieren. Diese Tests sind be- sonders wertvoll, da sie es ermöglichen, das Verhalten der Software unter einer Viel- falt von Betriebsbedingungen zu beobachten und zu bewerten. Im Gegensatz zu sta- tischen Tests, die sich auf die Analyse des nicht ausgeführten Codes konzentrieren, geben dynamische Tests Aufschluss über die Leistung, Stabilität und Zuverlässigkeit der Software im aktiven Betrieb. Sie sind essenziell, um nicht nur Fehler im Code aufzudecken, sondern auch um Probleme bei der Integration der Software, in der Benutzerinteraktion und im Betrieb des Systems zu erkennen und zu beheben. Was ist der Hauptzweck von Testfällen in der Softwareentwicklung? Multiple-Choice-Fragen: A) Die Komplexität des Codes zu reduzieren. B) Eine risikobasierte Annäherung an das Testen zu vermeiden. C) Fehler und Probleme systematisch zu finden und zu beheben, bevor die Software den Endbenutzer erreicht. (richtig) D) Die Gesamtleistung der Entwickler zu bewerten. Antwort (lang): Testfälle sind detaillierte Szenarien, die entwickelt werden, um spezifische Aspekte einer Softwarefunktion zu testen. Ihr primärer Zweck ist es, systematisch Fehler und Probleme zu identifizieren und zu korrigieren, bevor das Produkt an den Endbenut- zer ausgeliefert wird. Dieser Prozess hilft sicherzustellen, dass die Software die spe- zifizierten Anforderungen erfüllt und dass die kritischen Funktionen zuverlässig ar- beiten. Testfälle bilden somit eine entscheidende Grundlage für eine qualitativ hoch- wertige Softwareentwicklung und sind besonders wichtig, da es nahezu unmöglich ist, jede mögliche Interaktion innerhalb eines komplexen Systems vollständig zu tes- ten. Stattdessen fokussiert man auf die wahrscheinlichsten und risikoreichsten An- wendungsfälle, um eine effektive und effiziente Testabdeckung zu gewährleisten. ···················································································································· 132 Softwarequalität ······························································································ Was ist der Fokus von Black-Box-Tests in der Softwareentwicklung? Multiple-Choice-Fragen: A) Die interne Struktur des Codes zu analysieren. B) Die Implementierungsdetails der Software zu überprüfen. C) Den Grad der Codeabdeckung zu messen. D) Das Ergebnis der Testdurchführung, unabhängig von den internen Mechanismen des Systems zu bewerten. (richtig) Antwort (lang): Bei Black-Box-Tests liegt der Fokus auf dem Ergebnis der Testdurchführung, ohne dass dabei die interne Logik oder Struktur der Software betrachtet wird. Es geht um die Frage, ob die Software die spezifizierten Anforderungen erfüllt und die ge- wünschten Ergebnisse liefert, wenn sie unter festgelegten Bedingungen ausgeführt wird. Fehler, die während dieser Tests identifiziert werden, erfordern oft eine detail- lierte Nachuntersuchung, da Black-Box-Tests keine direkte Aussage über die interne Stabilität oder Komplexität der getesteten Einheit ermöglichen. Diese Testmethode wird häufig bei Softwarekomponenten eingesetzt, bei denen der Quellcode nicht zu- gänglich ist, und basiert stark auf den definierten Spezifikationen und Anforderun- gen des Produkts. Welcher der folgenden Punkte ist KEIN Kernaspekt von Unit-Tests in der Soft- wareentwicklung? Multiple-Choice-Fragen: A) Nutzung von Mock-Objekten oder Stubs zur Isolation der zu testenden Kompo- nente B) automatische Ausführung als Teil einer kontinuierlichen Integration (CI) Umge- bung C) manuelle Bewertung des Codes nach jedem Testdurchlauf (ist KEIN Kernaspekt) D) schnelle und wiederholte Ausführung ohne Verlangsamung des Entwicklungs- prozesses Antwort (lang): Unit-Tests sind automatisierte Tests, die darauf abzielen, die kleinsten Einheiten ei- ner Anwendung, wie Klassen oder Funktionen, zu überprüfen. Sie verwenden das ···················································································································· 133 Softwarequalität ······························································································ Arrange-Act-Assert (AAA) Muster, um einen klaren und verständlichen Testprozess zu ermöglichen und beinhalten häufig die Isolation der Testkomponenten mittels Mocks oder Stubs. Diese Tests sind integraler Bestandteil einer CI/CD-Pipeline, wodurch sie automatisch ausgeführt werden und schnelles Feedback zur Codequa- lität bieten. Im Gegensatz zu den vorgestellten Kernaspekten von Unit-Tests, erfor- dern sie typischerweise keine manuelle Bewertung nach jedem Testdurchlauf, da sie selbstvalidierend sind und direkt pass/fail Ergebnisse liefern. Daher ist die Option C) „Manuelle Bewertung des Codes nach jedem Testdurchlauf“ nicht korrekt und mar- kiert die falsche Aussage im Kontext von Unit-Tests. Kapitel 6.5 Was beschreibt am besten das Prinzip der kontinuierlichen Integration in der agi- len Softwareentwicklung? Multiple-Choice-Fragen: A) Regelmäßige und gründliche Dokumentation aller Codeänderungen. B) Regelmäßige Vertragsverhandlungen mit dem Kunden zur Anforderungsbestäti- gung. C) Kontinuierliches Sammeln von Kundenfeedback zu fertigen Softwarefeatures. D) Regelmäßige Integration von Codeänderungen in das Hauptentwicklungsreposi- tory und Durchführung automatisierter Tests. (richtig) Antwort (lang): Kontinuierliche Integration ist ein zentraler Aspekt der agilen Softwareentwicklung, bei dem es darum geht, Codeänderungen regelmäßig und häufig in das Hauptent- wicklungsrepository zu integrieren. Dieses Vorgehen gewährleistet, dass neue Code- beiträge schnell auf Kompatibilität mit dem bestehenden Code überprüft und etwa- ige Probleme frühzeitig erkannt und behoben werden können. Automatisierte Tests spielen hierbei eine entscheidende Rolle, da sie sicherstellen, dass mit jeder Integra- tion die Qualität der Software erhalten oder verbessert wird. Durch die regelmäßige Integration und das Testen wird das Risiko von Integrationsfehlern minimiert und eine fortlaufende Qualitätssicherung ermöglicht, welche für agile Entwicklungs- teams von großer Bedeutung ist. ···················································································································· 134 Softwarequalität ······························································································ Was ist ein charakteristisches Merkmal der Testgetriebenen Entwicklung (TDD)? Multiple-Choice-Fragen: A) Code wird nachträglich durch ausführliche Dokumentation getestet. B) Tests werden nur nach jeder Implementierungsphase ausgeführt. C) Tests werden vor der Implementierung des Codes geschrieben. (richtig) D) Code wird einmalig am Ende der Entwicklungsphase refaktoriert. Antwort (lang): Das charakteristische Merkmal der Testgetriebenen Entwicklung ist, dass Tests vor der Implementierung des Codes geschrieben werden. Dieser Ansatz stellt sicher, dass die Entwicklung von Anfang an auf die Erfüllung der spezifischen Anforderun- gen ausgerichtet ist, die durch die Tests festgelegt werden. Indem Entwickler zuerst Tests schreiben, die das gewünschte Verhalten einer Funktion beschreiben, und dann Code schreiben, der diese Tests besteht, fördert TDD einen fokussierten und minimalen Code-Ansatz. Dies führt zu besserem Design und erhöht die Wahrschein- lichkeit, dass die Software die Bedürfnisse erfüllt. Refactoring wird dann durchge- führt, um den Code zu verbessern, während die Funktionalität durch die Tests gesi- chert bleibt. In TDD sind kontinuierliches Testen und Refactoring eingebettet in den Entwicklungszyklus, was eine laufende Qualitätssicherung und Verbesserung des Codes ermöglichten. ···················································································································· 135

Use Quizgecko on...
Browser
Browser