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.

About these ads

A Review of TeamSpec – a TFS plug-in for MS Word


Two years ago I did an evaluation of TeamSpec and pointed out some areas of improvement. I’m very happy to report that the company took these to heart and updated their product to address these. Here is my updated review based on TeamSpec v.4.2.1.

TeamSpec is a 3rd-party add-in for MS Word that connects it to Team Foundation Server.  It works with the newest version of TFS 2012 and Office (2013).  It is the only commercial add-in for Word currently on the TFS platform. There are other companies that have add-in’s as part of their overall suite or solution, but TeamSpec is the only product to concentrate on just Word and it does it quite well.

How It Works

Work item attributes are linked to sentences or words in your Word Document.  This is a bi-directional sync between TFS and Word.  For example, say you have  a requirement work item with the ID of 3 and the title is “Login to system”.  You could create a line in Word with the tool like so:

REQ ID 3 – Login to System, State: Proposed

When you changed the state of the requirement work item from “Proposed” to “Active” in TFS, the line would change in Word to:

REQ ID 3 – Login to System, State: Active

This could also be done the other way by changing the state in Word and publishing the change to TFS.

Additionally, you can create “Skins” which are basically pre-defined layouts for work items. You could say that you want the state of work items to always be in bold and italicized in a skin for example.

Added Functionality

The new functionality that I really like and makes it a valuable product is the ability to use work item queries from TFS with Word. Writing custom reports in Reporting Services for Word is not easy, especially since the HTML fields are not stored in the TFS Data Warehouse. This product makes it a cinch! No more writing a huge SRS! Just generate it! :)

Linked worked items are supported in queries and test cases are supported as well!!! So you can do your testing documents here as well.

The documentation has improved tremendously, but a few more “behind-the-scenes” articles in the documentation would be nice. I also hold some small reservations about the long term stability of the company as it appears to be small, so be sure to ask for the source code when you buy the product. But to be fair, they have been in business since 2005.

Conclusion

I highly recommend you look at this product if you are using TFS as your ALM platform. Microsoft majorly overlooked Word integration in TFS (although they got Excel and Project), but alas, this is where partners like TeamSolutions step in! Thank you TeamSolutions for stepping in so well!

What is RUP or Rational Unified Process?


So when I went searching for a current definition on RUP, much of the writing on it was at least four years old.  Here is the definition I came up with gathering the most current sources I could.

RUP is made up of three components:

  • Key Principles for Business Driven Decisions
  • A Framework of re-usable method content and process building blocks
  • A underlying Method and Process Definition Language

I will expound on these below.

Key Principles

The following are the key principles behind RUP:

  • Adapt the Process
  • Balance Stakeholder Priorities
  • Collaborate across teams
  • Demo Value Iteratively
  • Elevate level of abstraction
  • Focus continuously on quality

Framework

The framework is made up of best practices that have been used effectively in software development over time (e.g. Use Cases) and “Method Plug-Ins”.  Based on these, organizations develop different flavors of RUP based on:

  • Organization Maturity
  • Project Complexity
  • Organization Culture
  • Regulatory Compliance & Policy Requirements
  • Type of Development (Embedded vs Web App)
  • Organization Size

Method & Process Definition Language

Finally, the actual specification of the process is done in what is called a Unified Method Architecture (UMA) Meta Model.  This included things like phases, disciplines, activities, milestones, etc.

Phases, Milestones, and Disciplines

Finally, an important part of RUP are the phases that you go through and the milestones that are hit as you go through each one.  The below graphic from Shuja and Kreb’s book shows this well:

getfile

Within each of these phases, all of the disciplines are being done, but some more than others depending on the phase.  A discipline is defined in RUP as a collection of related activities.  RUP has the following disciplines:

  • Business Modeling
  • Requirements
  • Configuration and Change Management
  • Analysis and Design
  • Implementation
  • Project Management
  • Test
  • Deployment
  • Environment

The mixture of phases and disciplines leads to the famous “hump chart”:

I will conclude by quickly describing the phases:

Inception Phase

The following activities are done in this phase:

  • Estimate Scope
  • Identify Critical Use Cases
  • Exhibit and Demo one candidate architecture
  • Estimate Cost and Schedule
  • Detailed Estimates for Elaboration Phase
  • Estimate Potential Risks
  • Prepare Support Environment

Elaboration Phase

The following activities are done in this phase:

  • Stabilize Architecture, Requirements, and Plans
  • Mitigate Risks to determine cost and schedule
  • Establish Baseline Architecture
  • Produce Evolutionary Prototype of Production Quality components
  • Optionally do throw-away prototype as needed
  • Establish Support Environment

Construction Phase = Build It!

Transition Phase

These are some of the activities that make up this phase:

  • Beta Testing or User Acceptance Testing
  • Train End Users and Maintainers
  • Fine-tune through bug-fixing and enhancements

I hope this short overview helped you to quickly get up to speed on RUP.  There is certainly much left uncovered here, so if you interested, consult the sources above.

