Wednesday, April 3, 2013

C is for Core concepts

Yesterday, I talked about business needs. They are important, but to get a feel for the shape of an application, I find it helpful to distil the core concepts out of the mass of detail.

Stock Images: Apple Slice Picture. Image: 29984
© Photographer Dana Rothstein | Agency: Dreamstime.com

Core concepts get to the heart of what is most important. It's essential to identify them because they will start shaping your solution very early on.

A good starting point is a high level data model. This highlights the most important things that the application deals with.

In an accounting application, for example, these might be accounts, transactions, and accounting periods. In a customer ordering system, core concepts might include customer, order, and inventory item.

At this point, you don't want to itemize every piece of data. The core concepts are the mountain peaks in the data landscape.

Another group of core concepts relate to function. What do you do with the things in your application? Again, you want to identify the really important things here, so maybe ask your business expert to describe in one sentence what is it the application does.

In a help desk system, the core of the system might be workflow - moving a call through different people's hands to fix an issue for the customer. A stock control system might revolve around movements in stock levels and forecasting future needs.

More subtle, and what people often overlook, are other qualities that might be important enough to affect your early architectural decisions. In a global application, maybe time zones, multi-lingual presentation and multi-currency accounting are important, whereas in an otherwise identical application for a local business these wouldn't matter. A booking system for a large airline or hotel chain might bring volume, performance, and high availability to the fore.

Core concepts may also arise from design choices. For example, security and privacy might be a primary business requirement. In response to this, you might decide that all data requests will go through an information access layer that enforces security policy. This design choice isn't a business requirement, but it is a crucial design concept that will fundamentally affect how the application is built.

So, picking out a handful of core concepts helps visualize what is most important, and helps de-clutter an unmanageable mass of information. You can then build the rest of your design around these concepts.

6 comments:

Nick Wilford said...

Great tips. I can't help relating everything to writing. Ie get the plot and character development down then worry about fiddly editing. Thanks!

Anonymous said...

Sounds like concepts you can use to apply to a good many things...not just writing programmes.

Teresa Cypher said...

You have a gift for writing in layman's terms. :-) I'm so tech challenged, but I understood what you wrote. :-)

Crystal Collier said...

I'm reminded of Rise of the Guardians. So, what's your center? My answer would be "cheese". Hm. How would you structure everything around that?

Jagoda said...

It strikes me that core concepts are important to so many fields, not only software development. Any creative or business endeavor really. Like, "What is the core concept of my next novel?" Similar to, but not the same as "high concept."
Interesting theme.
Fellow A-to-Zer, Jagoda at http://www.conflicttango.com

Botanist said...

Nick, Delores, it's strange how people keep relating these posts to other things (mostly writing). It's true, though I think some later posts might become a bit of a stretch.

Teresa, that's music to my ears. I like trying to explain things in non-tech speak.

Crystal, that is so spooky, we watched that movie as a family on Monday. Hmmm...you don't need to structure anything around cheese, leave it out long enough and things will start to structure themselves :)

Jagoda, I guess the closest in writing terms would be coming up with the synopsis. That has to distil out the core concepts of the novel. The difference is, most writers do that after they've written it.

Related Posts Plugin for WordPress, Blogger...