
2 THE PROPOSED PROCESS 
We see an application as a set of inter-related 
components. Each component has a functionality, 
expressed as a set of functions, and encapsulates and 
manages its own data: this is the component 
paradigm, derived from object-orientation and 
today's standard of development. 
Let us consider we have at our disposal many 
small off-the-shelf components, stored in 
appropriate component repositories. Each one covers 
a precise elementary function, an atom of 
functionality – for example file management, 
database access, GUI display mechanisms, text 
translation, HTML pages reading from URLs, 
elementary functions for text processing, etc. More 
simply than the concept of semantic component 
(Kaiya, 2005; Sjachyn, 2006; Hai, 2006), we 
propose each component is described through a 
semantic card which contains notably the goal of the 
component, expressed in natural language form and 
describing clearly what the component really does, 
what its functions are and which data it manipulates. 
Through an appropriate process we expose in 
detail below, the meaning of the sentence 
representing the component's goal - its semantics – 
can be determine and expressed in terms of an 
appropriate computable data structure. Thus, the 
idea is to mark every semantic atom of functionality 
with their appropriate semantic data structure. 
We also have at our disposal a specification 
document containing requirements describing what 
the application will do, what its functional and non-
functional features are. The requirements are a set of 
sentences expressed in natural language. Each 
sentence has a meaning which can be found out by 
using the same process. Each sentence, i.e. each 
piece of specification, each atom of requirement, can 
therefore be evaluated and marked, and each 
sentence will receive its own semantic data.  
Notice that this process is different than an 
ontology-based requirement analysis approach 
(Kaiya, 2005) – an ontology (McGuinness, 2004) is 
a formal description of the concepts manipulated in 
a given domain and of relationships between these 
concepts. Here, no external ontology is used to help 
requirements analysis, because semantics is 
extracted from the text itself. 
Sentences that compose requirements are 
logically linked to each other. Then, it is possible to 
determine a requirement network by scanning links 
between requirement atoms: this browsing will 
determine the structure of the 'specification 
molecule' – the molecule that describes the problem.  
Analyzing lots of specifications within the 
context of numerous industrial projects developed 
with an object-oriented approach (Larvet, 1994) has 
led us to observe that a link between two different 
requirements in the specification always leads to a 
link between the classes implementing these 
requirements. Indeed, two pieces of requirement are 
linked to each other when they both talk about a 
given data, constraint, functionality or feature of the 
targeted application. Then, the same link exists 
between the components implementing these 
requirements. 
Consequently, it makes sense to consider that 
links between the bricks of the problem have a 
similar correspondence to links between the blocks 
of the solution. In other terms, problem structure – 
'specification molecule' – is isomorphic to solution 
structure – 'design molecule'.  
  Our proposed process consists of three steps: 
1.  finding the components whose semantic 
distance is the shortest with semantic atoms of 
requirements; 
2.  organizing these components in order to 
constitute the 'solution molecule', i.e. the initial 
architecture of the application – this initial 
design being made by replicating the problem 
molecule and using solution atoms instead of 
problem atoms – but these kinds of atoms do 
not have exactly the same nature, so the initial 
component interaction model has to be 
optimized; and 
3.  optimizing the structure of solution molecule in 
order to determine the best component 
interaction model.  
Within this approach, the initial component 
interaction model – corresponding to the initial 
design of the future application - is built from  
relationships between application's requirements: an 
association between two requirements will 
determine an association between the two 
components that cover these requirements.  
3 SEMANTIC CARDS FOR 
COMPONENTS 
Semantic cards (semCards) formally describe the 
small off-the-shelf components that are used to build 
applications. Each semCard contains the goal of the 
component and the list of its public functions with 
their input and output data. We propose a semCard 
has an XML representation where input and output 
data are described with three main attributes:  
ENASE 2008 - International Conference on Evaluation of Novel Approaches to Software Engineering
48