CiaN:MinDMaP the experience of reading those pages altered my anatomy

5Nov/103

#Winnipeg GPS Bus Shedule Update

I have now completed learning all of the Android functionality that is required to make the GPS Bus Schedule "Go". These include:

  • Interacting with the OS, learning what an Activity, and Service are
  • Interacting with the GPS/Network location provider, learning how to 'smooth' the data feed from it
  • Interacting with the Google API, used to identify Locality, and Long / Lat
  • Interacting with the outside world directly, eg. Winnipeg Transit's API

In order to make this project able to work with many other Transit API's, I'm designing it to be modular, selecting the appropriate module based on the currently detected city. What this means is that I need to build a model that will standardize the flow of information between the presentation layer (UI) and the data access layer (API).

It will work something like this

Currently I'm working on the Model portion, I'm looking at various Transit API's and finding the most common data objects and attributes. Out of those I'm selecting the ones that I believe will be relevant to this project. Once I am complete, I can use this model as a common 'intermediary' to ensure that changes to the transit API's don't require User Interface changes, which should make this project much easier to maintain.

In case you're interested, I'm currently working in Eclipse 3.5, with Visual Paradigm as my modeling tool. The nice thing about this combination is the model-code-model loop is all integrated between the two, meaning changes in either my code or model are synced without data loss. Once I'm further along, I will post more, thanks for listening!

A snapshot of my development environment

Bookmark and Share
14May/080

Service Oriented Analysis and Design

So today I've been reading about Service Oriented Architecture and Design concepts. It seems to be an interesting development in the arena of Systems Analsysis and Design. From what I've read so far, it takes elements from Enterprise Architecture, Business Process Modeling, and Object Oriented Analysis and Design.

The central concept of SOAD is that it further abstracts concepts in those three areas into real life (for example Web) functional concepts. Operations, Services, and Business Processes. Operations are Logical Units of Work. For example a software component that could retreive an attribute, like getFirstName(). A Service, is simply a grouping of these operations, like getUserProfile(). And a Business Process is a grouping of Services, like createNewUser().

Part of the reason this has come around is the age old problem of what do we do with our old systems? Typically when you design a new system, you do a top down approach, map out all the actors and objects, map out sequences of events, and how objects interact. But when you want to integrate it with an existing system, you must also do a bottom up analysis, and meet somewhere in the middle. Service Oriented Analysis optimizes this experience, by allowing one to do a holistic analysis of the Business Services that are provided by a system.

So essentially SO is like OOAD (Object Oriented Analysis and Design) but it blurs the details of the Class and Object relationships so you can focus on higher level, more important concepts like Services.

Then you start getting into how you descibe these Services and interactions. For example a common one on the web is WSDL (Web Service Description Language) based on XML and using SOAP. So to interact with someone's web service, you use a service directory to first search for and find a service that fits your needs. These are often stored in UDDI (Universal Description Discovery and Integration) on some sort of Directory. Once the appropriate service is found, you can use the WSDL to connect to it. The WSDL will describe what sort of methods can be used, what port to connected to, basically all the information an Actor would need to get or put information into a system. It can also describe constraints such as order of operations and such.

With that in mind, you start to see how new web applications and systems can be designed with Services in mind, rather than just simple classes and objects. From what I have so far, this is one more level of abstraction that will allow much more transparencies between different systems, and will help move towards the 'Data Everywhere' model that is demonstrated by web applications such as salesforce.com or facebook.com.

I know I'm not an expert on this, so no flames please. I'm simply exploring some new ideas in an area that I happen to be researching at the moment.

Bookmark and Share