BPM Vendor - K2
Slogan: Process-driven applications -- fast...
So what is BPM first of all? BPM stands for Business Process Modeling and it is the activity of representing processes of an enterprise so they may be analyzed and improved. It is typically performed by Business Analysts and Managers who are seeking to improve process efficiency and quality.
There are many different vendors out there to help you do this with their products, but the one I will focus on in this post is a company called K2. They actually have three different types of products: Blackpearl, Blackpoint, and Connect. I will be discussing each below:
But first a quick overview of K2:
K2 offers three software products to help you increase business efficiency and simplify work. K2's visual tools allow people of various technical and non-technical backgrounds to create applications that automate processes and streamline operations. And when something in the business changes, modifying the applications to keep up is easy.
K2 applications can be set up to manage simple business processes — such as document approval or inventory tracking — and they can be set up to pull together processes, people, services, information and systems into a single application that helps drive business. Then, what's been built can be used like building blocks to assemble new applications.
Because K2 tools are built on Microsoft technology and because K2 users actually complete work in the Microsoft programs they already know — like SharePoint and Visual Studio — little training is required and user buy-in is quick. In fact, K2 provides more Microsoft integration points than any other software product in the space.
We have a range of products to meet the needs of organizations with unique business challenges, technical resources and budgets; because, in software, one size does not fit all.
And now to their products:
Blackpearl - this is K2's flagship product. It's a browser based tool and is appropriate for a broad range of users (technical and nonl-technical). Processes are not tied to the designer so users can collaborate based on their technical skill or preference.
Blackpoint - this is for Sharepoint users who don't want to code and want to build workflows and process driven applications quickly. It features a powerful Office-Like designer (K2 Studio) and a Web-based designer (K2 Designer for Sharepoint). It's a more cost friendly solution than Blackpearl if all that functionality is not needed, however, it can be upgraded to Blackpearl if it those features become necessary.
Connect - this is basically a plugin for BlackPearl that essentially integrates SAP information with your business applications. It enables SAP developers to quickly and visually create reusable business entities (Smartobjects) that can be used to complete the integration between the business app and SAP.
K2 is a major player in BPM. They are considered both leaders and visionaries in the BPM world. They offer a great set of products which are Microsoft based and easily integrated into most businesses with ease.
Wednesday, February 29, 2012
Wednesday, January 18, 2012
SWEBOK vs. Core Processes of the SDLC
Below are two different methods that outline the process for building software applications.
Method 1: Core Processes of the SDLC
The six core processes tend to focus on a lot of effort on the pre-processes such as Identifying, Planning, and Discovery. These steps are seen later in the SWEBOK KA's. SWEBOK goes right into Requirements as the first step whereas the core processes don't get to this until the 3rd step. Many would argue that these pre-processes are the most critical of steps as it allows you to create a scope around your project and really define what you are wanting to accomplish with the project. It also defines the Who, the What, and the How of the project...all very critical components. What good are the best requirements if you haven't really done the pre-work.
The Knowledge Areas are further broken down into sub areas. For instance with Requirements you actually have 7 subareas:
Another thing to note about the KA's is that they are broken up into two separate groups. The first five KA's represent something similar to a standard waterfall methodology (though that is not implied). The last 5 (with the exception of Quality) are not really present when talking about the six core processes. These 4 KAs are:
Method 1: Core Processes of the SDLC
- Identify the problem or need and obtain approval to proceed
- Plan and monitor the project--what to do, how to do it, and who does it
- Discover and understand the details of the problem or the need
- Design the system components that solve the problem or satisfy the need
- Build, test, and integrate system components
- Complete system tests and then deploy the solution
- Requirements
- Design
- Construction
- Testing
- Maintenance
- Configuration Management
- Engineering Management
- Engineering Process
- Engineering Tools & Methods
- Quality
The six core processes tend to focus on a lot of effort on the pre-processes such as Identifying, Planning, and Discovery. These steps are seen later in the SWEBOK KA's. SWEBOK goes right into Requirements as the first step whereas the core processes don't get to this until the 3rd step. Many would argue that these pre-processes are the most critical of steps as it allows you to create a scope around your project and really define what you are wanting to accomplish with the project. It also defines the Who, the What, and the How of the project...all very critical components. What good are the best requirements if you haven't really done the pre-work.
The Knowledge Areas are further broken down into sub areas. For instance with Requirements you actually have 7 subareas:
- Requirements fundamentals
- Requirements process
- Requirements elicitation
- Requirements analysis
- Requirements specification
- Requirements validation
- Practical considerations
Another thing to note about the KA's is that they are broken up into two separate groups. The first five KA's represent something similar to a standard waterfall methodology (though that is not implied). The last 5 (with the exception of Quality) are not really present when talking about the six core processes. These 4 KAs are:
- Configuration Management - the discipline of identifying the configuration of software at distinct points in time.
- Engineering Management - deals with the management and measurement of software engineering. also deals with much of the pre-work of a project such as planning, scope, initiation, etc.
- Process Management - managing the process itself through implementation, assessment, measurement, change, etc.
- Tools and Methods - the tools involved as they relate to the other KA's
Sunday, January 15, 2012
3 Possible "Silver Bullets" to Software Development
How can we make the software development process better? Many things seems obvious, but little has been done to thwart this age-old dilemma. I don't really think I have any "silver bullets" to this problem, but I do offer three possibilities below:
Silver Bullet 1: Change Things Up!! Incentives??
Too many times I have been on a typical project (typical for my organization) and before it even begins the programmers (and most of the others on the project) are already digging their heels in for months of work. Why does it have to be this way? Why does this project really need to take 3 months? I'm sure if we analyzed the actual amount of work that needs to be done, it will usually be less than that, but in actuality it will probably take longer than that. I think there needs to be a shift in thinking. I think too many people are complacent and even "lazy" if you will. If they can get by with doing as little work as possible during a day, but still get enough done to progress the project forward, then that's what most would do (heck, I'm guilty of it). Maybe if there was more of a "financial incentive" people could shift attitudes and really go that extra mile to get the project done. If I keep my job whether I get this project done on-time and on-budget (or not) what is the incentive for me? I will just do my part of the project and let someone else worry about the rest. If someone was going to give me $1000 bonus to finish my part in 4 weeks instead of 6, perhaps I would consider doing that.
Silver Bullet 2: Hold programmers more accountable (more design docs)
I think that many programmers get away with high estimates because not a whole lot of people can understand what they do. The business folks don't want to worry themselves with all the technical jargon, so they usually take the programmer's word for it and don't question first, second, or third level estimates. I know in my organization the programmers do not (and really aren't even required) to create design docs on what they build. They just build programs that nobody understands but them. And when it comes down to makes changes later on, the effort is costly and time consuming because no one knows how the program works to begin with (and what if the original programmer is no longer with the company)? Design docs could help all to better understand the program, and allow for more realistic changes and upgrades later.
Silver Bullet 3: Bring back coding on-shore!!!
I think the author of the article had it right, experienced and knowledgeable programmers are really worth their weight. I can't tell you how many times that I have worked with offshore programmers that don't understand a thing about software development. They have usually never coded before and just don't understand our businesses enough to be successful. I'm not knocking the whole model (I know that some organizations have had success with it), but how long did it take before that success was reached? Do these organizations go back and analyze the cost differences in the two models to see if there really was a savings? Or do they just look at the bottom line (i.e. paying US person $100/hour and paying offshore $50...no brainer). There are so many other things to consider. Are your projects taking twice as long to complete? Is the code being churned out more buggy? Are there corners being cut in other places? Testing? Design? You have to look at the whole package.
Like the author said, there really is no silver bullet. But trying new things to find a method that actually works for your organization is better than just sticking with the same old method that has been losing your company money year after year. Maybe adapting/changing is the silver bullet, or as close to one as we can expect.
Silver Bullet 1: Change Things Up!! Incentives??
Too many times I have been on a typical project (typical for my organization) and before it even begins the programmers (and most of the others on the project) are already digging their heels in for months of work. Why does it have to be this way? Why does this project really need to take 3 months? I'm sure if we analyzed the actual amount of work that needs to be done, it will usually be less than that, but in actuality it will probably take longer than that. I think there needs to be a shift in thinking. I think too many people are complacent and even "lazy" if you will. If they can get by with doing as little work as possible during a day, but still get enough done to progress the project forward, then that's what most would do (heck, I'm guilty of it). Maybe if there was more of a "financial incentive" people could shift attitudes and really go that extra mile to get the project done. If I keep my job whether I get this project done on-time and on-budget (or not) what is the incentive for me? I will just do my part of the project and let someone else worry about the rest. If someone was going to give me $1000 bonus to finish my part in 4 weeks instead of 6, perhaps I would consider doing that.
Silver Bullet 2: Hold programmers more accountable (more design docs)
I think that many programmers get away with high estimates because not a whole lot of people can understand what they do. The business folks don't want to worry themselves with all the technical jargon, so they usually take the programmer's word for it and don't question first, second, or third level estimates. I know in my organization the programmers do not (and really aren't even required) to create design docs on what they build. They just build programs that nobody understands but them. And when it comes down to makes changes later on, the effort is costly and time consuming because no one knows how the program works to begin with (and what if the original programmer is no longer with the company)? Design docs could help all to better understand the program, and allow for more realistic changes and upgrades later.
Silver Bullet 3: Bring back coding on-shore!!!
I think the author of the article had it right, experienced and knowledgeable programmers are really worth their weight. I can't tell you how many times that I have worked with offshore programmers that don't understand a thing about software development. They have usually never coded before and just don't understand our businesses enough to be successful. I'm not knocking the whole model (I know that some organizations have had success with it), but how long did it take before that success was reached? Do these organizations go back and analyze the cost differences in the two models to see if there really was a savings? Or do they just look at the bottom line (i.e. paying US person $100/hour and paying offshore $50...no brainer). There are so many other things to consider. Are your projects taking twice as long to complete? Is the code being churned out more buggy? Are there corners being cut in other places? Testing? Design? You have to look at the whole package.
Like the author said, there really is no silver bullet. But trying new things to find a method that actually works for your organization is better than just sticking with the same old method that has been losing your company money year after year. Maybe adapting/changing is the silver bullet, or as close to one as we can expect.
Tuesday, December 13, 2011
A Review of Internet Technology - Part 1: Client Side Technologies
The first topic of this review deals with the client part of a Client/Server relationship. The definition of client is: an application or system that accesses a service made available by a server. Note in the definition there are really two types of clients: there is a client application and a client system.

