Dumia – Requirements Analysis

Requirements analysis, also called requirements engineering, is the process of determining user expectations for a product. These features, called requirements, must be quantifiable, relevant and detailed. In software engineering, such requirements are often called functional specifications. Requirements analysis is an important aspect of software development and is the main reason many software projects fail

Requirements analysis involves frequent communication with system users to determine specific feature expectations, resolution of conflict or ambiguity in requirements as demanded by the various users or groups of users, avoidance of feature creep and documentation of all aspects of the project development process from start to finish. Energy should be directed towards ensuring that the final system or product conforms to client needs rather than attempting to mold user expectations to fit the requirements.


Here are the requirements that we were given:

  1. The User should be able to browse a web application
  2. View Items on the Site
  3. Search for Items on the Site
  4. Add or Remove an item from the Shopping Cart
  5. Purchase Items using a Credit Card
  6. Kick off a fulfillment process
  7. Send Emails of Status to the User through each step in the Process

We will take each statement of the requirement and look at it in a detailed way. The goal of analyzing the requirements is to as best as possible visualize the solution that will solve the problem. Not HOW to go about building it. We are trying to envision a solution that best solves the problem (no matter how difficult we think it might be to build).

Domain Process and Data Modelling

Domain Modelling involves specifying the disparate Hardware and Software systems that need to interact to solve the problem. It may also contain process flow diagrams or data flow diagrams. It’s role is to give you and the members of your team a 1000ft view of the processes involved in the solution. That said, in the case of Dumia, Our Model is going to be quite simple


Dumia Business Process Flow

User Stories and Use Cases

A use case is a list of actions or event steps, typically defining the interactions between a role (known in the Unified Modeling Language as an actor) and a system, to achieve a goal. The actor can be a human or other external system. A user story on the other hand a user story is a short and simple description of a feature told from the perspective of the person who desires the new capability, usually a user or customer of the system. They typically follow a simple template:

As a <type of user>, I want <some goal> so that <some reason>.

So in short, a User Story contains multiple user stories. Applying this to our current requirements, we have the following User Stories and the corresponding Use cases

  • As an Anonymous User, I should be able to be to View Items that are in Stock
    • View Inventory (Available Products)
  • As an Anonymous User, I should be able to search for a specific Product
    • Find Product
  • As an Anonymous User, I should be able to Add or Remove an item from the Shopping Cart
    • View Cart Items
    • Add To Cart
    • Remove From Cart
    • Change Product Quantity in Cart
  • As an Anonymous User, I want to login so that I can gain access to Checkout
    • Login
  • As a Validated User, I want to Purchase Items using a Credit Card
    • Checkout Cart
    • Place Order
    • Pay for Order

User Interface Mocking

The role of mockups is to translate the Requirements into a Visual document that you can then give to the customer/business analyst/marketers and other members of your team  to make sure that you all understand the high level UI flow of the application. Note that the mockups must be able to satisfy the requirements without going into too much detail.

Mocks could be generated with a tool like Balsamiq or hand drawn. I would advice you start with hand drawn mocks so that that you can get a hang of it

For Dumia we have the following mocks

This slideshow requires JavaScript.


Collectively, these outputs of the Requirements Analysis is referred to as the Functional Specification. It best describes the functionality of the System. With these in place, We can move on to the next topic.. High Level Architecture


Building Dumia

In this series of Blog posts, we will attempt to build a trivial e-commerce web site called Dumia (As a play on Jumia). The goal of this series of posts is to take you through the steps involved when building enterprise applications.

Dumia Requirements

  • The User should be able to browse a web application
  • View Items on the Site
  • Add or Remove an item from the Shopping Cart
  • Purchase Items using a Credit Card
  • Kick off a fulfillment process
  • Send Emails of Status to the User through each step in the Process


  • Git Source Control
  • .Net Framework
  • F#
  • HTML/CSS/JavaScript

If you have a firm grasp of the above then let’s begin.

Table of Contents


The Programmer Pride Paradox

“Confidence is more often the result of Ignorance than actual Experience”

– Tim Caswell

Most time in our world of Tech, you meet people who exude a certain kind of confidence or as I would like to call it.. “Dark Aura”. These people know how to talk smart and they usually have this condescending tone when you ask an innocent question or when they are talking to you about some new technology or piece of software. Acting like they know it all. When I started, I was usually intimidated when I met people like this. As time went on, I realized that those guys, didn’t know much. But more importantly, I realized that those who actually knew their stuff are actually less offensive about it. When you hear people like Scott Gu,  John ResigRob Conery, Scott Hanselman,Paul Irish e.t.c speak, They never act like “I’m awesome kneel before me” whereas they are authorities and they KNOW what they are talking about. As a result, you want to learn more from them. Continue reading

My First Open Source Project


I know you must be thinking, Online Classroom? What’s that? Well its something I’ve had on my mind for a while now. Let me take sometime to explain what led to it. When I started learning about computers several years ago, I would scour the internet for tutorials and materials for the technology that I wanted to learn. This yielded tremendous results as almost 90% of what I know is based on self education and web searching.

However, It can be frustrating for me and new comers alike to find an article or material that matches my level of knowledge. This was mainly because the same internet that houses BSc caliber material, also houses MSc and Phd. And many times, there is no distinction. It wasn’t completely a bad thing as in some cases I would be forced to upgrade my knowledge. But then, not every one has the time or patience. Continue reading

Microsoft’s Mentality Shift: Web forms vs. MVC

In recent times, many more tech companies are stealing the spotlight these days. The likes of Apple, Google, Facebook… And somehow it seems like Microsoft’s relevance in the Tech world is diminishing.

