...by Daniel Szego
quote
"On a long enough timeline we will all become Satoshi Nakamoto.."
Daniel Szego

Sunday, January 17, 2016

Product specification and nonstandard set theory


Surprisingly software products do not behave exactly the same way as psychical products from a data sheet point of view. Physical products usually have got the a certain number of functionality that they deliver. As an example, consider a datasheet for a watch that is for instance capable of measuring the time, showing in different, having alarm clock and so on. 
In this sense the datasheet of a watch as a product can be something like : 
- Shows time in 12 / 24 format. 
- Shows the date. 
- Alarm clock. 
- Water resistance. 
- ...

From a mathematical point of view let we consider a U universe of possible functionality. We can say that classical products can be described as subsets of the universe of functionality. 

A software product however is a more difficult thing. On the one hand it is not so easy to specify a  functionality of a software product as generally the terms like collaboration, mobile awareness, user friendly are not so exactly specified as like showing time in 12 / 24 format. On the other hand, most software products have got more or less possibility for extension. It can be some kind of a customization, scripting extension, plug in, or third party integration. So instead of saying for a software product that it realizes a certain functionality, it is better to say the followings:
- It realizes a functionality out of the box.
- It realizes a functionality with customization.
- It realizes a functionality with scripting.
- It realizes a functionality with third party integration.
...
- It can not realize a functionality.

From a mathematical point of view a software product can be much better modeled as a Fuzzy or a rough set of a given U universe of possible functionalities. 


TechReview - Project Siena (aka Microsoft PowerApps in the future)



As one of the major innovation in the direction of mobile development from Microsoft is Microsoft PowerApps, it makes sense to evaluate the possibilities of such a technology (Microsoft PowerApps). Of course the technology is still not 100% on the market, however the framework is based on Project Siena so evaluating that might give an inside to the PowerApp development itself. 

CAN:
 - Windows Apps
 - What you is what you get editor
 - Classical UI elements, Text, Label, ListBox, some limited grid functionality.
 - Datasources, integrating data directly form SharePoint (at the moment some special Datasource for Office 365 is possible), from web search, from classical community sites, like Facebook, yammer, Instagram.    
- Some possibility to locally store data, like importing from Excel.
- Advanced multimedia elements, like video or audio.
- Further developing the project with Visual Studio is possible (with some hacking).
- Sharing and Publishing Applications.

CAN NOT:
- IOS or Android Apps (Theoreticaly it will be possible with PowerApps).
- Implementing
- Implementing complex logic based on the data
- Integrating industrial data sources like SQL, different web services (It is pormised to be extended for PowerApps)

CONCLUSION:
Project Siena is at the moment pretty much in the direction of as a game, build your App, share with your friends, be happy. That is actually a nice thing however it can not be really used for industrial purposes. If the platform will really be extended in a way that it is really cross-platform (having IoS and Android), it supports easy integration of professional data sources like databases or webservices and other industrial systems than it can be used as a real enterprise system. It is still pretty much questionable how much is considered that the system can be further developed by Visual Studio. At the moment it looks rather that way that it will be an only cloud framework where get the functioanlity out of the bix without too much possibility to extend: Microsoft PowerApps Pricing. If it is a possible scenario to further developing by Enterprise Frameworks, like Xamarin than it can really be a great technology.



Saturday, January 16, 2016

Business Application Mining


Considering the recent trends of data-mining, that data-mining tools are getting cheaper and easier to be integrated each day, it makes sense to raise the question how we can make general application development easier with the help of data-mining tools. 

Let we define generally the field Business Application Mining is an area for systematically analyzing business data with data-mining tools in order to create full or partly automatically software applications or improve existing applications.

The field has got some common characteristic with Process Mining however Process Mining focuses mainly on Processes and the analysis is not always based on data-mining tools but rather on manual analysis.   

We can define the following major sub-fields and sub -areas:
- Creating Business Application based on data analysis automatically.
- Creating Business Application in a traditional way, but improving the analysis with business data-mining.
- Improving performance of a business application, like improving infrastructure, storage allocation, database indexes.
- Improving user interface of a Business Application, like improving usability, creating automatically wizards, shortcuts and so on.
- Improving data model of a business application based on data-mining results.
- Creating new release of a software application based on data analysis,



Monday, January 11, 2016

Role of the customer knowledge in Software Industry

