Technician Table Editor Academic advisor : Professor Ehud Gudes Technical advisor : Menny Even Danan Team: Olga Peled Doron Avinoam Ira Zaitsev ADD Presentation
Table of Contents Introduction System Requirements System Architecture Main Classes User Interface Algorithms Open Questions Task List
Previously… Latitude 5.X is a platform which enable its users to manage cameras, sensors, microphones, relay motors etc’. Industry presents today a large variety of IP cameras and IP video encoders and each device has different capabilities and properties. DVTel stores all the cameras capabilities that can be managed through Latitude in XML files (so called “Technician tables” ).
The Problem Domain Searching, editing or changing every XML file is carried out by hand and this process produces many bugs and requires a lot of maintenance. Every manufacturer has its own XML file with information about the different models (kinds of cameras) that it produces. Today the information of all the devices, mostly cameras, is encapsulated in XML files what is referred to as “Technician tables”. Different models have many features in common and as a consequence the information is encapsulated in inheritance hierarchy in the XML files.
Solution Smart, semi-automatic editor to replace today’s method. Graphical User Interface which enables the user to view, edit and create new supported properties. Technical Tables validation module, that will recognize existing errors and will prevent from storing illegal data. Query engine that, in addition to handling queries, will enable comparison between models. Automatic table creator which enables the automatic creation of new tables by retrieving initial properties from the connected cameras.
Table of Contents Introduction System Requirements System Architecture Main Classes User Interface Algorithms Open Questions Task List
Graphical User Interface which enables the user to view, edit and create the metadata of each device in a user-friendly environment. Query engine which enables retrieving Information about cameras and comparing between different models. Automatic table creator which enables connecting to a unit, querying the unit for its capabilities and automatically creates and updates technician tables. Development of components only for the following vendors: Verint and Axis. The application should be prepared for future extensions. System Requirements
Table of Contents Introduction System Requirements System Architecture Main Classes User Interface Open Questions Task List
Layers design pattern high cohesion connections inside packages low coupling connections between packages In order to be as abstractive as we can be, we will use the Layers design pattern that separates objects according to their role and restrict as much as possible the way that one object can reference to other in terms of high cohesion (connections inside packages) and low coupling (connections between packages). High Level Overview of the Architecture of the system
Presentation Layer: Presentation Layer: Graphical User Interfaces classes providing people access to the system. Business Layer: Business Layer: Controller (Processes) classes implementing business logic which involves collaborating with several domain classes and other controller classes. Domain Layer: Domain Layer: Software classes representing concepts pertinent to the business domain. Persistence Layer: Persistence Layer: Classes encapsulating the capability to store, retrieve, and delete objects permanently without revealing details of the underlying storage technology. Layers design pattern
Packages Level Overview of the Architecture of the system
Introduction System Requirements System Architecture Main Classes User Interface Algorithms Open Questions Task List Table of Contents
Main Classes – Domain.Core
Main Classes – Domain.Latitude
Main Classes – Domain.Factory
Main Classes – Domain.Querying
Main Classes - Business Updates Domain when the Table has changed Updates Gui when Domain changes
Main Classes - Persistance
Main Classes - Presentation
Introduction System Requirements System Architecture Main Classes User Interface Algorithms Open Questions Task List Table of Contents
Profile Editing View
Model Editing View
New Model Addition View
Simple Query View
Technician Tables Comparison View
Introduction System Requirements System Architecture Main Classes User Interface Algorithms Open Questions Task List Table of Contents
Design Patterns
Solution: Strategy = IQuery, Context = AbstractExtendedType AlgorithmInterface () = IsTrue(AbstractExtendedType) Each query object implements the IQuery interface. IsTrue receives AbstractExtendedType as a parameter and uses it as query’s context. Examples: IsModelQuery, IsProfileQuery, CompositeQuery. Strategy Problem: Adjust Query module to constantly changing requirements.
Problem: Gui is very hard to test. Solution : Make the Gui as simple as possible (supports TDD). The Gui only knows to display what it gets. The UserInterfaceController reacts to domain events, and also handles the population of data in the Graphical User Interface widget itself. The Graphical User Interface form a passive view manipulated by the presenter (UserInterfaceController). It has no visibility to the Domain objects. The presenter is implemented using the Observer pattern – subscribing for events on TechnicianTableEditor. Humble Dialog box
Problem: What if XML files will be replaced with DB ? Abstract Factory Solution: Creation of objects of different families. Current implementation: XML family, which includes: TechnicianTableXMLValidator, TechnicianTableXMLReader, TechnicianTableXMLWriter.
Introduction System Requirements System Architecture Main Classes User Interface Algorithms Open Questions Open Questions Task List Table of Contents
Open Questions 1. More requirements changes ? 2. Technical issues about connecting physically to the cameras?
Introduction System Requirements System Architecture Main Classes User Interface Open Questions Task List Task List Table of Contents
Tasks List