# Fragen zu Software Engineering



## Lodon (18. Mai 2006)

Hi,


Was würdet Ihr Antorten, wenn euch jemand folgende Fragen stellt ??




           1) Angenommen, Sie bekommen die Quellcodes eines Programmpaketes vorgelegt, mit der Aufgabe, die Qualität 
               der betreffenden Software zu beurteilen. Wie gehen Sie vor?



              2) Was ist Software-Qualität? Wie kann man Software-Qualität messen? 




Gruß London


----------



## Jockel (18. Mai 2006)

Zu 1:
Sollen die externen oder die internen Faktoren beurteilt werden?

Zu 2, in Stichpunkten:
Externe Faktoren:
- Effizienz
- Stabilität
- Integrität
- Genauigkeit
- Korrektheit
- Benutzbarkeit
- Fehlertoleranz

Interne Faktoren:
- Wartbarkeit
- Flexibilität
- Portabilität
- Wiederverwendbarkeit
- Lesbarkeit
- Verständlichkeit
- wie gut kann man die Software testen

Dabei überschneiden sich einige Faktoren respektive lassen sich einige Punkte nicht gleichermaßen gut erreichen.


----------



## Lodon (19. Mai 2006)

Hi,

Interessant wäre es zu wissen, wie man sowohl die internen als auch die externen Faktoren beurteilen kann. Welche Analysewerkzeuge kann man einsetzen.



Angenommen man bekommt einen in Java geschriebenen Webserver, der folgendes tut:
    - Eingabedaten über jsp sind: username, nickname, passwort, email
    - Speicherung dieser daten in einer Sql-Datenbank  (Passwort wird verschlüsselt abgelegt)


Die Sicherheit des Server könnte man ja dadurch bestimmen, indem man sich die verwendeten Verschlüsselungsalgorithmen ansieht und diese bewertet. 

Aber wie kann man die Effizienz, Wartbarkeit etc. messen und somit bewerten. 


Gruß Lodon


----------



## Murray (19. Mai 2006)

Ist Qualität nicht i.A. der Grad der Übereinstimmung mit den zugrundeliegende Vorgaben? Wie kann man dann überhaupt anhand des Quellcodes die Qualität beurteilen wollen, ohne a) die Vorgaben und b) das Verhalten des kompilierten Systems unter Real-World-Bedingungen zu kennen??


----------



## Lodon (20. Mai 2006)

Qaulität gibt ja z.B. auch an wie gut (korrektheit, effizent) man die gesetzten Vorgaben umgesetzt hat.

z.B wenn jemand überprüfen möchte ob eine mp3 datei bereits auf der festplatte liegt, dann könnte er das z.B folgendermassen lösen:
   1. vergleich der dateinamen
   2. vergelich des gesamten inhaltes (byte für byte)
   3. überprüfung der hashwerte der dateien.


die erste löung wäre effizient aber nicht korrekt, denn die die beiden mp3s könnten komplet verschieden sein (z.B falsche namen oder andere sampelrate etc.)

die zweite lösung wäre korrekt aber nicht effizient. nach dem durchlauf des programs könnte man sagen, das es identische duplikate der gesuchten datei gibt, Allerdings würde es unnötig langen dauern alle dateien byte weise zu vergleichen.

die dritte methode ist effizient und korrekt. man würde schnell und mit sicherheit sagen können, ob es duplikate gibt.




Es interessant zu wissen welche tools eingesetzt werden um Software automatisch zu analysieren. Und wo man sich im internet genauer über softwarequalität / qualitätsprüfung informieren kann. 

Ich habe bereits google bemüht, allerdings ergab die suche lediglich Informationen zu allgemeinen Grundlagen des Softwareenginering's. Es wurden keine tools benant oder eine Auswertung von einer Analyse dargestellt.


Gruß Lodon


----------



## Mörketid (30. Mai 2006)

hallo, also das geht ja fast in richtung softwarearchitektur. such doch danach mal. es gibt doch da diese einflussfaktoren (qualitative, technische und produktspezifische). 

gruß, mörketid


----------



## SnooP (30. Mai 2006)

nunja... guck doch mal nach Code-Audits - so würde ich da vorgehn. Idealerweise sollte man im vorhinein eine Art Metrik aufstellen, anhand derer man den Quelltext auf Qualität überprüfen kann... also muss man sich vorher klar sein, was für code eigentlich als unsauber gilt und welcher bedenkenlos ist...
Case-Tools (z.B. Together oder Rose) stellen dazu schon ne Bibliothek bereit, anhand derer man den Code analysieren kann.. da ist dann z.B. sowas drin, wenn if-Abfragen mehr als über zwei logische Operatoren verknüpft werden etc... - oder aber if-Verschachtelungstiefen...


----------