It is a pretty interesting question how does the whole IT industry look like if we consider the role of the customer knowledge. With other words, let we imagine that we have a customer that wants to order user or buy a certain software solution. One of the most interesting question how much the customer knows about the field or software that is being ordered. The following picture shows the rough conceptual model.




Figure 1. The role of customer knowledge in software industry.

Based on the model, the following typical cases can be distinguished.


Everything in details: If the customer knows everything about the software that is being ordered than the most typical way is to create a custom development with one of the classical software development methodology, like waterfall model, V or W model. The specification can be really 100% defined and documented, typically the development can be carried out by a remote development team as well, giving a good potential for offshoring or near-shoring.

Detailed concept: Most customers do not really have a detailed concept about how the software exactly look like, usually because of the missing experience in requirement analysis and software engineering.This provide a perfect way for agile development, having a strong and common communication with the customer, delivering early prototypes and gaining feedbacks from the customer apart from the pure specification. The typical solutions of the fields are methodologies like scrum or extreme programming.

Rough Concept: If the customer has got only a rough concept which software does she need, than the software delivery has to be much more agile. This can be realized in two ways, on the one hand there are some hyper-agile framework like K2 or Oracle AppBuilder that enables to change the environment pretty fast, having practically daily software delivery. On the other hand some software frameworks provides the possibility for a power user to build up applications on their own, like standard SharePoint or partly with a Nintex extension.

Detailed Business Know-How: If the customer has got a detailed business know-how, however she lacks of the IT or software concept and experience than ready products are the best solutions to be offered. Certainly there might be a possibility to set up a team with a business analyst as well, however in this situation the best idea is always to buy a ready software if there is one. If not, custom agile development with business analyst support can be evaluated as well.

Rough Business Know-How: Well that is a difficult situation. Let we imagine a customer that wants to buy a software but she lacks of the necessary software development skills and experience, hence her business know-how is not perfect either. That means that the customer needs both business consulting and software product or development. The other solution that the customer has to buy software solution which is de-facto best practice on the market, meaning that business best practice is actually hard-coded in the software itself. SAP is a leading to deliver such solutions.

Minimal Business Know-How: Well in this case, the customer needs to have both pretty much business consulting and a software solution as well. In this case, the optimal way if the business consulting analysis precedes the software evaluation and the choosen product is actually based on the pure business consulting. 

Sunday, January 10, 2016

Comparing MatchPoint with SharePoint Custom Development based on Agile Technology Curve

If we want to compare a classical SharePoint development with a MatchPoint development, the easiest way is to consider the following diagram on comparing a classical development life-cycle based on the complexity of specification and the cost of development.


Figure 1. Comparing MatchPoint with classical SharePoint Development.

From a technological perspective each project has got at least three stages:
1. Setting up the environment (until Q1)
2. Working within the technological limits (between Q1 and Q2)
3. Reaching the technological limit. 

Comparing MatchPoint with SharePoint custom development based on a agile characteristic curve we can conclude the following things. 

Phase till Q1: Setting up time and cost is higher at MatchPoint as with SharePoint custom development, as MatchPoint has to be licensed and installed on the top of SharePoint. 

Phase between Q1 and Q2: Agile Phase at MatchPoint is much bigger as with SharePoint. A lot of taks can be carried out simply by carrying out XML configuration tasks avoiding the pretty much resource intensive tasks, like JavaScript or C# developments. Typical scenarios that are supported by MatchPoint are for example: search based applications, tagging and ontology based applications, forms, workflows and simple case based applications.   

After Q1; After reaching the technological limit development both for SharePoint and for MatchPoint will be much more difficult and much slower. MatchPoint extends in some sense the technological limit of SharePoint, as an example extended tagging mechanism is feature that is not very much possible to realize with SharePoint. In this sense MatchPoint not only provides an easy configuration possibility to speed up agile phase of the development but it extends the architecture limit as well. 



Monday, December 28, 2015

Analysing technology portfolio of an IT consulting company

Maintaining a technological portfolio of an IT company a similarly complex task as extending the portfolio with a new technology : Extending the technologycal portfolio.

