Benefits of model-first development

CodeFluent Entities White Paper – Version 4.0 – April 2013

WhitePaper

 

The objective of this white paper is to describe the software development challenge and clarify its root causes.

The first half of the document explains the market challenge and why this is a tough business issue. This part is widely applicable by anyone interested in software development and is not dependent on our offering.

In the second half of the document we explain how SoftFluent addresses the challenge through itsCodeFluent Entities model-first software factory and associated methodology.

Read CodeFluent Entities WhitePaper

Learn more about CodeFluent Entities

SoftFluent was Partner of SDC in Gothenburg

SDC

SoftFluent was Partner of Scandinavian Conference Developer 2013 in Gothenburg. The program was designed to find something of interest and go back to daily development work infused with useful new ideas like CodeFluent Entities.

Social Email Login

Your users are tired of having to register on your site because it takes time, and it’s another username/password to remember. If you have tried to offer the social login feature on your site and realized that it was not that simple to build, then this Social Email Login utility is for you!

Social Email Login is a library built in ASP.NET 4.0 that will let your users log in using their favorite social network. This library was made because OAuth libraries available on the net today are usually too complicated, and often depends on other libraries. Sometimes you just need a simple login to identify the user, and nothing more…

The main social networks are available out of the box, such as Facebook, Google, Microsoft Live, Yahoo and Twitter. The goal of this project is to have a simple and flexible tool that retrieves the email address of the user who logged in using one of the available social network, and then, use that email to integrate easily with the ASP.NET Membership provider.

This is a simple tool because it only tries to retrieve the email address and nothing else.
This is a flexible tool because it lets you add service providers very easily.

The available authentication protocols are OAuth 1.0, OAuth 2.0 and OpenID.

