Note: One remark in the beginning: We update this site and the examples regularly. Especially for students we would suggest to return to this documentation regularly
This site introduces a set of techniques, patterns and paradigms, which are used for
developing our Best Practices Examples.
It also presents the used architecture, external libraries and technologies.
These examples including the documentation is open source and can be used according to the Apache licence. So anyone can use the examples but we ask you to inform us whether you plan to work with our examples.
What are best practices? Developing solid and well-designed Software is a challenge. Systems and environments become more complex every year and technologies change fast. Developers with years of experience have the advantage over younger colleagues of having made many mistakes over the time. Mistakes they used to learn and write better applications next time.
Clearly, we cannot "teach" unexperienced developers experience, but what we can do is provide so called "best practices". Some of the good and bad decisions from concrete projects can be abstracted to scenarios. E.g., how to implement a persistence solution for a business application, how to implement a robust GUI that is also easy to maintain and so on.
This "abstract" experience can be explained on two levels: The first level is called Software Patterns: Software Patterns describe how to solve typical problems that appear in many application scenarios in similar ways. These patterns can be seen as abstracted knowledge, that guides you in better solving your concrete problems.
The second level is: technical-implementation best-practices. Let's introduce the idea with a quotation from a leading Apple developer in the late 80s: "Reusing other people's code would prove that I don't care about my work. I would no more reuse code than Ernest Hemingway would have reused other authors' paragraphs.?"
Hardly two decades later this quotation is a funny curiosity from a long forgotten past ;-) Actually systems nowadays are so complex and demand such a wide spectrum of functionality that such an attempt is literally unthinkable. In developing a modern application the "pure code hacking" is only one small part of the undertaking, the development effort at least needs to deal with:
These are just some of the problems to take into consideration. We can see, that the pure "setup" of a working environment to start from needs a lot of experience and knowledge. Select the proper tools and libraries to start with, getting them running together and so on. Precisely at this point our technical best-practices start:
We prepared a set of examples that can be downloaded and used as start-point for own applications. Currently we provide examples for a "fat client" application, a web-application and a distributed application with web-frontend. The complexity of the applications (the functional requirements) are simple for not confusing the actual goal, that is showing a clean and well-written example for the application scenario. For designing these applications we tried to use established best-practices, patterns and libraries to give a good foundation to start from. We consulted literature, followed best-practice suggestions from various library documentations and discussed details with various experiences developers.
However, if you should find bad-design, missing tests, bugs, typos in the documentation: in short words mistakes of whatever kind, please do not hesitate to contact us!
When developing a Java project where the usage of new technologies (e.g.: Spring, Maven) was specified, the first action item to finish will be getting all the information about this technology in terms of the official project documentation, online tutorials, newsgroups, mailing-lists or expensive trainings.
As getting familiar with technical paradigms normally takes a lot of time and many ressources (e.g. documents, money), Best Practice Documentation can support you in order to decrease your investigation activities, because all of the documented technologies are yet in use and give an abstract of the most important things (overview, examples, tricks) to be aware of.
This 'fingerpost' will help you finding the needed information if you get lost in reading.
In section Development Setup you will find - on the one hand - the information how to set up the best practice examples and make them work, on the other hand a sneak tutorial how to make your own project build environment (catchword: Maven)
Section The sample apps provides information about functional requirements, architecture and technologies used in Basic, Medium or Advanced Sample.
Technology is a listing of all used technologies. There you get a short description about each technology, what our motivation was to implement it, the usage of the technology (examples and tricks) and references to other ressources.
Software Patterns will help you 'speed up' your development process by providing information about 'What does' this pattern, the general structure, examples and references.
Javadoc, Source and Test Source provide the opportunity to browse through the source code, test source or Javadoc
General References shows a selection of ressources (e.g.: Java, Maven).
Finally the ToDo give an overview of actual standings in developing the examples and the documentation.
This example-and-documentation project is an effort from a team around the Quality-Software-Engineering group of the Vienna University of Technology. The project initiator and leader is Alexander Schatten. Please check out our websites and our Blog!
A big thanks to all contributors! Please have a look at the team page!!.