Tag Archives: opm

Thoughs on software engineering research

The distance between what they teach us at the university and what happens in the real world is sometimes very large. And I can say this from my personal experience as a lecturer in an Information Systems Analysis and Design course at the Technion. I’ve taught this course for 3 semesters (including this). The course teaches model based/driven/whatever analysis and design of software systems using UML and OPM. I didn’t choose the course, it chose me (it is the course my supervisor teaches it, him being the creator of OPM). We usually divide the course in two, he teaches OPM and I teach UML.

So for the last 3 semesters I have been teaching UML to undergraduate students. And the main problem is that before I was in the academia I worked 9 years as a software engineer (programmer/architect), and almost never found UML to be of any use (except for class diagrams which are really good) Never in my 9 years of work in a big software entity did I see someone create a state-machine, sequence diagram or activity diagram before coding. Nobody though it was useful, not even management.

How can I keep a straight face in front of the students? I can because I believe that there is a problem of lack of abstraction in software development and someone needs to fix it. But is UML modeling the solution? If UML is promoted by so many academics and companies as the solution to all of our problems, then maybe I am missing something. Maybe there is some proof out there that UML does improve software development, that UML is useful.

Therefore I embarked myself in the mission to find this proof by doing a “systematical literature review” of all works that have tested the “usefulness” of UML either by experimenting with mice (i.e. undergraduate students) or in the industry. I search the main publishers of software engineering articles (IEEE, ACM, Springer) since 2005 (year UML 2.0 was introduced), read 3000+ titles and probably half the amount of abstracts to filter these articles, reducing the number of possible matches to 223 articles. Now I am fast-reading the articles to see if they are really empirical or their title/abstract was misleading. So fat 70/114 did do some empirical evaluations, but most of them between “variations” of UML. But I still haven’t found what I’m looking for, which is real evidence that UML does improve software development (there are 2 industrial projects where the usage of UML was seen as beneficial, but that is NOT proof). And I am really skeptical that I will find any proof.

WOW! This post just went in a completely different direction from the one I wanted it to take… I started writing this because of something I read a couple of weeks ago about the distance that exists between the academia and the industry in software engineering. I guess my view is like theirs, and I wanted to add my personal touch.

Oh well, back to filtering UML articles :-)

 

Enhanced by Zemanta

Creating an OPM GEF Editor – Part 21: Adding Keyboard Shortcuts

Previous Tutorial: Creating an OPM GEF Editor – Part  20: Creating a Context Menu and Adding Custom Actions

Keyboard shortcuts are very useful for activating actions. There are many shortcuts that are common in all environments – and for better usability, enabling this shortcuts give the user a better user experience. In my case, I wanted to let the user edit the name of a thing (or state) using the F2 key, which is commonly used for this purpose.

Adding keyboard shortcuts to GEF is fairly easy. You only need to define a <code>KeyHandler</code> and attach it to the graphical viewer. I defined two key shortcuts: F2 for direct editing, and F3 for my own ResizeToContentsAction action.

	private void configureKeyboardShortcuts() {
		getGraphicalViewer().getKeyHandler();<br> GraphicalViewerKeyHandler keyHandler = new GraphicalViewerKeyHandler(getGraphicalViewer())
		keyHandler.put(KeyStroke.getPressed(SWT.F2, 0), getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT));
		keyHandler.put(KeyStroke.getPressed(SWT.F3, 0),
				getActionRegistry().getAction(ResizeToContentsAction.RESIZE_TO_CONTENTS_ID));
		getGraphicalViewer().setKeyHandler(keyHandler);
	}

This function is called from the configureGraphicalViewer. And that is all! You can find the source for this change in my github repository: https://github.com/vainolo/Object-Process-Programming.

Next tutorial: Creating an OPM GEF Editor – Part 22: Enabling Select-All Action in a GEF Editor

Enhanced by Zemanta

The Fine Thread between Being a Good Researcher and a Good Programmer

My “day job” is studying a PhD in Information Systems Management, where I am investigating the executable aspects of OPM (the Object-Process Methodology). While doing this I am also developing an open source tool where I am able to create OPM diagrams, and my plans are to use this tool as the interpreter of the OPM modeling language that I am creating (OPP – Object Process Programming).

As a researcher, how the code looks, how much it is tested, patterns, style, etc.. is of no matter to me. What matters is the result: can I prove using the tool that OPP is really a visual programming language which can be executed? On the other hand, as a programmer, all of this things are of interest to me. Writing “good” code is something that must be done always. Writing unit tests should not be optional. The code should be documented. But these two views are in constant battle because of the limited time in the world. If I want to advance faster in my research, I must write “ugly” code, because writing good code takes more time, no matter how good you are. Documentation takes time, writing unit tests take time.

So I am walking this fine line, on the hopes that I will have enough time to create good enough code so that at least complete strangers who download it will be able to read it. And if you are one of these strangers, please forgive me if I didn’t manage to do the job right.