Hauptinhalt

Zuverlässige und robuste Computersysteme (Seminar)

Seminar WS 17/18 (2 SWS, Nr. 041404)

Zuverlässige und robuste Computersysteme

 

Die Platzvergabe ist abgeschlossen, Anmedlungen werden z.Z. nur für die Nachrückliste angenommen!

Veranstalter: Peter Buchholz (Tel.: (0231) 755 4746),

Email: peter.buchholz@cs.tu-dortmund.de

Sprechstunde: Donnerstag 10:00-11.30 und n.V.

 

Inhalt

Computer bestimmen einen immer größeren Teil des Alltags, sie steuern Industrieanlagen, überwachen technische Prozesse, sorgen dafür, dass wir kommunizieren und Informationen abrufen können. Die moderne Gesellschaft ist damit abhängig vom Funktionieren der digitalen Infrastruktur und Fehler können gravierende Konsequenzen haben. Im Rahmen des Seminars wollen wir uns sehr grundlegend mit dem Problem der Zuverlässigkeit von Computersystemen beschäftigen. Man spricht im Englischen in diesem Zusammenhang von „dependability“ und „dependable systems“. Der Begriff lässt sich nicht genau übersetzen, da neben Zuverlässigkeitsaspekten auch noch weitere Aspekte, die das Funktionieren eines Systems garantieren, behandelt werden. Wir sprechen deshalb auch von robusten Systemen, die sich robust gegenüber Störungen und Fehler verschiedener Art verhalten.

Literatur zur Einführung:

·       Behrooz Parhami: Dependable Computing

·       Klaus Echtle: Fehlertoleranzverfahren, Springer 1990

Weitere grundlegende Artikel finden Sei in der Zeitschrift IEEE Trans. in Dependadable and Secure Computing und den Proceedings der Konferenzreihen DSN und EDCC, die über die Universitätsbibliothek zugreifbar sind.

Die inhaltliche Beschreibung wird im Laufe des Semesters u. U. ergänzt und erweitert.

 

Themen

Die Themen werden jeweils in Blöcke zusammengefasst. Ein Block umfasst mehrere Seminarthemen. Teilnehmerinnen und Teilnehmer sollten sich zuerst für einen Themenblock entscheiden, sich dort einarbeiten und anschließend ein konkretes Thema festlegen und bearbeiten.  Die angegebene Literatur dient zum Einstieg in das jeweilige Themengebiet. Das Weitersuchen  von Literatur und das Lesen weiterer Artikel ist erwünscht und meistens auch notwendig.

Grundlagen

  1. Fehler in Computersystemen – Beispiele und Auswirkungen
    Wikipedia List of Software Bugs
    10 historical software bugs with extreme consequences .
    Epic failures: 11 infamous software bugs.
    SOFTWARE HORROR STORIES.
    Top software failures 2015/2016: Amazon, RBS, Starbucks - the worst software glitches this year.
    Lessons from a decade of IT failures. IEEE Spectrum, 2015.
  2. Grundlegende Begriffe und Methoden
    A. Avizienis, Jean-Claude Laprie, Brian Randell, Carl Landwehr: Basic Concepts and Taxonomy of Dependable and Secure Computing. IEEE Trans. on Dependable and Secure Computing 1 (1), 2004, 11-33.
    Klaus Echtle. Fehlertoleranzverfahren, Springer 1990. Kap. 1.
    Jean-Claude Laprie, Jean Arlat, Christian Béounes, Karama Kanoun: Definition and Analysis of Hardware- and Software-Fault-Tolerant Architectures. IEEE Computer 23(7), 1990, 39-51.
     Jean-Claude Laprie: Dependability of computer systems: concepts, limits, improvements. ISSRE, 1995, 2-11

