Table of Contents


Business Processes

Processes


Business Processes


The expectations of IT tools have grown dramatically. Nowadays a company wants all its processes (planing, production, controlling,...) to be supported by tools. Big parts of the business processes of a company are caste nowadays into IT applications. The design of business processes and IT applications supporting them interact. The success of companies like SAP, I2, BAAN, etc. show that the demand in this area is even going on. In Supply Chain Management the processes of several companies building a supply chain are connected. If big companies merge often databases have to be consolidated in huge data warehouse projects. All these demands require an consistent view of business data across companies and departments and functions or applications. The concept of Business Objects arises (17). A Business Object is a component representing an item out of the business process. Examples for such items are customer, contract, product, inventory, bill or resource. Additionally an Business Object has several views for the different functions it is accessed. More and more these Business Objects are distributed on several computers (database on main server, local views or copies on local workstations and PC's). So these Business Objects are embedded in a framework controlling distribution and data consistency/ security (f.e. San Francisco TM from IBM).

Business object frameworks are a powerful tool for creating IT applications in a company or even for a whole business area (f.e. banking, insurance, steel,...). Companies selling customizable applications or development tools (f.e. SAP) using this possibility of parallel modeling of processes and applications. Not all of them are using object oriented methods. When using an object oriented approach business objects are a result of a business process reengineering activity.

The work with business objects have a lot of advantages:

  1. Every item modeled by an business object (f.e. contract, customer, deliverable,... ) can have the similar views in every application using it. The user interfaces of all IT applications used become more standardized.
  2. Actions done on a business object can be coded once. Not every application using it must include its own implementation. The company has the possibility to clean up their application zoo.
  3. Business objects are a common data model for interactions between different systems. Here standards like CORBA become important. They enable a platform independent description of classes.

One problem when reengineering processes and applications is the connection of legacy systems to the new concept. Tools for this exist.

The area of distributable objects is an interesting and wide field but will be not part of this lecture. It can be handled independently from the aspect of business object design. The field addressed here is the analysis and design of business objects.

When designing a global set of business applications a system architect is very often also a work flow designer. The applications often define what has to be done in which sequence.

Example: Company A has a department receiving the orders from the customer. This department is still working with paper forms. The form to be filled for every order contains several sections. The first section is for the customer data, the second for the global order data such as entry date etc. and the last section contains the ordered items. Each employee of this department has his own way to fill out the forms. The most common sequence is to fill out first the item list and checking the inventory in parallel. In the next step is checking customer data and global order data and writing the acceptance letter to the customer.

Now the software company X delivers a application for supporting this work. A lot of time the employees used for searching customer and inventory data in the databases. This will no be supported by the new application. So everybody hopes that order entry will be done much more efficiently than before. When working with this application the employees are very disappointed. The old workflow is not supported by the new application. On the first panel the customer must be specified or defined. Without finishing this panel the employee can not enter the items or check the inventory. This first panel takes a lot of time if a new customer has to be defined. Often the employee even must phone the customer to get detail data not contained in the order before the items can be processed. In the end the employees have the feeling the new application does not support their work.

As described in the example above the workflow of people often changes when new software is implemented. Therefore it is important to really understand the working environments and working behaviors of the users when designing software. We get an interaction of:

The work of consultants and application architects grow together. Unfortunately software engineers are involved very late when business process analysis and reengineering plans are already finished. Therefore often the software designers have very few chances to discuss with the users and get a good imagination of the workflow. Another problem is that software engineers have difficulties to understand the business process and workflow descriptions created by a consultant company and the consultants have low knowledge about the technical realization of software solutions. In the future the interaction of both parts will become stronger and both parts must understand the language of the other one.

 

Example: CD Connection

 

Assume we have a company called "CD Connection" selling CD's. A customer orders a number of copies of a CD. If it is available in storage it is shipped to the customer otherwise an order must be sent to the supplier of the ordered CD. With the shipment of the CD a bill is sent. Below it is shown the traditional process.

 

The process is very old fashioned. All communication in the company is done via paper forms. For every order received the administration completes a form and sends it to the inventory. The people in the administration department have no further information about the process of the order. Therefore the information they can give to a customer calling is very few and normally unsatisfactory. The inventory administrator collects all these forms and decides which parts are o be shipped and what to be ordered from the suppliers. When a shipment is done the finance department is informed via a form. Here the payment process is tracked. The inventory administrator has no IT tool for planning. The inventory administrator works in the company for twenty years and has an excellent experience in doing his job. He does the planning with help of his excellent intuition. The company is aware of the fact that this person will go into pension soon.

 

ARIS

Widely used for business process modelling today is the Method of Prof. Scheer called ARIS(18). It starts from a functional view of the business process. A model consists of:

The organization chart for the company CD Connection is very simple:

ARIS uses as basis a functional decomposition of the main functions in a company:

Each Function can be described in a Process Chain containing a sequence of functions and Events.

Function Purchase

Function Order

There exist other descriptions very similiar to the process chain with various detail levels in various areas. So the whole as-is process can be described very detailed. In the end a simulation can be done of the process and bottle necks can be identified. Alternative processes can be modeled and compared with the current one.

Use Cases

 

We can model this old process by using use cases (15,16) from Jacobsson. Traditionally a use cases are used for an IT application; i.e. the use case describes how an application is used. In (15) Jacobsson tried to port use cases to business process reengineering. In (15) a use cases describing the interaction with a company are introduced. When designing architecture of a business application environment supporting most business processes in a company use cases focus on one application only will not be appropriate. So we follow here mostly the ideas of (16). In the future it might even be necessary to work with use cases focusing on a whole supply chain.

A business process model in this method consists of

The organization chart for the company CD Connection is similiar to ARIS:

Next step is to find out the actors communicating from outside with the company. In our case a customer orders for his shop CD's. Here the end user want to listen to nice music can buy the CD's later in the shop once they are delivered to the customer. CD Connection itself gets the CD's from various factories called supplier in the model.

A use case now describes the main transactions the actors do with out company. They define the behavior of the company from outside.

CD Connection has only two transactions in the nowadays process - one for each actor:

 

The two transactions are not totally independent. Their interaction defines the delivery time in the inventory costs. Both are important objectives to minimize. Unfortunately these two objectives work against each other. A short delivery time can normally only be achieved by having a huge inventory to prevent CD's running short in inventory when ordered. On the other hand if the inventory is kept small the chance that a full purchase transaction must run between order and delivery is very high. So the average delivery time will increase. But here exactly lies the problem CD Connection wants to solve.

For a better understanding transactions can be decomposed. There exist two relations between transactions.

The transaction 'buy CD' is processed by two subsequent transactions 'order' and 'ship & bill'. So 'buy CD' uses these two transactions. CD Connection would also sell cassettes there might exist an additional transaction 'buy cassette' having a common part 'buy' together with 'buy CD'. In this case 'buy CD' and 'buy cassette' extend the transaction 'buy'. This is comparable to subtyping. This is not the traditional definition of the extends-relation in (16). But in a lot of projects a subtyping or inheritance relation was found more useful than the original extends relation defined by Jacobsson.

The next step is to describe how the transactions are implemented internally in the company. This is done via the object model. In the object model the relations should be described and not the sequence of action. An object model used the following object and relation types:

The object models of the various transactions look as follows:

Transaction order

For every order exactly one delivery request form is created. Therefore the delivery request is not necessary in the process. The order itself would be sufficient to provide all information necessary for delivery. A delivery request might be effective if orders are sorted or consolidated in a delivery request. The delivery request as created today is a view of the order provided to the inventory administrator.

Transaction ship & bill

Transaction Purchase CD's

The transaction Purchase CD's contains the inventory planning influencing time for delivery and inventory costs. The inventory administrator must track and analyze stock level and delivery requests and from this decide which CD's have to be ordered.

For the critical objects used we can draw a transition state diagram. This is especially done for an object having a complicated life cycle. As done below for the object 'order' having the states 'sent', 'accepted', 'procesed' and 'rejected'. The state 'rejected' can only be reached if the state 'processed' is not achievable.

Exercise

Draw a state transition diagram for an euro-cheque automata.

Additional also an interaction diagram can be presented to show the workflow of a transaction. Such an interaction diagram is needed for any transaction where the time has to be minimized. Generally a workflow description is helpful for all transactions, because it is often the only one the customer understands.

Below is the interaction diagram for use case 'order':

NVA denotes non value adding activities. VA value adding activities are all activities adding something to the product ordered by the customer. Here also the paying of the bill is marked to be VA. This is not always done. But it is an activity also not removable from the process and needing resources in the company.

Of course we also have to check where the handlers occurring in the object model are located in the organization. Each handler can be realized by one or several persons. One person also can do the job of several handlers. In our example every handler is one person.

In more complicated business processes each handler has a skill profile and role is assigned. Thereafter roles are assigned to organization units and persons.

The new Process

The company found that a lot of customers are dissatisfied because of long delivery times and bad customer support. So the company decided to restructure the processes. The company sees that a third transaction called 'information' has to be introduced. Customer support besides processing of customer orders was not implemented until now. The customers want information before they sent an order and want to have detailed information about the status of their orders. This request leads to the most radical change. The new installed customer support needs access to most business objects. So the old host transactions must work together with new PC software having access to all host databases. To minimize the delivery time all internal paper formulas are removed. Notifications and confirmations are done via PC in the future. Additionally the inventory administrator shall get a prognoses application to balance the inventory more efficiently.

The new use case 'information' looks as follows:

For implementing this transaction a new department will be implemented. The order handlers from the administration will be moved to the new customer support department and will need training to do their new job. Additional people will be hired when the new process is fully implemented.

The customer support will consist of persons working as information handlers in the new process and as order handlers in the transaction 'order'.

 


Processes


Before 1960

In the beginning of computer technology computers were mainly used by scientists. The industry believed computers are toys in research. A scientist worked generally alone on his program and he was the only user. Coding was done in machine code. Even an assembler was not available. The computers of this time were 'tube machines'. Working with these machines also included the finding and exchanging of defect tubes.

Before electronic computers were available in research institutions mostly women were employed doing the necessary computation work by hand. When electronic computers were introduced these human computers became the first programmers. So in the beginning of computer science software engineering was a female area.

The development of assembler languages was the first big step in software engineering. The programmers got the first abstraction tools. Variables used as abstraction from the value and storage location and macros for encapsulation of functions are available in assembler languages.

The first computers allowed no multiple user access. Therefore coordination between the programmers was necessary to organize the access times on the machine. There was little communication needed to discuss contents or interfaces of programs because everybody worked on independent programs.

In such an environment every programmer can code in her own style. The only requirements for the program are that the programmer herself must be convinced that the program is running correctly, fits into the storage of the machine and has a reasonable performance. Usability was not considered to be a problem. An amount of 128K was huge. All dirty tricks were allowed to archive the goal under these hard hardware restrictions. To save storage often self-modifying code was implemented. Nobody except the programmer herself and perhaps on other person working closely together with the programmer could read such programs.

In research this 'one-person-for-his-own' style remained the usual case for long and still exists. In industry it quickly became different.


The wild 60's

The industry detected computer in the 60's. This was the start of the first big methodology change in software development. The industry had own expectations what software should do. In research an application was written for one project and then never used again.

In industry an application (for example finance applications) must

  1. run without break-downs (reliability) and
  2. has to be changed and extended. (for example new taxes are introduced) (maintenance)

The first programmers in industry still produced some sort of 'Throw-Away' software. But the successor in the job had to maintain the code and normally had big problems to understand what was done there. The 'Throw-Away' software became a product with a lifecycle and additional components (documentation, distribution path, service, life cycle).

Software as a product might include the following:

  1. a running module with or without the source code,
  2. installation tools (description and executables),
  3. external documentation,
  4. service (help desk etc.),
  5. education and consulting

Therefore development processes were developed. They define:

The 70's - the First Process

In the 70's the first programming libraries where developed (for example for solving linear equations, statistics etc.). This sort of software had to fulfill additional requirements:

Minimal interfaces
Programs developed in that time were shipped as object code and could not easily be adapted to another application. Only interfaces containing the most important parameters have a chance to be useable in another context.
Constant functional behavior and constant (only extended) interfaces for all releases.
If a library module is used in a product this product depends on the behavior of this module after an upgrade of the library.
Reliability
Nobody knows where the library will be used. Requirements on reliability are extremely high.

These requirements in software development lead to structured programming and the waterfall process.


The Waterfall Process

In industrial development the waterfall process was developed. The process from analysis to shipment was decomposed into steps. Each step was ends with a validation to assure quality. The people defined this process had the dream that the specification will be finished before the design starts and that during the design phase the developer can structure everything correctly without caring about details. If in later steps corrections have to be done on results of previous steps they were declared as 'errors' and tracked.

In reality a specification never keeps stable during the implementation phase of a project. Often during the work on the details in the coding phase additional properties of data types become known and lead to changes in the design. Therefore in praxis a pure waterfall process is difficult to handle. But this process is easy to track for a project manager. It only has to be checked, if the planned steps of the project are finished in time. But this planning security is treacherous. A lot of risk of the project is put into the last steps coding and testing. The test phase in a waterfall process often is as long as all previous steps together.

On the other hand the applications developed in the 70's were quite homogeneous. Most of them were transactions in COBOL or Assembler on a host system. User interfaces were minimal. Before 1975 terminals were seldom used. All input was done via punch cards and tapes. Output media were printer and tapes. Therefore the application developers had not to worry about complicated user interfaces and the applications were far less complex than nowadays.

The functional model used in structured programming was represented by:

HIPO diagrams
HIPO means hierarchical- input-process-output diagram. This is a good method to check that the decomposition is complete in no data gets lost or comes from nowhere.
Function hierarchies
describe the decomposition into subroutines.
Flow diagrams (Nassi-Schneidermann)
describe the static model.

Specification

The specification phase is the first phase in the waterfall process. Target is to describe all important properties of the system to be delivered. At this stage the system must be described from the customer view. The specification defines the deliverables of the system and often is base for the contract.

Task
Analyzing the customer problem
Result
Functional specification of software, general properties (runtime, platform etc.)
Documents
Pre-version of user documentation delivered to test department and document writers.
Validation
Review of functional specification by customer or tester.

System Level Design

This phase might consist out of several stages. For huge projects several teams are working on two or three stages might be necessary. In this phase the system is subdivided into subsystems or components to be handled by different teams. The teams must agree on interfaces between the components.

Task
The system is decomposed into components. Each component will be associated to a development team. Interfaces are designed. The shipment process should be decided.
Result
Functional specification for each component
Documents
Documents are delivered to all teams and project management.
Validation
Review/ Inspection of system design by developers.

High Level Design

Each team works independent from the other teams in the following stages. The component to be developed by the team is subdivided into modules to be handled by one developer.

Task
Each team chooses languages and platforms to be used if not restricted by system level design. Interfaces between modules of the component will be defined. On this level the details of a screen mask or any other user interface (macro, command) will be defined.
The team decides which building blocks or software libraries could be used.
Result
Functional specification for each component
Documents
Validation
Design inspection by the team. Review of user interface definitions by customer, tester and document writer.

Low Level Design

Each developer works mainly on his own until the final test phases start. The algorithms and detailed data structures needed to implement the modules are specified in this stage. Parallel to this the test department (if existent) can already design the test environment. The test environment is developed based on the specifications of the components.

Task
The programmers write flowcharts or Nassi-Schneidermann diagrams. The testers define test environments and design test scenarios according to the specifications.
Result
Description of algorithms
Documents
Validation

Implementation

Task
The developers implement their code and do basic tests. The document writers prepare the user's guides. The testers implement the test environment.
Result
Code, documents and test environments
Validation
Code inspections, review of user documentation by developers and testers.

Test

In this phase the code is tested, documents reviewed and found problems fixed. This is a validation step in itself. According to the size of the project the test devises into one or more levels (normally one for each design level). Normally the developer does the first testing level (function test) himself. When more and more components and subsystems must be integrated the tests are done outside the development department.

Shipment

The system is delivered to the customer(s). Now the customer has to do the last validation of the product. In some cases the customer is also involved in the test phase by getting a 'Beta' version of the system.

Lifecycle

All the steps above are done in the sequence describes above. Normally the analysis phase for the next version/ product does not start after shipment of the previous version but during implementation or test phase. The last test phases and high level design normally run in parallel.

Small teams or often one person alone developed the first applications in industry. Therefore team structure and communication were problems of minor importance.


The iterative development process

With OO methods a new process was defined. Prototyping was done in more and more projects. In the old waterfall process a design correction done after coding was defined as a fault and measured like this. The development environments changed extremely in the 80's. The computers were much more powerful and the expectations of the customers increased even more. Applications were much more complicated. Nowadays every office application on a PC works with a graphical user interface and a database. Only very few development teams can start from scratch but have to extend old systems or at least use their interfaces. So the design of each system is done on the base of pre-assumptions about existing systems or customer input which are normally incomplete. Therefore the design of an application bases on incomplete information and more an approximate than a reliable description of the items to be implemented.

This gives a total different view on changes to be done after coding started. Here no faults are corrected but new insights are evaluated. Which does not mean that ordinary faults do not occur too. In principle the iterative process is a better description of the working style the development teams really did when working with the waterfall process. The whole testing phase in the waterfall process contained the 2nd to last iteration you might say. Actually test phases were mostly longer than design and coding.

Measured with the new process definition most time is spent in design and consolidation phases. Coding and testing time becomes shorter. This partially is effected by the new measurement (corrections or extensions of design where counted as "error correction time" during test in the old process) and partially by new more powerful programming environments (class libraries, code generators).

For the project managers the change to this new process is difficult. When teams started to switch to this new process obstructions from management had to be overthrown. The iterative process has no fixed number of steps known from the beginning of the project. This process is more flexible and therefore more difficult to track. Because of this managers believe that the iterative process includes more risk than the waterfall process. But this is an illusion. The iterative process risks are visible earlier than in the waterfall process. If a hole in the design is found an extra prototype step might be inserted in the middle of the project. Then extra resources needed for the project become known quite early in the project and delays can be handled with lower costs. In the waterfall process it might prolong the test phase endlessly. Delays in the last phases of a project are the most expensive ones.

Phases of iterative process

Terms

The object/class model is described by graphics and diagrams showing class /object relations.

Entity - Relationship Diagrams
coming from data base modeling
Class Hierarchies
showing inheritance relations
Class/Object Relation Diagrams (Booch, Yourdon-Coad,..)
describing the static model.
State-Transition Diagrams
describing effects of events to object states. This is more an if-else-anaysis than the description of events in a time sequence.
Scenarios
describing the sequence of messages and events through the system.
Usage scenarios
describe actions of a user and the reactions of the system. Usage scenarios can help to explain why the user interface was designed in the manner it is.
....
Domain Class
is a Class belonging to problem domain. (f.e. class Account) Classes needed for implementation (f.e. SortedCollection) are no domain classes.
Auxiliary Class
is a class needed for implementation. They are often candidates to be put into a general library.

Pre-iterative Analysis and Design

OO Requirement Analysis

In this phase requirements of the system to be developed are defined. Often a consulting project analyzing the business process has been done before or will be part of this phase. All methods described in the section Business Processes can be used here. Often in this phase it is decided which parts of the business process to be covered by the IT application, which legacy systems to be integrated or exchanged and where human interaction is necessary.

Do not to use traditional OO notation in this phase but free style and or use case/ ARIS models. Try to describe the problem domain in the language of the customer. From this description first candidates for classes and relations are archived.

If necessary prototype the user interfaces. The customer can verify this. Prototyping is a popular method of verifying and analyzing requirements for database applications.

Results
  1. Document describing
  1. Description of problem domain in free style
  2. Usage scenarios
  3. Prototyping of user interface if necessary.
  4. First project plan (overall)
Check

Verification of documents and prototype by customer.

Example of a rough domain analysis:

In a document all planning rules and detailed definitions would be described. Additionally all abstractions necessary to work with the model will be described.

 

Modeling of Problem Domain

  1. Modeling of problem domain using classes and their implementable relations (inheritance, aggregation, collection,· ). Here OO design tools can be used for describing the model.
  2. Definition of subsystems
  3. Revised project plan with input from sub teams (which prototype when, contents of each prototype, programming language and -environment, tools, class libraries, platforms, shipping path, ...). Here the prototype model to be realized will be decided. The extreme cases of prototyping are:
    1. Each prototype per iteration is a total reimplementation. This is often done in rapid prototyping. A very fast development environment (for example Smalltalk) is used to implement parts of the final functionality. When the prototype works it is reimplemented in the final environment (for example C++).
    2. Every iteration will extend the functionality of the previous prototype. Such an extension can be:
Results
  1. Refinement of external description. This is delivered to the testers, information developers, etc.
  2. Domain class model
  3. Refined project plan
Check

A step forward to design level our model would look as follows:

Iterative Phase

Subsystem Level Design

Here the whole project team still works together.

  1. Rough implementation decisions for next prototype, candidates for auxiliary classes.
  2. Definition of work items for each team member during the next phase including the agreement on interfaces between items ( "contracts between developers").
  3. Consolidation of new auxiliary classes from previous iterations
  4. Modeling of encapsulation of external interfaces
  5. Identify reusable parts / classes
  6. Generation of test plans, design of test environment
  7. Report of changes (test, information development,..)
  8. Refinement of project plan (assignment of defined work items to team members)
Results
  1. Specifications of auxiliary classes
  2. Refinement of object/ class model
  3. Refinement of project plan
  4. Specification of test environment, Layout of documents
Check

In this phase the first auxiliary classes are modeled:

Class Level Design

During this phase of a prototype every developer works on his work item.

  1. internal design (data structures, algorithms)
Results
  1. Refines class specifications
  2. Output from code generators
  3. secondary prototypes for verification of design ( usability of interfaces, algorithms, ...)
Check

Coding and Class Test

  1. Implement classes
Results
  1. Refined specifications
  2. Source code for new / updated classes
  3. Test results
Check

System Integration and Test

  1. Building next prototype from source code of all sub systems (in the easiest case its a versioning or "check in" done by every developer)
  2. test of prototype
Results
  1. Problem reports from test.
  2. The new prototype is input for the next iteration.

The last prototype is the code to be shipped to the customer.

Check

_