<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JSEA</journal-id><journal-title-group><journal-title>Journal of Software Engineering and Applications</journal-title></journal-title-group><issn pub-type="epub">1945-3116</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jsea.2017.104019</article-id><article-id pub-id-type="publisher-id">JSEA-75375</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Complexity Measure of Software Composition Framework
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Nalinee</surname><given-names>Sophatsathit</given-names></name><xref ref-type="aff" rid="aff1"><sub>1</sub></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><label>1</label><addr-line>Faculty of Science, Suan Sunandha Rajabhat University, Bangkok, Thailand</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>tnalinee@gmail.com</email></corresp></author-notes><pub-date pub-type="epub"><day>06</day><month>04</month><year>2017</year></pub-date><volume>10</volume><issue>04</issue><fpage>324</fpage><lpage>337</lpage><history><date date-type="received"><day>February</day>	<month>15,</month>	<year>2017</year></date><date date-type="rev-recd"><day>Accepted:</day>	<month>April</month>	<year>10,</year>	</date><date date-type="accepted"><day>April</day>	<month>13,</month>	<year>2017</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  This article proposes a pragmatic approach to software composition based on matching criteria by mimicking integrated hardware counterpart. The tangible value of consumer goods as described by Cox instills this logical derivation of the proposed approach. As software gradually matures in component form, various software compositions can be systematically assembled from related existing software. Two application software are composed based on their functionality matching. Their composition complexities are measured by function point. The total effort unveils a noteworthy finding that high complexity software demands larger effort to deploy. Thus, the proposed software composition framework not only offers the freedom of development mandates to the development team, but also broadens the horizon of cost and project evaluations by arriving at the proper mix of constituent components in the software product.
 
