Supporting requirements updates during software evolution – Talk by Martin Glinz at SE 2016

Martin Glinz from the University of Zürich has given an interesting talk on a paper they presented at the RE conference. If you work in a process in which you update "old" requirements, it is difficult to identify which ones. They tried to identify the affected requirements based on a code change.

I would suspect that this is not really relevant for agile development processes. But in other context, this could really safe time.

ink-image.png
ink-image_1.png


Continuous Software Engineering - Keynote von Willi Hasselbring auf der SE 2016

Die ersten Keynote auf der SE 2016 in Wien wurde von Willi Hasselbring (Universität Kiel) gehalten. Er hat dabei einen Überblick aus seiner Sicht zum Thema Continuous Software Engineering gegeben. Ich fand den Überblick interessant, aber sogar noch etwas zu eng. Agile Software-Entwicklung kam zum Beispiel nur am Rande vor. Unser Continuous Quality Control fand gar keine Erwähnung.

Hier sind meine Sketchnotes:


How are functionally similar code clones different?

A pre-print of a study on the differences between functionally similar code clones just became available at PeerJ. Please have a look. We are looking forward to comments, feedback and questions here or on the pre-print page.

We used solutions to programming problems of Google Code Jam. The solutions to a programming problem have to be functionally similar. Therefore, we can consider them functionally similar clones  (i.e. the code fragments provide similar functionality but are not necessarily syntactically similar). Clones with similar functionality, usually the result of copy & paste, can be found reliably with contemporary clone detection tools. Functionally similar clones, however, are still a large challenge.

We used the clone detection functionality in ConQAT to investigate how much syntactic similarity is there in these functionally similar code clones. They probably have not been created by copy & paste. We found that the syntactic similarity is below 16 %; often it is much smaller. To better understand the remaining differences, we categorised them manually. We found differences in the algorithms, data structures, OO design, I/O and the usage of libraries.

We provide based on this categorisation a freely available benchmark representing these differences along with all the data used in the study. We hope this helps the clone detection research community to move the detection of functionally similar code clones forward.

We are looking forward to your comments and feedback!

Source: https://peerj.com/preprints/1516/?td=bl

Lightning port doesn't keep Lightning cable in place?

Apparently, this is a problem many have already encountered and solved. I have not stumbled across it so far. Here is what my problem was:

At some point in time of using my iPhone 6 (a bit more than half a year old), didn't charge correctly anymore. It happened that in the morning, after supposedly charging it the whole night, the iPhone was almost empty. I then realised that the plug did not go fully in the port. Moreover, it only charged when the plug was slightly skewed in the port.

My initial thought was that this must be a defect with the Lightning port in my iPhone. Therefore, I went to my local GRAVIS store in Stuttgart (which is in walking distance from my home). And the employee there said that he could clean it for 10€. I was a bit surprised that he fully ruled out a port defect. He answered that in 95 % of times, this is from dirt in the port. 

I tried his hint to use a toothpick to clean the port. I found crazy amounts of dust in the port. And now it is fully functional again. Sometimes, problems are much easier to solve than expected.

A quick Web search showed that I was definitely not the first with this problem. For example, Dan Graziano on CNET also describes the toothpick hint:

Lint and other debris from our pockets or purses gets stuck in this port and can build up over time. To be safe, back up your iPhone or iPad to your computer or the cloud. Power it off, and with a normal toothpick, gently remove the lint. You will be amazed how much can get stuck in the port.

As I hadn't seen this solution before, maybe this article is helpful to somebody.

Live Blog: IT-Sanierung, Christoph Stock

Viele Unternehmen schätzen, dass 20%-50% der Systeme nicht mehr gebraucht werden.
Ein Grund sind Probleme beim IT Business Case.

Technical Debt baut sich immer mehr auf, wenn Features verfrüht geliefert werden müssen.
Regulatorische Anforderungen, die umzusetzen waren, sind ein IT-Lackmustest, SOx oder SEPA. Für manche kleine Projekte zur Anpassung, für andere Riesenprojekte.
Schatten-IT ist doppeltes Vorhalten von IT, z.B. in Cloud Services.
Bei zu viel technischer Schuld wird sogar der Business Case für Ersetzung positiv.

