Sunday 27 February 2011

Sopra Consulting SOMA and BPMN

Hi all.

This week I took the "Applications Architecture" exam, at the Master on ICT Management (University of Seville). This subject is about SOA and BPM. I also gave a presentation of a SOMA and a BPMN diagram that I would like to share with you. A requisite was that the SOMA and the BPMN explained services in my Organization, so I showed Sopra Consulting (a Sopra Group division) services.

You can get the slideshow in my web site https://sites.google.com/site/josemartinezbenavides/, in the BPM section. I recomend you to dowload it, because I'll refer to it as an example in order to explain the methodology to identify services. We'll answer the questions What? Who? Why? How?

What? (slide #2)

In this stage, you shoud identify the departments or functional areas in the Organization. In the example, if you look at slide #2, you'll see Sopra Consulting departments:

  • IT Governance: enables the IT strategy alignment with the bussiness strategy.
  • Technological Strategy: helps customers to find and deploy a suitable sourcing strategy.
  • Software Engineering: mainly, dedicated to improve customers business processes.
  • Project Management Office: services and projects management.
  • Production Engeering: ITIL processes implantation and enactment.

Who? (slide #3)

Now, you have to find actors outside the Organization. In the example, actors outside Sopra Consulting are:

  • Internal Customer: departments in Sopra Group, outside Sopra Consulting.
  • External Customer: Sopra Group customers.
  • Press: we contact them to publish news or events.
  • SEI (Software Engineering Institute): Sopra Consulting is a SEI Partner, and we ask them to publish our customers' CMMi certifications.

Why? (slide #4)

The next step is to identiy relationships between departments and bewteen departments and actors. A relationship between two entities is represented by an arrow. The source is the customer in the relationship, while the target is the provider. Each of the relationships is a services.

You can see many relationships (services) in slide #4. For example, the marked one "Process Reengineering" is a service that the External Customer (source of the arrow) consumes, and is provided by the Software Engineering department (target of the arrow).

This is a very natural notation, because we are using services, wich is a real life concept.

How? (slide #5)

We have finished the SOMA. Now, we must specify each of the services in a BPMN diagram.

In slide #5, you can see the BPMN for the "Process Reengineering" service. After the proposal is approved by the customer, the project starts. First of all, the AS IS is modeled and evaluated against normatives and best practices. Then, the TO BE is modeled. A human resources and information systems gap study is accomplished, in order to define the implantation plan. The implantation plan is executed. A support period starts, until an evaluation is performed and corrective actions are identified and executed. In the BPMN you can also see three PPIs (Process Perfomance Indicators) defined in order to measure and improve the process.


Today's questions:

  • Did you find it interesting? Useful?

Friday 11 February 2011

ICT Process Model article

Hello everybody.

I know, I haven't write a post since summer... but I'm too busy doin'g the ICT Management master's degree at the University of Seville.

I'm writing this post in order to tell you about an article that has been published by AEMES (Asociación Española para la Gobernanza, la Gestión y la Medición de las Tecnologías de la Información - the Information Technology Gobernance, Management and Measurment Association), on its "Processes and metrics magazine" (Sept-Dec 2010 issue).

I'm coauthor of the article with Fran Orgaz, from Endesa Servicios. The article is about the elaboration and implantion of the ICT Process Map for the Applications Management area, in Endesa Servicios. You can get the Sep-Dec 2010 issue of the magazing, containing the article, from here (in spanish).

I recomend you to read the original paper we send to AEC (Asociación Española de la Calidad), winning the first prize on TIC Quality awarded by this association. You can get it from here.

I hope you to enjoy it. And I hope to write new posts soon! Don't forget to leave your impressions or any comment you want.

Sunday 1 August 2010

All process modeling languages are wrong

Recently I wrote that:
  • To develop sofwtare, a software development process is needed.
  • A process is described by a process model.
  • A process model is defined with a process modeling language.
So, the first step should be to define or to choose a suitable process modeling language. I like very much this cite from George Box: "All models are wrong, but some are useful". I think this sentence is great, think about it: every model is a representation of reality; they are an abstraction, showing details that are relevant from some point of view, and leaving apart information that doesn't matter. So, because they hide some information they are wrong, but the purpose is to be useful in a point of view. I think this also occurs with modeling languages: "All process modeling languages are wrong, but some are useful". Let's answer some questions about this topic, based on the paper by Tao Xie "A Linguistic Study of Process Modeling Languages".



What elements should a process have?

To answer this question, a Process Conceptual Framework is presented in the paper. It defines, in a conceptual way, what any Process should have: roles, activities and artifacts.


I don't know if you think that this is obvious or not, but I have known process models in which artifacts wheren't represented. Their templates (Word or Excel templates) were modeled instead, but not all the workproducts are Office documents (for example, an incidence registration is a workproduct without a document tempate), so they were forgiven in the model since they don't have a template. It's very important to represent the artifacts and give them a name beacuse all the stakeholders should know the more relevant workproducts in the process (documents or other kind of results). How do you define quality controls over artifacts if you don't represent them? (You can't).


How are process modeling languages categorized?

The paper explains the one process modeling language can be categorized into one or mor lingguistic paradigms. It alto describes them and gives some interesting examples on languages based on each of them (I recomend you to take a look). This linguistic paradigms are:

  • Rule-Based Paradigm: do you know CLIPS (I'm preparing an entry related to this...) or PROLOG? These are rule-based programming languages. There are many process modeling languages based on this paradigm: roles are associated with rules; these are compound by a an action (what the activity does) and a precondition and a postcondition (the specification of the activity). Real world problems can be resolved by planning. Not good for expressing process topology.
  • State-Based Paradigm: this is good for expresing process topology beacuse it's visual.. Many complex constraints can be represented (nondeterminism, concurrency...).
  • Functional-Paradigm: complexity can be controled by hierarchical process decomposition. The paper mentions a example language, HFSP, which uses grammar rules to decompose activities; a very interesting approach.
  • Procedural Paradigm: the control flow is specified like in common programming languages.
  • Object-Oriented Paradigm: a process is a net of interacting objects. A language called UML is an example mentioned in the article... Object-Orientation is more appropiate for modeling artifacts.
How should a process be?
According to the paper, two words would summarize this: Evolution Support. This is essential; think about a static Business Process Model (BPM) of an Organization. The Organization will always stay the same? I think it won't... So a Process should evolve, allowing Business Process Reengineering (BPR). But, how can a process support its own evolution? There are four mechanisms:


Genericity

It should be easy to change a process in the future. A process is really a family of processes that must be refined or instantiated in order to evolve to an actual process. Functional paradigm gives genericity easily.

The paper propose a research about higher-order functions as the mechanism to allow modeling languages to support genericity. I would like to think a little about this... Think about a process called approve_requisites_document(reqDoc:Document); if we could use higher-order functions in the modeling language, we would be able to define this function instead: approve_document(doc:Document,approveFunc:Function), and this way it would be very easy to add or change documents and/or their associated approvements.

Reflection

The process may be able to change on the fly, to change itself by means of a built process or meta-process and meta-elements; the process should be self-adaptable. Think about using languages based on rule-based or functional paradigms to define a process with reflection support.

Take a look at the picture on the left. The process should contain a process that would transform the whole process; we could call it the "Process Transformation" process. So it's a meta-process (a process that knows, works with and operates with the Process). As we mentioned before, a process built artifacts; both process and its artifacts are supported by a set of process assets (procedures or document templates, for example) called a Process Assets Library (PAL). The "Process Transformation" process' artifacts may be a process or a process asset, so that's why we are talking about a meta-process. This way, the Transformation Process uses feedback from the whole process in order to adapt it.

Exception handling
Don't make the process so complex, define exceptions to handle abnormal cases that you can predict during process modeling. Exception handling mechanisms, as mentioned in the paper, can be block-oriented (frequently in languages based on procedural and object-oriented paradigms) and rule based (guess it...).

Deviation (first) and inconsistency (later) support

What about unexpected situations? The observed process should be able to diverge. Some inconsistencies may be created, so the process should allow to resolve this incosistencies and return to an adecuate state. The paper explains how an example modeling language does this. Languages based on the rule-based paradigm are more suitable for supporting this feature.

That's all for today

I think we've talk about many interesting things about modeling languages... Before start modeling the process, we should think about what features should the process model have according to the business domain. So, first of all, we should define or choose a process modeling language that allows us to build a process with such features. It's important to support Process Evolution by means of its genericity, reflection and exception handling, deviation and inconsistency support, so it's a good idea to choose the more suitable paradigms in order to provide this mechanisms.

Today's questions

What's your opinion? Do you think that it's important to care about modeling languages?
I'd also like to ask you about your experiences in process modeling. What languages / paradigms have you used? What tools for defining the process? What Process flow engine?

Thursday 22 July 2010

Once upon a time

Recently I realized that I'd like to improve my Adobe Flex knowledges but, I can't start coding... how do I do that? I like doing things in the right way, I mean in a formal and systematic way, with the rigor of engineering.... There is a step before... so I decided to start the Flex Development Guide. Well, I like doing things in the right way, but I really enjoy defining the right way in which things should be done.

So, which tasks should be defined in that guide? In which order? I can't start defining the guide... there is also a step before: I need a development process. I think we are on the right way; it could be a great to define:
  • A generic, technology independent development process.
  • Many development guides, one per technology. Each one would extend the development process to set and define the tasks for a specific technology.
OK, we can't start coding. We may start defining a development guide for a concrete technology, but it should be interesting to start defining a developmet process. So, we can start defining this development process, can't we?? No, we can't! How shall we do that? We need a process modeling language! So, let's start designing it.

If you ask somebody: "how would you start telling a story?" We're sure that he or she would answer "Once upon a time...". But, what about software development? Where do you need to start? Coding? Defining a development guide? A process model? A metamodel?

If you're interested like me in doing things in the right way and defining the right way in which things suold be done, I recomend you to read the paper by Tao Xie "A linguistic Study of Process Modeling Languages". It's an interesting study about process modeling languages paradigms and its features. We'll talk about it in detail soon.

Taking the process modeling concepts and phases in that paper, I'v just started writing a Procedure which intention is to specifiy the steps for process modeling, beginning with the process modeling language definition. You can find it in my personal site, at http://sites.google.com/site/josemartinezbenavides, in the IT > PM section. I hope you to take part!

"And they lived happily ever after."

Today's questions:
  • How is your experience in process modeling? What steps did you follow? Did you begin defining the process modeling language?
  • What do you think about defining a generic and technology independent development process? What do you know about MDA?
  • What are the differences between a business and a development process?

Wednesday 14 July 2010

RIAs: beginning the Adobe Flex Development Guide

Some years ago, a friend told me about something called 'Flex'. I must tell you that I'm talking about Adobe Flex, because then I thought he was talking about Flex, very nice for language processing, but we aren't interested (at this moment) in defining regular expressions for deterministic grammars; I'd like to talk about developing RIAs, Rich Internet Applications, that kind of web applications with a great look and feel, seeming to be desktop ones.

There are other technologies, like Silverlight or JavaFX. I have seen some examples of the first one and It left me a very good impression; I have programmed a simple application with Java FX and I think It's not very mature... I don't have much time for investigating, so I'll ask you here your opinion. I have learned many things about Adobe Flex and I find it very interesting. If you don't know this technology, It's worth to take a second to visit the flex store sample application.

Further than simply (¿simply?) learning a new technology, I have always been interested on optimizing and systematizing the development process with that technology, and constructing an architecture that minimizes the effort for programming the required funcionality and providing cross services to satisfy non functional requisites easily.

Well, recently I had the idea of writing a development guide for Flex; this way, I think I will also improve my knowledges about this technhology. I'll like sharing this experience with you, and I ask you to join and participate actively, asking your doubts, making suggestions and correcting my mistakes. The purpose of the Flex Development Guide is to define the steps for perfoming all the tasks in the development of an Adobe Flex application, from the requisite specification to the deployment in a production environment. And much more, like the steps for preparing a workstation for a developer. It's quite ambitious but I'll do it step by step and with your help, I hope.

I think this guide will be interesting for people...

  • Who is starting to learn Flex, beacuse It should allow a person who doesn't have Flex knowledges to develop a Flex Application easily.
  • Who has some knowledges about Flex, because It should give them a global sight of the development process and suggest them best practices to be added to their development process.
  • Who knows Flex very well, because it should help them to systematize the steps for the development of a Flex Application.

All this stuff sounds great. I'm wondering know if I will be able to achieve someting similar to this... Well, these are the goals at this time, let's try to achieve them. I have just published a first version at my site: http://sites.google.com/site/josemartinezbenavides/, in the IT / Dev / RIAs section. This document is almost empty; it just describes the configuration of a development workstation. The last section of the guide is called weaknesses; there I'll write down some features that should be improved.


Regards!


The questions:
  • The technology: Is Adobe Flex the best alternative for developing RIAs?
  • The IDE: Do you know an open source IDE for developing Adobe Flex applications? Do you think we could build one?? In that case, what technology will you use for developing a Flex development IDE? Flex too??

Hello World!

Hello, I'm Pepe and this is my first blog. I called it "Pepe talks about IT" because I found nice this play on words for a blog in which I'm going to talk about many topics of Information Technologies... And, if you're interested in this kind of topics, you'll probably know why I called the first entry "Hello World!"...

First of all, let me tell you a little about myself: my full name is José Martínez Benavides and I live in Seville (Spain). I obtained the Computer Engineer degree at the University of Seville in 2006 and since them my professional carreer have been linked to software engineering. I feel very lucky about that because I consider myself a software engineering enthusiast (for example, becoming a member of an engineering association and subscribing to specialized magazines).


Why have I created this blog? Because I need to share my knowledge and tell my ideas about the Information Technologies. I don't consider myself an expert at all, but an enthusiast (as I mentioned before) who would like to talk with and learn from people with the same interests.

Well, this has been the introduction. I'm sorry if my English isn't very good... please don't hesihate about correcting me. I hope you to follow this blog (I recomend you to use a blog reader) and to participate leaving your comments. You can contact me sending a mail to josemartinezbenavides at gmail dot com and maybe you'd like to visit my site at http://sites.google.com/site/josemartinezbenavides/.

Regards!


The question: what impressions do you have about this blog after reading this entry?