Difference between revisions of "Applied Research Notes (July-August 2011)"
(→Peter Liu's Applied Research Proposal (July - August 2011)) |
|||
(24 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | {{Admon/obsolete}} | ||
+ | |||
== Peter Liu's Applied Research Proposal (July - August 2011)== | == Peter Liu's Applied Research Proposal (July - August 2011)== | ||
− | The goal of my research activity is to create a '''knowledge base''' at CDOT-Seneca such that new research students can go through a '''shorter learning curve''' in working with the huge code base of NexJ Model Server Express. The knowledge base will also benefit the open source community of developers who want to make contributions to the NexJ code base. UML modelling is the foundation of the NexJ approach to model-driven engineering [http://en.wikipedia.org/wiki/Model-driven_engineering] and UML diagrams are concept maps [http://en.wikipedia.org/wiki/Concept_map ]. Thus the focus of my research is to develop a '''conceptual understanding''' of the huge code base of NexJ Model Server Express. It is envisioned that some concept maps will be constructed to '''visualize''' the architectural aspect of the NexJ code base. | + | The goal of my research activity is to create a '''knowledge base''' at CDOT-Seneca such that new research students can go through a '''shorter learning curve''' in working with the huge code base of NexJ Model Server Express. The knowledge base will also benefit the open source community of developers who want to make contributions to the NexJ code base. The knowledge base will be a repository of various '''software artifacts''' that have been produced during the process of working with the code base of NexJ Model Server Express. |
+ | |||
+ | UML modelling is the foundation of the NexJ approach to model-driven engineering [http://en.wikipedia.org/wiki/Model-driven_engineering] and UML diagrams are concept maps [http://en.wikipedia.org/wiki/Concept_map ]. Thus the focus of my research is to develop a '''conceptual understanding''' of the huge code base of NexJ Model Server Express. It is envisioned that some concept maps will be constructed to '''visualize''' the architectural aspect of the NexJ code base. | ||
+ | |||
+ | During the process of creating the knowledge base, I expect to build '''an Eclipse tool''' to mine useful concepts from the NexJ code base. I will begin with the '''Eclipse Diver''' tool as presented by Del Myers at EclipseCon 2011. [http://www.eclipsecon.org/2011/sessions/?page=sessions&id=2099] Later I will try out other open source tools that have been built for reverse engineering and program comprehension. | ||
− | |||
== Documents Provided by NexJ == | == Documents Provided by NexJ == | ||
− | * Introduction To NexJ Studio Express ('''open sourced''', available on Open Health Tools Platform) | + | * Introduction To NexJ Studio Express ('''open sourced''', available on Open Health Tools Platform) [https://projects.openhealthtools.org/sf/projects/oht_aip/] |
* NexJ Studio Fundamentals (confidential and proprietary) | * NexJ Studio Fundamentals (confidential and proprietary) | ||
+ | * NexJ Studio - Integration Fundamentals (confidential and proprietary) | ||
* Working with NexJ Express Source Code ('''open sourced''', available on Open Health Tools Platform) | * Working with NexJ Express Source Code ('''open sourced''', available on Open Health Tools Platform) | ||
− | * NexJ | + | * NexJ Systems Developer's Guide (confidential and proprietary) |
== Mining NexJ Concepts From the NexJ Training Tutorial Documents == | == Mining NexJ Concepts From the NexJ Training Tutorial Documents == | ||
* '''Question:''' Where should one start if one wants to get a '''conceptual understanding''' of the code base of NexJ Model Server Express? | * '''Question:''' Where should one start if one wants to get a '''conceptual understanding''' of the code base of NexJ Model Server Express? | ||
+ | ** training materials on using NexJ Studio Express | ||
+ | ** confirmed by Brian Lim's research experince at CDOT: "the user experience" with NexJ Studio Express | ||
* [[Research Notes - NexJ Training Tutorials | Research Notes]] | * [[Research Notes - NexJ Training Tutorials | Research Notes]] | ||
− | == Mining NexJ Concepts From the Practical | + | == Mining NexJ Concepts From the Practical Experiences of Research Students == |
− | * a process of knowledge transfer | + | * implementation of a process of '''knowledge transfer''' |
− | ** discovery of tacit knowledge in software development [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.9.1147&rep=rep1&type=pdf] | + | ** discovery of '''tacit knowledge''' in software development [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.9.1147&rep=rep1&type=pdf] |
* use of qualitative research technique as adopted in software engineering research [http://www.sbs.co.za/ICSE2010/3-EVENTS/WORKSHOPS/T12.html] [http://www.arnetminer.org/viewpub.do?pid=1072254] | * use of qualitative research technique as adopted in software engineering research [http://www.sbs.co.za/ICSE2010/3-EVENTS/WORKSHOPS/T12.html] [http://www.arnetminer.org/viewpub.do?pid=1072254] | ||
* interview with Brian Lim (JSON Integration Adapter) | * interview with Brian Lim (JSON Integration Adapter) | ||
+ | ** [[Mining NexJ Concepts - Interview Questions for Research Students |intervew questions]] | ||
* interview with Grace Batumbya (JSON RPC Adapter, PostgreSQL Adapter) | * interview with Grace Batumbya (JSON RPC Adapter, PostgreSQL Adapter) | ||
* Reference | * Reference | ||
Line 25: | Line 34: | ||
== Conceptual Comprehension of the Code Base == | == Conceptual Comprehension of the Code Base == | ||
* Goal: Understand the '''architecture design''' of NexJ Framework, especially the Persistence Engine and the Integration Engine. | * Goal: Understand the '''architecture design''' of NexJ Framework, especially the Persistence Engine and the Integration Engine. | ||
− | ** | + | ** identification of class dependencies, manually and automatically (use of open soruce tools) |
+ | ** recovery of design patterns | ||
* Research Question: What '''concepts''' have been implemented in the code base? | * Research Question: What '''concepts''' have been implemented in the code base? | ||
* first attempt: use of the Eclipse '''Diver''' tool | * first attempt: use of the Eclipse '''Diver''' tool | ||
Line 32: | Line 42: | ||
=== The Integration Engine === | === The Integration Engine === | ||
* the NexJ Message concept | * the NexJ Message concept | ||
− | ** [[ NexJ Message Concept - Mapping to the Code Base| | + | ** [[ NexJ Message Concept - Mapping to the Code Base|Research Notes on the code base]] |
+ | * the NexJ Channel concept | ||
+ | * the NexJ Transformation concept | ||
− | == | + | === The Persistence Engine === |
+ | |||
+ | == Resources == | ||
+ | |||
+ | === Agile Software Engineering === | ||
+ | *'''Hazzan and Dubinsky: Agile Software Engineering (Springer 2009)''' [http://www.springer.com/computer/swe/book/978-1-84800-198-5] | ||
+ | ** a multifaceted approach: the human perspective, the organizational perspective, the technological approach (HOT) | ||
=== Open Source Tools for Reverse Engineering === | === Open Source Tools for Reverse Engineering === | ||
* Put It In Reverse: Using Eclipse to Understand Code that has Already Been Written (EclipseCon 2011) [http://www.eclipsecon.org/2011/sessions/?page=sessions&id=2099] | * Put It In Reverse: Using Eclipse to Understand Code that has Already Been Written (EclipseCon 2011) [http://www.eclipsecon.org/2011/sessions/?page=sessions&id=2099] | ||
* Eclipse plugin or a Open source tool to reverse engineer java code for sequence diagram [http://stackoverflow.com/questions/2972706/eclipse-plugin-or-a-open-source-tool-to-reverse-engineer-java-code-for-sequence-d] | * Eclipse plugin or a Open source tool to reverse engineer java code for sequence diagram [http://stackoverflow.com/questions/2972706/eclipse-plugin-or-a-open-source-tool-to-reverse-engineer-java-code-for-sequence-d] | ||
+ | * FEAT: An Eclipse Plug-in for Locating, Describing, and Analyzing Concerns in Source Code [http://www.cs.mcgill.ca/~swevo/feat/] | ||
=== Open Source Tools for Modelling Concepts === | === Open Source Tools for Modelling Concepts === | ||
Line 44: | Line 63: | ||
** Eclipse Sapphire project [http://www.eclipse.org/sapphire/] | ** Eclipse Sapphire project [http://www.eclipse.org/sapphire/] | ||
* Free mind mapping software [http://www.informationtamers.com/WikIT/index.php?title=Free_mind_mapping_%28and_related_types%29_software] | * Free mind mapping software [http://www.informationtamers.com/WikIT/index.php?title=Free_mind_mapping_%28and_related_types%29_software] | ||
+ | === Reverse Engineering (and Design Recovery)=== | ||
+ | * Reverse Engineering: A Roadmap (2000) [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.4982&rep=rep1&type=pdf] | ||
+ | * Rerverse Engineering: From Artifacts to Concepts (2005) [http://www.langbein.org/fileadmin/science/revenge/CTRevEnge.pdf] | ||
+ | * Code understanding, reverse engineering, best concepts and tools. Java [http://stackoverflow.com/questions/2658133/code-understanding-reverse-engineering-best-concepts-and-tools-java] | ||
+ | * A Comparison of Graphs of Concept for Reverse Engineering [http://www.sdml.info/library/Anquetil%2700.pdf] | ||
+ | * A Unified Meta-Model for Concept-Based Reverse Engineering [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.1459&rep=rep1&type=pdf] | ||
+ | * View-Based Reverse Engineering Approach for Enhancing Model Interoperability and Reusability in Process-Driven SOAs [http://www.infosys.tuwien.ac.at/staff/htran/pub/icsr08.pdf] | ||
+ | * Reverse Engineering Domain Models from Source Code [http://www4.informatik.tu-muenchen.de/~ratiu/papers/rem09.pdf ] | ||
=== Concept Maps and Software Engineering === | === Concept Maps and Software Engineering === | ||
Line 56: | Line 83: | ||
* Architectural Element Matching Using Concept Analysis (1999) [http://portal.acm.org/citation.cfm?id=519308.786904&coll=DL&dl=ACM&CFID=37509269&CFTOKEN=61359330 ] | * Architectural Element Matching Using Concept Analysis (1999) [http://portal.acm.org/citation.cfm?id=519308.786904&coll=DL&dl=ACM&CFID=37509269&CFTOKEN=61359330 ] | ||
* Automatic extraction of framework-specific models from framework-based application code (2007) [http://portal.acm.org/citation.cfm?id=1321631.1321664&coll=DL&dl=ACM&CFID=37509269&CFTOKEN=61359330] | * Automatic extraction of framework-specific models from framework-based application code (2007) [http://portal.acm.org/citation.cfm?id=1321631.1321664&coll=DL&dl=ACM&CFID=37509269&CFTOKEN=61359330] | ||
− | * Program representation and behavioural matching for localizing similar code fragments (1993) [http://portal.acm.org/citation.cfm?id=962289.962307&coll=DL&dl=ACM&CFID=37509269&CFTOKEN=61359330] | + | * Program representation and behavioural matching for localizing similar code fragments (McGill University, 1993) [http://portal.acm.org/citation.cfm?id=962289.962307&coll=DL&dl=ACM&CFID=37509269&CFTOKEN=61359330] |
+ | ** design recovery | ||
* Towards Automatic Establishment Of Model Dependencies Using Formal Concept Analysis (University of Waterloo, 2005) [http://www.swen.uwaterloo.ca/~kostas/publications/journals/j1-05.pdf] | * Towards Automatic Establishment Of Model Dependencies Using Formal Concept Analysis (University of Waterloo, 2005) [http://www.swen.uwaterloo.ca/~kostas/publications/journals/j1-05.pdf] | ||
** model-driven software evolution | ** model-driven software evolution | ||
Line 66: | Line 94: | ||
** '''exploration of inline javadoc comments''' | ** '''exploration of inline javadoc comments''' | ||
** use of an Eclipse plugin SOUND | ** use of an Eclipse plugin SOUND | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Concern-Oriented Software Engineering === | === Concern-Oriented Software Engineering === | ||
Line 80: | Line 99: | ||
* The Eclipse Mylyn Project [http://www.eclipse.org/mylyn/] | * The Eclipse Mylyn Project [http://www.eclipse.org/mylyn/] | ||
* An Agenda for Concern-Oriented Software Engineering (2010) [http://portal.acm.org/citation.cfm?id=1882408] | * An Agenda for Concern-Oriented Software Engineering (2010) [http://portal.acm.org/citation.cfm?id=1882408] | ||
− | * Concern Graphs (University of British Columbia) [http://www.cs.ubc.ca/labs/spl/projects/concerngraph.html] | + | * Concern Graphs (University of British Columbia, 2002) [http://www.cs.ubc.ca/labs/spl/projects/concerngraph.html] |
* Separating Software Engineering Concerns (University of Twente) [http://trese.cs.utwente.nl/taosad/E-Tutorials/SeparatingSE-Concerns-AOSD.pdf] | * Separating Software Engineering Concerns (University of Twente) [http://trese.cs.utwente.nl/taosad/E-Tutorials/SeparatingSE-Concerns-AOSD.pdf] |
Latest revision as of 21:47, 26 January 2014
Contents
Peter Liu's Applied Research Proposal (July - August 2011)
The goal of my research activity is to create a knowledge base at CDOT-Seneca such that new research students can go through a shorter learning curve in working with the huge code base of NexJ Model Server Express. The knowledge base will also benefit the open source community of developers who want to make contributions to the NexJ code base. The knowledge base will be a repository of various software artifacts that have been produced during the process of working with the code base of NexJ Model Server Express.
UML modelling is the foundation of the NexJ approach to model-driven engineering [1] and UML diagrams are concept maps [2]. Thus the focus of my research is to develop a conceptual understanding of the huge code base of NexJ Model Server Express. It is envisioned that some concept maps will be constructed to visualize the architectural aspect of the NexJ code base.
During the process of creating the knowledge base, I expect to build an Eclipse tool to mine useful concepts from the NexJ code base. I will begin with the Eclipse Diver tool as presented by Del Myers at EclipseCon 2011. [3] Later I will try out other open source tools that have been built for reverse engineering and program comprehension.
Documents Provided by NexJ
- Introduction To NexJ Studio Express (open sourced, available on Open Health Tools Platform) [4]
- NexJ Studio Fundamentals (confidential and proprietary)
- NexJ Studio - Integration Fundamentals (confidential and proprietary)
- Working with NexJ Express Source Code (open sourced, available on Open Health Tools Platform)
- NexJ Systems Developer's Guide (confidential and proprietary)
Mining NexJ Concepts From the NexJ Training Tutorial Documents
- Question: Where should one start if one wants to get a conceptual understanding of the code base of NexJ Model Server Express?
- training materials on using NexJ Studio Express
- confirmed by Brian Lim's research experince at CDOT: "the user experience" with NexJ Studio Express
- Research Notes
Mining NexJ Concepts From the Practical Experiences of Research Students
- implementation of a process of knowledge transfer
- discovery of tacit knowledge in software development [5]
- use of qualitative research technique as adopted in software engineering research [6] [7]
- interview with Brian Lim (JSON Integration Adapter)
- interview with Grace Batumbya (JSON RPC Adapter, PostgreSQL Adapter)
- Reference
- An Exploratory Study of How Developers Seek, Relate, and Collect Revevant Informaiton during Software Maintenance Tasks. IEEE Transactions of Software Engineering, 32(12), 2006, pp. 971-987.
Conceptual Comprehension of the Code Base
- Goal: Understand the architecture design of NexJ Framework, especially the Persistence Engine and the Integration Engine.
- identification of class dependencies, manually and automatically (use of open soruce tools)
- recovery of design patterns
- Research Question: What concepts have been implemented in the code base?
- first attempt: use of the Eclipse Diver tool
- References
- Lethbridge, T. C., & Anquetil, N. (1997). Architecture of Source Code Exploration Tools: A Software Engineering Case Study. University of Ottawa.
The Integration Engine
- the NexJ Message concept
- the NexJ Channel concept
- the NexJ Transformation concept
The Persistence Engine
Resources
Agile Software Engineering
- Hazzan and Dubinsky: Agile Software Engineering (Springer 2009) [8]
- a multifaceted approach: the human perspective, the organizational perspective, the technological approach (HOT)
Open Source Tools for Reverse Engineering
- Put It In Reverse: Using Eclipse to Understand Code that has Already Been Written (EclipseCon 2011) [9]
- Eclipse plugin or a Open source tool to reverse engineer java code for sequence diagram [10]
- FEAT: An Eclipse Plug-in for Locating, Describing, and Analyzing Concerns in Source Code [11]
Open Source Tools for Modelling Concepts
- From XML to Form to Diagram with Sapphire [12]
- Eclipse Sapphire project [13]
- Free mind mapping software [14]
Reverse Engineering (and Design Recovery)
- Reverse Engineering: A Roadmap (2000) [15]
- Rerverse Engineering: From Artifacts to Concepts (2005) [16]
- Code understanding, reverse engineering, best concepts and tools. Java [17]
- A Comparison of Graphs of Concept for Reverse Engineering [18]
- A Unified Meta-Model for Concept-Based Reverse Engineering [19]
- View-Based Reverse Engineering Approach for Enhancing Model Interoperability and Reusability in Process-Driven SOAs [20]
- Reverse Engineering Domain Models from Source Code [21]
Concept Maps and Software Engineering
- Concept Map Based Software Engineering (2007) [22] [23]
- Research on the Application of the Concept Map to Software Engineering Teaching (2009) [24]
- Using Concept Mapping to Facilitate Students Understanding Software Testing [25]
- Are concept-mapping tools useful for software analysis and design? [26]
- Mind Mapping and the Software Development Life Cycle (2006) [27]
- Using concept mapping for maintainability assessments (2009) [28]
- The concept maps method as a tool to evaluate the usability of APIs (2011) [29]
- Representing concerns in source code (2007) [30]
- Architectural Element Matching Using Concept Analysis (1999) [31]
- Automatic extraction of framework-specific models from framework-based application code (2007) [32]
- Program representation and behavioural matching for localizing similar code fragments (McGill University, 1993) [33]
- design recovery
- Towards Automatic Establishment Of Model Dependencies Using Formal Concept Analysis (University of Waterloo, 2005) [34]
- model-driven software evolution
- An Ontology-Based Program Comprehension Model (Concordia University, 2007) [35]
- knowledge acquisition and the construction of mental models
- recovery of design patterns
- architecture analysis of InfoGlue (an open source CMS)
- traceability links
- exploration of inline javadoc comments
- use of an Eclipse plugin SOUND
Concern-Oriented Software Engineering
- FEAT: An Eclipse Plug-in for Locating, Describing, and Analyzing Concerns in Source Code [36]
- The Eclipse Mylyn Project [37]
- An Agenda for Concern-Oriented Software Engineering (2010) [38]
- Concern Graphs (University of British Columbia, 2002) [39]
- Separating Software Engineering Concerns (University of Twente) [40]