1 Introduction Software Systems Knowledge is the main theme of this fourth edition of the SKY Workshop , , , . This theme reflects our understanding that in order to exploit the full implications of Software Knowledge one should go on beyond toy systems and simple examples, needed to explain the basic concepts, and start progressing towards real and industrial applications. In this introductory paper we point out and succinctly discuss the motivation and possible obstacles in the real applications’ direction. We aim to stimulate discussions during and after the Workshop, to deepen the understanding of the issues at stake and gradually overcome the perceived obstacles. We have divided the issues into three sections. Section 2 deals with the general motivation behind taking the risk to jump into troubled waters and how to overcome the real/apparent obstacles. Section 3 deals with papers on fundamental issues concerning Software Knowledge. Section 4 describes papers that
represent initial steps towards applications. Finally, section 5 is a summarizing conclusion. 2 General Motivation and Perceived Obstacles Time has come to start moving beyond small and safe examples towards large and challenging applications. The roadmap shows roadblocks that must and can be surpassed. 2.1 KDE: The General Approach KDE – Knowledge Driven Engineering is our general approach. KDE is an extension of MDE – Model Driven Engineering – in which one starts system development from the highly abstract software knowledge and by means of a tool suite generates the software system runnable code. 2.2 Knowledge Representation Knowledge Representation is a basic issue during IDE coding, to help the software system developer navigate, search and get recommendations on the necessary code and relevant documents. Paulo Gomes, from the University of Coimbra, Portugal – in his invited talk in the SKY’2013 Workshop – deals exactly with this issue for systems of rapidly increasing size and complexity. The talk focuses on ontologies as a means of knowledge representation. 2.3 Tool Suite Building The KDE tool suite should be gradually built. Each tool should be by itself modular and the whole set of tools should be easily combined in the desired suite sub-set for a particular purpose. Tool suites should be efficient enough to deal with large software systems. This is perhaps the main challenge we are facing: to scale tools that deal with simple examples to deal with complex systems. The solution resides both in the Knowledge Representation – referred to in the invited talk – and also in the modular way that software systems themselves should be built. 3 Fundamental Issues The fundamental issues of software knowledge span a variety of topics. In this SKY’2013 Workshop we deal with a selection of those topics. These include requirements quality and elicitation, code generation, and system misuse. 3.1 Requirements: Quality and Elicitation Requirements formulated by stakeholders have been a widely accepted starting point to build any software system. The transition between the natural language used by non-software-experts and more formal specification and design languages, used by software experts, traditionally stands in the difficult AI (Artificial Intelligence) borders between software and knowledge. Two central issues within requirements engineering are elicitation and the quality of its output. The paper by Garzon, Simmons and Knisley reports a survey of industry practices to capture the experience with requirements elicitation, into knowledge expressed in terms of an ontology. They also derive a tool to support such practices. Their ontology is intended for small-to-medium sized software projects. The obvious issue in our context is: to what extent is this approach scalable to large real industrial projects? The paper by Rine and Fraga deals with the quality of requirements obtained. This is done by means of Chunking Complexity metrics to be used in requirements inspection. The authors claim that a single metric is not enough for a software product, thus they propose a certain combination of cohesion and coupling into a composite metric. One should discuss whether this is a unique combination, or there is a more general set of composite metrics which are effective for a large variety of software products. 3.2 Code Generation Once one has formulated requirements in a formal or semi-formal language specification language, the next usual step is system design. In nowadays agile approaches, system design and coding is done concurrently with test design, coding and actual test running. The paper by Yagel, Litovka and Exman pushes as far as possible the automation of code generation and testing. They use a combination of software knowledge – formulated as ontologies and ontology states – with a modified Gherkin-syntax type of specification. The code output is in Ruby. There are several issues at stake in this work: a- what is the achievable degree of automation in this kind of tool? b- the examples given are a relatively simple ATM (Automatic Teller Machine) and an Internet Purchase case study; how easy it is to extend the application to really large and complex systems? Will the output to other programming languages will efficient to the same extent? 3.3 System Misuse It is quite clear that an accomplished software system is not the end of the involvement of software engineers. There are maintenance issues, product lines of similar systems and issues related to the interaction of users with existing systems. The paper by Galant and Goldin deals with the intriguing issue of system misuse by its intended end-users. Misuse should not be confused with system misbehavior. Misuse refers to a perfectly functioning system, which is misused intentionally or mistakenly by naive end-users. The authors claim that possible misuse can be identified and eventually prevented in the system design itself, by means of domain knowledge. This raises the question of the boundaries of the prevention. The extreme answer is that any system – whatever the amount of inserted domain knowledge – can be misused. The more interesting issue from an application point of view, – viz. what are the practical boundaries of prevention? – probably requires answers involving a balanced amount of common sense and techniques of a statistical nature. 4 Initial Steps towards Applications The specific assortment of applications dealt with in the next referred papers is a consequence of the range of interests of the authors. Nonetheless, NLP (Natural Language Processing), Games and Social Networks are widely representative topics. 4.1 NLP: Automatic Generation of Semantic Patterns An important issue in Natural Language Processing, with applications to information reuse in software engineering, is the recognition of patterns in texts within a variety of assets, such as e.g. software documentation. The paper by Suarez, Moreno, Fraga and Llorens deals with automatic generation of semantic patterns using NLP techniques. The issues raised in this context include among others, the modifiability of such a tool and the possible integration with other existing tools in the tool suite. 4.2 Games: Variations by Non-Programmers Digital games are gaining a growing share of the entertainment time of any people – not necessarily those versed in software literacy. On the other hand, the possibility of creative game variations – easily done for non-digital games – is usually an obstacle for non-programmers. The paper by Exman and Alfia proposes knowledge-driven game design for non-programmers. The knowledge in case is the game domain knowledge. Non-programmers are assumed to be knowledgeable with the specific game rules, and no more. The software infrastructure is built with additional game knowledge by enabling rules upon a CMS (Content Management System), in this case Drupal. The deep issue in this context is how to generalize software-based activities for non-programmers. 4.3 Social Networks: Friends’ Recommendation Lists Social Networks are nowadays one of the most ubiquitous applications of software. When laymen are asked about the meaning of software they may probably give as an answer the commercial names of the most common “Social Networks” and “Search Engines”. The paper by Exman and Krepch deals with the generation of friends’ recommendation lists by social networks. They examine the most common algorithms for this application, measure the characteristics of recommendation lists of widespread commercial social networks and propose a tunable tool to reproduce such lists. An interesting issue is the extent of customization of such a kind of tool to diverse social networks. 5 Conclusion We have formulated some fundamental issues in Software Knowledge and described possible application areas. The SKY’2013 Workshop itself is concluded with a discussion of the interaction of the SKY community with system engineering organizations such as INCOSE. Acknowledgments Our thanks to the papers’ authors, whose contributions enable together a stimulating SKY’2013 Workshop, this time in Vilamoura, Portugal, on Sunday, September 22, 2013. We are grateful to the dedication of the Program Committee members that did hard work resulting in high quality and representative papers among the larger number of submissions. We wish to thank the very helpful professional staff of INSTICC, in particular the efficient and friendly Vera Coelho as the head of the SKY’2013 Secretariat. Last but not least, we are glad to acknowledge the continuous support of SKY Workshops by our institutions, the JCE – The Jerusalem College of Engineering – Azrieli, in Jerusalem, Israel and UC3M – Carlos III of Madrid University, in Madrid, Spain.
Vol. 1 - 978-989-8565-76-1