Es werden veraltete Technologien und Methoden verwendet, in alte Technologien investiert und abgelöstes weiter verwendet.
Featureentwicklung wird immer aufwändiger. Es gibt hohe Test- und Einarbeitungsaufwände. Es gibt keine automatisierten Softwaretests.
Viele Workarounds und schlechte Stabilität. Ein Indikator: täglicher Neustart.
Fehler werden akzeptiert und nur einfache Fehler werden gelöst. Die eigentlich relevanten bleiben in der Software.

Wie kann man diese Probleme angehen?
Man muss immer argumentieren, warum man sanieren und nicht neu schreiben soll. Gründe sind Datenbankinhalte, Schnittstellen zu Nachbarapplikationen, die unklaren Anforderungen und die weiterlaufende Entwicklung.

Drei Schritte: Stabilisierung, Sanierung, Regelbetrieb

Erstes Ziel ist die Virtualisierung, um die Software auf Entwicklerlaptops zum Laufen zu bekommen. Dann muss der Build und das Deployment automatisiert werden.
TNG verwendet als Werkzeuge Stash, Confluence, Jira, usw.

Umsetzung wird agil durchgeführt. Am Anfang großes Kanban-Team. Für konkrete Stories werden dann Scrum-Teams verwendet. Der Kunde muss überzeugt werden, dass am Anfang eines Sanierungsprojekts nicht viele neue Features realisiert werden können.
Am Anfang ist das Fixen offensichtlicher Fehler eine große Gefahr, weil noch keine automatisierten Tests existieren. Vielleicht ist er später im Code durch einen Workaround aufgefangen.

Die ersten Codeänderungen ohne Tests sollten mit Pair Programming und/oder mit formalisierten Codereviews geprüft werden. Refactorings nur minimalistisch und möglichst mit Werkzeugunterstützung.

Dann initialer Testaufbau von automatisierten Integrationstests. Dies braucht Schnittstellensimulatoren. Damit ist die Testausführung langwierig. Die Definition of Done enthält, dass ein neuer Test pro Fehler geschrieben werden muss.
Behaviour-Driven Development Reverse mit JGiven und Testdatengenerierung mit EntityBuilder. JGiven generiert aus automatisierten Tests menschenlesbare Testspezifikationen.

Wie lerne ich, was die Applikation tut?
Quellen sind Exceptions und Log Files. Evtl. müssen diese noch mit weiteren Informationen angereichert werden. Außerdem gibt es Informationen aus dem Monitoring und Performance-Messungen. Wenn nicht klar ist, wer Interfaces verwendet, dann kann eine Firewall davor eingebaut werden. Wenn sich dann niemand beschwert, dann scheint man alle Aufrufer zu kennen.

Mit kleinen Releases kann man in kleinen Schritten verbessern, aber es werden auch Dinge kaputt gehen.

Dokumentation wird in einem Wiki aufgebaut. UML Sequenzdiagramme mit PlantUML um Szenarien zu beschreiben. Release Notes mit Testberichten sollten automatisiert werden.

Bei hoher Testabdeckung können getrennte Teilsysteme wieder zusammengeführt werden.

Wann ist meine Sanierung erfolgreich?
Ein KPI sind Fehler pro Zeit. Aber es werden am Anfang nicht weniger Fehler pro Zeit, weil viele neue Fälle genutzt und getestet werden. Wenn die Weiterentwicklung wieder möglich ist, kann die Software wieder in den Regelbetrieb überführt werden.

Wie vermeide ich Sanierungsfälle?
Man kann die IT in Fast IT und Core IT aufteilen. Fast IT zur schnellen Validierung von Ideen. Falls es funktioniert, wird es mit allen Qualitätsanforderungen in die Core IT überführt.

Call for Papers Special Session on Automated Quality Assurance

Call for Papers
Special Session on Automated Quality Assurance
at the Scientific Program of the Software Quality Days 2015
Vienna, Austria
20.-22. January 2015
http://2015.software-quality-days.com

