Dumia – High Level Architecture

High-Level Architecture

This process adds the necessary implementation details and non-functional requirements. Non-functional requirements are implicit requirements of the system. e.g. Security, Performance etc. At this stage of the design, the customer or the user is no involved anymore and the team tries to flesh out the functional specification.

The High Level Architecture is design at the level of a system or component, and generally includes:

  • relevant goals or requirements (functional and non-functional);
  • static structure (e.g., components, interfaces, dependencies);
  • dynamic behavior (how components interacts);
  • data models or external interfaces (external to the system/component described in the document); and
  • deployment considerations (e.g., run-time requirements, third-party components).

Note that all of these descriptions are at an abstract level. The purpose is to give the reader a broad general understanding of the system or component. There may be many levels of design documents (e.g., system- or component-level).

Component Diagrams


Sequence Diagrams



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


From 8 to Love


Enter Windows 8 – the much refashioned and somewhat reviled operating system by desktop giants, Microsoft. It’s clear that it is a revolutionary approach to introduce a supposedly modern operating system which attempts to merge the past, present and the apparent future – from clicking to touch/gesturing. A while back I wrote on my experience with a pre-release version and there was one major question back then and even now – how successful would this bold move turn out to be? The answer for now is clear – not quite, at least so far as adoption numbers still remain low and relatively obscure. I feel the bad media generated after the radical changes were announced contributed to this. For me, the launch of Windows 8 back in October last year was like water washing under a bridge, and expectedly many reviews came out negative.

Continue reading

Chink in the Armor

Armor android

Hello tech.geniuses and the world at large. Thank God it’s Easter, more significantly as a reminder of the purpose of the season as it relates to the destiny of mankind, but also the respite the holidays provide from the rigors of everyday Lagos commuting. Providing quality time to sit and put together thoughts which I’ve had swirling in my head for many many weeks now, transformed by numerous events which have occurred in my daily routines and the world at large. Finally, I present to you a mash-up of gimcrackery and airheaded cerebrations coming forth from yours truly in the form of – Chink in the armor.

Continue reading

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

Android: Installing a Custom ROM

If you have an Android phone and you’re wondering how to unlock, root and install a custom firmware, right out of the box, then this is tutorial for you

What’s a Custom ROM?

A ROM in the context of the Android Ecosystem refers to the Android Operating System (OS). It is usually located on a locked Read-Only (kinda) section of the phone so that Applications won’t accidentally alter its content thereby crashing the Device. ROMs that were created by the manufacturer of the device are called Official ROMs while those created by third party developers are called Custom ROMS Continue reading