The oppositions seem to be winning on these new tech frontiers namely Mobile, Internet, Browsers, e.t.c.. This is because even though they were the first to get on board these platforms, Microsoft as a company did not adapt quickly enough to the changes in the Landscape. It is often said that tech years are similar to dog years. Continue reading

Nokia Developer Training

Nokia Qt and Java Training (Lagos)

The past three days have been wonderful thanks the awesome training we received from Nokia West Africa. The three day workshop was jam-packed with intense training on the J2ME platform for the Series 40 Handsets which is the most popular phone line in Nigeria and of course the Symbian Platform.

Originally I wanted to cover the event live using twitter with the hash tag #tgenius. But I had to stop as there was simply no time to tweet. What could easily be a month’s training was summarised into three days and as a result, It was information overload.

Day One – Java Mobile Edition (J2ME)

The first day, we were introduced to the J2ME Platform. This is the platform for mobile java applications especially the Nokia Series 40 handsets. So we used the Nokia series 40 as a case study. The series 40 phones includes the very popular Nokia 5130 Express Music phone. These set of devices aren’t really smart phones even though they can do many of the things that smart phones do like email, surf the web, Play music, Video and Now with Nokia’s latest iteration, They added Push Notifications, Location and Touch Gestures. Nokia’s drive to push smart phone features to the mass market is certainly commendable.


  1. Introducing the J2ME Platform
  2. Designing a simple J2ME Application using the built in UI
  3. Designing Games and  Custom UI using the Canvas APIs
  4. Getting Started with S40 APIs using (SMS  and Location APIs as case studies)


  1. Main Presentation Slides
  2. Sample Code
  3. Examples and Resources

Required Software

  1. Java JDK 7
  2. Netbeans IDE
  3. Nokia Java SDK
  4. S40 On Device Debugger

During the program the instructor designed a simple text messaging application using aforementioned APIs with the Netbeans IDE.

Personally, I’m not new to the J2ME platform so I wasn’t really attentive (Ma Bad). However, I learnt a few new tricks like using the flow editor in Netbeans rather than coding everything. And about Nokia’s New Series 40 v6 Phones that will soon hit the market with really innovative features like Location services using the Cell-ID Technology (Even though the phone doesn’t have GPS which to me is a touch of genius).

Day Two –  Ovi Browser and Nokia Web Tools

Nokia Web ToolsThe second day started with a wrap-up of Day One and then we went on to the Nokia Web Application for s40 devices. These are similar to the Web RunTime (WRT) Applications present in their big brothers i.e. the Symbian S60 and Symbian^3 devices. However unlike the Symbian Smartphones, The web application resides on Nokia’s Proxy server and served on-demand to the phone. There by optimizing the Web Application for its smaller screen and lower memory. So when the user downloads your app, He/She would typically download a small Java Application that simply points to your web application on the Nokia Proxy Server and Using the Ovi browser to launch it. Also note that the WRT Tools and SDK is not restricted to developing for s40 Devices, You can create Web Applications for Symbian devices as well. However with the S60 Devices, The Nokia proxy is not necessary as all the HTML,CSS and JavaScript files are on saved locally on the device.


  1. About Web Applications
  2. The Ovi Browser and How it Works
  3. How s40 web apps work with the Nokia Proxy and Ovi Browser


  1. Lecture Slides
  2. Getting Started Guides

Required Software

  1. Nokia Web Tools

Day Three – Qt and QML for Symbian Development

The third day of the event didn’t start with Qt Training. However, I separated it for a reason. I had high hopes about learning about Qt and what it had to offer. But I was completely blown away by this framework. I haven’t been this excited about a framework or library since I learnt about JQuery. In fact, If you think of Qt as the “JQuery” of C++, you wouldn’t miss the mark by much.

Permit me to give you some history: Being a C++ programmer, I was interested in the Symbian platform especially the s60. However, I was seriously turned off with how disorganized and complicated the framework was. Even to setup your development environment was unnecessarily cumbersome. And so after sweating to run a “Hello World” Application. I vowed never to come anywhere close to Symbian OS Development. Qt (pronounced ‘Cute’) is the complete opposite.

Qt on the other hand transcends Nokia and Mobile Development. Its an awesome framework that companies like Autodesk (Maya), Google (Google Earth), Linux (KDE), Adobe (Photoshop) e.t.c have been using to develop multi-platform applications. Unlike Java which is “write once and (hope) it runs everywhere”, with Qt you write once and build everywhere. If you design a Calculator application, you can immediately build it for your Windows 7, Mac, Linux, Symbian and now Android Phone or Tablet without touching a single line of code.

That alone was mind blowing enough but it doesn’t end there. We were introduced to QML which is essentially a framework wrapped around the C++ libraries. The craziest thing about QML is that its incredibly simple and easy to learn. It looks similar to JSON, you write your logic with JavaScript and with a “Cute” IDE, you don’t have to be a programmer to pick it up and use. During the lecture, the instructor told us how he taught some graphic artists about how to use Qt and QML. After that, they went for an application contest and won against several programmers. Its that incredible.

  1. Introduction to Qt
  2. Coding and Testing a simple Qt application
  3. Qt Quick (QML)
  4. Designing and Custom UI using QML and JavaScript
  5. Using Mobility APIs like Maps, Location
Other Documents
  1. Publishing Guide for Ovi Store
  2. Publishing Checklist

On a final note, Nokia is organizing a competition called Create 4 Millions where the winner takes home a whooping $1,000,000. So this training couldn’t have come at a better time. Like I said earlier, We moved at lightning speeds to try and cover up. So most of it still requires personal experimentation and self learning.

And so a BIG thank you to Teemu Kiijarvi (EDX Lead Nokia West Africa), Jarmo Rintamaki (Training Manager) and most of all to Tony Torp (Instructor)  for the training. It was simply Awesome.