Engaging students in specification and reasoning: "hands-on" experimentation and evaluation (original) (raw)
Related papers
Engaging students in specification and reasoning
ACM SIGCSE Bulletin, 2009
We introduce a "hands-on" experimentation approach for teaching mathematical specification and reasoning principles in a software engineering course. The approach is made possible by computer-aided analysis and reasoning tools that help achieve three central software engineering learning outcomes: (i) Learning to read specifications by creating test points using only specifications; (ii) Learning to use formal specifications in team software development while developing participating components independently; and (iii) Learning the connections between software and mathematical analysis by proving verification conditions that establish correctness for software components. Experimentation and evaluation results from two institutions show that our approach has had a positive impact.
Teaching the Mathematics of Software Design
Formal Methods in the Teaching Lab, Workshop at FM 2006, 2008
This note summarizes the experience and philosophy of teaching two one-semester courses, Software Design 1, a second year course, and Software Design 2, a third year course, repeatedly in the period from 1999/2000 to 2005/06. These courses had a peak enrollment of 190 students. Many students perceive these two courses as the core courses for their career in software development. The same material was presented in a condensed form in a graduate course in 2005/06. The courses taught students the mathematics of software design, rather than a particular " formal method " tool or language. 1 The Need for Software Design Whereas in the design of a mechanical device breaking design rules would quickly lead to recognizable failure, one can very well break the rules of software design and still get a " sufficiently functional " and marketable product. Qualities of software are not as evident as qualities of physical products; design qualities are even harder to judge than the qualities evident from using a product. Students follow the rules of software design because they are told so and not because they would experience the consequences of not doing so. Students grow up with unreliable software to the extent that they consider such poorly working software to be normal or unavoidable. There is a widespread belief that programming skills are sufficient to write software. All this makes is difficult to convince students that software can be better designed, that it is worth doing so, and that it is worth learning the mathematics for doing so. We report on our experience teaching software design with its mathematical foundation. 2 Uniform Design Notation and Uniform Mathematical Basis Our approach is to integrate mathematics in the presentation of software design, rather than to contrast formal and informal approaches; to teach all core topics in software design rather than a specific topic for which a dedicated formalism or tool exist; and to present the material with minimal notational burden. A uniform textual design notation is used, in order to emphasize the similarities among the concepts and help students interconnect these concepts, rather than making students switch to a new mindset due to the notational differences. Graphical notations like flowcharts, class diagrams, and statecharts are presented as appropriate and defined by translation to the textual notation. A mathematical basis for all design constructs is given. A typed logic using the same type system as a programming language is used. Equational reasoning is used for all proofs because of the familiarity from calculus. • We can subdivide the task of checking correctness assertions by adding intermediate annotations: {x ≥ 0} z, u := 0, x ; {invariant: (z + u · y = x · y) ∧ (u ≥ 0)} while u > 0 do z, u := z + y, u – 1 {z = x · y} z := 0 u := x u > 0 z := z + y u := u – 1 (z + u · y = x · y) ∧ (u ≥ 0) x ≥ 0 z = x · y + – Abstract Programs-21 Algorithmic Abstraction vs. Data Abstraction
An Experiment To Evaluate An Approach To Teaching Formal Specifications Using Model Checking
2009 Annual Conference & Exposition Proceedings
The difficulty of writing, reading, and understanding formal specifications remains one of the main obstacles in adopting formal verification techniques such as model checking, theorem and runtime verification. In order to train a future workforce that can develop and test high-assurance systems, it is essential to introduce undergraduate students in computer science and software engineering to the concepts in formal methods. This paper presents an experiment that we used to validate the effectiveness of a new approach that can be used in an undergraduate course to teach formal approaches and languages. The paper presents study that was conducted at two institutions to compare the new approach with the traditional one in teaching formal specifications. The new approach uses a model checker and a specification tool to teach Linear Temporal Logic (LTL), a specification language that is widely used in a variety of verification tools.
An Approach To Teaching Software Validation
WIT Transactions on Information and Communication Technologies, 1970
This paper describes an approach to teaching skills associated with scenariobased software validation. The basis for the approach is the use of executable specifications to model the functional requirements of a software system. The execution behaviour of specifications is used to validate a specification with respect to a requirement. Early feedback on the validity of specifications is provided by a minimal set of scenarios which are derived directly from a specification.
Ac 2009-433: A State-Of-Practice on Teaching Software Verification and Validation
2009
Software testing is an essential activity in the software development process. Moreover, it covers a large part of the development costs involved. And, as the software tester is a key player in the testing activities that occur throughout the software lifecycle, the efficacy of such testing depends very much on his or her experience, efficiency, skills, and intuition. Given this importance of software testing, educators face a significant challenge when teaching and equipping students with the testing methodologies, skills, and knowledge that are in line with industry needs. The aim of this paper is to examine the current state-of-practice with respect to teaching Software Verification and Validation (V&V) in the accredited Bachelor of Software Engineering (BSE) programs offered in Australian universities. An online survey was conducted to obtain the required data from these universities. The same online survey was used to obtain data from the Certified Software Test Professional (C...
Ever since it emerged in the late (nineteen) sixties, the discipline of software engineering has set itself apart from other engineering disciplines in a number of ways, including: the pervasiveness of its products; the complexity of its products and processes; the criticality of its applications; the difficulty of managing its processes and estimating its costs; the volatility of its workforce; the intractability of its process lifecycles; etc. A number of principles have emerged from recent software engineering research, that have the potential to bring a measure of control to the practice of this discipline; but they have not made it into routine practice in industry. We argue that the classroom is a good place to start acquainting students with these principles, and to start getting them into the habit of adhering to them as a matter of routine practice.
Software Engineering Education: Rôles of Formal Specification and Design Calculi
Annals of Software Engineering, 1998
This paper analyses current principles of software development: from domains via requirements to design. On the basis of this analysis we outline a structure and contents of professional software engineering. From this we extract some requirements to a university graduate (M.Sc.) curriculum in software engineering. We summarise the four software engineering axes that we wish to emphasize in this paper: • software engineering as a responsible profession, • abstraction, linguistics and logic, • methodology, formal specification and design calculi, • domain, requirements and software design engineering. We view (i) engineering as 'walking the bridge between science and technology'-with engineers using mathematics as and when appropriate, (ii) methods as 'sets of principles for analysing problems and for selecting and applying techniques and tools in order to efficiently construct an efficient artifact (here software),' and (iii) software engineering as consisting of 'domain engineering, requirements engineering and software design (engineering)'-with software development comprising all these stages and teams of engineers specially educated in sub-branches of software engineering. Since software engineering produces and consumes descriptions and since professional engineers create varieties of abstractions we conclude that they make use of varieties of formal specification languages and design calculi-to represent abstract and concrete descriptions and to calculate over and between these. The paper may be incomplete in not covering aspects of AI and knowledge based engineering. It also does not deal with the dimensioning and performance evaluation of hardware and software systems. The paper, in its attempt at a comprehensive analysis and proposal, is long. Our analysis subsumes that of ACM and IEEE [ACM/IEEE-CS June 1991] to which we add!
Understanding and exploring formal specifications
Annals of Software Engineering, 1998
Formal methods is seen as a means of applying scientific knowledge to software construction, thereby legitimating the use of mathematics within software engineering. However, the software engineering community faces numerous challenges before an effective transfer of this formal methods technology can take place because of the level of skill, expertise and effort required in their application. It is argued that at present the use of formal notations for system specification is a mature technology offering the greatest leverage. The relative benefits of a declarative approach with a "getting it right the first time" maxim versus an imperative approach coupled with an exploratory trial and error flavour are explored. Detailed characteristics of a teaching and learning environment developed to support the latter approach are provided. Its varied uses in the context of teaching and learning within undergraduate and postgraduate courses in software engineering are discussed. Exemplars from these uses show how users of the environment explore formal specifications to improve their understanding of specification and thereby illustrate the effectiveness of the environment. Implications of our approach on technology transfer and training are briefly explored.
This paper introduces several ideas related to the preparation of developers and users of software products. It identifies commonalities observed in different educational contexts through which a unified strategy in preparing highly technologically qualified workforce of the future can be formulated. The paper argues for the importance of students' field experience and research work facilitated through the use of the administrative flexibility principle and appropriate modification of traditional signature pedagogies.
A practical approach of teaching software engineering
2003
In today's software industry a software engineer is not only expected to successfully cope with technical challenges, but also to deal with non-technical issues arising from difficult project situations. These issues typically include understanding the customer's domain and requirements, working in a team, organizing the division of work, and coping with time pressure and hard deadlines. Thus, in our opinion teaching Software Engineering (SE) not only requires studying theory using text books, but also providing students with the experience of typical non-technical issues in a software project. This article reports experiences with the concept of a course focusing on providing practical know-how.