The "Cyber Security by Integrated Design" (C-SIDE) project aims to build a comprehensive tool to help software developers integrate all relevant angles related to legal, policy, governance,... Show moreThe "Cyber Security by Integrated Design" (C-SIDE) project aims to build a comprehensive tool to help software developers integrate all relevant angles related to legal, policy, governance, organisational, behavioural and technical views in software system security design. Part of the project consists of the re-conceptualization of security by design beyond the walls of technology. This report presents the results of a workshop held in Leiden (the Netherlands) experts in software development discussing the concept of SbD. The report offers a critical analysis of the current definition of SbD, an assessment of statements to foster a revision of the SbD concept, and considerations for a future proposal of an updated definition of SbD. Show less
The learning of software design is known to be a difficult and challenging task for students. This dissertation studies different didactic approaches for learning software design to improve the way... Show moreThe learning of software design is known to be a difficult and challenging task for students. This dissertation studies different didactic approaches for learning software design to improve the way we teach students software design. The research in the dissertation questions whether we can assess software design skills, what guidance is needed for the improvement of students’ understanding of software design and how to motivate and engage students for learning software design. The research explores the following: an instrument for measuring software design skills based on design principles, the gamification of learning software design, revealing students’ software design strategies, the use of peer-reflection for uncovering the difficulties students have during software design tasks, the use of teaching assistants as bridge between the lecturer and the students, the automation of grading software designs with machine learning, guiding feedback by a pedagogical agent and a workshop for engaging students into the process of software development. The research contributes to the future education of software design. Show less
Increasingly code and algorithms are techniques also applied in textual scholarship, giving rise to new interactions between software engineers and textual scholars. This book argues that much of... Show moreIncreasingly code and algorithms are techniques also applied in textual scholarship, giving rise to new interactions between software engineers and textual scholars. This book argues that much of that process and its effects on textual scholarship are still poorly understood and go unchecked by otherwise normal processes of quality control in scholarship such as peer review. The text provides case studies in which some of these interactions become more apparent, as well as the academic challenges and problems that they introduce. The book demonstrates that the space between code creation and conventional scholarship is one that offers many affordances to textual scholarship that until now remain unexplored. The author argues that it is an intellectual obligation of programmers and textual scholars to examine the properties of digital text and how its existence changes and challenges textual scholarship. Show less
The development process of any software has become extremely important not just in the IT industry, but in almost every business or domain of research. The effort in making this process quick,... Show moreThe development process of any software has become extremely important not just in the IT industry, but in almost every business or domain of research. The effort in making this process quick, efficient, reliable and automated has constantly evolved into a flow that delivers software incrementally based on both the developer's best skills and the end user's feedback. Software modeling and modeling languages have the purpose of facilitating product development by designing correct and reliable applications. The concurrency model of the Abstract Behavioural Specification (ABS) Language with features for asynchronous programming and cooperative scheduling is an important example of how modeling contributes to the reliability and robustness of a product. By abstracting from the implementation details, program complexity and inner workings of libraries, software modeling, and specifically ABS, allow for an easier use of formal analysis techniques and proofs to support product design. However there is still a gap that exists between modeling languages and programming languages with the process of software development often going on two separate paths with respect to modeling and implementation. This potentially introduces errors and doubles the development effort. \par The overall objective of this research is bridging the gap between modeling and programming in order to provide a smooth integration between formal methods and two of the most well-known and used languages for software development, the Java and Scala languages. The research focuses mainly on sequential and highly parallelizable applications, but part of the research also involves some theoretical proposals for distributed systems. It is a first step towards having a programming language with support for formal models. Show less