Software Requirements Evolution


Software Requirements are evolving to keep up with users’ demanding appetite for applications. Simple “The system shall” statements have grown into User Stories and Storyboards. It used to be that talking about the GUI was verboten when gathering requirements. We software practitioners knew how to use the magic of creating software and the lowly users just needed to tell us what they needed and we would pull the software solution out of our proverbial hat. Not so anymore. Practically everyone has a smart phone or smart device (even my 3 year old) and the word “app” is universal thanks to the iPhone. Can I really gather requirements from my 3 year old for her new drawing app using Use Cases? Obviously no. Granted,the use cases may be used by the software developers but my 3 year old can’t even read for Christ’s sake.

Most users now know if they want a mobile app, web app, or desktop app. They know the differences and strengths of using these from years of experience. That’s why I think a more agile way of gathering requirements where quick prototypes and storyboards are used to gather feedback are meeting users’ requirements much better. If it’s a web app, well you have obviously constrained the application down to what HTML, JavaScript, CSS, etc. can do. So why not make a quick prototype of that? If they want an iPhone app, well there’s a pretty set style of doing that set by Apple. Obviously, we software professionals still have a part to play by asking, “Are you sure you won’t want to eventually have an app on the Android too?”. This leads to conversations about different architectures, technologies, and the cost/benefit analyses of each. But older ways of doing Software Requirements are becoming decreasingly beneficial with the changing “tech savvy” of users.

Please don’t get me wrong, there are still places to use Use Cases for certain kinds of projects. They are a tool in any good Software Requirements professional’s toolbox. But newer tools are coming out that need to be considered much more to keep up with software professionals’ ever changing user base.

Glitches


So, I’ve been playing way too much Modern Warfare 3 (MW3) and I’ve noticed a new word that at first glance was a replacement for “bug”.  Players refer to “glitches” in the game where say a body will lie suspended in air even though they it fall to the ground.  It doesn’t stop the game, but it is not expected behavior.  Now I doubt that there was a requirement in the MW3 software development plan that stated, “All bodies, once shot, will fall to the ground.”  And they probably didn’t have a test case around it either.  But because it is a game based on reality, you notice when something deviates from reality.

In my graduate testing course, we had specific definitions for terms like faults, bugs, and errors.  But we never mentioned the word “glitch”.  The Software Engineering field needs to get ready for this term and to help that, I’ll attempt to define it.  Now the Oxford English Dictionary defines a glitch as a:

A surge of current or a spurious electrical signal (see quots.); also, in extended use, a sudden short-lived irregularity in behaviour.

Interestingly, it seems Astronauts used the term a lot.  Here is a quotation from John Glenn:

1962   J. Glenn in Into Orbit 86   Another term we adopted to describe some of our problems was ‘glitch’. Literally, a glitch is a spike or change in voltage in an electrical circuit which takes place when the circuit suddenly has a new load put on it.‥ A glitch‥is such a minute change in voltage that no fuse could protect against it.

I think these two pieces of information help define a software glitch.  One, it is short-lived and the application continues to run smoothly overall.  Second, it is very hard to reproduce and hence creating a test case for it is also inordinately difficult.  Third, because it is short-lived and doesn’t bring the system down, it is a possible siren of something more troubling going on, but it could just be a “one-time” thing.  Very similar to the movie “The Matrix” where Neo notices a “glitch in the Matrix” and it alarms the others because that usually means that the Matrix is being changed by the agents.  Although it could also just be deja vu (the glitch Neo saw).

Software Engineering isn’t dead yet, BUT….


Tom DeMarco wrote an article a couple of years ago proclaiming that Software Engineering was dead that caused a real stir in the software field.  I opposed his view then; but sadly I’m beginning to think he had seen a glimpse of the future.

Today I did my last search for SWEBOK (the Software Engineering Book of Knowledge) in hopes of actually finding something coming out of this incredibly slow and opaque group.  My expectations were met, as they once again neglected to tell anyone where exactly they are in their unpublished process.  If any democratic process was run like this, we’d see Wisconsin style protests.  But alas, this is a dying beast that is finding its way to the bottom of irrelevance.

I think it started with the Agile Manifesto.  Almost none of the signatories came from Academia and it has shown.  They don’t publish in IEEE Software.  They don’t need to.  They get things done.  Which, of course, is what many academics in Software Engineering can’t do (see Exihibit A – SWEBOK).  I don’t want to paint too wide of a stroke.  There are of course exceptions like Mary Shaw and Tao Xie.  But many academics published articles are much like science fiction, somewhat entertaining, but not really useful.

This stems from the fact that most are tenured and have never worked a day in their life as a REAL software developer.  Its like writing about sex while still a virgin.  Exciting for the writer, but woefully invaluable for anyone else.  Let us look at the present month’s edition of IEEE Software, their leading journal. Oh wait, that will be $20 an article (because we all know they are just that valuable).  A requirements article, that looks potentially useful.  Oh it’s about GORE and SORE.  You don’t know about GORE and SORE !?! Oh you better get in the know; because that’s the new rage in software development.  Yeah, Dr. Seuss invented the terms.  Wait, an article on Architecture, now that should be promising.  “Unusable Software is…”  wait for it….. “Useless”.  Woah!!!  What a find!  20 years from now we will definitely be talking about this one.  And wait, you get more,  it’s only Part I!!!!

We don’t even use the term Software Engineering any more in the field where we actually create software.  We call it software development.  We can’t even agree on the same term!  IEEE Software went downhill after Steve McConnell (someone who HAS written real software) left and it may have been an omen that Software Engineering is going down too.

 

Software Education in the 21st century


It is unfortunate that today’s software practitioners are put at such a disadvantage by spending four years of their lives studying things that are totally irrelevant to creating software (i.e. a BS in Computer Science).  I have yet to use any calculus in my career.  Discrete Mathematics was also a total waste of time.  P = NP is nifty, but not really relevant to my profession.

That is why there is such a brazen turn against the term software engineering.  This is where things such as the Agile Manifesto come from.  It is the pent-up frustration of software developers finally saying “ENOUGH”!  I want to get things done, I don’t feel like studying so much theory that I forget why I started Computer Science in the first place.

This era in time is analoguous to the late 1800’s in which established universities such as Harvard, et. al. were still teaching Latin and other useless subjects.  What came out of this was MIT, all the A & M schools, Virginia Tech, Texas Tech, etc.  Universities that actually prepared there graduates for the real world.

The big universities are so large that they cannot be turned quickly and today’s software profession changes every month.  A new model of education needs to be developed lest these big university programs are replaced.  There is a vacuum right now for certifying and educating software developers.  Either universities need to change, and change quickly, or the industry will find another way.   But time is running out….