#1: Extended Enums
Description: One serious limitation for using Soplets (especially in combination with frameworks or other forms of abstraction) is the missing extendability of Java enumerations. Frederic Simon from JFrog proposed a simple way of creating abstract enumerations, and thus allowing type polymorphism. However, this would mean a change in the JVM specification - not an easy task even with the open Java specification process. That's why we created a petition at
www.extended-enums.org, which you can help supporting.
Your tasks:
- Update the JVM patch from Frederic Simon (from 2009) and adapt it to the current OpenJava code base (scheduled for Java8)
- Create some use case examples and test cases
- Find other situations where this change could have a positive impact
#2: Maintainability
Description: One of the stated goals of Soplets is improving the maintainability of a software. By consequently applying the SSoT principle, changes can be applied to one single instance, and automatically propagate througout the system. The strong-typed nature of Soplets foster extensive refactorings and agile development process.
Your tasks:
- Analyze the impact of Soplets on maintainability (Cost of change, bugs, life expectancy etc.)
- Make an empirical comparision of regular coded software compared with Soplet-structed software
- Define strategies of improving maintainability by using Soplets with concrete examples
#3: Requirements tracking
Description: Requirements can be represented as Soplets, just as any other logical unit. This allows correlating (sopletized) unit tests with each requirement and viceversa. Additionally, Soplets and other code artifacts can be traced to their originating requirement item.
- Create and document some examples of Soplet based requirements management
- Describe the development process
- Describe the impact on traceability, compliance, test coverage etc.
#4: Global project collaboration
Description: When working in a globally distributed environment, communication and collaboration is a critical factor for the success or failure of the project. Having Soplets as common language describing features, requirements, technical details and so on will help the offshore developer staying in touch with the customer and viceversa.
Another important trait: With Soplets the knowleadge is now not just in the heads of the programmers (which come and go...), or buried in some obscure documentation (which nobody cares to read...) but right in the code, where it can be shared between all stakeholders of the project (e.g. via the Soplet Studio or any other shared repository).
Your task:
- Describe the problems and challenges facing the current offshore development process
- Describe ways Soplets could improve the communication between developer and customer
- If possible, evaluate the process/collaboration improvement with the help of a real-world showcase
#5: Industry project analysis
Description: A print article ("Das Java-Gebot") at the JavaMagazin 07/2011 edition describes an industry project, where existing code has been succesfully refactored to Soplets based units.
Your task:
- Describe the situation before and after the refactoring
- Describe the impact of this change for the long-term sustainability of the project
- Make a cost/benefit analysis of this refactoring
#6: Reusing logical components
Description: With Soplets you can bundle knowleadge in convenient units, and package it in form of a .jar file, and/or as a shared repository/database. That way the knowleadge can be shared between different groups inside an enterprise, and/or in an Open Source community.
Here some examples of shareable knowleadge: List of countries of the world, a data dictionary for an enterprise database, (enterprise-related) terms and their translations, data input validation rules, etc. etc.
Your task:
- Propose use cases, scenarios and examples where knowleadge could be shared
- If possible, find one or more industry partners or open source projects for applying this pattern
#7: Comparision with MDA
Description: Soplets is a disruptive technology which will have a deep impact on the global MDA/MDSD market as we know it. It would be interesting to investigate where this market will be in 5 or 10 years, and what role Soplets will have in this scenario.
Your task:
- Describe the current MDA/MDSD approaches and current developments
- Describe the acceptance in the market (see also http://www.mdsd-umfrage.de/)
- Describe issues and hurdles programmers and developers
- Make a side-by-side comparision between MDA/MDSD and a Soplet based approach (e.g. in combination with the Soplet Studio)