The 7th Software Quality Days (SWQD) conference and tools fair – one of the largest software quality conferences in Europe - will bring together researchers and practitioners from business, industry, and academia working on quality assurance and quality management for software engineering and information technology.

SWQD will again host a scientific program on software quality research. It has established itself as an important meeting of software quality researchers. This year, we hold a special session on automated quality assurance to emphasise this important topic.

Research in software quality assurance (SQA) is more and more driven by automating SQA tasks. For example, researchers work on automating test generation and execution, detecting clones or predicting fault-prone components. These activities are not well integrated, however. This is why we plan this special session with the aim to discuss the connections in automating quality assurance. The general requirements on the submitted papers are the same as on the technical research papers but they need to relate to the topic of the special session.

Publication Requirements

  •  Full papers: 15-20 pages in Springer LNBIP proceedings format including an abstract of up to 150 words
  • Short Papers: 8-12 pages in Springer LNBIP proceedings format

The language of the scientific program is English. The scientific program papers will be rigorously peer-reviewed for publication in the well known research publication series Springer LNBIP.


See the LNBIP Website for author instructions.

Papers must not have been previously published or submitted for review elsewhere. If accepted, papers must be personally presented at the Software Quality Days 2015 Conference by the author or one of the co-authors. The first presenting author can participate free of charge at the two conference days. Additional authors/presenters can participate at a discounted partner fee.

Paper Submission

Please submit a PDF version of your paper via EasyChair.

Please select as paper category “special session on automated quality assurance” during the submission process. The assignment to full and/or short papers is implicitly given by the number of pages per submission.

Important Dates

  • Abstract Submission: 26.05.2014
  • Full Paper Submission: 02.06.2014 16.06.2014
  • Notification of accepted/rejected papers: 31.07.2014
  • Camera-ready paper for Springer Publication: 01.09.2014

Special Session Chair: Stefan Wagner, University of Stuttgart

My new MacBook Pro IV

19) And on we go. I installed AppCleaner from here. It is free to use and helps you wipe all these additional data the apps leave on your Mac.

20) Adding printers was just selecting our university group's printers in settings -> print & fax.

21) Skype, of course. Just went to skype.com and after logging in with my Skype account I could just download the recent version of the application.

22) Then I use f.lux from here to automatically dim my monitors. This helps to take some stress from the eyes.

23) Handbrake is really handy for converting any video, especially for ripping my DVDs.

24) Syncing with the Apple time server went wrong somehow. I set the correct time manually and then started syncing again. It seems to work so far...

25) SPSS is my statistical package of choice for the easier stuff. I got a download and a licence from my University.

26) Similiarly, I used a university licence for Microsoft Office for Mac 2011.

My new MacBook Pro III

12) Next up: Things Folders. Although it feels not really completely reliable, I came to appreciate Things Folders very much. As I manage all my tasks with Things, it is quite handy to have all data structured in the same way and connected to the projects and todos. It is available at jazzaround.net. Running it for the first time to create the folders takes some time - depending on your number of projects - but then it is rather quick. I then made my new MacBook accessible on the network to move the contents from my old Things Folders to the new ones.

13) Of course, I also want cloud sync for my calendar and my solution is Google Calendar. Not the prettiest solution but it works most of the time. In Calendar, I just could add my Google account and my main calendar was there. Under "delegates" I then could choose my additional calendars to show. Done!

14) As I use a lot of Subversion repositories, I also need a good way to handle them in Finder. SCPlugin is a good way to do it and it is open source at Tigris. It comes as an installation package. For it to work directly from Finder, I need to drag the SCToolbarButton from the applications folder to the Finder toolbar. No problem!

15) In the mean time, the copy of my music and iOS apps has finished. I start up iTunes and everything of my music is here. That looks good. Let's see if syncing my iPad works.
No, the apps are not here. But the sync works anyway. Hence, I downloaded a free app from the app store and magically the apps part of my library was visible with all my apps.

16) And after a while and after restarting address book, it magically synced all my contacts from Google.

17) To control my finances, I use iFinance, which can be downloaded here. I install it, run it once and then copy from the old MacBook my data base from Library/Application Support/iFinance3. Works!

