Jowles Object Model
From HBMobile
Jump to navigationJump to search
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 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."
Classes & Objects
- 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. RFC 2806 and RFC 3966 define URIs for phone, fax and modem numbers while RFC 3261 defines SIP URIs.)
- 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.