Ohjelmistoarkkitehtuurien harjoitustyö : Project titles
Topic 2010/1: <Some> web application framework
The topic of the project is the architecture of <some> web application framework. In the project you should describe the architectural style that the framework is build on, document the basic structure and the functional principles of the framework, describe the variation points and the specialization principles and analyze the pros and cons of applications build using the framework.
The result of the project is a document that has three parts. The first part describes the architectural style(s) that form the basis of the framework and the roles these styles assign to the application’s components.
The second part gives an architectural overview of the framework and defines its principal variation points. You may use some example application found from the internet as an example when describing how to specialize the framework. UML class diagrams and sequence diagrams could be used in describing the structure and the behaviour. Use stereotypes or some other mean (for example colours) to indicate which elements belong to the framework and which are application specific. Configuration files are essential in some frameworks and should be noted in the description. Application frameworks are typically based on some architectural style and rely on many design patterns. The important design patterns should be identified.
The framework should be described on architectural level without too many details. You should describe only classes that that are of main interest for the application developer. In describing the example application you may pick only one or two representatives of each class category. In describing the behavior one or two typical scenarios may be enough to show the principles. Typically in web applications the essential functionality is associated to access control, reaction to the user input, managing the control flow, controlling the state of the application, managing the data and the user interface.
In the third part of the document you should evaluate the framework and applications made using the framework. In the evaluation you may general present pros and cons of the framework (for example the ones found in literature). Include a brief analysis of complexity. In addition the overall evaluation you should generate a small set of scenarios to evaluate some quality attribute in more detail. Some of the scenarios should be typical some boundary ones. The quality attributes to be tested could be for example accessibility and reliability or modifiability and reusability. The realization and possible problems in implementation of the scenario should be describes in brief textual description You should also attach each scenario a coarse estimate of its difficulty (amount of risks of how much work is needed, see. ATAM) .
<some> may be one of
- Struts 2 (http://struts.apache.org/2.x/) [Java]
- Tapestry (http://en.wikipedia.org/wiki/Tapestry_(programming) [Java]
- Zend framework (http://framework.zend.com/) [PHP]
- some other (should be agreed on).
Topic 2010/2: A framework for crossword and grid based games
Your task is to design an application framework to assist building for crossword and other grid based games in Java environment. You should also analyze the reusability of your framework.
The purpose of the framework is to assist the implementation of of games that rely on filling grids with letters or numbers. Sudoku games are an example of this type of games (http://www.websudoku.com). Crossword puzzles are another example (http://www.crossword-puzzles.co.uk). A common factor for these games is the board consisting of rows and columns. Each cell in the grid may contain a hint (numbers, letters, text or images) or it may initially empty and accept user input. The player fills the empty cells one at a time and the game software checks that the rules of the game are obeyed. When all the empty cells are filled according to the rules the game or task is solved. The player will receive points that are counted for example based on the time used for finding the solution, or the number inputs corrected. The games will be implemented as Java applications in J2SE environment.
Requirement for the framework:
- The framework must specify an extendible (game specific extensions) XML storage format for storing the initial setting and the correct solution for the game. The framework should provide services to load and store the these files (application specific support code may be used).
- The framework must be able to show the state of the game as a user interface grid, where each cell contains either a single letter, number, string or image. The game may set up restrictions to the maximum size of strings and images. The number of rows and columns remain static during the game. The framework should, however, support changing the size of the font and the size of the cells during the game. All the cells in the grid will be of equal size.
- The framework should make it possible for the user to easily select the cell for entering the keyboard input. The framework must be able to distinguish cells with hints from cells that accept input. The user should be allowed to make corrections. Application specific checks and error messages should be supported in input validation.
- The player should be able to ask the framework to expose correct values for input cells one at a time. The cell to be exposed could be user selected or system selected random cell.
- The framework should measure the time used in gaming and the number of corrections made during the game.
- The framework should provide unrestricted undo for input.
- The framework should be able to validate the input against the correct cell value and the rules of the game either when the input is entered or one when all the cells have been filled. It should be possible to attach game specific point counting and result reporting to the validation..
The first part of the project is to design the Java API for the framework (classes, interfaces, method and attributes). The API should be represented as a class diagram accompanied with explanations. The behaviour of the program should also be outlined. The main variation points of the framework and the way to specialize the framework should be documented. (especially how to handle game specific treatment of the initial state and and the correct solution, how to handle game specific input validation and point counting, etc.). How to implement a simple Sudoku game should be outlined as an example of the use of the framework. The behavior could be described using some main use case scenarios, for example, (a) user enter an invalid input into a cell, and (b) player fills the last empty cell and the game application validates the solution and counts the points.
The second part of the project is the analysis of the framework architecture. This analysis may concentrate on the modifiability and reuse. For example the following scenarios could be analyzed
1. The framework is used in implementing a simple crossword puzzle
2. The framework is used in implementing a sudoku game with instance specific user interface and graphical outlook..
3. The framework is used in implementing a sudoku game with gaming situation specific sound effects (for example correct input, faulty input sounds)
4. The framework is used in implementing a sudoku game with the possibility to store the state of the game and to continue game later on from the stored state.
5. The framework should be used to assist the generation of initial game states and game problems (for examle Sudoku initial states).
Analyze each scenario with a few sentences and attach each of them a coarse estimate of its difficulty (amount of risks of how much work is needed, see. ATAM)
Topic 2010/3: JHotDraw framerwork for graphics editor
The topic of the project is the analysis of the JHotDraw framework for graphics editor. The project work includes finding out and describing the architectural style of the framework, documentation of the basic structure and behaviour of the framework , finding out the variation points and the way to specialize the framework and analyzing the pros and cons of the framework and applications build using the framework.
The result of the project is a document that has three parts. The first part describes the architectural style(s) that form the basis of the framework and the roles these styles assign to the application’s components.
The second part gives an architectural overview of the framework and defines its principal variation points. You may use some example application found from the internet as an example when describing how to specialize the framework. UML class diagrams and sequence diagrams could be used in describing the structure and the behaviour. Use stereotypes or some other mean (for example colours) to indicate which elements belong to the framework and which are application specific. Application frameworks are typically based on some architectural style and rely on many design patterns. The important design patterns should be identified.
The framework should be described on architectural level without too many details. You should describe only classes that that are of main interest for the application developer. In describing the example application you may pick only one or two representatives of each class category. In describing the behavior one or two typical scenarios may be enough to show the principles.
In the third part of the document you should evaluate the framework and applications made using the framework. In the evaluation you may general present pros and cons of the framework (for example the ones found in literature). Include a brief analysis of complexity. In addition the overall evaluation you should generate a small set of scenarios to evaluate some quality attribute in more detail. Some of the scenarios should be typical some boundary ones. The quality attributes to be tested could be for example accessibility and reliability or modifiability and reusability. The realization and possible problems in implementation of the scenario should be describes in brief textual description. You should also attach each scenario a coarse estimate of its difficulty (amount of risks of how much work is needed, see. ATAM) .
References:
JHotDraw pages: http://linux.softpedia.com/get/Multimedia/Graphics/JHotDraw-36256.shtml