Difference between revisions of "Jowles Object Model"

From HBMobile
Jump to navigationJump to search
Line 6: Line 6:
 
=Jowles, What Does It Do?=
 
=Jowles, What Does It Do?=
  
"Jowles is intended to control GSM and SIP/RTP based communication stacks, providing UI components with a "model object" upon which to build complete mobile communications applications."
+
''Jowles is a web application that controls a mobile phone. Consisting of a Javascript enabled web client, a GSM module control daemon and a PHP-based testing and mocking Interface; each component is capable of being independently upgraded. The goal of the system is to provide a toolkit for experimentation.''
  
=Classes & Objects=
+
=Instances, Interfaces and Classes=
  
; Communication Module Interface : The communication module interface is a high level abstraction that defines behaviors for hardware and software that establishes voice communications links. The GSM Communication Module Interface encapsulates behavior specific to GSM radio modules while the SIP Communication Module Interface encapsulates behavior specific to a SIP/RTP stack. The CMI (Communication Module Interface) itself is not abstract, a single instance of an object implementing it is available that manages different subclass instances, and knows how to select which subclass is appropriate for a particular destination URI. (phone numbers, SIP addresses, etc. are stored internally as URIs. [http://tools.ietf.org/html/rfc2806 RFC 2806] and [http://tools.ietf.org/html/rfc3966 RFC 3966] define URIs for phone, fax and modem numbers while [http://tools.ietf.org/html/rfc3261 RFC 3261] defines SIP URIs.)
+
: Application : The '''Application''' represents the top level... uh... application that the UI interacts with. It understands concepts like communication modules, data networking interfaces
 
 
; Call Interface : This interface describes an active or historic communications session. Because Jowles supports multiple simultaneous calls (like you might want to conference a SIP call with a GSM call), you may have multiple active calls. Instances that support the call interface may also represent past calls (like calls in the "recently dialed" list). The Call Interface includes accessors to retrieve call metadata like times and durations of calls, participants, whether it was a SIP or a GSM call, etc.
 

Revision as of 00:25, 24 April 2007

Introduction

Why would we care about an Object Model?
Most of the work in any software development project is in trying to figure out the true requirements. Slinging code is (or can be) easy, interviewing end users to figure out what they want in a mobile phone and then deciphering their responses... well, that's a lot harder. What makes it even harder is that if you're doing any large project, you have to get all your developers thinking about the project in the same way. This is why I like Model Driven Architectures (User:Msh). MDA as it is described in the literature may be overkill for the Jowles project, but the theory sounds nice. I'm also a fan of Object-Orientation 'cause in my experience, encapsulation and inheritance are powerful tools for representing application models.
Okay... one more time... in English...
In short, the Jowles Object Model describes the behavior of system components in a language-neutral manner. Used correctly, Objects and Classes can make it easy to add new features to the system. We're all about giving people the ability to extend the stuff we've done here, so OO Models it is.

Jowles, What Does It Do?

Jowles is a web application that controls a mobile phone. Consisting of a Javascript enabled web client, a GSM module control daemon and a PHP-based testing and mocking Interface; each component is capable of being independently upgraded. The goal of the system is to provide a toolkit for experimentation.

Instances, Interfaces and Classes

Application : The Application represents the top level... uh... application that the UI interacts with. It understands concepts like communication modules, data networking interfaces