</p></abstract><kwd-group><kwd>Software Composition</kwd><kwd> Functionality Matching</kwd><kwd> Function Point</kwd><kwd> Complexity Measure</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>The proliferation of software application in daily operations is undeniably deep- rooted and intertwined with every fabric of life. Complicated as software systems are, they evolve in much the same manner as the chaotic world of their creator. The advent of personal computer has brought about myriad of applications operated and supported by software bundles. Yet no one complains about the shortcomings of these heterogeneous software systems created by unassociated developers that were never meant to interoperate. Nonetheless, new development paradigms such as structured, modular, object-oriented, and aspect- oriented approaches were employed to accommodate and exploit software applications to their fullest extent. Business values were added, whereby new software services were created. This in turn elevated software use to a new level of sophistication. Strategic software application has transformed the development paradigm into component-based development (CBD). As such, new software compositions can be deployed with less effort by means of reuse, plug-and-play, and other composition techniques. The evidence will become clearer as development efforts are measured quantitatively by means of Function Point established by Albrecht, et al. [<xref ref-type="bibr" rid="scirp.75375-ref1">1</xref>] .</p><p>Meanwhile, software architects and engineers are working hard to mimic the design and construction processes of its counterpart. Hardware components are standardized to furnish product diversification. Special purpose hardware can be fabricated to fulfill the desired functionality in a relatively straightforward and time/cost saving manner. The design and construction processes are conceptually and technically similar to each other since the processes receive greater level of attention and scrutiny to be reused, streamlined, and automated. They are firmly established as tangible goods [<xref ref-type="bibr" rid="scirp.75375-ref2">2</xref>] . Software products, on the other hand, must have gone through various development stages before delivery, yet they are still far from standardization in comparison to their hardware counterpart.</p><p>Bearing such problems in mind, one of the new challenges in software development is how to build software by composition technique from the existing software or software components. The principal consideration is to determine how well the constituent components interoperate. This implies matching of component functionalities. The issue will be further explored in the remaining sections of this article.</p><p>This paper is organized as follows. Section 2 recounts some related work on software component. Section 3 describes the proposed software component and its matching criteria. A concise case study is given to demonstrate the viability and performance of the proposed approach in Section 4. Section 5 presents some final thoughts and future enhancement.</p></sec><sec id="s2"><title>2. Related Work</title><p>Software composition is an approach to building software applications using related existing software. The notion has been around for some time such as Sun’s Jini environment [<xref ref-type="bibr" rid="scirp.75375-ref3">3</xref>] . The composition of software and its components brings about a new paradigm of software creation, i.e., software composition through existing components. Such a notion entails various mechanisms that allow software components to be plugged-in and interacted in creating a new application. Numerous efforts have been attempted to unify concepts, axioms, and relationships within and among software domains. The goals are to expand the horizon of technologies, implementations, and other concrete details to cope with software advancement. The advent of the Internet technology opens a whole new realm of development paradigms. Development life cycle shortens. Third party outsourcing becomes pragmatic alternatives of development effort. The choice does not come without certain prices: well-defined interface, deployment policy, verification/monitoring/maintenance of software components, and integration of operations.</p><p>One of the prominent technique was established by Parnas [<xref ref-type="bibr" rid="scirp.75375-ref4">4</xref>] that used keyword in context (KWIC), consisting of task, a set of lines of text as input, and the set of all circular shift of all lines in alphabet order as output. He was the first to describe how software architecture guided modifiability via shared data model and data abstraction model. As the scale of software functions and operations expands, arrays of support services and measurements are called for. Various research endeavors have been attempted on software engineering environments [<xref ref-type="bibr" rid="scirp.75375-ref5">5</xref>] [<xref ref-type="bibr" rid="scirp.75375-ref6">6</xref>] . Ironically, software engineering environments in primitive integrated development environment (IDE) forms have been around since the introduction of Ada Programming Support Environment (APSE). APSE and its derivatives, Common APSE Interface Set, (CAIS) [<xref ref-type="bibr" rid="scirp.75375-ref5">5</xref>] , as well as their competing development environment family―the Portable Common Tool Environment (PCTE) and PCTE+ [<xref ref-type="bibr" rid="scirp.75375-ref6">6</xref>] , were the two most comprehensive but homogeneous Integrated Programming Support Environments (IPSE) then. More environment specifics, such as PNMPI inter-tool communication [<xref ref-type="bibr" rid="scirp.75375-ref7">7</xref>] , offered dynamic loading and concurrent use at the expense of some infrastructure compliance overhead.</p><p>The expansion of distributed processing also imposes additional interoperability requirements among software composition techniques. Interoperability is usually achieved through API, message interfaces, command-line options [<xref ref-type="bibr" rid="scirp.75375-ref8">8</xref>] , as well as an information structure model describing the communication bindings between Tool Communications [<xref ref-type="bibr" rid="scirp.75375-ref9">9</xref>] structures. These endeavors exemplify the needs for resolving heterogeneity that may exist among software composition. Some approaches handled the issue by means of Workflow Management Coalition [<xref ref-type="bibr" rid="scirp.75375-ref10">10</xref>] , as well as meta-data and ontology mechanisms [<xref ref-type="bibr" rid="scirp.75375-ref11">11</xref>] to ensure reliable operation of intercommunicating systems.</p><p>Modern software development is fast-paced and short-lived. New releases come out every other week. Competing apps are available for test drive on a weekly basis. The development process has to adapt COTS components that take care of the aforementioned technical issues without reinventing the wheel. Thus, the emphasis should be focused on software composition guideline and technique that permit timely and correctly functioned software. Unfortunately, the irreducible essence such as complexity, conformity, changeability, and invisibility [<xref ref-type="bibr" rid="scirp.75375-ref12">12</xref>] make software construction difficult. We will look into some of software composition issues to establish a proposed software composition framework. Some details will be further elaborated in the next section.</p></sec><sec id="s3"><title>3. Proposed Approach</title><p>As software operations span the distributed computing networks, conventional software/tool interoperability through API, message interfaces, and command- line options, serve as a comprehensible and convenient interface. The notion of Component Mill architecture [<xref ref-type="bibr" rid="scirp.75375-ref13">13</xref>] furnishes an infrastructure for component integration in heterogeneous environments by exposing the meta-component model and constructs to supporting technologies. Interoperability enhancement can be further fine-tuned with the help of dynamic and late binding mechanisms as software is executed in the form of a separated application. Unfortunately, these provisions inevitably introduce a new layer of human interconnecting complexity ranging from command language semantic, analysis and design abstractions, user-friendliness overhead, code and style legibility restrictions, and so on.</p><p>Bearing the above issues in mind, we propose a framework for component composition that encompasses the following attributes:</p><p> well-defined component composition technique</p><p> self-contained and loosely-coupled building blocks</p><p>Such provisions call for a suitable integration technique to ensure their proper operations. Modern software development paradigms, prevalent as they are, focus on the commonality of processing format to facilitate interoperability. The good old notion of IDE has been rejuvenated as a means for creating, operating, integrating, storing, retrieving, and maintaining of the desired information. Unfortunately, most IDEs operate on homogeneous basis, whereby foreign data must undergo format conversion upon importation, let alone the software itself. In so doing, the ultimate goal of the IDE as being truly interoperable is defeated. Moreover, the extraneous data and format conversions inevitably introduce additional processing burden that, in many cases, does not justify the efforts in exchange for imperfect conversion and information loss. At any rate, newer IDEs/ IPSEs are more commonplace in development community, e.g., the .NET, EJB, and CORBA, yet still preserve their locality. For all practical composition purposes, any foreign software or tools must comply with the underlying mandate in order to co-exist.</p><p>The proposed framework for software composition matching will therefore entail flexible and extensible development methodology of problem solving software components. In order to align different software functionalities with user’s requirements, all pertinent interfaces must, to some degree, match with the requirements. The principal directive of the proposed composition framework is the matching strategy that covers the constituent components. Case in point, as depicted in <xref ref-type="fig" rid="fig1">Figure 1</xref>, the matching strategy sets a stage for three software component development, namely, A, B, and C. Component A requires that its input be exclusive, while B and C presumably share common input interface. Once complete, input artifacts must undergo the same set of development transition so as to preserve the matching requirement. Nonetheless, the eventual output operations are individually crafted to best satisfy each matching requirement so established.</p><p>One compelling issue that stands out in the composition process is software component acquisition. From reuse to complete rewrite (the latter is apparently an extreme case which often results in scope creep and corruption), the difficulty is matching component with available components. At the heart of the matching</p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> Software composition framework</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x2.png"/></fig><p>process, two considerations that must be taken into account are service requirement identification and granularity of service. Praserttitipong, et al. [<xref ref-type="bibr" rid="scirp.75375-ref14">14</xref>] [<xref ref-type="bibr" rid="scirp.75375-ref15">15</xref>] proposed some formalities of requirement identification to quantitatively assess the matching process. Three component acquisition requirements were established, namely, plug-in match, subsume match, and exact match. Situations arise when selective or no match occurs, thereby matching scenarios precipitated from the above requirements are proposed and summarized in <xref ref-type="fig" rid="fig2">Figure 2</xref>. The plug-in match of <xref ref-type="fig" rid="fig2">Figure 2</xref>(a) represents extraneous functions offered by the composite software (H) that exceed what the user (n) requests. Thus, the set of available functions becomes,</p><disp-formula id="scirp.75375-formula64"><graphic  xlink:href="http://html.scirp.org/file/2-9302386x3.png"  xlink:type="simple"/></disp-formula><p>where extra &#206; S<sub>H</sub>. By the same token, subsume match yields <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/2-9302386x4.png" xlink:type="simple"/></inline-formula>, which still falls short of user satisfaction. The exact match, on the contrary, is the ideal scenario of software composition, while miss-out match is obviously irrelevant. The partial match, in general, calls for some degrees of customized tailoring in the form of wrapper or derivation. As such, it remains to be a problematic matching issue to reckon with.</p><p>From the development standpoint, software component is fundamentally composed of a set of operational methods that, in turn, are derived from some predecessor base methods. Let H<sub>i</sub> and n<sub>i</sub> denote the i<sup>th</sup> component of the existing software and user’s request, respectively. Notationally, H<sub>i</sub> = {sm<sub>1</sub>, sm<sub>2</sub>, …, sm<sub>j</sub>} denotes the set of constituent component methods, i.e., component method 1, component method 2, and so on. Similarly, n<sub>i</sub> = {rm<sub>1</sub>, rm<sub>2</sub>, …, rm<sub>k</sub>} denotes the set of the matching methods, i.e., matching method 1, matching method 2, and</p><fig-group id="fig2"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Software component acquisition matching: (a) plug-in match; (b) subsume match; (c) exact match; and (d) partial/miss-out match.</title></caption><fig id ="fig2_1"><label> (b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x5.png"/></fig><fig id ="fig2_2"><label>(c)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x6.png"/></fig></fig-group><p>so on. Moreover, j &#185; k. The partial match process is to find subsets of H<sub>i</sub> that cover as much of each rm<sub>i</sub> as possible. The partial matching procedure proceeds as follows:</p><p>Initialization</p><p>For each rm<sub>i</sub> of n<sub>i</sub></p><p>Get first method of sm<sub>i</sub></p><p>While not ((match or partial match [rm<sub>i</sub>, sm<sub>i</sub>]) and end_method_list)</p><p>n<sub>i</sub>' &#200; rm<sub>i</sub> // collect set complement n<sub>i</sub>'</p><p>Get next method of sm<sub>i</sub></p><p>If match rm<sub>i</sub> or partial match rm<sub>i</sub></p><p>n<sub>i</sub> &#200; (sm<sub>i</sub> or n<sub>i</sub>\sm<sub>i</sub>) // \ symbol denotes partial match</p><p>end_for each</p><p>Thus, the resulting n<sub>i</sub> will be partially covered by some sm<sub>i</sub> of H<sub>i</sub> that match the corresponding rm<sub>i</sub>, i.e., n<sub>i</sub> = {sm<sub>i</sub>| \sm<sub>i</sub>, where sm<sub>i</sub> &#206; H<sub>i</sub>, sm<sub>i</sub> &#204; rm<sub>i</sub>}. The miss- out match of sm<sub>j</sub>, denoted by n<sub>i</sub>' = {rm<sub>i</sub>, where rm<sub>i</sub> &#206; n<sub>i</sub>}, constitutes the set complement of n<sub>i</sub> which must be either imported or purchased from external sources, locally built, or outsourcing under the pre-established governance. The last two choices required additional customization efforts.</p><p>Irrespective of which matching process will fit final business process, it is apparent that the proposed framework by and large offers dynamic inherent provisions for different software component composition schemes. As a consequence, development delegation can stay focus on the more important tailoring strategy, yet still operationally maintain composition compliance with user’s requirements.</p></sec><sec id="s4"><title>4. Case Study</title><p>A small web-database application was set up to demonstrate the viability of the proposed composition framework. The application consisted of a conventional front-end software and standard back-end database management systems (DBMS). The software components were mutually independent but logically connected through a software connectivity map. The configuration is depicted in <xref ref-type="fig" rid="fig3">Figure 3</xref>.</p><p><xref ref-type="fig" rid="fig4">Figure 4</xref>(a) and <xref ref-type="fig" rid="fig4">Figure 4</xref>(b) illustrate a few sample class diagrams of the front-end application interfaces (APIs) to interact with the users. <xref ref-type="fig" rid="fig5">Figure 5</xref> shows the available functionality of a typical DBMS.</p><p>The very core of this web-database application is the design and construction of the software connectivity map that must follow the established (business) operational objectives and Internet standards. The map construction is carried out as follows:</p><p>1. set up the matching policy according to the established operational objectives.</p><p>2. design, either in-house or delegation/outsourcing, the required front-end API components and back-end DBMS functions based on the proposed software component acquisition requirements.</p><p> initialization</p><p>-collect the number of API classes and their corresponding attributes rm<sub>i</sub> in n<sub>i</sub></p><p>-collect the number of entity templates and their attributes from the available DBMS in template<sub>i</sub></p><p> for each rm<sub>i</sub> of n<sub>i</sub></p><p>get all pertinent attributes that are manipulated by the class method</p><p>while not (match([attrib_class_method<sub>i</sub>, template<sub>i</sub>]) and end_attrib_class_ method_list)</p><p>get next attrib_class_method</p><p>if match rm<sub>i</sub> or partial match rm<sub>i</sub></p><p>n<sub>i</sub> &#200; (template<sub>i</sub> or n<sub>i</sub>\template<sub>i</sub> )</p><p>end_for each</p><p>3. consider for all practical composition purposes, plug-in match is the best scenario since extra DBMS functions available mean ease of future feature enhancement. Other matching scenarios such as exact match yield a sufficient solution but do not leave any room for expansion; subsume match and partial match call for additional development efforts, time, and costs.</p><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Software operational mapping between front-end and back-end</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x7.png"/></fig><fig-group id="fig4"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> (a) Front-end class diagram; (b) Front-end class diagram.</title></caption><fig id ="fig4_1"><label>(b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x8.png"/></fig><fig id ="fig4_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x9.png"/></fig></fig-group><fig id="fig5"  position="float"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> Samples back-end DBMS functions</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x10.png"/></fig><p>4. conduct detailed design as a transitional tailoring to adjust the software composition in concert with operating formats and standards. In this case, devise all front-end API artifacts, logic, look and feel, etc., following the Internet operational standards and services. This may require involvement as the development life cycle of new e-business practices, policies, law enforcement, and technology shrink. Consultation with the intermediaries is thus necessary so that minimal development endeavor will be expended. Latest available IDE service supports, ontology discovery, and the likes are also carried out at this stage. As depicted in <xref ref-type="fig" rid="fig6">Figure 6</xref>, the Person_API class was split into three message groups, namely, secured_login/PK_iden/access_rights, and NULL/NO_ iden/access_list, representing registered and general users, respectively.</p><p>5. a final touch-up is performed to ensure that the application complies with the mediation interface, i.e., browser, platform, and other communication disciplines.</p><p>Effort assessment of application (or apps) was measured by Function Point (FP). The method was first defined by Albrecht [<xref ref-type="bibr" rid="scirp.75375-ref16">16</xref>] as “a methodology to estimate</p><fig id="fig6"  position="float"><label><xref ref-type="fig" rid="fig6">Figure 6</xref></label><caption><title> Message splitting</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x11.png"/></fig><p>the amount of the “function” the software is to perform, in terms of the data it is to use (absorb) and to generate (produce). The “function” is quantified as “function points”, essentially, a weighted sum of the numbers of “inputs”, “outputs”, “master files”, and “inquiries” provided to, or generated by, the software.” The method was later refined by Albrecht and Gaffney [<xref ref-type="bibr" rid="scirp.75375-ref1">1</xref>] . Thus, the Function Point Analysis (FPA) is essentially based on five different functional artifacts which are further exemplified by Finnie, et al. [<xref ref-type="bibr" rid="scirp.75375-ref17">17</xref>] as shown in <xref ref-type="table" rid="table1">Table 1</xref>. For example, a simple app consisting of two inputs, two outputs, three inquiries, one interface file, and one internal file will be equal to 35 FP (2 * 3 + 2 * 4 + 3 * 3 + 1 * 5 + 1 * 7).</p><p>The experimental data from the above case study are shown in <xref ref-type="table" rid="table2">Table 2</xref>. Factors of measurement were classified in accordance with the above Function Point allocation guideline. Thus, the external input, output, inquiry, interface file, and internal file were classified as simple, average, average, complex, and average, whose scores were 3, 5, 4, 10, and 10, respectively.</p><p><xref ref-type="table" rid="table3">Table 3</xref> shows the experimental results obtained from two apps, namely, 1 and 2 (to keep their anonymity) having different functional components. The number of external inputs, outputs, inquiries, interface files, and internal files are also listed. The corresponding function points were determined according to the above guideline. The matching assessment was determined from their matching percentage of service functionality. The actual development efforts were taken by man-hour (m-h).</p><p><xref ref-type="fig" rid="fig7">Figure 7</xref>(a) and <xref ref-type="fig" rid="fig7">Figure 7</xref>(b), <xref ref-type="fig" rid="fig8">Figure 8</xref>(a) and <xref ref-type="fig" rid="fig8">Figure 8</xref>(b) depict the proportional FP and total effort results by apps, respectively. It can be drawn from the results that the higher the FP is, the more effort must be expended in order to tailor the service to suit the user’s needs.</p><p><xref ref-type="fig" rid="fig9">Figure 9</xref>(a) and <xref ref-type="fig" rid="fig9">Figure 9</xref>(b) show the FP and total effort of all components from both apps, respectively. The same conclusion can be drawn of the relationship between FP and total effort.</p><fig-group id="fig7"><label><xref ref-type="fig" rid="fig7">Figure 7</xref></label><caption><title> (a) Function point by apps; (b) Function point by apps.</title></caption><fig id ="fig7_1"><label> (b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x12.png"/></fig><fig id ="fig7_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x13.png"/></fig></fig-group><fig-group id="fig8"><label><xref ref-type="fig" rid="fig8">Figure 8</xref></label><caption><title> (a) Total effort by apps; (b) Total effort by apps.</title></caption><fig id ="fig8_1"><label> (b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x14.png"/></fig><fig id ="fig8_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x15.png"/></fig></fig-group><fig-group id="fig9"><label><xref ref-type="fig" rid="fig9">Figure 9</xref></label><caption><title> (a) FP and total effort; (b) FP and total effort.</title></caption><fig id ="fig9_1"><label> (b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x16.png"/></fig><fig id ="fig9_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/2-9302386x17.png"/></fig></fig-group><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Function point allocation</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Description</th><th align="center" valign="middle" >Simple</th><th align="center" valign="middle" >Average</th><th align="center" valign="middle" >Complex</th></tr></thead><tr><td align="center" valign="middle" >External Input</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >6</td></tr><tr><td align="center" valign="middle" >External Output</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >7</td></tr><tr><td align="center" valign="middle" >External Inquiry</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >6</td></tr><tr><td align="center" valign="middle" >External Interface File</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >10</td></tr><tr><td align="center" valign="middle" >Internal File</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >10</td><td align="center" valign="middle" >15</td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Experimental data</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Factor</th><th align="center" valign="middle" >Type</th><th align="center" valign="middle" >Score</th></tr></thead><tr><td align="center" valign="middle" >External Input</td><td align="center" valign="middle" >simple</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >External Output</td><td align="center" valign="middle" >average</td><td align="center" valign="middle" >5</td></tr><tr><td align="center" valign="middle" >External Inquiry</td><td align="center" valign="middle" >average</td><td align="center" valign="middle" >4</td></tr><tr><td align="center" valign="middle" >External Interface File</td><td align="center" valign="middle" >complex</td><td align="center" valign="middle" >10</td></tr><tr><td align="center" valign="middle" >Internal File</td><td align="center" valign="middle" >average</td><td align="center" valign="middle" >10</td></tr></tbody></table></table-wrap><table-wrap id="table3" ><label><xref ref-type="table" rid="table3">Table 3</xref></label><caption><title> Experimental results</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Apps</th><th align="center" valign="middle" >Component</th><th align="center" valign="middle" >X-input</th><th align="center" valign="middle" >X-output</th><th align="center" valign="middle" >X-inquiry</th><th align="center" valign="middle" >X-interface File</th><th align="center" valign="middle" >X-Internal File</th><th align="center" valign="middle" >FP</th><th align="center" valign="middle" >Effort(m-h)</th><th align="center" valign="middle" >%match</th><th align="center" valign="middle" >Total effort</th></tr></thead><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >A</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >10</td><td align="center" valign="middle" >27</td><td align="center" valign="middle" >37</td><td align="center" valign="middle" >100</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >B</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >18</td><td align="center" valign="middle" >21</td><td align="center" valign="middle" >42</td><td align="center" valign="middle" >159</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >C</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >30</td><td align="center" valign="middle" >40</td><td align="center" valign="middle" >156</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >D</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >15</td><td align="center" valign="middle" >25</td><td align="center" valign="middle" >34</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >E</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >20</td><td align="center" valign="middle" >27</td><td align="center" valign="middle" >38</td><td align="center" valign="middle" >205</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >I</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >33</td><td align="center" valign="middle" >26</td><td align="center" valign="middle" >60</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >J</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >31</td><td align="center" valign="middle" >24</td><td align="center" valign="middle" >48</td><td align="center" valign="middle" >357</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >K</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >23</td><td align="center" valign="middle" >21</td><td align="center" valign="middle" >14</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >L</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >20</td><td align="center" valign="middle" >21</td><td align="center" valign="middle" >35</td><td align="center" valign="middle" >147</td></tr><tr><td align="center" valign="middle"  colspan="10"  >Total</td><td align="center" valign="middle" >1232</td></tr></tbody></table></table-wrap><p>A noteworthy benefit precipitating from the proposed framework that was conducive toward the complete case study shown in <xref ref-type="fig" rid="fig3">Figure 3</xref> was freedom of development mandates. Front-end development team, in particular, could focus on their user requirements to best tailor the final deliverable with little concern with back-end integration issues. Similarly, back-end development team could procedurally build customized (or generalized) functionalities and modules to support different functionalities. New software components could be established through this operational map reuse as generic connectors. Therefore, the associated costs and resources could be procedurally estimated to assess the viability of project management.</p></sec><sec id="s5"><title>5. Conclusion and Future Work</title><p>This article proposes a straightforward software composition framework that complements IDE/IPSE supports to enhance software/tool interoperability. As developers create myriad of software compositions for general or specific purposes, there bounds to be new requirements precipitating from various software applications that call for the software components to co-exist and interoperate. Without attempting to do it all, the proposed approach introduces a software component matching framework to aid in the development of application. The matching process, however, still performs at the component level that from the theoretical point of view does not address the root cause of software integration. Such a limitation is a challenging software architectural research to be further explored. At any rate, the overall provisions entail greater software component interoperability that not only augments the-state-of-the-practice opportunistic software systems development, but also broadens the horizon of cost and project evaluation. It is hoped that the efforts expended on software component composition will arrive at an applicable framework in the same manner as tangible goods already possess.</p></sec><sec id="s6"><title>Cite this paper</title><p>Sophatsathit, N. (2017) Complexity Measure of Software Composition Framework. Journal of Software Engineering and Applications, 10, 324-337. https://doi.org/10.4236/jsea.2017.104019</p></sec></body><back><ref-list><title>References</title><ref id="scirp.75375-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Albrecht, A. and Gaffney, J.J. (1983) Software Function, Source Lines of Code, and Development Effort Prediction: A Software Science Validation. IEEE Transactions on Software Engineering, SE-9, 639-648. https://doi.org/10.1109/TSE.1983.235271</mixed-citation></ref><ref id="scirp.75375-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Cox, B. (1995) No Silver Bullet Revisited. American Programmer Journal, 8.</mixed-citation></ref><ref id="scirp.75375-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Waldo, J. (1999) The JINI Architecture for Network-Centric Computing. Communications of the ACM, 42, 76-82. https://doi.org/10.1145/306549.306582</mixed-citation></ref><ref id="scirp.75375-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Parnas, D.L. (1972) On the Criteria to Be Used in Decomposing Systems into Modules. Communications of the ACM, 15, 1053-1058.  
https://doi.org/10.1145/361598.361623</mixed-citation></ref><ref id="scirp.75375-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Common APSE Interface Set, MIL-STD-1838A, 30 September 1989.</mixed-citation></ref><ref id="scirp.75375-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">ECMA Technical Committee (TC33)—ECMA TR/55 (1990) A Reference Model for Frameworks of Computer-Assisted Software Engineering Environments. European Computer Manufacturers Association, Geneva.</mixed-citation></ref><ref id="scirp.75375-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Schulz, M. and de Supinski, B.R. (2006) A Flexible and Dynamic Infrastructure for MPI Tool Interoperability. International Conference on Parallel Processing, Columbus, 14-18 August 2006, 193-202. https://doi.org/10.1109/icpp.2006.6</mixed-citation></ref><ref id="scirp.75375-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Bao, Y. and Horowitz, E. (1996) A New Approach to Software Tool Interoperability. Proceedings of the 1996 ACM symposium on Applied Computing, Philadelphia, 17-19 February 1996, 500-509. https://doi.org/10.1145/331119.331432</mixed-citation></ref><ref id="scirp.75375-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Harvey, J.G. and Marlin, C.D. (1996) A Layered Operational Model for Describing Inter-Tool Communication in Tool Integration Frameworks. Proceedings of 1996 Australian Software Engineering Conference, Melbourne, 14-18 July 1996, 55-63.  
https://doi.org/10.1109/ASWEC.1996.534123</mixed-citation></ref><ref id="scirp.75375-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">El-Khatib, H.T., Williams, M.H., Marwick, D.H. and Mackinnon, L.M. (2002) Using a Distributed Approach to Retrieve and Integrate Information from Heterogeneous Distributed Databases. The Computer Journal, 45, 381-394.  
https://doi.org/10.1093/comjnl/45.4.381</mixed-citation></ref><ref id="scirp.75375-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Arch-int, N. and Sophatsathit, P. (2003) A Semantic Information Gathering Approach for Heterogeneous Information Sources on WWW. Journal of Information Science, 29, 357-374. https://doi.org/10.1177/01655515030295003</mixed-citation></ref><ref id="scirp.75375-ref12"><label>12</label><mixed-citation publication-type="book" xlink:type="simple">Brooks, F.P. (1986) No Silver Bullet—Essence and Accidental in Software Engineering. In: Kugler, H.-J., Ed., Proceedings of the IFIP 10th World Computing Conference, Elsevier Science, Amsterdam, 1069-1076.</mixed-citation></ref><ref id="scirp.75375-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Sauer, L.D., Clay, R.L. and Armstrong, R. (2000) Meta-Component Architecture for Software Interoperability. Proceedings of the International Conference on Software Methods and Tools, Wollongong, 6-9 November 2000, 75-84.  
https://doi.org/10.1109/swmt.2000.890423</mixed-citation></ref><ref id="scirp.75375-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Praserttitipong, D. and Sophatsathit, P. (2007) A Synopsis Model for Deterministic Behavioral Specifications of an Adaptable Agent. Proceedings of the 5th International Conference on Software Engineering Research, Management and Applications, Busan, 20-22 August 2007, 655-661. https://doi.org/10.1109/sera.2007.35</mixed-citation></ref><ref id="scirp.75375-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Praserttitipong, D. and Sophatsathit, P. (2007) A Framework for Deterministic Intention Specifications of an Agent toward an Incomplete Declared Intention. Proceedings of the 6th IEEE/ACIS International Conference on Computer and Information Science, Melbourne, 11-13 July 2007, 170-175.</mixed-citation></ref><ref id="scirp.75375-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Albrecht, A.J. (1979) Measuring Application Development Productivity. Proceedings of IBM Applications Development Symposium, Monterey, 14-17 October 1979, 83.</mixed-citation></ref><ref id="scirp.75375-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Finnie, G.R., Wittig, G.E. and Desharnais, J.-M. (1997) A Comparison of Software Effort Estimation Techniques: Using Function Points with Neural Networks, Case-Based Reasoning and Regression Models. Journal of Systems and Software, 39, 281-289.</mixed-citation></ref></ref-list></back></article>