Towards Building Blocks for Agent-Oriented Programming Standardizing Interpreters, Environments and Tools

Total Page:16

File Type:pdf, Size:1020Kb

Towards Building Blocks for Agent-Oriented Programming Standardizing Interpreters, Environments and Tools Towards Building Blocks for Agent-Oriented Programming Standardizing Interpreters, Environments and Tools Doctoral Thesis (Dissertation) to be awarded the degree of Doctor rerum naturalium (Dr. rer. nat) submitted by Tristan Behrens from Osterode am Harz approved by Faculty of Mathematics/Computer Science and Mechanical Engineering Clausthal University of Technology Date of oral examination: February 1st 2012 Chief reviewer: Prof. Dr. rer. nat. habil. J¨urgenDix Reviewer: Prof. Dr. rer. nat. J¨org P. M¨uller External reviewer: Prof. Dr. Cees Witteveen 2 \Das Bedenklichste ist, dass wir noch nicht denken; immer noch nicht, ob- gleich der Weltzustand fortgesetzt bedenklicher wird. Dieser Vorgang scheint freilich eher zu fordern, dass der Mensch handelt und zwar ohne Verzug, statt in Konferenzen und auf Kongressen zu reden und sich im bloßen Vorstellen dessen zu bewegen, was sein sollte und wie es gemacht werden m¨usste.Somit fehlt es am Handeln und keineswegs am Denken." Martin Heidegger, Was heißt Denken? 5 Abstract The main concern of this thesis is multi-agent programming, which is preoccupied with the question how to practically distribute intelligence?, and thus belongs to the artificial intelligence branch of computer science. To be more precise, the focus of this thesis lies on BDI-based multi-agent programming. This means programming agents that have mental states (beliefs, desires and intentions) and capabilities (deliberation and means- end reasoning): A situation that resembles human cognition on an abstract level. We contribute to two aspects arising in this research field. The first one is the idea of using standardization in order to support modularity and reusability. That is, identifying components that can be extracted, shared and reused. The second one is heterogeneity: Establishing multi-agent systems that are populated by agents which are implemented by means of different programming paradigms. That is, a state of affairs which is built up in order to exploit complementary functionalities and capabilities, while sharing a single environment. The main contributions of this thesis are (standardized) interfaces for interpreters, environments and tools. Interpreters are considered to encapsulate individual agents as objects and schedule/facilitate their evolution. Environments represent an external state and define how agents connect to and access sensory and effectoric capabilities for querying and updating that state. Tools are considered to be pieces of software that are capable of querying and evaluating both the internal state of agents and of environments in order to fulfill a distinct and useful purpose. This thesis contains a formalization that reflects our approach, followed by several practical applications of the very formalization. 7 Zusammenfassung Das Hauptinteresse dieser Arbeit, die sich mit der Frage Wie verteilt man Intelligenz? auseinander setzt, gilt der Entwicklung von Multiagentensystemen. Damit befindet man sich in der Informatik im Zweig der K¨unstlichen Intelligenz. Genauer gesagt liegt das Hauptaugenmerk dieser Arbeit auf der BDI-basierten Entwicklung von Multiagenten- systemen. Dort werden Agenten programmiert, die sich durch einen mentalen Zus- tand (beliefs, desires, intentions) und mentale F¨ahigkeiten (deliberation und means- end-reasoning) auszeichnen, wobei beides den menschlichen Geistesf¨ahigkeiten auf einer abstrakten Ebene ¨ahnelt. Es wird ein Beitrag zu zwei wichtigen Kernfragen des erw¨ahnten Forschungsbereiches geleistet. Die erste betrifft die Idee der Standardisierung zur F¨orderung von Modu- larit¨atund Wiederverwendbarkeit. Dies wird interpretiert als die Identifikation von Komponenten die extrahiert, geteilt und wiederverwendet werden k¨onnen. Die zweite Kernfrage betrifft die Heterogenit¨at,die mit Multiagentensystemen gleichzusetzen ist, in welchen eine Umgebung von verschiedenen Agenten bev¨olkert wird, die wiederum mit Hilfe von verschiedenen Programmierparadigmen entwickelt worden sind. Dies dient der Ausnutzung komplement¨arerFunktionalit¨atenund F¨ahigkeiten. Die Hauptbeitr¨agesind (standardisierte) Schnittstellen f¨urInterpreter, Umgebun- gen und Werkzeuge. Interpreter kapseln Agenten in Form von Objekten und pla- nen/erm¨oglichen deren Evolution. Umgebungen repr¨asentieren einen externen Zustand und definieren, wie Agenten diesen ¨uber Sensoren und Aktuatoren wahrnehmen und manipulieren k¨onnen. Werkzeuge schließlich sind Softwarekomponenten, welche in der Lage sind sowohl den internen Zustand von Agenten als auch den der Umgebung zu inspizieren und das Ergebnis einem sinnvollen Zweck zuzuf¨uhren.Diese Arbeit beinhal- tet einen formalen Ansatz, der durch mehrere praktische Anwendungsbeispiele erg¨anzt wird. 9 Contents Preface 15 1. Introduction 17 2. Preliminaries 21 2.1. Introduction to Agents { Motivation and History . 21 2.2. Formalization of Single-Agent Systems . 24 2.3. Agent Programming and BDI agents . 26 2.4. MAS Example: The Multi-Agent Programming Competition . 28 2.5. State of the Art of AOP and Problems . 30 2.6. Summary . 32 3. BDI-Based Agent-Oriented Programming and Platform Comparison 33 3.1. 2APL{ A Practical Agent Programming Language . 34 3.1.1. Agent Program Syntax and Semantics . 34 3.1.2. Deliberation Cycle . 39 3.1.3. MAS Syntax and Semantics . 40 3.1.4. 2APL Environments . 40 3.2. Goal { A Programming Language for Rational Agents . 41 3.2.1. Agent Program Syntax and Semantics . 42 3.2.2. Deliberation Cycle . 44 3.2.3. MAS Syntax and Semantics . 45 3.2.4. Goal Environments . 45 3.3. Jason { An AgentSpeak Implementation . 46 3.3.1. Agent Program Syntax and Semantics . 47 3.3.2. Deliberation Cycle . 50 3.3.3. MAS Syntax and Semantics . 51 3.3.4. Jason Environments . 51 3.4. Comparison . 53 3.5. Summary . 56 4. Formalizations 57 4.1. Knowledge Representation Language . 58 4.2. Mental States and Mental States Dynamics . 61 4.3. Abstract Agent Architecture . 64 4.4. Situatedness { Single-Agent Systems . 64 4.5. Multi-Agent Systems . 66 11 Contents 4.6. Conceptual Separation . 67 4.7. Heterogeneity . 69 4.8. Thorough Infrastructure . 71 4.9. Summary . 72 5. Equivalence Notions 73 5.1. About Traces and Agent Equivalence . 73 5.1.1. Percepts Equivalence . 75 5.1.2. External Actions Equivalence . 75 5.1.3. Black Box Equivalence . 76 5.1.4. Mental State Actions Equivalence . 76 5.2. Equivalence Notions for 2APL, GOAL and Jason . 77 5.2.1. Agent Programs and Agent States . 78 5.2.2. Mental-State Trace Equivalence . 80 5.2.3. Generic Agent States and Agent Runs . 82 5.2.4. Agent State and Agent Run Similarity . 83 5.3. Summary . 84 6. APLEIS: An Environment Interface Standard for Agent-Oriented Program- ming 85 6.1. Interface Principles and Interface Meta-Model . 86 6.2. Using Listeners . 91 6.3. Interface Intermediate Language . 92 6.4. Agents/Entities System . 94 6.4.1. Managing the Agents-Entities-Relation . 95 6.4.2. Entity Types . 96 6.4.3. Acting . 96 6.4.4. Perceiving . 97 6.5. Environment Management System . 98 6.6. Environment Querying Interface . 101 6.7. Miscellaneous Statements about the Implementation . 101 6.8. Summary . 102 7. Potential Fields and MASs 103 7.1. Motivation, Problem Description and Approach . 104 7.2. Navigating with the Potential Fields Method . 105 7.3. Path Based Potential Fields . 107 7.3.1. Geometry Based Approach . 107 7.3.2. Image Processing Approach . 110 7.4. Implementation and Comparison . 113 7.5. Summary and Related Work . 115 8. EISMASSim for the Multi-Agent Programming Contest 117 8.1. General Environment Interface . 119 12 Contents 8.2. Agents on Mars . 121 8.3. Actions and Percepts for the Mars-Scenario . 124 8.4. Statistics . 126 8.5. Summary . 127 9. APLTK: A Toolkit for Agent-Oriented Programming 129 9.1. Principles . 129 9.2. Infrastructure . 130 9.3. Interpreter . 132 9.3.1. Data Structures . 132 9.3.2. Interpreter Interface . 133 9.4. Tool Interface . 135 9.5. Core Implementation . 136 9.6. Summary . 136 10.Adapting 2APL, Goal and Jason 139 10.1. Adapting and Extending 2APL . 140 10.1.1. EIS Compatibility . 140 10.1.2. APLTK Compatibility . 143 10.2. Adapting and Extending Goal ........................ 144 10.2.1. EIS Compatibility . 144 10.2.2. APLTK Compatibility . 149 10.3. Adapting and Extending Jason ........................ 150 10.3.1. EIS Compatibility . 150 10.3.2. APLTK Compatibility . 151 10.4. Summary . 152 11.Agents Computing Fibonacci Numbers 153 11.1. Set Up . 153 11.2. Agent Programs . 154 11.3. Agent Runs and Similarity . 155 11.4. Performance Results . 158 11.5. Summary . 158 12.Summary, Conclusions, Possible Future Work and Acknowledgements 161 12.1. Possible Future Work . 162 12.2. Acknowledgements . 162 A. APL Syntax Definitions and Environments 165 A.1. 2APL Agent Files . 166 A.1.1. MAS-Files . 166 A.1.2. Agent files . 166 A.2. Goal ...................................... 168 A.2.1. MAS-Files . ..
Recommended publications
  • Arís 2.1: Adapting Arís for Object Oriented Language
    Arís 2.1: Adapting Arís for Object Oriented Language Fahrurrozi Rahman Dissertation 2013 Erasmus Mundus MSc in Dependable Software Systems Department of Computer Science National University of Ireland, Maynooth Co.Kildare, Ireland A dissertation submitted in partial fulfillment of the requirements for the Erasmus Mundus Msc Dependable Software Systems Head of Department: Dr. Adam Winstangley Supervisors: Dr. Diarmuid O’Donoghue and Dr. Rosemary Monahan July 2014 Declaration I hereby certify that this material, which I now submit for assessment of the program of study leading to the award of Master of Science in Dependable Software Systems, is entirely my own work and has not been taken from the work of other save and to the extent that such work has been cited and acknowledged within the text of my work. Fahrurrozi Rahman 1 Acknowledgement I would like to thank my supervisors Dr. Diamuid O’Donoghue and Dr. Rosemary Monahan from the National University of Ireland, Maynooth for all their help, patience and support on the project. I would also like to thank The Executive Agency Education, Audiovisual and Culture (EACEA) for the funding and all the classmates who support me directly or indirectly while doing this research. 2 Abstract In the software development area, software verification is important such that it can guarantee the software fulfills its requirements. Despite its importance, verifying software is difficult to achieve. Additional knowledge and effort are needed to write specification especially if the software is complex and big in size. Nevertheless, there are some software that already have verified specifications. This project will focus on extending Arís (Analogical Reasoning for reuse of Implementation & Specification) which has been developed to increase verified software by reusing and transferring the specification from a similar implementation to a target code.
    [Show full text]
  • Invariant Based Programming: Basic Approach and Teaching Experiences Ralph-Johan Back
    Invariant based programming: basic approach and teaching experiences Ralph-Johan Back To cite this version: Ralph-Johan Back. Invariant based programming: basic approach and teaching experiences. Formal Aspects of Computing, Springer Verlag, 2008, 21 (3), pp.227-244. 10.1007/s00165-008-0070-y. hal- 00477903 HAL Id: hal-00477903 https://hal.archives-ouvertes.fr/hal-00477903 Submitted on 30 Apr 2010 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. DOI 10.1007/s00165-008-0070-y BCS © 2008 Formal Aspects Formal Aspects of Computing (2009) 21: 227–244 of Computing Invariant based programming: basic approach and teaching experiences Ralph-Johan Back Abo Akademi University, Turku, Finland. E-mail: backrj@abo.fi Abstract. Program verification is usually done by adding specifications and invariants to the program and then proving that the verification conditions are all true. This makes program verification an alternative to or a complement to testing. We describe here another approach to program construction, which we refer to as invariant based programming, where we start by formulating the specifications and the internal loop invariants for the program, before we write the program code itself.
    [Show full text]
  • Decision Procedures for Algebraic Data Types With
    Synthesis, Analysis, and Verification Lecture 01 Introduction, Overview, Logistics Lectures: Viktor Kuncak Exercises and Labs: Eva Darulová Giuliano Losa Monday, 21 February 2011 and 22 February 2011 Today Introduction and overview of topics – Analysis and Verification – Synthesis Course organization and grading SAV in One Slide We study how to build software analysis, verification, and synthesis tools that automatically answer questions about software systems. We cover theory and tool building through lectures, exercises, and labs. Grade is based on – quizzes – home works (theory and programming) – a mini project, presented in the class Steps in Developing Tools Modeling: establish precise mathematical meaning for: software, environment, and questions of interest – discrete mathematics, mathematical logic, algebra Formalization: formalize this meaning using appropriate representation of programming languages and specification languages – program analysis, compilers, theory of formal languages, formal methods Designing algorithms: derive algorithms that manipulate such formal objects - key technical step – algorithms, dataflow analysis, abstract interpretation, decision procedures, constraint solving (e.g. SAT), theorem proving Experimental evaluation: implement these algorithms and apply them to software systems – developing and using tools and infrastructures, learning lessons to improve and repeat previous steps Comparison to other Sciences Like science we model a part of reality (software systems and their environment) by introducing
    [Show full text]
  • Sistem Pencarian Forum Berbasis Ontologi Dan Label
    Seminar Nasional Informatika 2013 (semnasIF 2013) ISSN: 1979-2328 UPN ”Veteran” Yogyakarta, 18 Mei 2013 SISTEM PENCARIAN FORUM BERBASIS ONTOLOGI DAN LABEL Adi Wibowo1), Gregorius Satiabudhi2) , Yulius Pranata3) 1,2,3)Program Studi Teknik Informatika Universitas Kristen Petra Surabaya Jl. Siwalankerto 121-131 Surabaya Telp (031)-2983455 e-mail : 1) [email protected], 2) [email protected] Abstrak Salah satu kegiatan yang sering dilakukan pengguna internet adalah berdiskusi melalui sebuah forum. Setiap forum terbagi ke dalam beberapa kategori, dan setiap kategori memiliki beberapa percakapan (thread). Setiap percakapan dapat diberi label (tag) baik oleh pengguna yang membuka percakapan tersebut, atau peserta forum. Masalah yang muncul adalah bila sebuah forum telah menjadi besar mencari percakapan yang tepat yang sesuai kebutuhan pengguna menjadi lebih sulit. Penelitian ini bertujuan mengusulkan metode rekomendasi percakapan di sebuah forum internet yang menggunakan label dan didukung oleh ontologi yang sesuai dengan kategori percakapan.Penelitian ini mengkhususkan pada forum dengan kategori teknologi komputer. Forum tersebut adalah StackOverflow. Pada setiap percakapan pada forum tersebut terdapat label-label yang menjelaskan isi percakapan, misalnya C#, recursive, programming, dll. Label-label tersebut dikembangkan (diperbanyak) menggunakan ontologi komputer. Hasilnya adalah setiap percakapan akan diwakili oleh label- label asli dari StackOverflow, dan ditambah dengan label-label baru yang berasal dari ontologi. Label-label tersebut digunakan dalam proses pencarian berbasis Vector Space Model (VSM).Hasil penelitian menunjukkan bahwa penggunaan ontologi sebagai metode keyword extension meningkatkan nilai recall dari metode VSM tersebut. Kata Kunci : Forum, Ontologi, Label, Search 1. PENDAHULUAN Forum menyediakan tempat bagi pengguna untuk saling berkomunikasi. Setiap pengguna dapat mengajukan pertanyaan, atau pendapat mengenai sebuah topik dalam sebuah percakapan (thread) antar pengguna.
    [Show full text]
  • The Java Modeling Language (Part 1)
    The Java Modeling Language (Part 1) Wolfgang Schreiner [email protected] Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at Wolfgang Schreiner http://www.risc.jku.at 1/36 Overview Since 1999 by Gary T. Leavens et al. (Iowa State University). www.jmlspecs.org A behavioral interface specification language. Syntactic interface and visible behavior of a Java module (interface/class). Tradition of VDM, Eiffel, Larch/C++. Fully embedded into the Java language. Java declaration syntax and (extended) expression syntax. Java types, name spaces, privacy levels. JML annotations disguised as Java comments. //@ ... /*@ ... @ ... @*/ Wolfgang Schreiner http://www.risc.jku.at 2/36 Related Work Related to/influenced by/derived from JML (selection). C#: Spec# (Spec Sharp). http://research.microsoft.com/en-us/projects/specsharp Plugin for Microsoft Visual Studio 2010. Static checking (non-null types), runtime assertion checking. Verification condition generator (Boogie) for various prover backends. C: VCC and ACSL (ANSI C Specification Language). http://research.microsoft.com/en-us/projects/vcc http://frama-c.com/acsl.html Microsoft VCC with SMT solver Z3 as backend. Frama-C ACSL framework with various prover backends. Ada: SPARK. http://www.adacore.com/sparkpro https://www.adacore.com/community VC generator and prover (GNATprove with CVC4, Z3, Alt-Ergo). Wolfgang Schreiner http://www.risc.jku.at 3/36 1. Basic JML 2. JML Tools 3. More Realistic JML Wolfgang Schreiner http://www.risc.jku.at 4/36 Basic JML JML as required for the basic Hoare calculus. Assertions. assume, assert. Loop assertions. loop invariant, decreases. Method contracts.
    [Show full text]
  • Verifying Spec# Delegates
    Software Component Technology Group Master Thesis Verifying Spec# delegates Samuele Gantner 31-03-2008 Supervisors: Prof. Peter Müller, Joseph N. Ruskiewicz Introduction The Spec# programming language is an extension of the .NET programming language C#, consisting of specication constructs like pre- and postconditions, non-null types and some facilities for higher-level data abstractions [1]. Function objects are used to express higher-order features in object-oriented programs [3]; the C# delegate construct simplies the implementation of such objects. A delegate instance represents a method together with a possible target object or a list of methods and possible target objects in case of multicast delegates. In [7] P. Müller and J. Ruskiewicz propose a verication methodology for C# delegates which allows sound static reasoning about precondition, postcondition and frame-condition of the underlying method associated with a delegate instance. The methodology is restricted to single cast delegates with exactly one underlying method and target. Goal of the project This proposed thesis will extend the verication methodology described in [7] in order to handle the specic Spec# needs; specically the methodology will be extended to delegates instantiated with static methods, multicast delegates and events. Once these extensions have been shown sound, the results will be implemented in the Spec# programming system. In order to show the usefulness of the idea and the practicality of the proposed solution, some case studies will be performed on common delegate usage scenarios and on design patterns based on delegates. Main parts and Timeline In the rst part of the thesis the methodology will be extended and modied to t specic programming needs.
    [Show full text]
  • In Computer Science, Specifically Software Engineering and Hardware Engineering, Formal Methods
    Page 1 of 7 Formal methods 3.1 INTRODUCTION: In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically based techniques for the specification, development and verification of software and hardware systems.[1] The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.[2] Formal methods are best described as the application of a fairly broad variety of theoretical computer science fundamentals, in particular logic calculi, formal languages, automata theory, and program semantics, but also type systems and algebraic data types to problems in software and hardware specification and verification.[3] Taxonomy Formal methods can be used at a number of levels: Level 0: Formal specification may be undertaken and then a program developed from this informally. This has been dubbed formal methods lite. This may be the most cost-effective option in many cases. Level 1: Formal development and formal verification may be used to produce a program in a more formal manner. For example, proofs of properties or refinement from the specification to a program may be undertaken. This may be most appropriate in high-integrity systems involving safety or security. Level 2: Theorem provers may be used to undertake fully formal machine-checked proofs. This can be very expensive and is only practically worthwhile if the cost of mistakes is extremely high (e.g., in critical parts of microprocessor design). Further information on this is expanded below.
    [Show full text]
  • Algorithmes Plus Avancés (Draft) Recherche Dichotomique Et Tris
    Algorithmes plus avancés (draft) Recherche dichotomique et Tris Recherche dichotomique (rappel) ● On suppose un tableau (integer,…) trié ● On utilise 2 indices gauche (left, l et des fois less) et droite (right, r et des fois upper, u) ● consiste à comparer l'élément cherché avec l'élément central de la liste (à l’indice m). Si l'élément cherché lui est inférieur, il doit se trouver dans la première moitié sinon dans la deuxième moitié ● Appliquer récursivement à la moitié choisie ● L'algorithme aboutira – soit à la position de l'élément cherché, – soit à aucune position (return -1) ● auquel cas l'élément n'appartient pas Être trié ● Il faut déjà définir formellement « être trié » : – Key/OpenJML ≡ ● \forall int x; (\forall int y; 0 <= x && x < y && y < a.length; a[x] <= a[y])); ou BIEN \forall int x; 0 <= x && x < a.length-1 ; a[x]<=a[x+1] – Krakatoa ≡ predicate is_sorted{L}(int[] t) = t != null && \forall integer i j; 0 <= i && i <= j && j < t.length ==> t[i] <= t[j] ; Puis is_sorted(t) (le L pour utiliser un label ; implicite sinon) ● Puis la post-condition (voir correction) : avec « j’ai trouvé » et « je n’ai pas trouvé » Code en Java (une version) static int search(int[] a, int v) { int l = 0; int r = a.length - 1; if(a.length == 0) return -1; if(a.length == 1) return a[0] == v ? 0 : -1; Exo1 ; Testez l’algo sur de petits tableaux while (r > l + 1) { pour voir un peu les propriété (SOP les vars) int mid = (l+r) / 2; if (a[mid]==v) return mid; Exo2 : trouvez else if (a[mid]>v) r = mid; a) pre/post conditions else l = mid; b) variant
    [Show full text]
  • 69 5. PENGUJIAN PROGRAM Bab Ini Membahas Tentang Pengujian Dari
    5. PENGUJIAN PROGRAM Bab ini membahas tentang pengujian dari sistem yang telah dibuat pada bab 4. Pengujian ini dilakukan dengan tujuan untuk mengetahui validitas program, kekurangan dan kelebihan aplikasi ini. Pengujian ini menggunakan sebagian data thread yang telah diambil dari www.stackoverflow.com. 5.1. Pengujian Validasi Sistem Pencarian Halaman yang pertama kali tampil saat memasuki website.User diharuskan untuk login terlebih dahulu untuk dapat memasuki forum dalam website. Jika tidak mempunyai username dan passworduser dapat sign up terlebih dahulu. 5.1.1. Halaman User Pada halaman home terdapat link untuk melakukan sign up bagi user yang belum memiliki username serta password pada forum ini. Gambar 5.1. menampilkan halaman sign up bagi user yangbelum memiliki username serta password. Dilakukan percobaan untuk menginputkan user baru. Gambar 5.1.Halaman Sign up 69 Universitas Kristen Petra Gambar 5.2. Berhasil Sign up Terlihat hasil dari sign up pada gambar 5.2.yang menunjukkan id yang dibuat pada gambar 5.1. sukses didaftarkan. Gambar 5.3. Data member masuk ke database Pada gambar 5.3.datamember yang didaftarkan pada gambar 5.1. tercatat kedalam database dan muncul dalam list member pada halaman administrator. Dalam halaman home terdapat 2 sub menu yaitu home dan forum, pada bagian home terdapat topik forum terakhir yang dibuat, sehingga user mengetahui topik forum apa yang terbaru. Dilakukan pengujian jika memasukkan username dan password keliru. Gambar 5.4. Halaman homeuntuk user 70 Universitas Kristen Petra Gambar 5.5. Halaman login gagal Dilakukan pengujian apabila seseorang salah memasukkan username dan password.Pada gambar 5.5.menunjukkan halaman apabila seseorang salah untuk memasukkan username serta password.
    [Show full text]