knowledgecity
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:
# KnowledgeCity #
How can we qualify/quantify the area of expertise of a software
developer working on one of CFMU's (oooopppss DNM's) systems?
Can we use the records from Remedy, i.e. the SCs and relevant items
linked to them?

### CAVEAT ###
It is true that software is more often read than written [1],
and as such the numbers out of a KnowledgeCity-like analysis should be
complementary to any other source of information, i.e. feedback from
team leader/co-workers.

[1] Bracha, Gilad and Griswold, David
    "Strongtalk: typechecking Smalltalk in a production environment",
    http://doi.acm.org/10.1145/165854.165893

## DONE ##
* tried to describe the idea here
* [(draft) unix scripts][5] to extract the data

## TODO ##
1. assess the idea
2. gather data and prototype for 1 user with spreadsheet with coarse
and fine granularity:
Generate a csv file with Change Id, Originator, Responsible, System,
CR Reference, I2 Reference, Topic, Item System, Item Subsystem, Path,
File Name


3. If a 3D view is to be used it is necessary to understand what is mapped to what.
    width  = ?
    height = ?
    color  = ?
    relative position (two variables here) = ?
4. address Ada and C++ clustering of filenames
5. some histogram


## Introduction ##
This is an experimental area dedicated to explore the prototype of
**KnowledgeCity**.

The idea is to try to complement TLs input on team members' skills and
area of expertise with 'data from the field'.
The inspiration comes from [CodeCity][].

If you think about our closure graph, i.e. [TACT closure][1],
you can think of each closure component as a city block.
Certain CFMU systems are easier to cluster into (city-like) blocks,
for example Java software with its package oriented file organization
can be naturally organized. The case of Ada or C++ sources is more
difficult and clustering for them will probably need the use of some
AI techniques: k-means, expectation maximization.

[TACT closure graph][1] was generated on Linux by

    $ Cgraph -b TACT.TACT\_CONFIG.LATEST -o TACT_closure.gif

## Tech details ##
Typically we save code changes tagged with SC (Software change) and
since some time (ca. 2000) we load the mane of the impacted
version-controlled entities in Remedy.

This allows us to produce a release note in semi-automated mode
where we can extract all CRs/SCs/I2s/PADs between 2 selected system
family baseline builds.

The same data could be used to extract where somebody has worked and
have an automated way to assess in which heads the knowledge resides:
this is not perfect science but could be instructive to see if it
somewhat confirms what TLs report.
It can also be useful to

 * investigate whether there are uncovered areas (and it could
   well be that they are untouched bacause stable...or dead)

 * see what area of code will be left uncovered if somebody leaves

 * ...

## Remedy Queries ##
The following are representative Remedy queries that can be used from
Advanced (Manual) Search box:

 * One of [all SCs in 2011 for BYG][2] is for example SC\_056402)

         (('Date & Time' >= "01/01/2011 00:00:00") AND ('Date & Time' <=
         "01/02/2012 00:00:00")) AND ('Originator' = "BYG" OR 'Responsible' = "BYG")

 * for SC\_056402 above, [the list of version controlled entities][3],
   a.k.a. files, impacted comes from the following Remedy query

         'SC ID' = "SC_056402"  AND 'File Name' != $NULL$
   One of them is for example [this][4].

## The (draft) idea ##
In principle the data can be extracted: we have all SC worked by ``
and associated to baseline build items, so that a per person histogram
can be produced for all files belonging to which component in the
various CFMU systems.
For the example data in [Tact closure][1], [list of SCs][2],
[items for SC][3] and [baseline item details][4] we could count
how many times file `an1_receiver_task-direct_control.adb`
in component `CORE` of system `TACT` has been 'touched' by `BYG` in
`2011`.

* For fine-grained classification:
  It is true that inside CORE you have clear clusters of files with
  related functionality which have the same prefix, for example
    atfm\_message\_...
    all\_ft...
    casa...
    casa\_task...
    ccams-client...
    ccams\_contingency...
  and this is just special of TACT; CHMI or CUA have probably different ways to
  organise the code either structurally (directories for the package name in Java)
  or by logically by name-prefix.

* for coarse granularity we could restrict the view to TACT/CORE


[1]:  TACT_closure.gif
      "a closure graph, i.e. latest TACT"
[2]: SoftwareChangeList.jpg
     "a list of  SCs"
[3]: BaselineItemList.jpg
     "baseline items list for an SC"
[4]: https://raw.github.com/espinielli/knowledgecity/master/BaselineItem.jpg
     "a baseline item"
[5]: scripts.html
     "knowledgecity scripts"
[CodeCity]:  http://www.inf.usi.ch/phd/wettel/codecity.html
             "CodeCity Home Page"

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。