J. Software Engineering & Applications, 2009, 2:34-39
Published Online April 2009 in SciRes (www.SciRP.org/journal/jsea)
Copyright © 2009 SciRes JSEA
Call for Implementation: A New Software Development
Mode for Leveraging the Resources of Open Community
Weiping Li1, Weijie Chu1, Ying Liu*
1School of Software & Microelectronics, Peking University, Beijing 100871 China, *IBM China Research Lab, Beijing 100094,
China
Email: wpli@ss.pku.edu.cn, chuwj@ss.pku.edu.cn, aliceliu@cn.ibm.com
Received December 31st, 2008; revised February 6th, 2009; accepted March 10th, 2009.
ABSTRACT
With the growth of the internet and open software, there are additional software developers available from the open
community that can participate in the development of software application systems. Aiming to leverage these resources,
a new development model, CFI (call for implementation), is proposed. The basic idea of CFI is to publish some part of
a software project to the open community, whole or part, in certain phases of the software development lifecycle to call
for implementation. This paper discusses the basic concept and method for a software development process in CFI
mode. Two different modes of CFI with different granularities are analyzed. And one of the CFI modes, fine-granular-
ity-CFI mode, is thoroughly discussed including the main methods and basic steps. To verify the ideas a pilot project,
an online store system, is built up with the CFI development process. The online store system takes the traditional
Model-View-Control architecture and some common technologies such as Struts, Hibernate, Spring are used. The result
shows that this new kind of software development mode is feasible though there are many problems that are still re-
quiring further study.
Keywords: Call for Implementation, Software Development, Open Community, Integration
1. Introduction
Open community, which is composed of students, pro-
gramming fans, SOHO (small office/home office), etc., is
a virtual development resource pool [1]. With the devel-
opment of open source software, open community is now
booming, which contributes many new ideas and solu-
tions to some frameworks and common solutions.
Currently there are many open source software pro-
grams available in many web sites such as Apache,
SourceForge, and many others. The Apache Software
Foundation provides support for the Apache community
of open-source software projects [2]. SourceForge.net
provides free hosting to open source software develop-
ment projects with a centralized resource for managing
projects, issues, communications, and codes [3]. Besides
the open source software, open community provides ad-
ditional software development resources that, when
properly compensate financially, can do the coding work
for certain software components. For example, TOP
CODER [4] provides a platform for the open community
developers on which some software components are
available for implementation. There are even small-size
project provided on ScriptLance [5]. On SXSoft [6], a
Chinese website, both small software components and
small sized projects are available. And this new mode of
development occurred only one or two years ago.
As we can see, there already exist some practices on
using the resource of open community for coding.
Though currently the components that done by the open
community developers are small size and the main tasks
are coding, it is really a new phenomenon which inspires
us to leverage the rich resources of the open community.
To follow this idea and practice, some companies are
going beyond outsourcing small components to out-
sourcing the whole project. In this whole project out-
sourcing mode, we need some new methods and tech-
nologies to manage the whole project. We call this new
mode is Call for Implementation (CFI). Fortunately there
are some research efforts on outsourcing [7] and open
source software development model [8]. And there are
also some previous research efforts and practices on CFI
at IBM China Research Lab, where some researchers
finished a CFI project in the popular SOA architecture
[1,9].
Sponsored by IBM China Research Lab, we, Peking
University, have been working on a joint study CFI pro-
ject, in which some methods for requirement analysis,
designing and partitioning the project have been studied.
This paper describes the basic ideas and methods for CFI
and a practice that verifies the ideas in a pilot project.
The rest of this paper is organized as follows: Section
2 describes the basic ideas of CFI and the two different
modes for CFI as well as some extra work which the
project owner should take into account. Section 3 depicts
in details the ideas, steps, and methods for one of the CFI
Call for Implementation: A New Software Development Mode for Leveraging the Resources of Open Community 35
Copyright © 2009 SciRes JSEA
model, i.e. fine-granularity-CFI mode. Section 4 puts
forward a pilot project finished in the fine-granularity-
CFI mode. Section 5 concludes the paper and presents the
future work.
2. CFI Overview
2.1 The Concept of CFI
CFI is a new kind of development style that is different
from traditional software development within an organi-
zation. Under the CFI mode, usually the owner of a cer-
tain software development project will publish some
tasks on their website, or a specific platform, to call for
implementation. The task here means a piece of work
with a reasonable granularity such as a java class, a
component, or a JSP page that can be implemented by a
single developer. And usually a task is a package that is
composed of different kinds of the artifacts. After finish-
ing the tasks the developers will submit them back to the
owner. The project owner then continues the testing and
integration work. After all the necessary work done, the
whole system is built up. The conceptual model of CFI is
depicted in Figure 1.
Given this idea, we can tell the differences between
CFI development and conventional development. In the
normal software development lifecycle, there are the ba-
sic tasks such as requirement analysis, general design,
detailed design, implementation, testing, and maintenance.
Usually the process used in a certain software system
development is one of the following models: Waterfall
Model, Spiral model, RUP [10], etc. Whereas in the CFI
model some extra work should be added to implement
this new kind of development, namely, publish and sub-
mission. These two tasks can be added into certain phase
of the process according to the policy of CFI. In the tradi-
tional process it is relatively easy to get feedbacks from
different roles and the iterative process can be used. But
in the CFI situation, it is hard to get any feedback and
accordingly hard to take the iterative process.
There are two basic modes for CFI process, coarse-
granularity-CFI and fine-granularity-CFI mode, which
can be seen in Figure 2 and 3.
Figure 1. The conceptual model and process of a CFI project
Figure 2. The coarse-granularity-CFI development process
Figure 2 shows the coarse-granularity-CFI mode, in
which the publisher, i.e., the project owner, just publishes
the requirement to the open community while the devel-
oper will perform further tasks such as design, coding,
and testing. In the coarse granularity mode, usually the
project owner should firstly design the structure of the
database and the architecture of the software and deter-
mine the technologies used in the project. The developers
should work under these constraints in order to achieve a
smoother integration among the individual tasks submit-
ted by the open community developers. For each task, the
implementation includes the design, coding and unit test-
ing in this mode.
Figure 3 shows the fine-granularity-CFI mode, in
which the publisher will finish the designing work and
publish the tasks which contain some part of the design
artifacts. The implementation in this mode includes cod-
ing and partial unit testing.
2.2 The Main Challenges of CFI
As compared with the traditional software development
process, there arise some challenges for the CFI devel-
opment process that the project owner should balance
among them. The main objective of CFI is to leverage the
development resources in the open community. When
taking advantage of this potential resource, the project
owner has to face some extra effort for testing, integra-
tion, and potential quality decline. So the following is-
sues should be taken into account in managing for CFI
project.
·Information concealment: When publishing the tasks
to the public, all the information that is not related to a
certain task should be concealed. Only the needed infor-
mation about the task itself will be published.
·Granularity: Fine granularity means the number of
tasks will be increased accompanied by the difficulty of
integration test, while the coding task itself is easy to
implement. On the other hand, relative coarse granularity
means single task will be hard to implement while de-
creasing the difficulty of integration and testing.
·Testing policy: Partitioning the whole project into
parts creates another challenge: testing. And the main
difficulty comes from the unit testing. Usually a class in a
certain task may link with other class(es) in other task(s)
and different tasks will be done by different people. So it
is impossible for the classes in different tasks to run to-
gether until at the integration phase done by the project
owner. The developer can write the unit test cases but it
is hard to run them.
Figure 3. The fine-granularity-CFI mode development process
36 Call for Implementation: A New Software Development Mode for Leveraging the Resources of Open Community
Copyright © 2009 SciRes JSEA
·Integration: The codes are from different developers
and those developers are usually not available in the in-
tegration phase. So how to ensure the code quality is an-
other big challenge, which the project owner and the core
team have to face the challenge.
3. The Partition Methods for CFI Project
There are two CFI modes according to the granularity of
tasks. Currently we are studying the fine-granularity-CFI
mode and the corresponding partition method and rules
for CFI development. Also some pilot projects have been
done to verify the ideas of CFI. The study for the coarse
granularity mode remains to be study.
For the fine-granularity-mode, the project owner
should firstly finish the detailed design and then partition
the artifacts into small pieces of tasks that will be imple-
mented by different people. Suppose the designing work
is as usual. To publish the tasks on the platform in this
mode, we start from the design document, and focus
mainly on the class diagram, which provides the founda-
tion for further partitioning of the whole project. With the
relationships among classes the big picture of the project
can be obtained. To assure that all the development tasks
can be included into the big picture and ready for further
partition, the GUIs of the project, e.g. JSPs, should be
included into the big picture, which is actually an ex-
tended class diagram.
The question now is how to partition the big picture,
i.e. the extended class diagram, into tasks. For this pur-
pose, some rules can be introduced to help the partition.
Next we will use an example to describe the methods.
Figure 4 shows a very simple big picture with the Java
Script Pages (JSPs) included as classes. This class dia-
gram follows the common Model-View-Control archi-
tecture. The nodes in the figure are classes or JSPs and
the arcs indicate the relationship among the nodes. There
Figure 4. The extend class diagram for CFI partition
are four kinds of nodes, namely, JSP, Action, Business
Service, and Data Access Object (DAO). JSP stands for
the GUI. Action stands for the Action Servlet in the
Struts framework. Business Service represents the classes
that fulfill the real business processes and functions. And
DAO is the class for accessing the database. Each node
gets a flag that indicates its type, e.g. JSP, ACTION,
SERVICE, or DAO.
To split the whole picture into parts, namely tasks,
some rules will be followed at the beginning of the parti-
tioning process by the project manager or the architect.
There exist some basic rules:
·A node (with certain type defined) can be placed into
one task with the node(s) (with another type defined)
linking to it.
·A node (with certain type defined), although having
relations with others nodes, can be partitioned into one
task.
·For the isolated nodes that have no arcs linked with
any other nodes will be naturally in a task.
·A node can be placed into ONLY ONE task.
Besides these rules, when in actual situations, some
other rules can be introduced when needed.
For the class diagram in figure 4, let’s define the fol-
lowing rules:
1) The nodes with type JSP and nodes with type AC-
TION that are linked together will be grouped into one
group.
2) The node with type SERVICE or DAO forms one
single group.
Conforming to these rules, the class diagram can be
grouped into thirteen groups, i.e. tasks. They are:
(P1, A1), (P2, A2, A3), (P3), (P4, A4, A5)
(S1), (S2), (S3), (S4)
(D1), (D2), (D3), (D4), (D5)
Because both A2 and A3 are linked with P2, they are
in the same group. Although A3 is linked with P3, P3
itself forms a group because A3 is already in another
group. Once all the groups are determined, they are ready
to be published to the open community as tasks.
Before publishing these tasks to the open community
to call for implementation, there is still some extra work
that should be done. For example, usually the database
design, some common interfaces and classes, the Cas-
cading Style Sheets (CSS) of JSPs and other necessary
building blocks need to be delivered to the open commu-
nity developers.
4. A Pilot Project
To verify this new development mode, we started a pilot
project using the CFI methods. The project is to develop
an online store application system, using the fine-granu-
larity-CFI mode. There are seven modules in this appli-
cation system and we select on of the simple modules as
Call for Implementation: A New Software Development Mode for Leveraging the Resources of Open Community 37
Copyright © 2009 SciRes JSEA
the example to explain the CFI mode. Before this pilot
project, a platform supporting CFI development was al-
ready developed by another team at Peking University
under Professor Yu Lian [11]. The platform provides the
necessary functions for the CFI development such as task
publishing, payment, project management and so on. We
use this platform to partition the tasks, to publish and
receive the finished tasks, and to monitor the project.
4.1 The Online Store Project Overview
There are two teams involved in this project, one core
team and one development team. The core team works on
requirement analysis, detailed design, partitioning, pub-
lishing tasks, integration, and testing, while the develop-
ment team works on coding and unit testing. There are
eight persons in the core team: two teachers act as project
managers, one senior graduate student as the architect
and five junior graduate students as designers. A total of
45 students are in the development team that works on
coding and unit testing. The 45 students here simulate the
open community developers. Currently the integration is
finished and next work is to test the system.
The time table is as follows:
·Oct. 15-Nov. 15, Requirement Collection,
·Nov. 19-Dec. 10, Detailed Design,
·Dec. 11-Dec. 12, Partition and Publishing,
·Dec. 13-Dec. 21, Coding and Unit Testing,
·Dec. 24-Dec. 29, Integration
·Feb. 18-.Mar. 30, Testing
There are seven modules in this online store applica-
tion system, i.e. Customer Management, Shopping Cart,
Sales, Procurement, Inventory Management, Consign-
ment, and System Management. The system adopts the
Model-View-Controller architecture and is developed in
Java. The development toolkit is Rational Software Ar-
chitect, Rational Application Developer 6.0 and the
server is WebSphere Application Server 6.0. The main
technologies are Struts, Hibernate, Spring, JUnit, etc.
4.2 An Example for Partition
Let’s take the procurement module as an example to
demonstrate the partitioning process in CFI. Procurement
module is a simple module that is responsible for the
procurement of the merchandise to be sold on the online
store. This module follows a standard procurement proc-
ess, including creating a purchase requisition, examining
and approves a purchase requisition, creating a purchase
order, examining and approving a purchase order, getting
manifest, and warehousing. The class diagram is shown
in Figure 5. There are thirteen JSPs, seven Actions, three
business services and three DAO class in the extended
class diagram.
Rules used
There are four rules used in this pilot project.
1) Every business service will be in a single group
2) Every DAO class will be in a single group
3) A JSP and its linked Actions will be grouped to-
gether.
4) If one action class has more than one linked JSPs
then this action class will be grouped with one of the
JSPs randomly.
Figure 5. The extended class diagram for procurement module
38 Call for Implementation: A New Software Development Mode for Leveraging the Resources of Open Community
Copyright © 2009 SciRes JSEA
The partition result
According to the rules the procurement module was di-
vided into 16 groups, i.e. 16 tasks, see table 1. The three
business services are grouped as single tasks according to
rule No. 1, see task No. 14, 15, and 16. All the other JSPs
and Actions are divided into the other 13 groups.
From Figure 5 we can see that ArrivalOrderAdd_ Ac-
tion links with both ArrivalOrderAdd.JSP and Arri-
valOrderItemAdd.JSP. According to rule No. 4, they are
placed in group 12 and 13 respectively.
The DAOs in Figure 5 can be generated automatically
by the Hibernate tool so they are not included in the tasks.
That means they are finished by the core team. Also there
still some other classes those were not included in the
tasks and hence not published to the open community.
Before publishing the tasks on the platform, two extra
efforts should be made. One is to package the right parts
of design document with the tasks, which will help the
developers to understand the design. Another is to build
up the project framework and the some components, such
as DAOs mentioned above, will be provided in the de-
velopment toolkit, i.e. Rational Application Developer.
The components in the project include the package and
class name, the jar files that are imported into the project,
some common interfaces and tools, and so on. This
would provide all the developers the same working envi-
ronment.
Additionally, the database design should be finished by
the core team before the publishing or at least before the
integration phase.
4.3 Analysis of the Practice
Compared with the traditional software development
process, the CFI mode does have following different
characteristics.
Integration
The integration is done by the core team. Before publish-
ing the tasks the framework of the project is already built
so the integration is relatively easy. Integration is simply
put all the code on the right place, i.e. right package and
right directories. The code may be finished by the open
community developers or by the core team members.
Table 1. The partition result
1 Purchase
0rderAppmve JSP 9
Request 0rderModify JSP
Request 0rder
Modify_Action
2 Request 0rderModify JSP Re-
quest OmderModify_ Action 10 Request 0rdzer List JSP
3 Purchase 0rderList JSP 11 Purchase 0rderSearch JSP
Purchase 0rderList_ Action
4 Request 0rderSearch JSP Re-
quest 0rderList_Action 12 Arriwal 0rderItmAdd JSP
5 SupplierAssign JSP 13
Arriva0rderAdd JSP
Arrival0rderAdd_Action
6 Request0rderAdd JSP 14 Reques0rder_Service
7 Reques0rderAppnove JSP 15 Purchase0rder_Service
8 Purchase0rderAdd.JSP
Purchase0rderAdd_Action 16 Arrival0rder_Service
The configuration file used in the project, namely
Spring and Hibernate configuration files, shall not be
open to all the developers for the purpose of information
concealment. But usually there exist one configuration
file for the whole project. In this project we cut the file
into pieces according to different tasks’ needs. This
raised the extra work for cutting the file and reuniting the
pieces into one integrated file.
Testing
The developers have finished the coding and, accordingly,
have written the test cases for unit test using JUnit meth-
ods. But mostly unit test cases cannot run until the inte-
gration is finished because every single developer can
only get a task, which may have to call other interfaces
that will be implemented by other developers. Although
they can use surrogate(s) to help finish the testing, it must
be retested after integration. The core team will continue
to complete the test wok. During this period, it will be
lucky if we can find the developers to correct any errors,
which we suppose won’t do it because they have been
already paid. Even if we are lucky, we can find the right
persons, it is still hard to correct some errors which have
relationships with other modules.
Code quality
Usually the code style is hard to control. The project
owner may define the code style for the project. But it is
hard to ensure all the open community developers abide
by it well. Because the unit test can not be complete be-
fore the integration it is also difficult to ensure the quality
of the code.
The code quality is deeply depended on the skill and
experience of the programmer. This is a risk for the suc-
cess of the project.
Surely the quality of the design document will impact
the quality the code. And the partitioning work adds extra
difficulty to the design documents.
5. Conclusions
This paper analyzes the basic ideas of Call for Imple-
mentation, which can help an enterprise to leverage the
resources in the open community. The basic methods for
CFI are introduced. Especially the partition method for
dividing the class diagram into tasks is introduced. Based
on this new idea and corresponding methods, a pilot pro-
ject has been developed in the so called fine- granular-
ity-CFI mode aiming to verify the methods.
From the pilot project we have found some interesting
points that differentiate CFI from traditional software
development. Some extra work is needed for the CFI
development such as partitioning the design work, pub-
lishing the tasks, integrating the artifacts, and preparing
the project framework.
1) In CFI mode, the coding work is finished by the
open community programmers while the unit test will be
Call for Implementation: A New Software Development Mode for Leveraging the Resources of Open Community 39
Copyright © 2009 SciRes JSEA
done by the core team. And there arise the potential risk
of lowered quality and even more workload for correct-
ing the errors.
2) Iterative development is regarded as a useful proc-
ess. But in CFI mode it is hard to send any feedback to
the developers. So it is hard to use this kind of process.
3) In CFI mode every task is a group of classes that
may have some natural relationships with other task(s).
So the information of the project is hard to be concealed.
The developers must know the interfaces that this task
calls. If someone purposely collects all the tasks in some
way then he will discover the functions, interfaces, and
even the architecture of the project.
4) Based on the previous practice we find two useful
principles for partitioning, which we believe can im-
prove the quality of the code. One is that the nodes in
the extended class diagram that fall into one use case
will be divided into one task. In this way the whole
business process of a certain function will be encapsu-
late into one task so it will be done by one single pro-
grammer. This eliminates the communication among
different programmers and hence improves the quality
of the code. The other is that the controller classes in
terms of Model- View-Control, namely the main proc-
ess, shall be assigned to the core team. This will help
conceal the business process and also improve the qual-
ity of the code.
Still some issues are not covered in this pilot project
such as the information concealment and quality assur-
ance, which need further study and practice. Or you can
find some valuable information and analysis in paper [9].
6. Acknowledgement
This research is funded by the IBM China Research Lab
and the China 863 project (No. 2007AA04Z150).
REFERENCES
[1] Y. Liu, C. H. Feng, W. Zhao, H. Su, and H. H. Liu, “A
case study on community-enabled SOA application de-
velopment,” IEEE International Conference on Ser-
vice-Oriented Computing and Application, Newport Beach,
California, June 19-20, 2007.
[2] http://www.apache.org/.
[3] http://sourceforge.net/.
[4] http://www.topcoder.com.
[5] http://www.scriptlance.com/.
[6] http://www.sxsoft.com/.
[7] S. L. Huff, “Outsourcing of information services,” Busi-
ness Quarterly, pp. 62-65, 1991.
[8] T. Oreilly, “Lessons from open-source software develop-
ment,” Communications of the ACM, Vol. 42, pp. 32-37,
1999.
[9] X. Zhou, Y. Liu, et al., “Case study: CFI-enabled applica-
tion development leveraging community resource, 2008
international conference on Service Science, April 17-18,
Beijing.
[10] P. Kruchten, “Rational unified process-an introduction,”
Addison-Wesley, 1999.
[11] A private discussion with Professor Yu Lian from Peking
University.