Software System Architecture definition process defines solution blue print for a system requirement. The architecture blue print consists of various view points of a solution. Architecture is not detail design. The blue print is a guidelines for the detail design. It ensures all the constraints and the requirements are met before any signficant work (like detail design) is done. It is an iterative process. The blue print consists of view points like information, technology,development,deployment, functional, concurrency and etc. The different types of view point of the blue print depends on the type of systems. For instance, embedded system architecture blue print generally emphasis on concurrency,functional, deployment,technology view points and where as a financial system does not emphasis on concurrency view point. The system architect shall decide the required view points for the system requirements.
The blue print will be analyzed and validated from a different perspective like security, compliance and it is part of the architecture blue print validation process.
When I was in my 3rd and final year of my undergraduate computer engineering, I grew up considering and picturing Bill Gates as my hero and guru. I and my close friends (2-3) knew every interrupt and various AX (accumulator) values in MS-DOS and wrote numerous application using those interrupts including parallel port drivers, graphics editors (interrupt 10),Unix – DOS bridges, 8088 Micro Kit-PC communicator drivers and etc. We read almost all the books available in the subject during those days. Ray Dunkan books on MS-DOS internals were our favorites.
It was clear to us that we (I and few other friends) were passionate about solving hard valuable problems and always dreamed big and marched towards it.
Our singer software consultancy service start up company and its success was an evident we dreamed big and marched towards it. It was my opinion, that my friend was thinking tooo big at that age. He wanted to mobilize $200,000,000 at the age of 21 years old. In spite of significant success as a software company, I was scared to deal with that kind of money and that was the moment I thought money was not what I love. But money is required to lead a decent successful life but it is not all I’m after.
Before I started my software consultancy service,these were the ambitions I had tried and didn’t know if I really loved to do.
Intelligence officer (similar to FBI,CIA, wrote entrance exams when I was in 10th grade)
Indian Air Force Pilot officer (got admission as airman but decided not to join)
Cricket Wicket Keeper ( I was always the star wicket keeper at the age 14-20 in all the leagues I played and I always thought I would play for the state. When I was not selected for the University in my 3rd year engineering, I lost the hope. I would have had worked hard if someone more talented got selected for the university. I heard the person was selected for University had political and economical influence in the selection process) I lost my hope completing becoming a cricketer. It was better to have those kind of experience earlier in my life.
Movie director – It was my back up plan during my senior high school. In case, if I do not get into engineering school, I wanted to progress as a movie director. The days I grew up, if the students do not get into engineering or medical school, their life was 90% sunk. I didn’t have any hope I would become successful in my life if I do not get into the engineering school. In case, if I do not get into engineering school (I hate medical science, I know that very early on) my plan was to do go to cinema school to become director. I always analyzed the movies in micro level, screen plays, story, acting, choreography and etc whenever I watched movies.
Professor, I got a job offer at my college at end of my 8th semester. This was my second job offer I turned down before 21 years old. and always wanted to do it close to my retirement but not to start the career with.
The point is, we all try to find out what we really love to do. It is not that easy to find out. Generally speaking, we all do not know what we really love to do it until we put an effort to find out. The moment you know what you love to do, you can work towards it and thrive in that area like Steve Jobs. Nothing can stop you. Even if some one fire you from your own start up company, noting can stop you. You can turn around and fire up.
Until you figure out what you love to do, as Steve faced in his life, are you ready to face a tough road? (Like Steve encountered, are you ready to walk 6 miles to get a decent meal once in every week?) The moment you are married and have kids, you can not think just about what you love to do it. You need to do something to bring food on the dinner table to your family. So we all forced to do something. It may be practical for those are single and independent to sit and think what they love to do it and take a path similar to Steve Jobs.
My Proposal:
To thrive what we do, we need to know what we love to do and at the same time we need to do something to move forward in our daily life. I always have this mental model with in me. I think, I have been working for the toughest boss for past 15 years, my consiousness. Believe me, it has very standard than any direct boss I had in my career. I always work for me first before I work for anyone and my consiousness always have highest standard than anyone I directly worked for. By adapting this mode, the consiousness will be forcing us to love what we do. Either we do a quality work or we do not do it. Mean time, spend at least 1 hour a week to explore your self what we really love to do? and eventually find it and do it for rest of the life.
Do what you love, until you find what you love, love what you do.
Business Rule Engine: Do you really need business rule engine? What is the purpose of the business rule engine?
Almost all the business applications have set of rules. To develop a business system to fulfill the business requirements, all the business rules are implemented in the systems. In a traditional model, all the rules are converted into programming language and in specific, turns into if then else constructs in the application. If the rule changes then the business systems are changed. Then,if then else constructs within the systems are changed. Some times the rules changes frequently and end up changing the applications frequently to meet the new rule requirements. The applications/systems directly implements the business rule engine becomes big monolithic applications. Over the time, it will become very complicated to maintain it.
Why monolithic applications are difficult to maintain?
Let me explain why monolithic applications will become difficult and complicated over the time. Let us take a financial institution like bank who is in the business of providing loans and leases to consumers to buy recreational vehicles in United States. Loan (retail) and lease has different set of business rules. For lease, the vehicles are returned to the financial institution (lessor) and it is up to the lessor to re-market (resale) the RV. The lessor need to estimate the residual value of the vehicle at the beginning of the lease and based on it, the monthly payment and taxes are calculated. Money factor determines the interest rate banks charge on the lease account. Each state has a tax, legal, regulatory requirements and it changes.
Retail loan (in India, the retail loan product is called hire purchase, and I had developed a financial accounting package for hire purchase companies using FoxPro in 1993. The concept is same in United States) are relatively straight forward comparing to the lease. Loan amount, interest rate, initial payment, duration of the loan, sales tax, surcharges (as per the federal & state laws), and base on those parameters, it is a simple interest calculation.
In the above scenario, the state law, taxes, surcharges, residual value, money factor, credit quality, product type, loan type, loan duration, lease type, lease duration, and etc are the factors plays a role in customer inquiry, contract origination, contract validation, contract management, and asset disposal steps of retail loan or lease business processes. There are numerous combination of business rules based on these factors are formed to implement the major steps of the business processes.
Implementing these steps in the application directly will become difficult to manage and each time there is a change in those factors, the applications in the bank landscape need to change and under go the software development life cycle. It is costly, time consuming and limits agility, flexibility, adaptability
Business Rule Engine
It is ideal to implement the business rules of the business application in a business rule engine and manage it independently of the application. It provides a platform to the business customer to change the business rules directly with out involving the information technology department. Also the tax, state regulation, internal business rules (like if the credit quality is medium .and. if the financial product is lease .and. if the state is new york then the money factor = 0.00000012) will be reused across application in the landscape.
The another major technical advantage of using the business rules is optimizing the business rules. It is very similar to Karnaugh map in boolean algebra. The rules will optimized by the business rule engine.
Are you already using business rule engine in your IT shop or is the business rule engine is part of your technology road map?