Dependencies:
Social Email Login has only one dependency, which is the CodeFluent RuntimeClient, a free library, available as a Nuget (http://nuget.org/packages/CodeFluentRuntimeClient/). This library is used mainly for two of its features:

  1. to manipulate the different parts of a url
  2. to work with JSON (de)serialization

Many json utilities exist on the net today, but most of them are over complicated, and too big. So we decided to use the CodeFluent RuntimeClient library, because it does what we need and works for any type of ASP.NET application. Because the source code is on CodePlex, you can obviously change this library to another one if you like.

Nuget:
https://nuget.org/packages/SocialEmailLogin/

CodePlex:
http://socialemaillogin.codeplex.com

Website Demo:
http://www.softfluent.com/downloads/socialemaillogin.demo.zip

HELP
To run the demo, you need to edit the web.config:

  • select your SQL database
  • enter both the consumerKey and consumerSecret keys for each service provider you wish to use. You will need to create an app for each service to retrieve your consumerKey and consumerSecret keys.

Generating JSON web services from an existing database with CodeFluent Entities

This article posted on CodeProject will show you how to generate a JSON base web service layer from an existing database using CodeFluent Entities. We will also generate a web client back office following an “Import wizard”.

A common scenario

 

Let us say that we are facing the following scenario:

  • We have a database that we want to expose via a JSON based web service layer, providing CRUD (Create, Read, Update and Delete) operations.
  • We also need to build a back office in order to manage and administrate the data coming from our database.
  • We may need, on a future, to access in a different way our database, for example from a Smart Client or expose a SOAP based web services layer (there are always new ideas).
  • We need to deploy this system as soon as possible.

Let us start, what we need to do is:

  • Build a data access layer capable to load data, create new data, update and delete existing data (and make sure it works).
  • Manage validation data (and make sure it works).
  • Build a JSON based web service layer:
    • Build every needed service contract and operations.
    • Configure our service contracts to support JSON.
    • Host our services.
    • Make sure it works
  • Build a web based client (and make sure it works).
  • Lay the foundations so any possible evolution and additional architecture can be supported including mobile access through different smartphone devices.
  • And everything I have missed.

Or…. We can use CodeFluent Entities to do the plumbing and being sure that it works.

In the starter wizard, we can see some of the possible built-in architectures that can be generated by CodeFluent Entities, and of course you can imagine your own architecture by creating a custom CodeFluent Entities project with your relevant set of producers.

clip_image002

The scenario we mention here is developed "step by step" in the full article on CodeProject

Benefits of Model-First Software Development

CodeFluent Entities White Paper

whitepaper-image

The objective of this white paper is to describe the software development challenge and clarify its root causes.

The first half of the document explains the market challenge and why this is a tough business issue. This part is widely applicable by anyone interested in software development and is not dependent on our offering.

In the second half of the document we explain how SoftFluent addresses the challenge through itsCodeFluent Entities model-first software factory and associated methodology.

Read CodeFluent Entities WhitePaper

Learn more about CodeFluent Entities

 

SoftFluent best wishes for 2013!

SoftFluent wishes you all the best for 2013, with great success for your development projects. We wish you to be home before 5 pm while producing best-in-class applications thanks to CodeFluent Entities!

Click on the image below for our complete wishes!

Windows8

The mythical "Indian man-month"

Introduction

For long, it has been established that measuring software development result cannot be reduced to a time-spent unit such as man-month. As early as in 1975, The mythical man-month became a famous book that explained this in different ways, including the mention that adding resources to a late software project could only delay it more. The book was republished in 1995, a confirmation of its accuracy, but also a proof that the necessity of -explaining this to non-software people remained fully necessary 20 years after. I have no doubt it will be necessary to keep repeating the message in 2015, as software production remains a widely misunderstood discipline among decision-makers.

image

A lot of people keep comparing this to the physical industry where the same component needs to be produced thousands or millions of times with the exact same process. In software, a source code is produced only once as it is immaterial and can be copied as needed at almost no cost. And still, even when comparing with industry, one should think whether a team of 10 guys with shovels would dig a hole faster and at less cost than a team of 3 guys with bulldozers. So it is not very hard to understand that each business evolves in method and tooling. Software is probably even more concerned than many other businesses, considering the technology evolution pace.

Emergence of off-shore

Still, since the emergence of the "off-shore" model in the late 1990s, the focus on hourly cost of developers has peaked without many voices in the software industry to challenge these new software production models.

The reasoning was as simple as the following most of the cost of software development is the salary of developers, as it is a time-consuming activity, which is true. So if one goes to countries where the time is less costly, it will cost less in the end. This fully neglects the importance of the methodology, in particular the interaction process with users or product management, the skills and the tooling but who cares?

At that time, the development of cost-killing methodologies, combined with the power given to purchasing departments and their basic comparison methodologies and the absence of a relevant metric to measure software production (beyond the man-month) made this reasoning the general trend in the industry, leading to what I would now call "The mythical Indian man-month syndrome", with Indian developers being of course cheaper than their western countries equivalent with higher salaries.

Despite the awareness of numerous field failures (one can read this 2004 article as an example and notice the cautiousness of the title), the trend has continued to date. To some extent, skills and part of the production methodology has of course improved in the off-shore countries, but the most important point about interaction with business users remains.

20% savings "when it works"

As the president of the R&D focus group of the AFDEL (French software vendor association), we had a session of experience sharing about off-shore. Not only were mentioned many failures, but the fact that struck me the most is that the successful projects talked about 20% savings in the end, when including all the hidden costs that were needed to make it work. And it was also mentioned that it required about 2 years of ramp-up to make it successful.

Interestingly, I found this interesting CIO magazine article that confirms this observation made as early as in 2003! This article has the merit of listing any of the costs, as well as explaining this "20% savings in the most favorable case" reality.

Understanding the harsh reality about off-shore should be no surprise, as I personally love one comment on this article:

It is very difficult for business users and IT workers residing in the same locale to work out software requirements and successfully execute a project. In fact, some statistics say that around 80% of IT projects fail to meet their goals. Now imagine moving the technical team several thousand miles away, put them on a work schedule that is completely opposite that of their end-users, give them a different native language, and give them a completely different set of cultural mores and norms. With as much sarcasm as I can muster, I must say that none of this seems intuitively likely to increase the odds of success, but it does have the "advantage" of being really cheap.

Paying a low price for something that does not fulfill your need is for sure a wrong spending!

Probably more than 100% extra costs in other cases

Now let us come back to field experience, off-shore "per se" is not the solution to the numerous challenges faced in software development. This is why we observe many failures on the field where we estimates costs being around almost the double as they should be, not only in the short term, but over the long run.

It is not the matter about whether developers are good or not in some geographies (although there are geographies with more or less skills) but mostly the nature of software development that makes it challenging to work distantly from users.

Trendy agile methodologies are smart enough to put an emphasis on the proximity of product management role. We have developed the importance of alignment in our series of post about "Measuring software development performance", that developed 5 key critical dimensions:

  1. Alignment
  2. Productivity
  3. Quality
  4. Debt minimization
  5. Predictability

If the team is large, you might have a chance to run for the 80% side of the spectrum with the "scaling effect", but even so, it is quite challenging to reach it. And we have seen many customers moving back from off-shore models and now hiring local resources.

It is also worth mentioning that many failures on the field are just taboo and then perfectly explained by technical teams, taking advantage of the difficulty for decision-makers to really measure success. It is quite common in this industry and is of course exacerbated with the complexity of a distant team.

Beyond the costs

Beyond the costs, going too far with off-shore often causes:

  • Skills challenges, as you may not find the best technical solutions,
  • Loss of control, as you may depend on external partners that do not have the same interest as yours,
  • Loss of agility, as you may require months to change even simple business requirements,
  • Increased risks of various nature because of the distance, the language, the culture and sometimes even the legal or intellectual property risks.

In the end, by externalizing too much of your development, you will lose the skills to even evaluate whether you are doing well or not. One could also mention the citizenship dimension but this is not even my point here.

This is why, even if off-shore is often a failure, few people publicly admit it, leading to a significant market hypocrisy, which really contrasts with discussions experts have together when they share their experience in a face-to-face mode.

Seriously, as an informed decision-maker, would your risk losing control for an uncertain potential 20% savings?

I personally would not we have never even thought of externalizing the R&D of our software, as an example.

As we have written in a previous post, it is only with the contribution of software engineers that you can make a real long-term difference on the market, as those guys are the ones able to make some critical choices. Some choices can impact the software development cost with another order of magnitude while delivering the same value!

So make sure you keep at least some local skills, or you will expose yourself to losing control at some time in the future.

Daniel COHEN-ZARDI

SoftFluent CEO

Measuring software development performance – Part V: Predictability

Through our previous articles we elaborated about the first 4 performances axes of development teams:

    The fifth important element to take into account in order to evaluate the team development performance is the predictability of the results.

According to various studies also referred by the Afdel in the White Paper about driven innovation: 58% of purchased software are never put into production, only 13% of IT projects are delivered on time and 30% are purely and simply stopped. Thus, it is clear that the issue remains on this axis to drive and predict software projects.

Obviously, it is very difficult to compare the predictability level of a development team performing management applications in a relatively stable market functionally speaking and a team of research and development of an innovative software company positioned on a technological field close to fundamental research.

Be that as it may, the purpose of any development team is to achieve results, that they are either proof of concepts, software to be marketed or applications for internal use. In the business applications world, taking into account the current state of the art, it seems to us particularly feasible to obtain consistent results in delays and costs that can be evaluated using relatively simple and limited macroscopic criteria.

For software companies, it is important to be able to formalize a roadmap as well as releasing regular versions of it. Although, it is known that these roadmaps are hardly followed, big gaps can lead to disaster since they are often linked to financial forecasts. Below is an example of a traditional roadmap about Microsoft Visual Studio for the past years:RVB de base

The trend towards the "Software as a Service", where competition is aggressive, generally requires more regular release like "Web" companies do (whose business model is based on the Internet such as business to consumer web sites). It is then essential to integrate continuous improvements, which is actually creating a roadmap. In the latter case, the roadmap is simply built the other way, with fixed dates and a variation of what can "fit" into a given release. Generally it is aligned on a season or semester. Here is an example for the Microsoft Dynamics CRM’s offer:

Livret-blanc-visuel1_v1

Note that software companies often need to make new products to differentiate themselves from competition and maintain their market position. We will highlight this fact afterwards when talking about the extra dimension of creativity, especially for teams of a software companies with a Research and Development department.

The issue is quite similar for large companies because they must be able to orchestrate the release of business applications meanwhile preparing deployment and training as well as users support. Ideally, development department of large companies should behave as small software companies. Actually, as organizations, this point is becoming a market trend.

From our experience, many failures are due to a mismatch between the expected result and what is really produced. This discrepancy is often due to a rupture between the design and development stage. The off-shore has contributed to some disasters in that area.

Trying to imitate models from traditional industry, some have forgotten that – contrary to the ‘physical matter’ industry – the implementation phase of a software is never the reproduction process performed identically. Each development is unique by nature, since it is intangible and can then be replicated at zero cost.

This reasoning transposed into the world of software development has now shown its limits hence a movement of reflux of these models at low cost begins to emerge… with problems related to the lack of resources that the model has created.

It is also common, especially with technological breakthroughs, to find teams who lose control of timing and R&D projects that take several months or years of delay, with budgets growing in the same proportions leading to massive deficits. This phenomenon is very marked in software companies, as large waves of investment are sometimes more than a decade away with a major cultural leap that is not assessed by the management or by teams.

It is therefore essential to have regular milestones including deliveries of versions and new features to avoid the tunneling effect of some major projects. This effect can create huge gaps in the product roadmap.

This is why agile methods are also interesting to prevent from the tunneling effect by maintaining alignment between the holders of the "product" vision and the production teams. Besides, some indicators of predictability are also included in these methods as a percentage of each achieved iterations compared to what is expected at the beginning of the iteration.

RVB de base

Even though this aspect is clearly useful and interesting, it is important to have the right debate here. Predictability to reach is beyond the scope of the measured work at each iteration – usually 2 to 3 weeks – and it must be achieved at a more macroscopic level as mentioned before with the roadmap.

To conclude, note that the issue of predictability is stronger than it seems, because beyond the direct financial consequences of a delay, when the loss of trust is established, the team dynamics rapidly becomes a vicious circle. Schedules are taking delay, functional managers "load the boat" because they know they will have to wait too long for postponed features, and the project becomes more exposed to the risk of a major failure.

CodeFluent Entities successful at CyberForum.de

RVB de base SF_Main[1]

Thanks to our local partner, Software Factories and its software architect Mykola Dobrochynskyy, CodeFluent Entities and SoftFluent were represented in CyberForum.de (Germany).

Mykola Dobrochynskyy took part in the last CyberForum as a speaker during a technical session where he demonstrated CodeFluent Entities added value and explained the vision of Software Factories.

Software Factories had already talked about CodeFluent Entities in Germany through two articles in the monthly developer magazine DotNetPro.

Mykola’s session aroused a lot of interest and questions about CodeFluent Entities.

You want to become SoftFluent partner? Reach us by email at info@softfluent.com!

You want to try out CodeFluent Entities? Download the personal free and full-featured version!

(free for non-commercial use, professional versions available from $599 only)


Cyberforum_Talk1[1]
Cyberforum_Talk2[1] CybeforumInfomarkt[1]

CodeFluent Entities for Windows 8 app generator

windows-8-logo 
CodeFluentEntities_400
SoftFluent announces release of CodeFluent Entities for Windows 8 app generator. SoftFluent announces today that CodeFluent Entities and its Visual Studio integrated graphical editor now provides an out-of-the box Windows 8 generator. It is now possible to generate mobile ready web services as well as complete Windows Store apps in minutes.

By leveraging CodeFluent Entities, developers can put the burden of keeping up with new technologies on the product, while focusing on developing the features they need for their applications.

Read the full Press Release

Follow

Get every new post delivered to your Inbox.

Join 103 other followers