Zuverlässigkeit von Computerarchitekturen

  1. Zuverlässigkeitsanforderungen im Chipdesign
    Shekhar Y. Borkar: Designing Reliable Systems from Unreliable Components: The Challenges of Transistor Variability and Degradation. IEEE Micro 25(6), 2005, 10-16.
    Martin Radetzki, Chaochao Feng, Xueqian Zhao, Axel Jantsch: Methods for fault tolerance in networks-on-chip. ACM Comput. Surv. 46(1), 2013, 8.1-8.38.
  2. Zuverlässige Caches
    Shubhendu S. Mukherjee, Joel S. Emer, Tryggve Fossum, Steven K. Reinhardt: Cache Scrubbing in Microprocessors: Myth or Necessity? PRDC 2004: 37-42.
    Sparsh Mittal, Jeffrey S. Vetter: Reliability Tradeoffs in Design of Volatile and Non-volatile Caches. Journal of Circuits, Systems and Computers 25 (11), 2016.
  3. Zuverlässigkeit von RAID-Systemen
    Weihang Jiang, Chongfeng Hu, Yuanyuan Zhou, Arkady Kanevsky: Are Disks the Dominant Contributor for Storage Failures? A Comprehensive Study of Storage Subsystem Failure Characteristics. ACM Trans. On Storage Systems 4 (3), 2008.
    David A. Patterson, Garth A. Gibson, Randy H. Katz: A Case for Redundant Arrays of Inexpensive Disks (RAID). SIGMOD Conference 1988: 109-116.
    Mahesh Balakrishnan, Asim Kadav, Vijayan Prabhakaran, Dahlia Malkhi: Differential RAID: Rethinking RAID for SSD reliability. ACM Transactions on Storage 6(2), 2010.
  4. Zuverlässigkeit großer Parallerechner
    M. Snir et al. Addressing failures in exascale computing. Int. Journ. High Perf. Comp. Appl. 28(2), 2014, 129-173.
    F. Capello et al. Toward Exascale Resilience: 2014 Update. Supercomputing Frontiers and Innovations 1 (1), 2014, 5-28.

