Java Fundamental : Project
Description of the fundamental period project
Description of the fundamental period project
The first step in the IAM application : the IAM Core
The goal of this project is to make you discover how to program in Java.
This project has a good covering in the nowadays Java language usage, you will learn basic things, like creating and using the Java Developer Kit APIs, but also to persist data in databases, or executing an application on a Java application Server.
The subject of Identity Management has been chosen because it will put trainees in the Business application world, which is what they will probably do in the next years
This Identity Management software is quite basic. The main goal is to manage users of an Information System. As many basic concepts, it can be much improved, especially when you want to bring security to this management. The application will be able to :
First of all, let's focus on the Identity Management. This feature should include
As an example of an identity definition, you can look at the schema hereafter:
You can find a global activity diagram below:
You should differentiate Identities (what is managed) and Users (who does manage). Users can access to the application thanks to a login and a password. As users are also identities, try to optimize your code to avoid code replication
This must be done with regards to the regular security constraints concerning this kind of feature
Your application should comport a scenario which authenticates a user, and makes him use the Identity management through predefined methods
Once accomplished, this step should have you made use the very basics of the Java language
Being able to write a documentation at a standard and with a scientific approach is very appreciated in companies
Hereafter should be your table of content
To give you more indications about what you have to do to achieve this practical assignment, here is a summary, including the evaluation percentage of each item
Goal | Technical content | Evaluation |
---|---|---|
First level : defining a Java Object and use it in an application | ||
This is what we should have seen during the first courses: the goal is to initiate you to the Java ecosystem: manipulate basics of the language as much as discovering java tools such as Eclipse | To achieve this point you should have:
|
15 |
Second level : Find a way to persist a POJO | ||
This is the most common problem in computer science, for achieving this part fully, you must be able to store a list of Identity in an XML file or in a Data Base | To achieve this point you should have:
|
40 |
Level three: Be professional | ||
This point will stand for all the Quality and Documentation in the project, all your classes should contain appropriate javadoc and comments (a tool evaluating your code quality will be used) You also must provide a technical description of your architecture, this documentation should be in a standard format : odt, pdf, doc, docbook, dita, epub. This document is called Technical Specification You should provide a user guide on how to use the "public" part of your program. The public part of your program can either be a GUI or a set of APIs depending if you achieved to make a working GUI. This document is called the User guide. This user guide should be readable by someone who doesn't know about your program internal architecture. |
To achieve this point you should have:
|
35 |
Attendance | 10 | |
Total | 100 | |
Bonus points | ||
Make everything configurable: This configuration will avoid hardcoded parameter like connection strings or file path. This is always bad in any application | To achieve this point you should have:
|
10 |
Do a GUI allowing to use your Identity APIs as well as your serializers/deserializers. | To achieve this point you should have:
|
20 |
Our Identities are rather poor. Indeed, to be closer to a real use, we should add a possibility to extend the Identity definition
You should add to the identity fields a data structure allowing to store attributes and their values dynamically
In addition to that, you will construct an address definition according to this spec, and add it to the Identity fields. As an Identity can have several addresses, choose the appropriated data structure to hold these addresses