18) And finally for today, I get Papers running. I use it to organise all the research papers I read and I'm working with. Almost at the bottom of this page, I found a download link for Papers 1. I'm still not convinced by Papers2. Using the license key was a bit more complicated. I had to go to a web page and let me send an activation code by e-mail. But in the end it worked.

Setting up my new MacBook Pro II

5) Okay, a small complication because I use German as the main language. I needed first to start iPhoto once so that it created "Bibliothek iPhoto" and not "iPhoto Library". Anyway, I closed iPhoto removed the empty library and renamed the old library to "Bibliothek iPhoto". When I reopen iPhoto it looks like the pictures have always just been there.

6) Okay, having Dropbox, I can install 1Password, get my keychain from there and with it all my license keys for all my software. I download 1Password from the Agile Solution website. Then I move it in my applications folder and open it. It directly detects the keychain in the Dropbox and asks to sync with it. Of course we do that. Then I enter the license key from my 1Password keychain. Nice!

7) By the way, in the background I started copying my music. This probably takes much longer than the pictures... This gives us time to install more needed software.

8) The most important one for me as a firm believer in GTD is Things. If you have bought it from the App Store, that would be easier. I need to download it from the Cultured Code website and move it into my applications folder. The license is easily copied from 1Password. To copy the todo database, I need to copy database.xml in Library/Application Support/Cultured Code/Things from my old MacBook to the new one.
Done!

9) I also firmly believe in LaTeX as the superior way to write papers and books. Therefore, I get myself an installation of TeXShop here. As I install everything freshly, I need the complete TeX Live distribution. That is 1.5 GB and takes some time.

10) Meanwhile, I also told Alfred to start at startup. I like Alfred but I'm sure other quick starters might replace it well.

11) What so far does not really work is syncing my address book with Google. I add that in the settings but nothing happens... Maybe I need to google that.

Setting up my new MacBook Pro

Finally, I'm the proud owner of a new MacBook Pro. And I decided not to use the migration assistant to move all the old junk over to the new, shiny machine. I want to set it up from scratch. I will document what I did and installed. Maybe it helps you in setting up your Mac (or maybe it just helps me in setting up my next MacBook :-)).

1) I started the MacBook Pro and watched the nice starting animation. I love how much Apple invests in such details! After entering some of my details, Mac OS X was up and running. It found a lot of updates to install but after a reboot, everything was up to date.

2) What's next? Okay, I need to be able to read my e-mail on that machine. Quickly. So I started Mail and entered first my GMail account details. Mail did all the rest for me. Then I opened the settings in Mail in my old MacBook and entered the information for my other mail accounts in the new Mail. It took a bit to download all the mails but it worked like a charm.

3) Then, I made the home directory on the old MacBook available on the network (in the system settings). This allowed my to find it in the Finder of the new MacBook and to start copying the iPhoto Library. This may take a while...

4) Meanwhile, we can see what the Mac AppStore can do for us. I started it from the dock. Under "purchased" it showed my all the apps I bought there (after entering my Apple ID). And I could directly download them again to this machine. I chose to install Alfred, Kindle, Time Out Free, Evernote and MindNode (free). Maybe I'll get some more later but these are the essentials.

5) iPhoto is still copying, so I need my ultimate sharing tool: Dropbox. If you have not account yet, you can get it here and get me some more online space. I downloaded the tool from the web site, entered my account and I instantly got all my data. This is how it should work!

6) Meanwhile, the iPhoto library finished copying. Let's see in the next post how I get iPhoto to use it.

William Zinsser: On Writing Well

"On Writing Well" is a classic book on writing nonfiction that recently celebrated its 30th anniversary. As my main area of writing is scientific writing, I read it with the intent to learn for my scientific papers.

With this background, my judgement on the book is mixed. There are several chapters that are useful for scientific papers but a good share of the book is written for journalists. The view, which is the view Zinsser himself probably has, is that of a generalist writer who has to explain something to the public. This does often not fit very well with the intention of most scientific papers.

Most useful for me was Part I "Principles" and Part II "Methods". What he explains there is almost universal. He talks about simplicity and style, about words and their correct usage. I especially enjoyed Chapter 10 "Bits & Pieces" in which Zinsser collected short but helpful hints for your everyday writing.