Zuverlässigkeit von Software

  1. Grundlagen zuverlässiger Software
    Bev Littlewood, Lorenzo Strigini: Software reliability and dependability: a roadmap. ICSE -Future of SE Track 2000: 175-188.
    Bertrand Meyer: Dependable Software. Research Results of the DICS Program 2006: 1-33.
    Daniel Jackson: Dependable Software by Design. Scientific American 294 (6), 2006, 68-75.
    Phillip A. Laplante, Joanna F. DeFranco. Software Engineering of Safety-Critical Systems: Themes From Practitioners. IEEE Trans. on Reliability 66 (3), 2017, 825-836.
  2. N-Versionen Programmierung
    Liming Chen, A. Avizienis: N-Version Programming: A Fault-Tolerance Approach to Reliability of Software Operation.Fault-Tolerant Computing, 1995, ' Highlights from Twenty-Five Years'., Twenty-Fifth International Symposium on, Vol., Iss., 27-30 Jun 1995.
    J. C. Knight, N. G. Leveson:  An experimental evaluation of the assumption of independence in multiversion programming. IEEE Trans. Softw. Eng. 12, 1 (Jan. 1986), 96-109.
    Lajos Nagy, Richard Ford, and William Allen: N-Version Programming for the Detection of Zero-day Exploits. The 2006 IEEE Topical Conference on Cybersecurity, Daytona Beach, Florida, April 2006.
  3. Zertifizierung sicherheitskritischer Software
    ANSI/IEEE Standard 730-1989, Software Quality Assurance Plans, New York 1989, Institute of Electrical and Electronic Engineers.
    J. Bowen, Victoria Stavridou: Safety-critical systems, formal methods and standards. Software Engineering Journal. 8 (4), 2003.
    Peter Ulbrich, Fabian Scheler, Wolfgang Schröder-Preikschat: Zertifizierung (Vorlesung Echtzeitsysteme), Univ. Erlangen Nürnberg (https://www4.cs.fau.de/Lehre/SS10/V_EZL/Skript/12_Zertifizierung.pdf)
    Hardi Hungar, , Erwin Reyzl: Software-Entwicklung und Zertifizierung im Umfeld  sicherheitskritischer und hochverfügbarer Systeme: Bedeutung modellbasierter und formaler Ansätze für effiziente Entwicklung und Zertifizierung.  Software Engineering (Workshops). 2008.
  4. Alterungprozesse von Software-Systemen
    Michael Grottke, Rivalino Matias, Kishor S. Trivedi: The fundamentals of software aging. ISSRE Workshop IEEE, 1-6, 2008.
    Michael Grottke, Benjamin Schleich: How does testing affect the availability of aging software systems? Perform. Eval. 70(3), 2013, 179-196.
    Domenico Cotroneo, Roberto Natella, Roberto Pietrantuono, Stefano Russo: A survey of software aging and rejuvenation studies. JETC 10(1): 2014, 8:1-8:34.
    Yu Qiao, Zheng Zheng, FangYun Qin. An empirical study of software aging manifestations in Android. Proc. IEEE Software Reliability Engineering Workshops (ISSREW), 2016, 84-90.

Zuverlässigkeit in verteilten Systemen

  1.  Theoretische Grundlagen fehlertoleranter verteilter Systeme
    Felix C. Gärtner: Fundamentals of Fault-Tolerant Distributed Computing in Asynchronous Environments. ACM Comput. Surv. 31(1), 1999, 1-26.
  2. Praktische Aspekte fehlertoleranter und robuster verteilter Systeme
    Flaviu Cristian: Understanding Fault-Tolerant Distributed Systems. Commun. ACM 34(2), 1991, 56-78.
    Thomas E. Anderson, Scott Shenker, Ion Stoica, David Wetherall: Design guidelines for robust Internet protocols. Computer Communication Review 33(1), 2003, 125-130.
    Jürgen Vogel, Jörg Widmer: Robustness in Network Protocols and Distributed Applications of the Internet. In: Robust Intelligent Systems, Springer, 2008, 61-86.
  3. Fehlerdiagnose in Rechnernetzen
    Ma Igorzata Steindera, Adarshpal S.Sethib. A survey of fault localization techniques in computer networks. Science of Computer Programming 53 (2), 2004, 165-194.
    Srikar Tati ; Scott Rager ; Bong Jun Ko ; Guohong Cao ; Ananthram Swami ; Thomas La Porta. netCSI: A Generic Fault Diagnosis Algorithm for Large-Scale Failures in Computer Networks. IEEE Trans. on Dependable and Secure Computing 13 (3) , 2016, 355-368.
  4.  Zuverlässigkeit von Cloud-Systemen
    Himanshu Agarwal, Anju Sharma: A Comprehensive Survey of Fault Tolerance Techniques in Cloud Computing. Proc. 2015 Intl. Conference on Computing and Network Communications, IEEE, 2015, 408-413.
    Alysson Neves Bessani, Rüdiger Kapitza, Dana Petcu, Paolo Romano, Spyridon V. Gogouvitis, Dimosthenis Kyriazis, Roberto G. Cascella: A look to the old-world-sky: EU-funded dependability cloud computing research. Operating Systems Review 46(2), 2012, 43-56.
    James W. Anderson ; Hein Meling ; Alexander Rasmussen ; Amin Vahdat ; Keith Marzullo. Local Recovery for High Availability in Strongly Consistent Cloud Services. IEEE Trans. on Dependable and Secure Computing 14 (2), 2017, 172-184.
  5. Übereinstimmung in verteilten Systemen
    Leslie Lamport, Robert E. Shostak, Marshall C. Pease: The Byzantine Generals Problem. ACM Trans. Program. Lang. Syst. 4(3), 1982, 382-401.
    Michael Barborak, Miroslaw Malek: The Consensus Problem in Fault-Tolerant Computing. ACM Comput. Surv. 25(2), 1993, 171-220.
    Rachid Guerraoui, Nikola Knezevic, Vivien Quéma, Marko Vukolic: The next 700 BFT protocols. EuroSys 2010: 363-376.
    Robbert van Renesse, Deniz Altinbuken: Paxos Made Moderately Complex. ACM Comput. Surv. 47(3), 2015, 5:1-5:36.

Methoden zur Analyse und Bewertung von Zuverlässigkeit und Verfügbarkeit

  1. Formale Methoden
    Bernardi, Simona, José Merseguer, and Dorina C. Petriu: Dependability modeling and analysis of software systems specified with UML. ACM Computing Surveys 45 (1), 2012, 2-48.
    Knight, John C., et al. "Why are formal methods not used more widely?." Fourth NASA formal methods workshop. 1997.
  2. Modelle zur quantitativen Analyse
    David M. Nicol, William H. Sanders, Kishor S. Trivedi: Model-Based Evaluation: From Dependability to Security. IEEE Trans. on Dependable and Secure Computing 1 (1), 2004, 48-65.
    Kishor S. Trivedi, Dong Seong Kim, Arpan Roy , Deep Medhi: Dependability and Security Models. 7th International Workshop on the Design of Reliable Communication Networks, 11-20, 2009.
    Suleyman Kondakci: Analysis of information security reliability: A tutorial. Rel. Eng. & Sys. Safety 133, 2015, 275-299.
  3. Fehlerbäume
    W. Vesely u. a.: Fault Tree Handbook. NUREG-0492 Page V-3: Component Fault Categories, U.S. Nuclear Regulatory Commission, Washington DC 1981.
    Enno Ruijters, Mariëlle Stoelinga. Fault tree analysis: A survey of the state-of-the-art in modeling, analysis and tools. Computer Science Review 15/16, 2015, 29-62.
  4. Fehlerinjektion
    Mei-Chen Hsueh, Timothy K. Tsai, Ravishankar K. Iyer: Fault Injection Techniques and Tools. IEEE Computer 30 (4) 1997, 75-82.
    Steve Chessin: Injecting Errors for Fun and Profit. ACM Queue 8 (8), 2010, 10-18.
    Roberto Natella, Domenico Cotroneo, Henrique Madeira: Assessing Dependability with Software Fault Injection: A Survey. ACM Comput. Surv. 48(3), 2016, 44.
  5. Testmethoden
    Antonia Bertolino: Software Testing for Dependability Assessment. In: P. Nesi (ed.) Objective Software Quality, Springer LNCS 926, 1995, 236-248.
    D. Hamlet. Predicting dependability by testing. In ACM SIGSOFT Software Engineering Notes 21 (3), 1996, 84-91.
    Tse-Hsun Chen, Stephen W. Thomas, Hadi Hemmati, Meiyappan Nagappan, Ahmed E. Hassan. An Empirical Study on the Effect of Testing on Code Quality Using Topic Models: A Case Study on Software Development Systems. IEEE Trans. on Reliability 66 (3), 2017, 806-824.

Organisatorisches

Das Seminar findet als Kompaktseminar im Februar 2018 (voraussichtlich in der Woche vom 5.-9. Februar 2018) statt.

Ein erstes Treffen zur Themenvergabe findet voraussichtlich Anfang bis Mitte November 2017 statt.

Anmeldungen (mit Namen + Mat.Nr.) werden nur noch für die Nachrückliste per E-Mail (an peter.buchholz@cs.tu-dortmund.de) angenommen.

Da die Teilnehmerinnen-/Teilnehmerzahl ist beschränkt ist, erfolgt die Platzvergabe nach Eingang der Anmeldungen.

Für eine erfolgreiche Teilnahme am Seminar ist die Anwesenheit bei allen Vorträgen zwingend notwendig. Ferner muss ein ca. einstündiger Vortrag über ein Thema gehalten werden, die Diskussion zum Vortrag muss vorbereitet und geleitet werden und eine Ausarbeitung zum Thema im Umfang von ca. 12-15 Seiten ist zu erstellen. Ausarbeitungen sollen mit LaTeX unter Nutzung des llncs Stils erstellt werden und müssen mit pdflatex erzeugt werden können. Die Ausarbeitung muss in einer ersten Version vor dem Seminartermin vorliegen!