Alan Turing’s 100th Birthday & Gay Rights


Today I honor and thank the eminent Alan Turing for the seminal contributions he made to computer science.  Without him, I may very well be not typing on this computer.  The tragic death of Alan Turing also brings up a prescient political issue of today, Gay Rights.  Homosexuals should not be made second-class citizens in any society, especially one like ours in the USA that is supposedly based on equality.

Say what you will about gay marriage, but if the government is to recognize marriage as a legal event, then it should be recognized for all citizens.  No one, especially people such as Turing who contributed so much to humanity, should be driven to suicide by a feeling that they are ostracized from their own society.

I have never posted anything political on this blog and rarely discuss my politics in professional life.  But the 100th birthday of the founder of my profession forces me to look at these two things and lament that he would still be treated as an outcast by some if he were alive today.

A Professional Engineering Exam is coming!


Finally!!  An exam from the people (NCEES) that do the Professional Engineer licensing exams across different states for software!  This is a HUGE step in the right direction for the professionalization of software engineering.  My home state, Virginia, is one of the states asking for the exam!  Soon, you can be a licensed software engineer, just like a civil engineer.

See more on this story here!

Top 10 Living Software Engineers in the World Today


This is my humble opinion.  Please leave feedback!  I know there are probably people out there I should have included.

(All ages are as of 2013)

  1. Steve McConnell – He wrote the bible, Code Complete.  Enough said. (Age:50)
  2. Linus Torvalds – He wrote and is the architect for one of the most used operating systems ever, Linux.  Oh, he did Git also. (Age: 43)
  3. Kent BeckTDD, Agile Manifesto Signatory, jUnit, XP. (Age: 52)
  4. Barry Boehm – Software Economics, COCOMO, Spiral Development (Age: 78)
  5. David Parnas – Invented Information hiding and de-coupling. (Age: 72)
  6. Grady Booch – Helped invent UML and RUP.  Seminal person in Software Architecture. (Age: 58)
  7. Martin FowlerAgile Manifesto Signatory, Refactoring, and wrote the classic Patterns of Enterprise ApplicationArchitecture. (Age: 50)
  8. Tim Berners-Lee – Invented the WWW for heaven’s sake. (Age: 57)
  9. Fred Brooks – Wrote THE classic, Mythical Man-Month and also a Turing award (Nobel Prize of Computing) winner. (Age: 81)

So, you’ll probably notice the list only has nine people (if you read this far).  I’ve included the best for last because he is also the most controversial.

Bill Gates (Age: 57)

Now many people may be upset with this choice and say that he was a businessman. True, he was a businessman. But he was also a Software Engineer. He was a programmer (12) and then a project manager, if you will, for MS-DOS; one of the most used operating systems ever.  He was also the Chief Architect of Microsoft for a very long time when some of the most used programming languages (e.g. Visual Basic, C#) and products (e.g. Windows) were produced.



New Application Lifecycle Management (ALM) Group in Washington, DC Area!


Are you interested in Software Engineering?  How to use ALM tools to make your software development organization?  Then come join us on Thursday, June 21 for the inaugrual meeting of the DC ALM Group!  Hope to see you there!

Kick-Off and Continuous Deployment with Team Foundation Server

Sabermetrics for Coders


An very interesting book has been published recently by O’Reilly called Codermetrics.  While I don’t agree with everything the author writes, he should be applauded for his innovative new way at looking measuring developer productivity.  For too long, we’ve had Dilbert-like managers trying to measure programmers on things such as “Lines Added” or “Amount of Check-ins”.  These types of examples are insulting to professional developers and we usually try to find clever ways around it (tons of comments for instance).  Jonathan Alexander takes a different approach by using common sports stats like an “Assist” and applying them to software development.  I would get an “Assist” every time I helped a developer on my team fix some code or answer a tough question.   The other developer would have to approve that I did indeed “Assist” them.  With all the publicity of “Sabermetrics”, Billy Beane, and “Moneyball”, this book is right on time.  Check it out!

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).

A Historic Bug


The recent “bug” that afflicted the BATS trading system will probably be one for the ages and go along with other famous bugs like the Ariane 5 rocket and Y2K problem.  Of course BATS is calling it a “freak one-time event”, but this bug caused massive losses of money.  Fortunately there was no loss of life, but past bugs have caused this  like the Therac-25 radiation therapy bug.

I am a huge advocate for Software Engineering and the growth of this profession.  When I study the growth of similar professions, such as Civil Engineering, the government did not get involved and create certifications like the PE until there were massive loss of life due to bridges crumbling.  It is unfortunate that a similar type of software bug will cause the public to take notice of the pervasive influence of software in our society and needs to be recognized as a profession in its own right.  There have been close calls like the Toyota brakes problem which had a lot of software in it, but was ultimately the software was not found to be at fault.  Here’s to hoping that the government and public don’t wait to recognize Software Engineering as a profession.

Follow

Get every new post delivered to your Inbox.