[pyswarm-devs] Python UML library and more about pyswarm redesign
Status: Alpha
Brought to you by:
ahatzis
|
From: Anastasios H. <ah...@ha...> - 2008-09-05 11:18:59
|
Hi, there is progress with redesigning pyswarm technology, though I'm slower than I expected. Following a brief update on the recent work I have done and the future steps to be taken. The biggest job was to re-invent pyswarmSDK as the pyswarmADK (AKD = Architecture Development Kit). It seems to me that pyswarmADK will strongly improve future development of pyswarm software. After finishing the redesign, there will be three separate programs with specific tasks: - pyswarmSDK will be the tool with which an user can create pyswarm-based applications that are generated from UML models. - pyswarmU2L will be a library for working with UML models and can be used by pyswarmSDK and other tools as well. - pyswarmADK will be the tool that can generate pyswarmU2L and future versions of pyswarmSDK. The separation reduces the complexity we face in this project, so any contributor could focus on special topics. pyswarmU2L is the foundation for pyswarmSDK and it covers UML2, which already is a well specified standard. So this lib would already offer a good chance for any expert to join the work. Please let me know if you are interested to bring in your expertise into pyswarmU2L. Especially helpful would be skills regarding Python, UML, XMI, or XML in general. 1. pyswarmADK: This tool has its origins in pyswarmSDK v. 0.7.1. I have modified the code, so pyswarmADK will be able to generate pyswarmSDK and pyswarmU2L. Actually, pyswarmADK is only useful for developers of pyswarmSDK and pyswarmU2L. Status: a) Not specified in a model itself, but uses pyswarmADK/resources/pyswarm.xml as input for generating pyswarmSDK and pyswarmU2L. b) Replaced old SDK's parser package with a light-weight UML2 library that can parse pyswarm.xml in the format as produced by MagicDraw UML 11.0. c) Since this mini-UML2 lib is sufficient to create pyswarmU2L (which supports larger parts of UML2), theoretically it would be possible later to replace this lib by an early prototype of pyswarmU2L. d) The transformation is incomplete, so the model pyswarm.xml is consumed but not transformed into code yet. e) License will be same as pyswarmSDK, exception: any code template used for generating pyswarmU2L will have that license. 2. pyswarmSDK: Purpose as in v. 0.7.1 and earlier: reads user domain models (PIM), and after transforming them to PSMs, generates the source-code and documentation of the domain application. The new pyswarmSDK will use the pyswarmU2L library for all UML-/XMI-related jobs. Status: a) Advanced progress in modeling the pyswarmSDK::pim package; some progress in pyswarmSDK::psm and pyswarmSDK::tdm packages. pim, psm and tdm will play the biggest role when pyswarmADK is generating the SDK. The other packages are more for documentation purpose currently, less for generating the SDK code. b) No code-templates yet c) No running code yet d) GPL v3 or AGPL v3 are my favorite candidates for licensing this tool (have been GPLv2 at pyswarmSDK 0.7.1) 3. pyswarmU2L: A Python UML library based on UML Superstructure specification v. 2.1.2. It can be used by tools (pyswarmSDK or any UML tool) to import an XMI file as UML model, work on an UML model (e.g. adding classes, associations, removing attributes, changing operation signatures), and export an UML model to XMI. Different XMI formats should be supported, so a tool that will use pyswarmU2L could convert UML models from one XMI format to another XMI format. The UML meta-model (that is specified in the UML Superstructure Spec) is covered by the pyswarmU2L::meta package. The meta package is the foundation package and will play the biggest role when pyswarmADK is generating the pyswarmU2L library code. The package pyswarmU2L::xmi will contain specification for mapping the different XMI formats to the underlying UML model specified in pyswarmU2L::meta. In the best case, any supported XMI format could be used to import an UML model and export it to any supported XMI format. Status: a) Model covers entire UML::Classes package, all other packages of UML are missing yet in pyswarmU2L::meta, however they will all look the same way as UML::Classes. I expect that most work will be the pyswarmU2L::xmi package with all its XMI compatibility issues in the tiny details. b) No code-templates yet c) No running code d) LGPL v3 is my current favorite candidate for licensing this lib BTW, you can find the relevant code in the repository at http://pyswarm.svn.sourceforge.net/viewvc/pyswarm/branches/dev/features/1980652_ADK-based-SDK/src/adk/ Please note that documentation is not udpated. Most important is the pyswarmADK/resources/pyswarm.xml which you should be able to open at least with MagicDraw 11.0 or any newer version. I will try to upload an HTML report of the model to the webspace. Any questions or comments, please drop me a note. :) Anastasios |