The design and execution of the application is shown in Appendix A. This simplified category diagram shows the categories, their most of import methods ( common methods such as new or initialise for making a new object case of a category are non shown ) and connexions demoing interactions between categories. Whether a category is a singleton ( there is merely of all time a individual object case of this category ) is besides shown. Currently developed categories have a white background and hereafter planned categories for development are shaded.
The application begins by making a generator category that starts the application by making the chief User object. This design pick was made to divide the low-level formatting of the User object from the category definition of user leting the category definition to be more easy understood and different sets of informations to be used in its low-level formatting without puting all of this information in the User object. This agreement does potentially do a job as the planned user interface will hold to interact with the Generator category in order to salvage and redact the user scenes and go out the application but I think it is deserving altering my original program for the user interface to merely interact with the chief user object.
The User object stands at the top of pyramid of objects doing method calls down to the AddressBook and Contact categories to execute the actions of adding and taking contacts and contact references every bit good as directing messages and set uping the contacts inside the AddressBook. The original program was to let the user to group contacts harmonizing to subjects and so let the user to direct messages to these groups. As I developed the application I was inspired by developments in file adventurers, electronic mail and note pickings services to alternatively implement the same demand in a more flexible mode with a tagging system. Presently each contact contains an array of tickets denoting rank of groups ( leting multiple ranks by a individual contact ) every bit good as extra information such as which communicating service to utilize ( chirrup or electronic mail ) . I plan to spread out the usage of tickets to hive away any hereafter data the applications may necessitate to delegate to contacts. However, this storage of sometimes conflicting metadata may necessitate a checking as the tickets non denoting groups are altered necessitating checking of the ticket before alterations are made to guarantee they are right. For illustration, a user may wish to make a group i??twitteri?? that besides contains contacts they wish to direct electronic mails excessively which could do jobs if the send to chitter ticket is the same as the group ticket.
1.2 Extra Resources
Since subjecting TMA02 I have made usage of the Open University Course Library at Foxcombe Hall in Oxfordshire. There I was able to analyze the class stuffs for M256 Software Development with Java. In Unit 11 of M256 ISO 9241 specifies i??The extent to which a merchandise can be used by specified users to accomplish specified ends [ undertakings ] with effectivity, efficiency and satisfaction in a specified context of use.i?? Although this ISO definition was written for usage in the design of applications for office terminuss it applies more by and large and I have taken this as a footing from which to be after usability proving and as a theoretical account to re-examine and re-factor the design of the application overall. Unit of measurements 11, 12 and 13 of M256 each covers a peculiar facet of user interface design and are utile for my development of my user interface program.
Overall my program has progressed satisfactorily. Learning how to implement user interfaces in wxRuby and analyzing the rules behind a simple and effectual has taken longer than I anticipated but I have made good advancement on other parts of the undertaking in stead of this.
In spread outing upon the most basic characteristics of the application I have encountered some jobs. For illustration I have started to research the possibility of utilizing CSV reference book informations generated by a scope of mail web sites and applications such as Google Mail and Microsoft Outlook. I believe that the application would be more utile if it could automatically accept and parse these CSV files and utilize the informations to build contact inside informations. However the built in libraries for covering with CSV files in Ruby have really rigorous parsing algorithms and necessitate CSV files to be more ‘well-formed ‘ or strict than the trial informations generated from Google Mail and Microsoft Outlook. I believe my undertaking program can let for me to compose my ain simple parser to pull out the necessary information as merely the name and electronic mail reference Fieldss have to be extracted in a dependable mode for the intents of this undertaking.
As this undertaking involves interaction with the Twitter communicating service provided by a 3rd party I have monitored the hereafter developments made public by Twitter and have learned that they will be traveling from simple RESTful mandate to the more unafraid OAuth unfastened protocol criterion for mandate over the summer of 2010. OAuth removes the demand for a user to give their service log in inside informations to a 3rd party and alternatively motivate the user to empower the service to give a item to the 3rd party application leting the application to reach the service in a controlled mode. The chief advantage of this procedure is that a 3rd party application does non necessitate to hive away log in inside informations. Fortunately the application was designed and implemented in a modular manner with interaction between the application at the Twitter service separated from the chief application engine and user interfaces. This modular design will let me to alter the Twitter Contact category and Twitter Settings category with no other alterations to the application and do the application meet the undertaking demands after the alteration of service.
3 Planning and readying
My original rubric for this undertaking was i??A system to let the broadcast medium of messages to a group of contacts through several different communications servicesi?? . As in my old TMA I believe this rubric describes the undertaking good and I see no ground to change it.
3.1 Testing and bettering the current informations theoretical account
Presently informations collected by the application such as contact inside informations, saved messages and user scenes is stored in level files in the YAML ( in the Unix tradition YAML is a recursive acronym for i??YAML Ai n’t Markup Language ) format which can be easy translated by the Ruby standard library into informations objects at runtime ( this is non precisely a level file database because the files themselves besides contain informations definitions similar to XML that allows the translator to make informations objects from them ) . This information is loaded into the application ‘s memory in the signifier of informations objects when the application starts so that it can be instantly used to make full the user interface. This attack was taken as a working system could be rapidly created and the usage of human-readable text files made it easy to look into that the information was being stored right.
There are possible jobs with this system for informations storage. As the figure of contacts and stored messages increases the sum of memory necessary to hive away them will besides increase. To prove how the application performs under these conditions a trial unit ( a trial plan that will interact with the application automatically and bring forth public presentation informations ) will necessitate to be written that automatically bring forth a series of trial informations objects and lade them into level files. Another trial unit would so lade this information into memory mensurating the clip this lading procedure takes and how much memory is used. Useful prosodies generated by this procedure would include clip taken to lade a individual information object on norm and clip taken to lade all the information objects. To be utile these prosodies would hold to generated for different sizes of level files. The sizes of these level files would be determined by a study of possible usage instances, analyzing how many contacts and messages are typical for these usage instances. It is likely that beyond a certain size of level file the clip taken to finish informations lading and the memory necessary to hive away that information during runtime would do the application unserviceable.
A likely solution to the job of extra memory usage would be to merely lade the necessary identifying or index informations that the application needs to supply the user with information through the user interface. Complete objects would be loaded when an operation on that information is necessary and the files updated when the object is destroyed. If the trials reveal unacceptable memory use I would implement this solution and trial to see if it is successful. This solution may turn out to work out possible memory jobs but present troubles in recovering the informations objects from the files in a timely mode. This is likely as a parser would hold to seek the files in a consecutive manner. This job may be solved in a figure of ways from bring forthing an index of objects to change overing the whole informations storage system to an application based database such as SQLite, a self-contained and server-less database engine that takes attention of the informations storage methods itself and allows interaction with the database utilizing SQL bids. My research has briefly covered these options to let me to be after in front in the undertaking development and guarantee that the development will non be faced with major jobs at any reappraisal and proving phase of the V-Model of development program I am utilizing in this undertaking.