"There's nothing as practical as good theory" (Kurt Lewin0

OSL - Object Oriented Specification Language for business - proposal
       (banking example)



Copyright by Zygmunt Ryznar

OSL (Object Specification Language) contains business independent standard phrases, dedicated for definition any objects, and key-words applied in a given business-area and/or in global business environment (UNIVERSE).

Description is related to the main object called SUBJECT (e.g. bank). UNIVERSE, AREA i SUBJECT could be treated as super-classes (at a top-hierarchy). Business classes within AREA are user-defined, to reflect SUBJECT behaviour and needs. Specification contains also executive/operational objects, like account manager, teller etc. and technical infrastructure objects (like servers, databases).

OSL NOTATION

<! comment >
<! <> container for main structural phrases: def, spec, commentaries. Object names and predefined key-words are written at Capital Letters. Non-business objects are written in Small Letters.>
<def
object name > <! start of object definition >
</def>
<! end of object definition >
<spec
specification name > <! specification start >
</spec >
<! specification end >
::=
<! type assignment >
:=
<! list assignment >
=
<! value assignment >
:
<! attribute assignment>
::
<! belongs to>
= = <! equivalency >
{.....}
<! {} delimiters >
(x,y,..)
<! list >
YYYYYY.UUUUU(XXXXXX)
<! qualified name of business object >
[name]
<! executive/operational object >
(XXXX)<!
business object >
keywords
<! key-words are heritated by objects of lower class (rank) >


Environment
(ENV)
ENV:=(REGULATIONS, INFRASTRUCTURE)
ENV.REGULATIONS:=(
Legal acts, resolutions, decisions etd)
ENV.INFRASTRUCTURE:=(
Servers,OperationalSystems, TransactionalDataBases, DataWarehouses,NetworkManagementSystem, OrganizationalStructureOfCompany )
Object specifications
includes elements:
-id <!
object identifier>
-
infoWindow <! "window for communication with other object " >
-dataTable <! data table. >
-typ obiektu ObjectTypes : (eOBJECT<!
elementary object e.g.a given customer >
- (ROLE)

- ( OLH -Object Life History )

- (RELATIONS)
-dynamic characteristics(processes, transactions. events, mode of triggering etc.)
-mode of execution (EXECUTION_MODE:= modeRT <!
real time >,modeBAT<! batch > modeOND <! on demand >)
- (DATA_FLOW)
- (CONTROL_FLOW)

Other OSL phrases:
trigger <!
trigger (of process or event) >
,
generator
<! generator of events (e.g. cashflow) >,
agent <!
service object e.g. . agent of call-center >,
integrator <!
integrator of complex object or set of objectsgt;
monitor <!
tracer of process >,
executor <!
>,
participator
<! participating object >,
owner, stockholder, customer, supplier; partner, employee,
component <!
part of >
performance center <!
> )
RELATIONS:=((activated by / activates, activated when/if,
appearence depends on
<! e.g. appearence of child object depends on existence of parent object >

assisted by, belongs to /is owned by
, built from ,
calls <obiekt> (xxx,yyy) <!
xxx input elements, yyy return elements >
consists of
<parts> , contained in/contains, controlled by / controls,derived from,
driven by transaction,driven by product ,driven by banking regulations,
driven by customer, driven by date, driven by schedule,driven by frequency
existence depends on
<!
condition of existance .... >
exists when/in/for, evaluated as critical/most wanted , included in
,
linked to ...by / links, matched/matches
<! e.g. transaction confirmation >
refers to
<! direct relation > relates to, related by affinity, represented by /
represents
, involved in, shared by / shares, used by / uses)
STATE := (active,inactive,dormant,suspended,aborted,idle, lost
)
STATUS := (generic, real, virtual)
dOBJECT<!
dynamic object e.g. transaction >
iOBJECT<!
informational object e.g. customer position >
vOBJECT
< virtual object e.g. mirror Nostro accounts >.
dOBJECT ::= ZDARZENIE,TRANSAKCJA,AKCJA,PROCES)
== (EVENT,TRANSACTION,ACTION,PROCESS)
<! example of bi-language equivalent definition >
<! EVENT -elementary atomic fact >
<! TRANSACTION - sequence of events aimed at shortterm goal e.g. account opening or closing, payment
>
<! ACTION - complex activity e.g. defining provision for doubtful loans >

<! PROCESS - sequence of actions and events with common aim, initiated by trigger e.g. end of day processing
>

{CONTROL_FLOW
repetition :=(
iteration, single spiral, multiband spiral <! spiral pattern is used in learning processes and differs from iteration that each scroll could contains different mechanism and contents >)
activated .... BY ...with <initial-value> AT <time-point > WHEN ..
finished AT < > with <value> WHEN ...}
{ DATA FLOW
<.> from (<.>) <!
data list...>
<.> to (<.>)
<! data list >
<> dataGeneration Method
<name >
<>dataEncoding Method
<name >
<>dataCompressing Method
<name >
}
{BODY ::= ( Contents, Script, Metadata)

contents <! e.g. document contents, program code >
script <! operation list generated in object upon the pattern of its behaviour >
metadata <! e.g. in XML- body structure description >}

Exemplary specification

BSL (Business Specification Language)  is a subset of SpL  dedicated to  business objects. The simple banking simple example presented  below is for illustration purposes only. The full specification should contain also such objects   as headoffice, branch, channel of product delivery, customer, deposit account, loan accout, loan credit line and executive operational objects, like account manager, teller, dealer and IT infrastructure objects.  


BUSINESS:=(BANKING,MANUFACTURING, SERVICES)
ENV.business id:=BIC
 
BANKING:=(RETAIL,WHOSALE,UNIVERSAL,MONEY-MARKET,DERIVATES,SHARES)
ENV:=(bank.id:=BIC,account.id:=IBAN,dadaTables)
dataTables:= (LIBOR,OperatingCurrences,ExchangeRates)
 kwords:=(customer.id,accountCurrency,creationDate, 
       fTrans,fTransLimit,infoSet,Resources,
       operation
       action
       driven/sorted by (fTrans,product, customer, date, 
                            schedule,frequency)
       matched/matches)


 retail.product:=(CURR-ACCOUNT,DEPOSIT,LOAN)
 
object.Info:=(BIC,country, bCurrency, 
                      FinancialYear, number of branches>)
dataTables:=(CorrespondentBanks,Branches, 
                      calendarWorkingDays,bkAccountChart,
                       productList,interestRateTable)
kwords:=(branchNr,customerId,accountNr,rate, 
                balance,balanceSheet)
OperationalObjects:=[teller,accountMgr,customerMgr, 
                                   productMgr,trader]
Bank.objects:=(product,currency,limit,account) 
limit:=(country,industry,customer,currency)
iobject:=(customerPosition,monthlyBalancesheet)
bank.type:=(dmBank,
                     frBank, 
                     corrBank)
                     bkAccount:=(bsAccount
                     nbsAccount
batchOperations:=(eodOperation,  
                               eomOperation,
                               eoyOperation,
                              eopOperation)
       
                objectInfo:=(Account id,owner,co-owner)
                 minBalance,actualBalance,historyStatement)
                 Relates to Customerid
                 rtTrans:=(Open,Quit,Cash-in,Cash-out, 
                               transfer)
                 eomOperation:=(printMonthlyStatement)
       
 
 

  
          transaction-limit=<...>
          info.set(transactions) :=(account,fTrans.incoming,
                          fTrans.outcoming,balance)
                          @sorted by date
          info.set(products):=(deposit,loan)
          info.set(channels):=(branch,echannel)