Knowledge and Communication Perspectives in Extensible Applications Simone D.J. Barbosa Cecília K.V. da Cunha Sérgio Roberto P. da Silva Departamento de Informática – PUC-Rio R. Marquês de São Vicente, 225 Gávea – Rio de Janeiro – RJ – Brasil [sim,ceciliak,srsilva]@inf.puc-rio.br Abstract End-user programming brings forth the opportunity to explore semiotic and communicative aspects of extensible software and computing in general. This paper discusses some of these aspects under the light of Semiotic Engineering [10, 11, 12], adopting a knowledge-based communication-centered approach to software design in order to help users understand and be able to extend their applications to meet their tasks requirements. We do this by carefully designing the application languages users must interact with, and by providing mechanisms that help designers disclose their rationale to users. Keywords: End-User Programming, Semiotic Engineering, Knowledge Representation, Human–Computer Interaction. 1. INTRODUCTION There has been a growing need in software industry to provide extensible applications, i.e., applications that users may customize and extend to help them carry out their specific tasks more efficiently. Research in this topic includes the areas of Human-Computer Interaction (HCI), End-User Programming (EUP), and Artificial Intelligence (AI). Research on end-user programming brings about a some questions, such as: Why should users want to program? Can they learn how to program? If so, why can it be so hard on them? [19]. When users get to know the application well enough to realize that their problems cannot be directly solved, they will feel the need to change the software in order to carry out the tasks that are relevant for an efficient completion of their work. Additionally, many business-specific repetitive tasks that could not be anticipated or were not designed by software designers can and should be automated [5]. Some argue that users are not able to deal with formal languages at all, but according to [21], this is a fallacy. People are used to working with formal languages, as is the case in math, game scoresheets, and even knitting. So, why do users have such a hard time learning how to extend their applications? Nardi [21] argues that the problem lies on the programming languages offered to end-users. She claims that the ideal programming language should be task- specific, in order to motivate and interest users so they will want to learn more. In our view, another severe problem is a lack of co-referentiality [14] between the many languages the user must deal with, namely: interface, programming, and explanation (or documentation) languages. Discontinuity among the languages involved in extensible applications hampers user interaction, by increasing cognitive load on users when they try to recognize equivalent concepts sometimes conveyed in entirely different languages. Semiotic Engineering [10] provides us with theoretical basis necessary to investigate the semiotic nature of software, which is designed to produce and interpret messages that can be exchanged with users. More specifically, we adopt de Souza’s communication-centered architecture for extensible applications [12]. This approach intends to improve users’ computer literacy by supporting users’ learning processes required for programming, and by disclosing the knowledge the designer has embedded in the application to help users grasp the intended application model. The reported work is part of an ongoing research project aiming at the construction of a fully-functional EUP environment. Section 2 describes Semiotic Engineering concepts that apply to extensible applications, and then presents an analysis of common problems found in such applications. Section 3 presents the architecture we have adopted, and discusses languages requirements for extensible software. Sections 4 and 5 illustrate our approach by presenting a prototype application and its extension mechanisms. Finally, Section 6 presents our conclusions.