Let's discuss the differences between the two:
1) Client Application - a client application is usually a small program that is used to access the server program. It is sometimes accessed by the client system. An example of this that most every web user has used is the Web Browser. When you use a web browser you are using client software that allows you to access the internet. The browser allows you to input web addresses and then renders those web pages so that you can view them. Without the browser, you wouldn't be able to access all of the multimedia of the web.
2) Client System - just about every personal computer out there could be considered a client system. You are using this system to access different types of servers: Application, Database, Web, etc. In the past, there was really no such thing as a client system. You would go directly to a mainframe if you wanted to access it. Now, you can access that same server/mainframe from just about anywhere you can get on the internet. The client system alone has a lot less power than the server system, but as long as that connection can be made to the server, you still have full functionality of the server. This is a great cost saving tool as you can purchase several inexpensive client machines to access the one expensive server machine.
Clients have made a lot of progress over the years. Today, many client systems can act as both clients and servers themselves. On a small scale you could potentially run all components (Client, DB Server, Application Server, Web Server, etc.) on one machine.
Mobile computing is really the future of the internet, and mobile devices are themselves clients. There are also client applications that are typically installed on the mobile devices so that a server application/device can be accessed. This is a great model as all information is stored at the server level. If a phone is lost or destroyed, the data on the server is still there and can be accessed by any phone. This is really the beauty of the client/server model. All information is centrally stored and any client be it desktop, tablet, or mobile device can access that same information.
All reference information for this blog was obtained at the following locations:
http://en.wikipedia.org/wiki/Client%E2%80%93server_model
http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm
Let's discuss the differences between the two:
1) Client Application - a client application is usually a small program that is used to access the server program. It is sometimes accessed by the client system. An example of this that most every web user has used is the Web Browser. When you use a web browser you are using client software that allows you to access the internet. The browser allows you to input web addresses and then renders those web pages so that you can view them. Without the browser, you wouldn't be able to access all of the multimedia of the web.
2) Client System - just about every personal computer out there could be considered a client system. You are using this system to access different types of servers: Application, Database, Web, etc. In the past, there was really no such thing as a client system. You would go directly to a mainframe if you wanted to access it. Now, you can access that same server/mainframe from just about anywhere you can get on the internet. The client system alone has a lot less power than the server system, but as long as that connection can be made to the server, you still have full functionality of the server. This is a great cost saving tool as you can purchase several inexpensive client machines to access the one expensive server machine.
Clients have made a lot of progress over the years. Today, many client systems can act as both clients and servers themselves. On a small scale you could potentially run all components (Client, DB Server, Application Server, Web Server, etc.) on one machine.
Mobile computing is really the future of the internet, and mobile devices are themselves clients. There are also client applications that are typically installed on the mobile devices so that a server application/device can be accessed. This is a great model as all information is stored at the server level. If a phone is lost or destroyed, the data on the server is still there and can be accessed by any phone. This is really the beauty of the client/server model. All information is centrally stored and any client be it desktop, tablet, or mobile device can access that same information.
All reference information for this blog was obtained at the following locations:
http://en.wikipedia.org/wiki/Client%E2%80%93server_model
http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm
A Review of Internet Technology - Part 2: Internet Infrastructure
In the first part of this review we went into heavy detail regarding client/server technology. Unfortunately, none of that is really possible without the internet infrastructure that serves as the backbone. Below is a snapshot of the major components of internet infrastructure:

So what is Internet Infrastructure? When you think about the internet you should really be thinking "hardware and protocols" (or at least that's what I think of). The internet is really made up of a series of interconnected devices all communicating with each other to bring about some type of result.
The internet was established in the late 1960's by the US Department of Defense. The idea was to establish a network of communication. Since then obviously, the internet has grown into a massive network of networks used for business, education, government, and personal purposes. It's always on and in some instances "free" to access.
So how does it all work? How is it that I type an address into my computer and get access to the internet? Well first you need a connection to the internet itself (and not just your home network either, the actual full-blown internet). This is done through an ISP (Internet Service Provider). An ISP is a company that provides you with the service to connect to the internet. They typically charge a flat monthly rate based on the speed tier you want (faster = more money). In addition to an ISP, you will need a modem as well. This device will allow your computer to connect to the internet via the ISP. Now that the connection to the internet is established it's time to visit websites. You pull up a web browser and type in an address. A series of different "routers" are involved with transforming that address into content that you then view on your computer. Refer to my blogpost here to get more information on how routers work.
One other thing to make note of is that the internet is made up of a series of protocols for communication. The main one to focus on is TCP/IP. All web addresses and all devices connect to the internet via an IP address. The is the internet's language if you will. When you type in http://www.google.com you are actually going to an IP address that looks something like 111.111.111.111. There is something called a DNS server that translates the address to the numbers for ease of use (i.e. it's much simpler to remember a web address than it is to remember all those numbers that make up an IP address).
The internet has grown leaps and bounds over the past decade. More and more devices are getting connected and more and more websites are being created. Mobile devices again are changing the landscape of how we access the internet. We are at a point now where we are moving to a new version of the IP address (IPv6). This is because IPv4 only handles a certain amount devices. The number of devices connecting to the internet is growing exponentially and certain things have to change to accommodate that.
The internet infrastructure part of Internet Technology is often complex and the details of how it works is not necessary for the average user. But for someone in the field of IT it is essential to know (at least at a high level) how this part functions. It is a critical part of the web experience as without it there really wouldn't be one.
Reference information in this blog was obtained from the following sites:
http://en.wikipedia.org/wiki/ARPANET
http://en.wikipedia.org/wiki/Internet
So what is Internet Infrastructure? When you think about the internet you should really be thinking "hardware and protocols" (or at least that's what I think of). The internet is really made up of a series of interconnected devices all communicating with each other to bring about some type of result.
The internet was established in the late 1960's by the US Department of Defense. The idea was to establish a network of communication. Since then obviously, the internet has grown into a massive network of networks used for business, education, government, and personal purposes. It's always on and in some instances "free" to access.
So how does it all work? How is it that I type an address into my computer and get access to the internet? Well first you need a connection to the internet itself (and not just your home network either, the actual full-blown internet). This is done through an ISP (Internet Service Provider). An ISP is a company that provides you with the service to connect to the internet. They typically charge a flat monthly rate based on the speed tier you want (faster = more money). In addition to an ISP, you will need a modem as well. This device will allow your computer to connect to the internet via the ISP. Now that the connection to the internet is established it's time to visit websites. You pull up a web browser and type in an address. A series of different "routers" are involved with transforming that address into content that you then view on your computer. Refer to my blogpost here to get more information on how routers work.
One other thing to make note of is that the internet is made up of a series of protocols for communication. The main one to focus on is TCP/IP. All web addresses and all devices connect to the internet via an IP address. The is the internet's language if you will. When you type in http://www.google.com you are actually going to an IP address that looks something like 111.111.111.111. There is something called a DNS server that translates the address to the numbers for ease of use (i.e. it's much simpler to remember a web address than it is to remember all those numbers that make up an IP address).
The internet has grown leaps and bounds over the past decade. More and more devices are getting connected and more and more websites are being created. Mobile devices again are changing the landscape of how we access the internet. We are at a point now where we are moving to a new version of the IP address (IPv6). This is because IPv4 only handles a certain amount devices. The number of devices connecting to the internet is growing exponentially and certain things have to change to accommodate that.
The internet infrastructure part of Internet Technology is often complex and the details of how it works is not necessary for the average user. But for someone in the field of IT it is essential to know (at least at a high level) how this part functions. It is a critical part of the web experience as without it there really wouldn't be one.
Reference information in this blog was obtained from the following sites:
http://en.wikipedia.org/wiki/ARPANET
http://en.wikipedia.org/wiki/Internet
A Review of Internet Technology - Part 3: The Web Server
So we've talked about one part of the Client/Server model (the Client). The next few sections we will be talking about the different types of Servers. In this review, we will discuss the role of the Web Server.
What is a web server? The primary function of a web server is to deliver web pages on the request to clients. This means delivery of HTML documents and any additional content that may be included by a document, such as images, style sheets and scripts. So how does this work exactly? Below is a simple diagram to describe the process:

This is simple example in which your machine is running a Web Browser (IE, Firefox, Chrome, etc.) and it makes a request to a certain page. It hits the server machine which is the web server and sends back the requested page in the form of content.
You can actually install Web Server software (like Apache) on your personal computer to turn it into a web server as well. So just like the client, you can have a Web Server system and a Web Server application.
Over the past few years we have seen the use of cloud technologies come to the forefront. All of these servers are stored online in this virtual "cloud". During the course of this class, we got some exposure to Amazon Web Services (AWS) which allowed us to create virtual web servers that could house our websites. This is convenient as there is no physical server box to maintain. All of the load balancing and support is done by the service provider (in this case AWS). Cloud services and mobile are getting a lot of focus now. Many don't want the hassle of setup and maintenance costs that go along with having their own servers. It's much more convenient to just use a cloud offering. Still, I don't think the physical hardware is going away anytime soon. Until cloud computing really takes off, it's probably our best option at the moment.
http://en.wikipedia.org/wiki/Web_server
http://computer.howstuffworks.com/web-server.htm
What is a web server? The primary function of a web server is to deliver web pages on the request to clients. This means delivery of HTML documents and any additional content that may be included by a document, such as images, style sheets and scripts. So how does this work exactly? Below is a simple diagram to describe the process:
This is simple example in which your machine is running a Web Browser (IE, Firefox, Chrome, etc.) and it makes a request to a certain page. It hits the server machine which is the web server and sends back the requested page in the form of content.
You can actually install Web Server software (like Apache) on your personal computer to turn it into a web server as well. So just like the client, you can have a Web Server system and a Web Server application.
Over the past few years we have seen the use of cloud technologies come to the forefront. All of these servers are stored online in this virtual "cloud". During the course of this class, we got some exposure to Amazon Web Services (AWS) which allowed us to create virtual web servers that could house our websites. This is convenient as there is no physical server box to maintain. All of the load balancing and support is done by the service provider (in this case AWS). Cloud services and mobile are getting a lot of focus now. Many don't want the hassle of setup and maintenance costs that go along with having their own servers. It's much more convenient to just use a cloud offering. Still, I don't think the physical hardware is going away anytime soon. Until cloud computing really takes off, it's probably our best option at the moment.
http://en.wikipedia.org/wiki/Web_server
http://computer.howstuffworks.com/web-server.htm
A Review of Internet Technology - Part 4: The Database Server
One of the most crucial components of Internet Technology is the Database Server. You have to be able to capture information, store that information, and then later retrieve that information for data analysis. All of this is made possible by the database server.
As with the other components, you can see that there is the concept of a database system and a database application. The system would be the physical box your content is stored on and the application would be the interface that you use to access the system.
There are many things to consider when choosing a database for your company. Price, feature set and functionality, compatibility, security, etc. This system will be storing all of your critical information so it's important that it's tailored to meet your needs. The two most popular database applications out there now are Microsoft's SQL Server and Oracle. The two are similar in that they can handle both large scale business and smaller scale business as well. If you are a Microsoft shop and want to keep using their tools, then perhaps SQL Server is the way to go. If you are wanting to use some of the extensions that Oracle provides and aren't really tied to any particular vendor, then Oracle might be the way to go. There's also a third option, MySQL. MySQL is actually an open-sourced product that's free to use. If you have a small business and want to save some money, you could go with this option as it will probably meet most of your needs.
All 3 support SQL standards, but you will have to become familiar with the differences of each. Each one will support/not support certain included functions. Or perhaps they support the function but it's in a different syntax than the other. All things to consider when choosing what system to use.
Over the past 5 to 10 years not much has changed with the database server, it still serves pretty much the same purpose. However, recently with cloud computing we're starting to see db servers as a service that can be purchased and managed by a third party, which takes the hassle of maintenance away from the company actually using the db server. There's also the concept of mobile in that we are accessing db servers all the time with our mobile phones. When we login to a banking app on our phone, our login information will be pinged against the db of our bank to verify that we are who we say we are.
DB are critical, make no mistake. Spend a lot of time thinking about what you need from your database before making the decision of purchasing one. It's much easier to spend that time upfront than after the fact.
As with the other components, you can see that there is the concept of a database system and a database application. The system would be the physical box your content is stored on and the application would be the interface that you use to access the system.
There are many things to consider when choosing a database for your company. Price, feature set and functionality, compatibility, security, etc. This system will be storing all of your critical information so it's important that it's tailored to meet your needs. The two most popular database applications out there now are Microsoft's SQL Server and Oracle. The two are similar in that they can handle both large scale business and smaller scale business as well. If you are a Microsoft shop and want to keep using their tools, then perhaps SQL Server is the way to go. If you are wanting to use some of the extensions that Oracle provides and aren't really tied to any particular vendor, then Oracle might be the way to go. There's also a third option, MySQL. MySQL is actually an open-sourced product that's free to use. If you have a small business and want to save some money, you could go with this option as it will probably meet most of your needs.
All 3 support SQL standards, but you will have to become familiar with the differences of each. Each one will support/not support certain included functions. Or perhaps they support the function but it's in a different syntax than the other. All things to consider when choosing what system to use.
Over the past 5 to 10 years not much has changed with the database server, it still serves pretty much the same purpose. However, recently with cloud computing we're starting to see db servers as a service that can be purchased and managed by a third party, which takes the hassle of maintenance away from the company actually using the db server. There's also the concept of mobile in that we are accessing db servers all the time with our mobile phones. When we login to a banking app on our phone, our login information will be pinged against the db of our bank to verify that we are who we say we are.
DB are critical, make no mistake. Spend a lot of time thinking about what you need from your database before making the decision of purchasing one. It's much easier to spend that time upfront than after the fact.
Subscribe to:
Posts (Atom)