Let we assume that we assume that a company has got the following technological portfolio: {t1,t2, .. tN}. Each technology in the portfolio has got a a certain cost to maintain and the maintaining the whole technological portfolio has got a cost as well. The cost of a certain technology depends on many factors, like the complexity of the technology, the available experts, how fast the technology is changing and so on. Cost of the whole technological portfolio depends on the cost of the individual technologies and the synergy effects of the different ones. As an example, maintaining a windows operation team and a .NET application operation team in a company has got a lot of common attributes, both due to the similar activities and due to the similar activity of operations. Let we assume that maintaining the technologies one by one would cost: {C1(t1), C2(t2), .. CN(tN)} and let we assume that cost of maintaining all of the technologies together would cost: Call (t1, t2, ... tN). A good technological portfolio has got the following characteristic:
ΣiCi(ti) > Call (t1, t2, ... tN) 
In other words maintaining the whole technological portfolio cost less than maintaining each of the elements one by one due to the synergy effects.

From the other perspective each technology brings some kind of a benefit, the most simple one that each technology or technological knowledge can be sold for a certain price. In this sense we can define benefit for each technology and a benefit for the whole technological portfolio. Let we assume that if we have the technologies one by one, the would bring the following benefits: {B1(t1), B2(t2)...BN(tN)} and let we assume that providing the whole technological portfolio together brings the following benefit: Ball(t1, t2, ... tN). A good technological portfolio has got the following characteristic: 
ΣiBi(ti) < Ball(t1, t2, ... tN)
In other words selling the whole technological portfolio together worth more than selling just the pieces one by one, As an example offering complex services ranging from SQL development via maintenance, operations and project management can be usually offered higher than offering these services only separately. 

Let we define the rentability of our technological portfolio as 
R(t1, t2, .. tN) = Ball (t1, t2, .. tN) / Call (t1, t2, ... tN)

Based on these definitions, there is a possibility to analyse out technological portfolio:
- at a rentable technological portfolio : R(t1, t2, .. tN) > 1
- at a nonprofitable technological portfolio : R(t1, t2, .. tN) < 1
- at introducing a new tN+1 technology in the portfolio, we make the optimal decision if : 
   R(t1, t2, .. tN) < R(t1, t2, .. tN, tN+1)
- Similarly by dropping out or outsourcing a technology, for example t1 from our technological portfolio we must be sure that :
   R(t1, t2, .. tN) < R(t2, .. tN)

Let we define benefits of alternative technological portfolios, that are manifested as we miss one technology from the portfolio, like if we skip only the t1 technology from the portfolio, we would get the following benefit function: 
Rt1 = R(t2, ... tN) 
- A ti technology is the strongest in the technological portfolio if missing the technology from the portfolio would cause the most loss in rentability : max ti (Rti)
- Similarly a ti technology is the weakest in the technological portfolio if missing the technology from the portfolio would cause the less loss in rentability: min ti (Rti) 



Sunday, December 27, 2015

Extending technology portfolio of an IT consulting company

Working with small or medium IT consulting companies, it is always a question how exactly the technological service portfolio look like. What should be the major and what are the side-technologies that are covered. The situation is especially interesting as the whole IT world is changing each year, new technologies are emerging and others are getting old fashioned. 

The question that I try to analyse how is possible to make a decision about extending the current technological portfolio with a new one. For that question we investigate the market situation with the help of four different dimensions:

a. Cost of a technology: Every technology has got a cost. On the one hand, it depends on the complexity of the technology itself. The more complex it is, the more difficult to build up the necessary knowledge for that or more expensive to get the necessarily qualified expert for the given field. On the other hand, some technology are changing pretty fast, that means that simply keeping up with the everyday changes is itself a huge effort. 

b. Risk of a technology: The second big dimension is the risk of a given technology. It depends among the other on the technological life cycle. As an example if the technology is at the beginning phase in research and development, or it is practically used only by early adopters than the risk factor is pretty huge. On the other hand, general market situation should be taken into a consideration as well, like factors about competition and competitors or factors like general entry or exit strategy of the market.

c. Benefit of a technology: Certainly, the most important question, is a technology good for anything, does it provide value directly or indirectly for an end-user, is it possible to sell at all, or is it perhaps only a fashion trend or technological bubble.  

d. Combination of technologies: Last but not least, a new technology should not be considered only alone, it is usually an extension of the existing portfolio. As a consequence, it is an important question if there are any possible synergy between the new choice and the existing portfolio, either from a pure technological or from a rather market oriented point of view. 

The four big dimensions are summarized on the following picture.


Figure 1. Dimensions of a technology.

Based on the dimension there is a possibility to analyse certain technological choices or typical situations.