Part III "Forms" includes chapters such as "Writing About People: The Interview" or "Writing About Yourself: The Memoir" that didn't help for my usual tasks. Even Chapter 15 "Science and Technology" was not what I was looking for because it covered much more the journalists's view. To some degree Chapter 16 "Business Writing: Writing in Your Job" could give some insights for my writing.

Overall the book is fun to read and Zinsser proves in it that he is the right guy to listen to on writing well.

Airport Express and Airfoil

I don't have a desktop computer anymore because everything I need is on my laptop computer - a MacBook Pro. Although the speakers of the MacBook are actually not bad, I prefer my normal hi-fi system for listing to music and watching movies. Therefore, I have a cinch connector cable to get the sound from the MacBook to the hi-fi system. But that bounds me close to the hi-fi system and the MacBook is not portable around my room anymore.

The solution here is Apple's Airport Express. For this purpose, it acts as a audio streamer. It has audio output interface and connects to any WLAN. Hence, the cinch cable now goes into the Airport Express and I stream the audio from iTunes to it. There is my music on my hi-fi system without any cable going out from the MacBook.

The installation is actually quite easy. It comes with a CD on which you find the tool

Airport Utility

that lets you configure how the Airport Express should work. It can establish its own WLAN or connect to an existing one for which you have to provide the access information, of course. It has a couple of more features that I don't use such as acting as a print server if you connect a printer to its USB port.

One problem, however, still remains. iTunes lets you only stream music to the Airport Express. Watching movies or TV is not possible. The solution here is the application

Airfoil

 from Rogue Amoeba, available for Mac and Windows. It allows you to stream any sound from any application to Airport Express. This is actually what you expect would work out-of-the-box, but you have to invest $25 for the current single-user licence price. By adding the so-called Extra Instant Hiack it can steal the sound output from any application and send it to Airport Express. This even works for EyeTV and with the included video player also for movies.

OWASP Live CD in Virtual Box on a Mac

There's a whole world of (application) security tools out there. Many of them are even available as open source and free for you to use in checking your network, your machine, and your applications. The problem I found with these tools is the difficulty of installing them all on my Mac. They are written in different languages (Java, Python, Ruby, ...) and therefore require specific environments that need to be installed. Some handy tools are available as add-ons for Firefox. But I don't tend to use them always. I just need them for security analyses.

The answer to all this is to make use of the OWASP Live CD. OWASP is the Open Web Application Security Project, which is a non-profit organisation for improving the security of application software. Among many interesting sub-projects, there is the Live CD. The most recent release from May 2009 is called AppSecEU. It still seems like an active project. It gives you a complete Linux which can be booted from the CD. The Linux has a KDE desktop environment the most important open source security tools installed and callable from the GUI. That saves a lot of hassle installing and frees your normal working environment from all these tools. However, I don't like to reboot for assessing application security.

For this, the maintainers of the Live CD projects provide VMWare and VirtualBox images that you can run on top of your normal Mac environment. You find the most recent images here. There is even a tutorial that shows the set up of the Live CD in Virtual Box. But all you need to do is to download the image and create a new virtual machine in Virtual Box with "Operating System: Linux" and "Version: Other Linux". Then, as the virtual hard drive, select the unpacked image that you downloaded before. Now you can already boot the system and start analysing.




Everything I tried on the Live CD worked right out of the box without any additional changes. You only need to configure the tools to find your application, which can run on your Mac, for example. The only problem is that the virtual machine slows down the Linux compared to running it directly on the hardware. As application scans tend to be long, this might be a reason to boot the Live CD directly. For me, the comfort of having my normal Mac environment in parallel is more important.

Fisch im Handy

A very simple and handy way to do something for the environment, especially the sea, is to use an online guide for buying fish. The International Seafood Guide can be found at http://fischimhandy.de/ formatted in a way suitable for mobile phones. So the information what fish to buy is always at your fingertip.

It works quite easy. Go to the web site, choose your language, and it shows you different names of fish. Choose the one you want to buy and it says whether it is environmentally a good or bad idea to do that.