Software applications must be transformed from source code into machine instructions in order for the application to execute. This transformation process is called “compiling”. During compilation, the source code is first turned into a language-agnostic and machine-agnostic set of instructions, sometimes referred to as “intermediate code”. The intermediate code is then turned into machine instructions specific to the particular computer platform on which the particular application will run. Compilation typically occurs on a single computer, and when completed, the intermediate code generated by the compilation process is discarded. Thus, any useful information that could be obtained from this intermediate code later in the development process is lost.
In many cases, software applications are developed in team-based environments. These teams are comprised of team members playing several roles that support the overall project goals. Each team member typically runs the software development application on their own local computer. When a particular team member compiles the program, runs a code analyzer to analyze performance, performs debugging, or other various development-related tasks, the resulting details from these processes are typically stored on that team member's local computer. While that team member may submit the source code to a source code control server that the entire team can access, the various system generated artifacts resulting from the development process that led up to the version being checked in to the server are typically either lost or are not easily distributable. This means that other team members do not get whatever benefit may be gained by accessing those results. For example, as a developer team member is working on a given application, the developer may use a code profiler to analyze the performance of the application. In doing so, the developer gains specific knowledge about the applications performance. The artifacts and knowledge gained by creating the artifacts from profiling the applications are local to the developer and are not easily shared.
Furthermore, in the course of executing their assigned roles, team members often create other artifacts related to the project in addition to the source code itself, such as models, diagrams, work items, etc. Just like with the system generated artifacts, in many cases, these user-created artifacts are also stored on a particular team member's computer only, are lost, or are not easily distributable to the other team members. Thus, large amounts of valuable development data and artifacts related to a particular software development project being developed in a team environment are either dispersed across various team member computers and thus inaccessible by the entire team, or they are lost forever.
Various technologies and techniques are disclosed that provide and interact with a collaborative development information store in a team software development environment. A submission service updates an active meta-model of an application in a central information store that is used by multiple users. A notification service operating in a particular software development environment receives notice that changes have been made to the active meta-model. Information received from the notification service is then used to update a display in the particular software development environment being used by a particular user. As one non-limiting example, the information can be displayed as the particular user is typing code to note something relevant to that particular code that has occurred as a result of an action of another team member.
On the database server, a reception service is provided that receives active meta-model information of the application being developed by the multiple users as the information changes. A storage service is provided to store the received active meta-model information in a specific relational database structure that is operable to allow artifacts to be added without alteration to the specific relational database structure.
This Summary was provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
For the purposes of promoting an understanding of the principles of the invention, reference will now be made to the embodiments illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope is thereby intended. Any alterations and further modifications in the described embodiments, and any further applications of the principles as described herein are contemplated as would normally occur to one skilled in the art.
The system may be described in the general context as a software development application. One or more of the techniques described herein can be implemented as features within a software development program such as MICROSOFT® VISUAL STUDIO®, or from any other type of program or service that participates in the software development process in a team environment.
In one implementation, a system is provided that uses a centralized database or other information store to store real-time, active meta-model information about a particular software application being developed by a team of developers and/or other users. The term “active meta-model” as used herein refers to system-generated artifacts and user-generated artifacts that reflect a current state of the application, the structure of the application, and a history of how the application has evolved. System-generated artifacts include application structure, intermediate code, annotations, and other analysis data that the system generates. User-generated artifacts include work items, project plans, diagrams, annotations explaining certain code, and so on that could potentially be associated with the underlying application structure. The centralized database is then accessed by the software development applications being used by the team of developers to provide the team with access to the active meta-model information. By having access to this information, developers are provided with real-time, relevant information about the active state of the application under development by a team of other people. As one non-limiting example, this information can include notifying developer A that a code profiling process that was run by developer B has just marked a certain portion of code as “slow” that developer A is about to call from his code. In one implementation, this is accomplished by associating the performance characteristics of a given code module, type, method etc. with the meta-representation. Thus, as developer B adds a call to the method in question, the associated performance data can be found which was added by A and action can be taken.
As shown in
Turning now to
Turning now to
Meta-model storage application 240 includes program logic 244, which is responsible for carrying out some or all of the techniques described herein. Program logic 244 includes logic for providing a reception service to receive active meta-model information of an application being developed by a plurality of users 246; logic for providing a storage service that is operable to store the received active meta-model information in a specific relational database structure that is operable to allow artifacts to be added without alteration to the specific relational database structure 248; logic for receiving a request to retrieve active meta-model information from a notification service that is operable to notify one or more client devices of changes to the active meta-model 250; logic for enabling the specific relational database structure to store a name identifying the specific element and data describing the element 252; logic for enabling the specific relational database structure to store a name identifying the specific connection, data describing the specific connection, the source of the specific connection, and the destination of the specific connection 254; logic for enabling the specific relational database structure to store a field containing relevancy information for a specific connection 256; and other logic for operating the application 260. In one implementation, program logic 244 is operable to be called programmatically from another program, such as using a single call to a procedure in program logic 244.
Turning now to
The notification service is used to update a display in the software development application used by a respective team member with appropriate information describing the change (stage 296). In one implementation, the software development application intercepts and analyzes the changes to the active-meta model and then determines when and how to notify the user. In another implementation, the software development application receives the notices and just displays them without filtering and/or interpreting them. Some non-limiting examples of the type of information that can be displayed to users include policy violation alerts, dependency alerts, performance alerts, modification alerts, etc. (stage 296). A policy violation alert can indicate that the user has made a change that impacted the active-meta model in a way that violates a policy set for the system. A dependency alert can inform the user that some code they are changing now depends on something that is no longer available, that has been marked as slow, that is currently being edited by another user, and so on. A performance alert can inform the user that that same code was marked as slow performing by another user who worked on it before. These are just a few non-limiting examples of the types of information that the system can issue upon analyzing the active meta-model contained in the central information store. The process ends at end point 298.
Turning now to
Turning now to
In one implementation, trust is an additional specialized property given by the system to users, vendors and/or vendor-provided tools. As the system's data evolves, tool and user findings change over time. If tools are found to be inaccurate, the default trust weight associated with a specific vendor, tool or user can be changed. Doing so means the relevancy calculation is altered, weighting the calculation positively or negatively depending on the power of the trust factor. For example, static analysis of code can be used to find the links between test cases and code by examining the calling relationship of the test case to the development method. For this example, Tool X looks at these relationships and adds links between test code and development methods based on static relationships. By default, the system examines these relationships and notifies users of changes to modules connected by these links. If test A calls development method B, and method B changes, then the author of A should be notified. However, as the development cycle progresses, many times the users being notified of the changes may be notified when they do not care. This is because Tool X does not take into account additional factors (such as code complexity, number of calls, etc) that can mean a more or less important connection. Due to all of the negative feedback from users, the administrator or the system can lesson Tool X's Trust rating. As a direct result, when the calculation for which users are to be notified of a change takes place, a connection between two users from Tool X's links will be rated differently for Tool Y, in which case, Tool X's information will be trusted less.
As shown in
Additionally, device 600 may also have additional features/functionality. For example, device 600 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in
Computing device 600 includes one or more communication connections 614 that allow computing device 600 to communicate with other computers/applications 615. Device 600 may also have input device(s) 612 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 611 such as a display, speakers, printer, etc. may also be included. These devices are well known in the art and need not be discussed at length here. In one implementation, computing device 600 includes submission and notification application 200 and/or meta-model storage application 240.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. All equivalents, changes, and modifications that come within the spirit of the implementations as described herein and/or by the following claims are desired to be protected.
For example, a person of ordinary skill in the computer software art will recognize that the client and/or server arrangements, user interface screen content, and/or data layouts as described in the examples discussed herein could be organized differently on one or more computers to include fewer or additional options or features than as portrayed in the examples.
Number | Name | Date | Kind |
---|---|---|---|
5848274 | Hamby et al. | Dec 1998 | A |
5911073 | Mattson, Jr. et al. | Jun 1999 | A |
6233600 | Salas et al. | May 2001 | B1 |
6732364 | Bhaskaran et al. | May 2004 | B1 |
7000220 | Booth | Feb 2006 | B1 |
7003369 | Gage | Feb 2006 | B1 |
7028225 | Maso et al. | Apr 2006 | B2 |
7043529 | Simonoff | May 2006 | B1 |
7069547 | Glaser | Jun 2006 | B2 |
7149734 | Carlson et al. | Dec 2006 | B2 |
7181734 | Swamy et al. | Feb 2007 | B2 |
7194475 | DelMonaco et al. | Mar 2007 | B2 |
7509416 | Edwardson et al. | Mar 2009 | B1 |
7533369 | Sundararajan et al. | May 2009 | B2 |
7716649 | Clemm et al. | May 2010 | B2 |
7788711 | Sun et al. | Aug 2010 | B1 |
7837753 | Roundy et al. | Nov 2010 | B2 |
20020198873 | Chu-Carroll | Dec 2002 | A1 |
20030009740 | Lan | Jan 2003 | A1 |
20030014513 | Ruths et al. | Jan 2003 | A1 |
20030135565 | Estrada | Jul 2003 | A1 |
20030135840 | Szabo et al. | Jul 2003 | A1 |
20040085354 | Massand | May 2004 | A1 |
20040117454 | Koont et al. | Jun 2004 | A1 |
20040133875 | Kramer | Jul 2004 | A1 |
20040205129 | Bongiorni et al. | Oct 2004 | A1 |
20050097508 | Jacovi et al. | May 2005 | A1 |
20050227218 | Mehta et al. | Oct 2005 | A1 |
20060026251 | Cheng et al. | Feb 2006 | A1 |
20060041440 | Cheng et al. | Feb 2006 | A1 |
20060080432 | Spataro et al. | Apr 2006 | A1 |
20060150150 | Tiwari et al. | Jul 2006 | A1 |
20060212843 | Zaky et al. | Sep 2006 | A1 |
20060218623 | Hodges et al. | Sep 2006 | A1 |
20070106767 | Yamamoto et al. | May 2007 | A1 |
20070143735 | Clemm et al. | Jun 2007 | A1 |
20070143752 | Clemm et al. | Jun 2007 | A1 |
20070236746 | Benedek et al. | Oct 2007 | A1 |
20080229282 | deVries et al. | Sep 2008 | A1 |
20080320436 | Hughes | Dec 2008 | A1 |
20090210862 | Viswanadha et al. | Aug 2009 | A1 |
Number | Date | Country |
---|---|---|
2533942 | Aug 2006 | CA |
01-292529 | Nov 1989 | JP |
09-006605 | Jan 1997 | JP |
09-016392 | Jan 1997 | JP |
10-083420 | Mar 1998 | JP |
2000-148458 | May 2000 | JP |
2000-235496 | Aug 2000 | JP |
2001-092650 | Apr 2001 | JP |
WO0067118 | Nov 2000 | WO |
Entry |
---|
Ballarini et al., “Modeling Real Requirements for Cooperative Software Development: A Case Study”, http://www.dis.uniroma1.it/˜mecella/publications/Miscellanea/CSSE2003.pdf. |
Carmichael, Dr. Andy, “Supporting Collaborative Software Development”, http://www.intland.com/asset/AndyCarm.pdf. |
Rimpilainen et al., “Sakai: An Environment for Virtual Research”, http://www.ennenjanyt.net/2006—2/rimpilainen.pdf. |
Takemiya et al., “Development of a Virtual Research Environment across Multi-institutions”, http://www.tokyo.rist.or.jp/sss2001/Abst/O—Takemiya—Hiroshi.pdf. |
International Search Report and Written Opinion Received for PCT Application No. PCT/US2008/054319, mailed on Jul. 24, 2008, 10 pages. |
Office Action received for Japanese Patent Application No. 2010-501032, mailed Jul. 27, 2012, 13 pgs. including 7 pgs. English translation. |
Office Action received for Japanese Patent Application No. 2010-501032, mailed Nov. 30, 2012, 13 pages including 7 pages English translation. |
Number | Date | Country | |
---|---|---|---|
20080235654 A1 | Sep 2008 | US |