TOC PREV NEXT INDEX

Put your logo here!


2 Architectural decisions
This chapter describes and motivates the decisions that have been made concerning the architecture of the product.
First a description of the desired properties of the product will be presented. These desired properties have influenced the choices made during the architectural work.
Next the philosophy of the design group is presented. This part will facilitate future extensions of the product by catching "the spirit" in which the original design group has worked.
Then follows a description of how the different parts of the product have been divided into modules and how testability will be achieved.
After that the methodology that will be used in the detailed design is presented.
In section 2.8, the choice of development environment is presented and motivated.
Finally, the project states of the administration program are explained.
2.1 Desired properties
2.1.1 Usability
The product consists of two programs: one administrator program and one client program, also see the requirement specification[Larsson, 2003]. In the case of the administrator program the user is expected to be an expert user with good knowledge in designing audio tests and using tools for doing that. In contrast, the user of the client program will typically have average or below average skills in interacting with a computer. Therefore, when it comes to the GUI design, the focus will be slightly different in the two programs.
The administrator program has to be fast and efficient to work with, whereas the client must be very intuitive and additionally offer help to the user where needed.
2.1.2 Extensibility
The customer has wishes for the system which cannot be accomplished within this projects' time and resource constrains. Also some wishes are out of the scope of the product. Therefore the architecture must allow the product to be extended and, in cases where extension is inappropriate, to export data to external applications which can satisfy those wishes.
2.1.3 Modular structure
To be able to perform the detailed design and implementation in a time frame as short as possible, different tasks must be performed in parallel. This is why modular structure will be strived for in the architecture. By identifying independent modules in the architecture of the product, tasks in design and implementation phases can be performed concurrently by project members.
2.2 Philosophy
This section will describe the philosophy of the design group. The philosophy is the most general idea of how software should be created and the design group regards it as a set of fundamental guidelines which lie on a even more general level than design patterns, and influence the choice of the latter. These guidelines will hopefully propagate as a red line throughout the architecture, detailed design and finally implementation of the product. The philosophy is provided as a help in catching the original design group's ideas and "thinking right" when the product will be extended in the future.
In short - this is the "spirit" that the design group has worked in.
For each guideline there is an example of how it has been applied in the creation of Audio Jury.
2.2.1 Make it simple
Solutions should be simple and robust. Also, each component in the product should have a limited and well-defined purpose. A part which has too many functions should be broken down in smaller parts.
Application: The user interface and core parts of the programs of Audio Jury have been separated. Classes will be very small in the detailed design.
2.2.2 Make it right
Even though each part may be simple, it shall carry out it's task well. Also there should be no doubt that its functionality can easily be tested and verified.
Application: Modules will be broken down further in the detailed design.
2.2.3 Make it clean
The focus should be on uniqueness, meaning that the product should contain only functionality that is unique and central for fulfilling its purpose. Additional features should be performed by external programs.
Application: The core purpose of Audio Jury is to create and perform audio tests. Features such as statistical analysis of test results should be performed by exporting results to a format readable by programs that perform such analysis.
2.2.4 Make it usable
Software that is aimed towards end-users should also be designed with their expected level of knowledge and skill in mind. Prototyping and evaluation of user interfaces is a must.
Application: The user interface of the two different programs of have been designed and evaluated separately. See section 2.1.1.
2.3 Modularization
The reasons for modularizing the product are to:
· simplify the detailed design by making major decisions early
· simplify testing
· prepare for future extensions of the product
· enable independent design and implementation tasks to be performed concurrently
2.4 Testability
To simplify the work of testing, the modules identified and described in chapter 4 will be split down into well delimited classes as described in the design specification [Johansson, 2003]. Each class will be minimally dependent on other modules. This will enable each class to be tested separately.
2.5 Identifying modules
One step towards detailed design on a class level, is having a clear general view. To obtain this view the product has been split in main modules.
2.5.1 Choice and motivation
"The use case view doesn't really specify the organization of a software system. Rather, it exists to specify the forces that shape the system's architecture." [Booch et al., 1999]
We have used a use case driven method for identifying modules.
This was a natural choice since the use cases and requirements were very well specified by the customer, see requirement specification [Larsson, 2003]. Also a user interface study had been done which further facilitated the identification process. Use cases greatly helped us in understanding the system. In our case the process of going from use cases to modules was painless and natural.
2.5.2 Process
The architecture design process started with grouping use cases that specified functional requirements of the system into functional groups.
A group may represent a subsystem with a particular set of responsibilities for the users, in our case for the administrator and the test participant.
The system, before the architecture design, could be viewed as a black box. It has a particular shape seen from outside but nothing is known about its internal composition. The internal components and their relations had somehow to be deduced. Use cases were the perfect starting point of looking into the black box, as most of them were known from the requirements.
1. First the use cases were grouped according to their functions. This revealed major high-level subsystems.
2. Each subsystem was broken down into a set of modules.
3. The relations between the modules were fixed. This gave new insight and sometimes the need to go back to step 2 again and reconsider.
2.6 Layered approach
In order to increase reusability and independence further the identified modules have been placed in different layers. The idea is that a layer should only rely upon the layer below.
Figure 2:  Layers
2.6.1 GUI layer
This is where the user interface is located. This layer contains no functionality of its own. It is event driven and responds to user input. The input is translated into calls to the action layer.
2.6.2 Action layer
This is the core of the two programs. All the functionality, logic, algorithms, i e "smart behavior" is located here.
2.6.3 Proxy layer
This layer works as a proxy between the action layer and the API layer. The layer is very thin and has no functionality of it's own. It's only purpose is to translate storage requests and playback requests from the action level into calls to the API layer.
If, in the future, other storage or playback solutions are preferred, this is the only layer that would have to be rewritten. Thus keeping the rest of the code intact.
2.6.4 API layer
This layer is simply the Java API.
2.7 Choice of design method
Object Oriented Design will be used as design method. The motivation of this choice follows.
2.7.1 Object Oriented Design
The product has properties which makes Object Oriented Design (OOD) a suitable choice. It has abstract concepts such as "project", "test" and "judgement" which are well delimited. There are dependencies among the concepts and for each concept there is a number of operations that can be performed upon it.
2.7.2 Notation standard
UML was chosen as notation standard due to the object oriented properties discussed in section 2.7.1
2.8 Choice of development environment
2.8.1 Modeling tool
Rational Rose will be used for modeling classes in the detailed design.
With Rational Rose it is easy to model classes using UML. The models can then be used to generate Java code skeletons. These code skeletons will make up the starting point in the implementation.
2.8.2 Platform
Java2 v1.4 was chosen as platform. The motivation of this choice follows:
Limited time
There is limited time for implementation. By using Java the implementation will not be delayed by debugging dangling pointers and other artifacts that languages as C and C++ suffer from.
Class library
Java has an extensive class library provided as default. This will reduce implementation time since the implementation group will not have to "reinvent the wheel", but rather use existing functionality.
Also further extension of the product is facilitated by the class library.
Group knowledge
The implementation group has better knowledge of and experience with Java than other high-level languages (i e C++ and C#). No or very little time will be spent on education.
User interfaces
The Java platform supports creation of user interfaces. This functionality is widely used and well tested.
2.8.3 Development environment
Sun ONE Studio was chosen as development environment. The motivation of this choice follows.
Project overview
Sun ONE Studio allows easy overview of written classes and their methods and variables.
Code completion
The code editor has code completion, which minimizes time spent on looking up information in the Java API documentation.
Integrated debugger
A very competent debugger is included in Sun ONE Studio. It allows step execution of the code and provides detailed inspection of variables.
Creation of user interfaces
Sun ONE Studio provides functionality for creating good looking user interfaces with little effort.
License and budget
The license of Sun ONE Studio permits the type of usage and development model that the product is subject to. Other development environment software such as Borland JBuilder either have a more restrictive license or have high licensing costs.
2.9 Project states
During the process of creating a graphical user interface the design group came to deeper insight of possible architectural solutions.
The need for separating projects based on some kind of state was identified. This is also reflected in the user interface. See section 2.1.1 and Appendix B. The possible states of a project are:
· Dynamic state
· Active state
· Closed state
For a description of the semantics of the states see the design specification [Johansson, 2003].


Quadralay Corporation
http://www.webworks.com
Voice: (512) 719-3399
Fax: (512) 719-3606
sales@webworks.com
PREV NEXT INDEX