<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Agile model-driven engineering of financial applications</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Kevin</forename><surname>Lano</surname></persName>
							<email>kevin.lano@kcl.ac.uk</email>
							<affiliation key="aff0">
								<orgName type="department">Dept. of Informatics King&apos;s</orgName>
								<orgName type="institution">College London</orgName>
								<address>
									<settlement>London</settlement>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Howard</forename><surname>Haughton</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Dept. of Informatics King&apos;s</orgName>
								<orgName type="institution">College London</orgName>
								<address>
									<settlement>London</settlement>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Sobhan</forename><surname>Yassipour-Tehrani</surname></persName>
							<email>sobhan.yassipourtehrani@kcl.ac.uk</email>
							<affiliation key="aff0">
								<orgName type="department">Dept. of Informatics King&apos;s</orgName>
								<orgName type="institution">College London</orgName>
								<address>
									<settlement>London</settlement>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Hessa</forename><surname>Alfraihi</surname></persName>
							<email>hessa.alfraihi@kcl.ac.uk</email>
							<affiliation key="aff0">
								<orgName type="department">Dept. of Informatics King&apos;s</orgName>
								<orgName type="institution">College London</orgName>
								<address>
									<settlement>London</settlement>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Agile model-driven engineering of financial applications</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">8734119F6EB872C378B5C7080999A24A</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T01:15+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Flexibility and agility are key properties for financial applications development: systems need to be easy to change and evolve to keep up with changing market conditions and opportunities, and changes in the regulatory environment.</p><p>In many cases, Excel with VB is the main platform used for the development of applications in the finance industry. This offers advantages of flexibility and user customisation of applications in rapid development cycles. However, this dependence upon a proprietary software package causes problems when applications must be migrated to an alternative platform, or when precise control over functionality is needed. Modeldriven development (MDD) and model transformations have a good potential for improving these aspects of financial development. In this paper, we describe techniques that enable the use of Excel as an MDD front-end for the specification and development of financial applications in a rigorous manner.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>Software development in the financial services sector is usually carried out on Excel and VBA-based platforms, with modelling and prototyping performed using Excel <ref type="bibr" target="#b7">[8]</ref>, <ref type="bibr" target="#b6">[7]</ref>. After prototyping, the Excel/VBA solution may be manually re-coded in an implementation platform (Figure <ref type="figure" target="#fig_0">1</ref>). This approach has deficiencies with regard to maintainability, software architecture and documentation. Separate spreadsheet-based applications are difficult to integrate into composite systems, and lack the structure and modularity of more advanced programming environments. (i) they involve complex mathematical computations, which need to be specified in a clear and comprehensible manner and related to the appropriate finance theory, and (ii) they have high requirements for efficiency and accuracy. In addition, (iii) a high degree of flexibility and agility is typically necessary.</p><p>Our solution to these challenges involved using agile MDD and executable modelling as follows:</p><p>• Specification of applications in an executable UML dialect, UML-RSDS <ref type="bibr" target="#b8">[9]</ref>, which supports efficient code generation in Java, C#, C and C++.</p><p>• Adoption of an agile process based on the Scrum method <ref type="bibr" target="#b13">[14]</ref>.</p><p>• Using Excel to provide a user-friendly means of defining UML-RSDS specifications, so that end-users do not need to write or understand OCL.</p><p>We considered that this approach was suitable to address issues (i), (ii) and (iii), because UML-RSDS supports high-level declarative specification of systems using UML class diagrams and use cases, enabling the system specification to be expressed in the context of relevant financial concepts, and to be structured in a systematic manner. In addition, it supports the execution of specifications by the synthesis of designs and programming language implementations. UML-RSDS supports agility by enabling rapid modification of system specifications: only one application model (integrating class diagrams and use cases) needs to be modified, in contrast to MDD approaches which involve multiple linked models whose consistency needs to be managed at each specification change. The integration of agility and MDD in this case is achieved by making the MDD aspect as lightweight as possible, and by adopting a 'model as code' viewpoint, with agile practices applied to the application models instead of the code.</p><p>In Section II we give an overview of the approach. In Sections IV and V we describe an example financial application we have developed. Section VI gives related work, and Section VII gives conclusions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. INTEGRATING AGILE AND MODEL-DRIVEN DEVELOPMENT</head><p>The key principles of agile development include (agilemanifesto.org): (i) satisfy the customer through early and continuous software delivery; (ii) welcome changing requirements; (iii) deliver working software frequently (every 2 weeks to every 2 months); (iv) business people and developers to work together daily; (v) rely on face-to-face communication to convey information; (vi) continuous attention to software quality; (vii) simplicity is essential.</p><p>Integration of agile and MDD aims to achieve these principles in the context of model-centered development, instead of traditional code-centered development. Research on integration has produced a number of agile MDD approaches, such as MDD-SLAP <ref type="bibr" target="#b14">[15]</ref> and Hybrid MDD <ref type="bibr" target="#b3">[4]</ref>. These usually focus on a particular domain, and do not cover all lifecycle stages. In contrast, UML-RSDS can be used as the basis of a general-purpose agile MDD approach, with specialised interfaces and tools for particular domains. We adopt the ideas of three-phase iterations from <ref type="bibr" target="#b14">[15]</ref> and parallel tooling teams from <ref type="bibr" target="#b3">[4]</ref> (as shown in Figure <ref type="figure" target="#fig_1">2</ref>). The following MDD practices are used: (i) metamodelling; (ii) transformations; (iii) executable modelling.</p><p>Within each iteration, phases of requirements analysis, specification, implementation and testing are applied to each task, using exploratory prototyping based on partial specifications, and review of the prototypes/specifications with stakeholders/team members. Figure <ref type="figure" target="#fig_1">2</ref> shows these cycles for the main team on the LHS. Reuse of components, and the contribution of new/updated components to a library, can take place during these iterations. A tool development team applies a similar agile process (on the RHS) to respond to tool support requirements from the main team.</p><p>Prototyping and testing of completed specifications is followed by integration with other software elements, and iterative revision of specifications as necessary to pass tests and efficiency requirements.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. MDD SPECIFICATION USING EXCEL</head><p>Class diagrams and use cases are the core specification notations used in UML-RSDS to specify applications (including model transformations). OCL constraints are used to define the logical postconditions of operations and use cases, and to define the procedural steps (activities) of their designs <ref type="bibr" target="#b8">[9]</ref>. Many financial applications involve processing of a similar form, where some source data, such as market data, is used as input to derive secondary information and analysis via various functions and procedures. For example, the derivation of the internal rate of return or Macaulay duration for a coupon bond, or the derivation of a price for a derivative security, based on market information.</p><p>In Excel, the application data is typically laid out as a table, with columns for each significant attribute of the data (Table Bond in Figure <ref type="figure" target="#fig_3">3</ref>). Derived data may be placed in cells of additional columns of the table, or in the cells of separate tables (such as BondYield). The second situation corresponds directly to rules of migration/refinement model transformations, where A is a source class (eg., Bond), and B a target (eg., BondYield). The correspondence between Excel and UML is as follows: </p><formula xml:id="formula_0">• An Excel</formula><formula xml:id="formula_1">A :: true ⇒ B→exists(b | b.BId = AId &amp; b.T = f (S))</formula><p>in cases where f expects single data values, and to a constraint</p><formula xml:id="formula_2">:: AS = f (A→collect(S)) ⇒ B→exists(b | b.T = AS)</formula><p>in cases where f expects aggregate data (eg., f is a function such as the SUM, AVERAGE, etc of a column/sequence of individual data items).</p><p>In the first case, each instance (table row) of A is mapped to an instance (table row) of B. In the second, a single B instance is created with its attribute values derived from aggregates of A data.</p><p>The dataflow dependencies of the spreadsheet must be acyclic <ref type="bibr" target="#b6">[7]</ref>, that is, if data item y depends on data x directly or indirectly, there cannot be a dependency in the reverse direction. In the UML representation, this means that the constraints can be ordered in a sequence where all data that is read by one constraint Ci is directly available or has been produced by earlier constraints Cj for j &lt; i. This is the usual organisation of use case constraints in UML-RSDS, using the Phased Construction transformation design pattern <ref type="bibr" target="#b9">[10]</ref>.</p><p>An example is shown in Figure <ref type="figure" target="#fig_8">5</ref>, which is derived from In our style of Excel specification, logical expressions such as Bond.Settlement are used to denote data items/groups, instead of physical spreadsheet locations/ranges such as B7:B17. Logical specifications of Excel functions and other financial and numerical functions are provided in ExcelLib using OCL, facilitating analysis and formal verification. In the reverse direction, the tables of a spreadsheet can be synthesised from a class diagram: each concrete class maps to a table, with the attributes of the class mapped to table columns.</p><p>In Sections IV and V we describe two iterations of an agile MDD case study in finance, for a bond-pricing application. This was developed in collaboration with an industrial expert in financial software construction.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. CASE STUDY ITERATION 1: INTERNAL RATE OF RETURN</head><p>The bond-pricing application iteration 1 computes the internal rate of return (IRR) of a bond. The IRR measures the quality of an investment: the effective rate at which the investment returns value over its term. A coupon bond consists of a series of cash flows: an initial payment (-ve cash flow), followed by coupon payments/dividends (+ve cash flows to the investor), and repayment of capital at the end of term (Figure <ref type="figure" target="#fig_5">4</ref>). Eg.: a £100 bond is purchased for a price of £105, with an investment term of 10 years, it pays 8% annual interest bi-annually (20 payments of £4), then £100 capital repayment (redemption) at the end of the term. In contrast, a zero-coupon bond only pays back accumulated gains and capital at the end of its term. Time can be measured in days, months, years, etc.: r will be the rate wrt this measure. Generally, r can be estimated by numerical approximation techniques, eg., the secant method or bisection. Excel uses the secant procedure to estimate the IRR, in the function RATE(npays : int, payment : double, price : double, fv : double) : double where npays is the number of coupon payments to be made, payment is the constant amount of each payment, price is the present value of the investment, and fv (optional) is the redemption amount at termination of the investment. The result value is an approximation to the IRR r. In ExcelLib we provide a mathematical specification of RATE based on the secant procedure. From the user's perspective, they can use RATE in the same way as in Excel. Behind the scenes, they are using the ExcelLib library specification written in OCL, and from this, procedural code in Java, C#, C or C++ can be automatically generated. Note that in our version of OCL, computational numeric types are used: 32-bit and 64-bit integers, and IEEE 754 standard doubleprecision floating-point numbers. This reduces the semantic gap between the specification and implementation, improving verifiability. This creates all the positive cash flows from coupon payments over the lifetime of the bond. (maturity in $Bond is the term of the bond).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>The operation defineFlows1() of</head><p>To derive the IRR of a series of bonds, the user specifies two tables in a spreadsheet, as in Figure <ref type="figure" target="#fig_3">3</ref>. The Bond table identifies the attributes of the Bond class, and their types, whilst the BondYield table also defines the mapping of Bond to BondYield, using the RATE function. The function in cell D12 is RATE((Bond.Maturity -Bond.Settlement) * Bond.Frequency, Bond.Coupon, Bond.Price, 100)</p><p>The UML-RSDS tools convert the spreadsheet to the class diagram of Figure <ref type="figure" target="#fig_8">5</ref> The meaning of this postcondition is that for each Bond instance, a BondYield instance will be produced with its Yield value set to the IRR computed using RATE. In addition, we also compute the discrete Macaulay duration of the bond (the time to maturity of the equivalent zero-coupon bond):</p><formula xml:id="formula_3">duration = (Σ flows.size i=1 flows[i].timePoint * flows[i].amount/ (1 + yield) flows[i].timePoint )/ (Σ flows.size i=1 flows[i].amount/(1 + yield) flows[i].timePoint )</formula><p>This computation can use the previously-computed yield value of each BondYield instance. In the spreadsheet, the value of the Duration column (cell E12) is expressed as:</p><p>DURATION(DATE(Bond.Settlement,1,1), DATE(Bond.Maturity,1,1), Bond.Coupon, BondYield@pre.Yield, Bond.Frequency)</p><p>The @pre annotation indicates that the Yield derived by the preceding equation should be used. A continuous duration function DURA-TIONC is also available.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. CASE STUDY ITERATION 2: YIELD CURVE FITTING</head><p>In iteration 2 of the bond-pricing application, the yield and duration derived in iteration 1 are used as input datapoints for a process which attempts to find the best-fitting yield curve for interest rate data, according to some yield curve model such as the Nelson-Siegal or Nelson-Siegal-Svensson models. The adapted Nelson-Siegal-Svensson (NSS) model <ref type="bibr" target="#b4">[5]</ref> which we use is defined by </p><formula xml:id="formula_4">y(t) = β1 + β2 * (1 − exp(−t/ λ 1 ))/(t/ λ 1 ) + β3 * ((1 − exp(−t/ λ 2 ))/(t/ λ 2 ) − exp(−t/ λ 2 ))</formula><p>This models how the yield y(t) of a bond varies depending on its duration t.</p><p>The yield curve in this model has a long-term rate component (β1), a short-term (2nd factor), and a 'hump' (3rd factor). The problem is to estimate the βi and λ j , given market data -'fitting the curve' to this data. Estimation procedures to find the NSS parameters that fit a given set of market bond data include genetic algorithms (GA) and Matlab's fminsearch using a simplex algorithm <ref type="bibr" target="#b4">[5]</ref>. We use a combination of genetic algorithms and the Nelder-Mead simplex algorithm <ref type="bibr" target="#b11">[12]</ref>. These algorithms are specified using OCL in ExcelLib.</p><p>The adapted Nelson-Siegal-Svensson model is specified in UML-RSDS by the nelsonsiegalx and nsx functions of the finance library class $Bond (Figure <ref type="figure" target="#fig_5">4</ref>). These are then used to evaluate the fitness of a candidate solution (a tuple of values for the parameters β1, β2, β3, λ 1 , λ 2 ), based on the sum of squares of differences between the actual and predicted interest rates for the market data.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>NSS-estimation is performed by an ExcelLib function ESTIMATENSX(yields:</head><p>Sequence(double), durations: Sequence(double)) : Sequence(double). This is called on BondYield.Yield, BondYield.Duration (considered as sequence data) to populate a result table NelsonSiegal.</p><p>ESTIMATENSX initialises a population for a genetic algorithm using the bond interest rate (yield) and duration data, and iterates the genetic algorithm until there is no further improvement in the maximum fitness in the population. The best result is then passed to a numerical optimiser, in our case the simplex algorithm.</p><p>Having derived the NSS parameters, these can then be used to calculate the fair price of bonds of different durations, using a formalisation of the Excel PRICE function. This functionality was developed in iteration 3.</p><p>We compared our formalisation of this bond-pricing procedure with a traditional Excel/VBA solution, in terms of software size, accuracy and efficiency A Java implementation of the UML-RSDS specification was used, applied to a test case of 8 coupon bonds ranging from 1 year to 12 year terms. Code size was reduced from 34K to 22K, accuracy improved from 2 * 10 −4 to 6 * 10 −6 , however execution time increased from 550ms to 730ms, mainly due to use of a genetic algorithm.</p><p>The curve produced from the estimated parameters using our approach is shown in Figure <ref type="figure" target="#fig_9">6</ref>. The Kapital system used by JP Morgan has been a highly successful alternative approach in finance <ref type="bibr" target="#b0">[1]</ref>, enabling financial engineers to quickly prototype and implement new financial products. However, Kapital is based on a specialised platform (Smalltalk). We consider that basing a financial engineering platform on language-independent UML and OCL specifications will provide more flexible and durable support than a language-specific solution. In <ref type="bibr" target="#b10">[11]</ref> we describe the risk evaluation of multiple investment instruments <ref type="bibr" target="#b5">[6]</ref> using UML-RSDS, this direct MDD approach was technically effective but was considered too difficult for financial engineers to use. As an alternative, we investigated the Excel-based approach described here. An application of agile MDD in finance is given in <ref type="bibr" target="#b12">[13]</ref>, however this is focussed on the management of data and message formats instead of numerical computations. In <ref type="bibr" target="#b1">[2]</ref>, spreadsheets are mapped to relational databases in order to optimise the spreadsheets. In <ref type="bibr" target="#b2">[3]</ref>, spreadsheet evolution is supported via a mapping to a semantic representation. These papers use transformations to support spreadsheet-based development, whilst our work uses spreadsheets to define model transformations. A similar data-flow logical specification of financial applications is described in <ref type="bibr" target="#b6">[7]</ref>, although all the data derivations are performed within a single table, whilst we separate data into possibly multiple source, target and intermediate tables.</p><p>QuantLib (quantlib.org) is a widely-used library of financial analysis functions, written in C++ (interfaces and partially-ported versions also exist for other programming languages). In contrast to QuantLib, we define financial functions in a platform-independent formalism (OCL), from which language-specific implementations can be automatically generated. In future work, we aim to include substantial parts of the QuantLib libraries in our OCL financial library. These could then be used directly in the Excel-style specifications used by our approach.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VII. CONCLUSIONS</head><p>We have described techniques to combine agile MDD with conventional Excel-based financial application development. Excel spreadsheets are interpreted as UML class diagrams operated on by model transformation specifications, and executable implementations of these transformations can then be synthesised in production-quality languages. In future work we will evaluate the usability of the approach with financial engineers, and extend the OCL finance library to provide comprehensive facilities for the use of MDD in the finance domain.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .</head><label>1</label><figDesc>Figure 1. Conventional financial application development process</figDesc><graphic coords="1,104.58,462.40,144.02,183.96" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2. UML-RSDS agile MDD process: iterations</figDesc><graphic coords="2,57.78,155.41,237.60,189.85" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>Typically, a migration or refinement model transformation involves the mapping of instances a : A of a source entity type A to instances b : B of a target entity type B. Such mappings are formally expressed by postconditions A :: ACond ⇒ B→exists(b | P(self , b)) of a use case that defines the transformation. The postcondition asserts that (at termination of the transformation) for every instance self of A that satisfies ACond, there must exist an instance b of B that satisfies P(self , b).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. Excel spreadsheet example</figDesc><graphic coords="2,327.82,341.95,237.60,188.27" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 3 .</head><label>3</label><figDesc>The use case sheet expresses the overall functionality of the spreadsheet application. The derivation of UML from Excel spreadsheets in CSV format is performed automatically by the UML-RSDS tools. Excel functions such as SUM, AVERAGE, DATE, RATE, DURA-TION, PRICE, etc have been formalised using OCL. These definitions are provided in a library class ExcelLib. For example: query SUMPRODUCT(s1 : Sequence(double), s2 : Sequence(double)) : double pre: s1.size = s2.size post: result = Integer.subrange(1,s1.size)-&gt;collect( i | s1[i] * s2[i] )-&gt;sum()</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 .</head><label>4</label><figDesc>Figure 4. Finance domain bond classes in ExcelLib library Using discrete compounding, the IRR is the rate r such that: price = Σ flows.size i=1 flows[i].amount/(1 + r) flows[i].timePoint + redemption/(1 + r) flows.last.timePoint</figDesc><graphic coords="3,322.65,133.10,244.81,149.50" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 4</head><label>4</label><figDesc>frequency).floor)-&gt;forAll( t | $CashFlow-&gt;exists( f | f.amount = coupon &amp; f.timePoint = (t * 1.0)/frequency &amp; f : flows ) )</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head></head><label></label><figDesc>, and derive the following postcondition constraint of the use case sheet: Application:: bondx : Bond =&gt; BondYield-&gt;exists( bondyieldx | bondyieldx.BondId = bondx.BondId &amp; bondyieldx.Yield = RATE( ( bondx.Maturity -bondx.Settlement ) * bondx.Frequency, bondx.Coupon,bondx.Price,100) &amp; bondyieldx.Duration = DURATION( DATE(bondx.Settlement,1,1), DATE(bondx.Maturity,1,1), bondx.Coupon, bondyieldx.Yield, bondx.Frequency) )</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 5 .</head><label>5</label><figDesc>Figure 5. Class diagram derived from Excel spreadsheet</figDesc><graphic coords="4,344.24,54.04,201.58,196.84" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_9"><head>Figure 6 .</head><label>6</label><figDesc>Figure 6. Estimated NSS curve</figDesc><graphic coords="5,52.61,186.09,244.81,153.06" type="bitmap" /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><surname>Cincom</surname></persName>
		</author>
		<ptr target="www.cincom.com/pdf/CS040819-1.pdf" />
		<title level="m">JP Morgan derives clear benefits from Cincom Smalltalk</title>
				<imprint>
			<date type="published" when="2016-10">October 2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">From spreadsheets to relational databases and back</title>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Visser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">PEPM</title>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Bidirectional transformations of model-driven spreadsheets</title>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Mendes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Pacheco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ICMT</title>
		<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">A lightweight MDSD process applied in small projects</title>
		<author>
			<persName><forename type="first">G</forename><surname>Guta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Schreiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Draheim</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings 35th Euromicro conference on Software Engineering and Advanced Applications</title>
				<meeting>35th Euromicro conference on Software Engineering and Advanced Applications</meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Gilli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Grosse</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Schumann</surname></persName>
		</author>
		<idno>WPS-031</idno>
		<title level="m">Calibrating the Nelson-Siegal-Svensson model</title>
				<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
	<note type="report_type">COMISEF working paper</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Aggregating sectors in the infectious defaults model</title>
		<author>
			<persName><forename type="first">O</forename><surname>Hammarlid</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Quantitative Finance</title>
		<imprint>
			<biblScope unit="volume">4</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="64" to="69" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Financial information description language and visualisation/analysis tools</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Horry</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Languages, Systems and Structures</title>
		<imprint>
			<biblScope unit="volume">50</biblScope>
			<biblScope unit="page" from="31" to="52" />
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">A software development methodology for research and prototyping in financial markets</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kumiega</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Van</surname></persName>
		</author>
		<author>
			<persName><surname>Vliet</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. European Spreadsheet Risks Int. Grp</title>
				<meeting>European Spreadsheet Risks Int. Grp</meeting>
		<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="107" to="127" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Constraint-based specification of model transformations</title>
		<author>
			<persName><forename type="first">K</forename><surname>Lano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Kolahdouz-Rahimi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">88</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="412" to="436" />
			<date type="published" when="2013-02">February 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Model-transformation Design Patterns</title>
		<author>
			<persName><forename type="first">K</forename><surname>Lano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Kolahdouz-Rahimi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions in Software Engineering</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Improving the Application of Agile Model-based Development: Experiences from Case Studies</title>
		<author>
			<persName><forename type="first">K</forename><surname>Lano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Alfraihi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Yassipour-Tehrani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Haughton</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ICSEA</title>
		<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">A simplex method for function minimisation</title>
		<author>
			<persName><forename type="first">J</forename><surname>Nelder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Mead</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Journal</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="page" from="308" to="313" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">An Agile Driven Architecture Modernization to a Model-Driven Development Solution</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">B</forename><surname>Nakicenovic</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal on Advances in Software</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="308" to="322" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Agile software development with Scrum</title>
		<author>
			<persName><forename type="first">K</forename><surname>Schwaber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Beedble</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012">2012</date>
			<publisher>Pearson</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Agile model-driven development in practice</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Patel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">28</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="84" to="91" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
