Profile

Showing posts with label IT system. Show all posts
Showing posts with label IT system. Show all posts

Saturday, August 9, 2014

Object Identity. Framework for deciding Identity scope



Let us now enrich each of these objects by describing them a little bit more.  The way to describe an object is to identify and list out its attributes.

Let us start from our first object – the Person object.

A Person has a unique identity. Therefore for any Person (Provider or borrower) we should be able to uniquely identify him/her.  The person will have to have a set of attributes for this purpose and these can be collectively called “Identification” attributes.  It is reasonable to assume that one would need to communicate with the person and hence the object should also reveal the details that would permit effective communication to occur.

The Person object’s identity will then look as follows
(1)         Person
a.    Unique Identification
b.    Communication identifiers

Intuitively we all know that the object Person will have more identity elements that describe him/her such as his relationship quality with the bank, the degree of trust that a bank can place in him and so on and so forth. Each of the identity element provides a capability to the system.  Therefore the best way to flesh out the identity of an object is to start with a basic system and then progressively demand more capability of the system. Then in response to that demand add identity and behavior elements that help provide the capability.  

Hence before proceeding any further, it is appropriate that we state the basic capability that is being sought from the object model being developed in this section. This capability requirement provides a scope to our object model. In other words this capability requirement provides a basis for developing the objects in the object model. 

Once the basic object model has been developed, we would then progressively demand higher capabilities of the system. For each such demand we would incrementally add to the object model to deliver that capability

For each capability we would also enunciate the roles that each object would be expected to perform in order that the system can deliver the capability expected of it. The role definition are an essential intermediate step to developing the object identity and behavior.

This would be the approach that we will use to design our core banking system.

Saturday, March 22, 2014

Two Techniques for Complexity Reduction






Two techniques that help reduce this complexity are

(1)                      Partitioning technique that helps reduce the Intrinsic complexity
(2)         Primitivization and inheritance technique that helps reduce the extrinsic complexity

The principle used by both these techniques is divide and rule i.e. divide the system under consideration into smaller subsystems.

Complexity - If you can measure it, you can control it




Before an attempt can be made to reduce or increase a quantity there needs to be agreement on some metric that allows measurement of the quantity. In the absence of such a metric it will not be possible to assess whether the quantity has increased or decreased. Therefore if complexity has to be reduced we would need a metric that will allow us to measure complexity. 

Once a measure is available it will at least become theoretically feasible to address the issue of how to drive down complexity.

The definition of an IT system is a good place to search for our complexity measure.  An IT system is a collection of programs that model the behavior of real world elements under different conditions. An IT system simulates the real world system by changing the observable values of IT elements (behaviors) as the inputs (conditions) are modified.

Merriam-Webster defines behavior as

“Anything that an organism does involving action and response to stimulation”

An intuitive observable measure of Intrinsic Complexity of a system is the number of possible behaviors that a system can exhibit

Extrinsic complexity is more difficult to measure and while there may not exist a good measure to compute the absolute value of extrinsic complexity, there exists a mechanism that when given two systems can tell which system has greater complexity.

It is intuitively clear that when in response to an external change a programmer needs to make changes to multiple programs then he would spend much more time to do so if he was required to make change in just one place.  The system that requires many changes to be made has greater complexity then the system that requires fewer changes to be made.

Techniques are available for reducing both intrinsic and extrinsic complexity.  

Monday, March 10, 2014

What is an IT System





The purpose of this blog, as started earlier, is to “Design a Resilient Core banking IT system”.  A secondary objective is to extract the principle of IT systems resiliency.  Having defined Resilience and understood its importance let us now understand IT systems.  Understanding what makes an IT systems will help us address our main issue which is:  What set of factors taken together help build a resilient IT system.

Let us start form the fundamentals.

Let us first address as to, "What is a system?"

A system is a set of interacting elements that exhibit a specific behavior under a specific set of conditions when subjected to specific stimuli.

Extending the above definition, an IT system consists of a collection of "interacting Programs" that exhibit a specific behavior (output) when faced with a given input (i.e. when subjected to a specific stimuli).

To get a better understanding of IT systems let us delve deeper into understanding the function of a program.

Programs are instructions to machines (computers) to manipulate values.

For programs to achieve something useful the values must have some meaning to the users i.e. they must represent something that happens in the real world.  

Because these values are “representative’ of some “thing” in the real world, therefore the rules by which they are manipulated must also be the same as the rules that are applicable to the real world “thing”.

Of course you can always write programs that manipulate values in ways and means that have no linkages to real world phenomena.  But if you do so then the question to ask is, what purpose does such a program serve?

For computer programs to be useful these programs need to “model” something useful in real life.  Successful modeling requires  (1) that we identify the elements  (or “things”) whose behavior we want to study,  (2) that we identify the behaviors they exhibit under different conditions and (3) that we identify the different conditions under which we want to study the behavior of these elements.

We can now advance our definition of IT systems as not just merely collection of programs but as a collection of programs that model real world phenomena. Each "program" can be thought of as modeling a real world element.

Elaborating Further: An IT system is a collection of programs that model the behavior of real world elements under different conditions. An IT system simulates the real world system by changing the observable values of IT elements (behaviors) as the inputs (conditions) are modified.

Each Program in the IT system can then be thought of as representing and entity in the real world. In other words each IT-program can be thought of as representing a real world object. There is a special technique called the object-oriented design that provides us the necessary nomenclature and rules to represent the real world objects into IT-programs.  There are also special languages called object oriented languages that allow us to easily write programs such that each program represents an object.

This understanding of IT systems is sufficient for us to study the problem of resilience in IT systems.