1. Successful portfolio extension: A typical characteristic of a successfully new technology can be seen on Figure 2. It must be good integrated with exiting technological knowledge,introducing the new technology should be easy and it should bring strong benefits. As an example, let we consider a company who mainly deals with windows server operation, choosing Skype4Business to extend the portfolio can be such a good extension: It can be good integrated both with the existing technological knowledge and with the typical customers as well, in this sense there are a lot of synergy effect on the market and the introducing cost is low as well. As it is a standard Microsoft product, the general risk factor is not too high; how much csutomer benefit does it exactly bring is certainly an open question.


Figure 2. Successful portfolio extension

2. Wrong portfolio extension: On figure 3 there is a typical example of a wrong portfolio extension. let we assume for instance that we have an SAP consulting company, that wants to offer Skype4Business for the customers. Well, firstly SAP is a totally different technological world, in this sense there will not be too many synergy effect, neither in existing knowledge nor on the market. It is again a question how much benefit Skype4Business offers for a customer.

Figure 3. Wrong portfolio extension

3. New strategical service: Figure 4 demonstrates a typical extension situation for introducing a brand new technology in the portfolio. It has got a huge cost and risk factor, the possibility to integrate with the existing portfolio is not so big, however hopefully it brings a lot of benefit as well. As an example, considering a company that mainly deals with .NET custom development, introducing Dynamics into the services portfolio can be such a direction.

Figure 4. New strategical service

4. Extending existing portfolio: Last but not least minor extension of the portfolio is a general case use-case as well. As an example consider a company that mainly deals with SharePoint, taking Office 365 into the technological portfolio is a trivial choice. The synergy effect is basically huge, the know how must be more or less exist, so setting up the new technology is pretty much straightforward. Such minor extensions are usually not result of a detailed analysis, rather a result of an indirect evolutionary process. 




Figure 5. Extending existing service




Notes on self adaptive SharePoint Environment



Recent trends in Data-Mining software solutions are going in the direction that data-mining and intelligent analysis solutions are getting cheaper and cheaper. It actually does not only mean the price of the software, but the ways of integration the different solutions are getting easier and easier as well. This provides new possibilities in the classical software and application development as well.
Having the possibility of collecting data about a running application, like application usage, logs, infrastructure data, and having the possibility to analyse them with data-mining tools, provide eventuelly the way of proposing a application improvmenet. Based on data measured and cheap data-mining possibilities a general SharePoint application development process can be defined as follows:

0. Analyse: This one is a classical requirement engineering step, analysing the requrements to set up an initial application. However, the requirements should not only be collected by interviewing the stackeholders, there is a possibility to analyse existing documentations or data, that might also be supported by data-mining. 

1. Setup: This is the classical step for setting up the system, planning and installing infrastructure components, developing and delivering custom solutions.

2. Collect data and usage: SharePoint collects pretty many data out of the box, like standard log files, search or usage and health data. As most of these pretty much infrastructure oriented it is important to measure data about certain application usage as well.

3. Analyse: The collected data has to be by different data-mining tools analysed.

4. Propose new structure: based on the data and analysis new application structure can be proposed. The improvement might be only infrastructure oriented to achieve a better performance, however completely modified use cases or business processes can be defined as well.

Repeat from step 1: The process can be actually repeated from the beginning, the new structure or can be again set up and the application usage can be again measured and analysed.

Saturday, December 12, 2015

On the economy of server operation


From the economical point of view creating a new software is just like building a house. The only question is how fast, how cheap and which house is possible to build. The situation is pretty much different at classical server operation tasks like ensuring performance, having backup recovery or disaster recovery plans and concepts. This market is much more similar to the insurance market: One does not pay for getting a new service, but for ensuring that in case of disaster there is some recovery, backup or just simply the people who are capable of getting the system back. 

Notes on ERP and productivity increasing software programs




ERP and Productivity Increasing software programs were meant to help people on an everyday basis and increase the working productivity. Surprisingly the role of these software have been being slowly changing. As more or more business processes are defined and hard-coded by different software programs one usually has got the feeling that the company is basically managed and lead by these softwares and not anymore by humans. Perhaps in a not very far future companies will not be anymore defined by the people, by the employees, only by the used softwares and process. 

I always hated to say for people: human resource. However in this sense, it makes sense: human resource is just a resource among the others that is used by the company and probably not the most important one.