Buying software or Building software



A common problem for many companies (or should I say businesses) to decide whether to buy or build software. Now this is too complicated to decide what the best option is. As we all know a company will have a core business focus that it operates on. All companies will have a difficult decision to make either to buy or build. Let’s consider different scenarios.
Note: “GardCarer” is not a real company and "GaintCRM" is not a real software.

“GardCarer” is a small company established in 2003, core business is talking contracts/one-off home household needs gardening. GardCarer has grown so much and it is becoming difficult to maintain all data in excel. GardCarer has got a small IT department. In Jan 2010 GardCarer decided that it needs a software that could reduce lot of manual work, automate certain processes, allow field worker’s to have up-to-date data about tasks, track customer complaints, cope with increasing customer base, handle customer adhoc request, easily integrate to accounting software etc.

Buying software

GardCarer IT department has decided that they will not be able to build such software for various reasons such as not enough resources, not enough budget, risky and is too complicated. So they have decided to research the market and find software that suits their needs. Finally IT department has decided to go with GaintCRM. IT personal has given a presentation at GardCarer about GaintCRM demonstrating ROI metrics over a period of 5 years. All stakeholders at GardCarer are very impressed and a decision is finally made to buy GaintCRM.

Planned



In March 2010 GardCarer purchased GaintCRM. It has taken 6 months for building the required infrastructure, getting the training completed, and partially migrating data from old to new system. By August 2010 GaintCRM is ready to be used by all personal at GardCarer.

In November 2010 there were many complaints from sales, marketing, support, field workers about GaintCRM being not user friendly, unable to track customer complaints, not able to track emails to/from customers, unable to customise tasks etc. By March 2011 all teams gave up hope of getting rid of GaintCRM as company has invested so much in time, money, resources etc. Now its November 2011 all teams have to do extra manual work to make GaintCRM work. After 2 years the ROI which they have expected had actually not met. In general there will be a small deviation from planned to actuals but in this case there was huge deviation.

Actuals



Building software

Consider for instance the case of “GardCarer” IT department decided that they will hire extra resources and will start building software that will satisfy their business requirements. IT department now has to consider various factors such as infrastructure, technology, database, tools required etc. Gathering all requirements, generating use cases specifications, design specs, architecture specs, developing, testing and finally Go-Live. Also in this case IT has presented various options that shows predicted ROI and the best option is depicted below (also named software as "GaintCRM")

Since this project life cycle is using wafterfall model the return will actually start after 2 years but will much higher than bought because all of the requirements were considered and then actual software is build. But consider the case where the requirements are getting changed based on customer demands, managing IT resources becoming difficult, managing various other risks etc. Because of various factors the "GaintCRM" delivery date which is supposed to be Mar 2011 has got extended to another 6 months. Finally "GaintCRM" is a Go-Live in August 2011. Also since the system is new, all staff members needs to get trained and IT should now consider migration old data into new system etc. Lets look at the ROI of actuals now



Conclusion

There are cases where buying/building has been a disaster and also cases where buying/building has succeeded. Choosing the right option at right time is key to success for any company or business.

In case of "Buying Software", a company should first try and see to what extent that will fit into their day-to-day business. sometime the default trial period provided might not be sufficient, then you should be able to speak to product owner and ask for extended trail. Until a company or business is fully satisfied that product is going to work 100% do not purchase the software. Companies or Businesses such as Banks, Hospitals etc mostly buys software.

In case of "Building Software", Agile methodologies should be followed with small sprints. With each sprint delivering a set of features, system usage will start much sooner. As part of building software various 3rd party components should be considered which will make development faster, provide UI consistency, quick support etc. Companies such as Google, Apple, Amazon etc builds all their software.

Some times best of both might be required. Consider “GardCarer” has build the system and now they want business process integration with other systems (ie.. vendors, branches etc), the best approach is to buy an enterprise service bus framework/server such as BizTalk, NServiceBus, WebSphere ESB, Mule ESB etc instead of building it.

Architecture, of all the arts, is the one which acts the most slowly, but the most surely, on the soul.
- Ernest Dimnet

Open source solutions for implementing ECM



Various open source solutions available in the market are :-

Solution Platform Features
Alfresco Microsoft Windows and Unix-like operating systems

Technologies:
  • Java
  • Document Management
  • Web Content Management (including full webapp & session virtualization)
  • Repository-level versioning (similar to Subversion)
  • Transparent overlays (similar to unionfs)
  • Records Management, including 5015.2 certification
  • Image Management
  • Auto-generated XForms with AJAX support
  • Integrated Publishing
  • Repository access via CIFS/SMB, FTP, WebDAV, NFS and CMIS
  • Activities workflow
  • Lucene search
  • Federated servers
  • Multi-language support
  • Portable application packaging
  • Multi-platform support (officially Windows, GNU/Linux and Solaris)
  • Browser-based GUI (official support for Internet Explorer and Firefox)
  • Desktop integration with Microsoft Office, OpenOffice.org and LibreOffice.
  • Clustering support
  • Pluggable authentication: NTLM, LDAP, Kerberos, CAS
  • Multiple Database support: MySQL, PostgreSQL (Community Edition), Oracle Database, IBM DB2, Microsoft SQL Server (Enterprise Edition)
LogicalDOC GNU/Linux, Windows, Mac OS X

Technologies:
  • Apache_Tomcat Application Server
  • Java J2SE (JDK 1.6 or higher)
  • GWT (Google Web Toolkit - Ajax)
  • Lucene
  • Spring Framework
  • Document Management
  • Document revisioning (minor and major revisions)
  • Image Management
  • Repository access via WebDAV and Webservice
  • jBPM workflow
  • Lucene search
  • Multi-language support
  • Multi-platform support (Windows, GNU/Linux, Mac OS X)
  • Browser-based GUI (Internet Explorer, Firefox, Google Chrome, Safari)
  • Desktop integration with Microsoft Office and Microsoft Outlook
  • Clustering support
  • Pluggable authentication: LDAP or Active Directory
  • Multiple Database support: MySQL, PostgreSQL, Oracle, Microsoft SQL Server
  • Documents full preview
  • Integrated OCR and Barcode recognition
  • Integrated TWAIN scanner support
KnowledgeTree Microsoft Windows, Mac OS and Linux clients

Technologies:
  • PHP
  • Apache Web Server
  • Document management
  • Version control
  • Access control through roles and permissions
ApexKB Platform :
  • Apache
  • Microsoft Internet Information Services
  • Hiawatha
  • Cherokee or Zeus Web Servers


Database:
  • Oracle
  • IBM DB2
  • Microsoft SQL Server


Technologies:
  • PHP
  • Javascript
  • leverages bookmarking to create a user-submitted index engine
  • allows users to tag any data, not just web pages
  • provides keyword and description tags
  • also provides expanded knowledge tags
  • knowledge tags can be customized to meet specific requirements
  • tag terms can be aligned with corporate taxonomies or data dictionary
  • a tag term is highlighted if it exists in the dictionary – user can click through to read the term
  • group based permissions and easy integration with LDAP
Nuxeo Platform :
  • Apache
  • Microsoft Internet Information Services
  • Hiawatha
  • Cherokee or Zeus Web Servers


Database:
  • Oracle
  • IBM DB2
  • Microsoft SQL Server


Technologies:
  • PHP
  • Javascript
  • Content models (via XSD schemas)
  • Document life cycle management
  • Access controls for security
  • Event model and event handler
  • Query system
  • Lock handling
  • Configurable versioning policy
  • Configurable persistence back-end
  • Support for CMIS 1.0: Apache Chemistry OpenCMIS
  • Customizable audit trail management
  • Document Routing Service: enables user-designed workflows of documents and selection of stages (human or automated) among a shared library of steps
  • Content annotation management (W3C Annotea)
  • Management of relationships within RDF graphs
  • Comment service
  • Notifications and email alerts
  • Import/Export in XML format
  • Directory: users, groups, vocabularies
  • Dashboards with an OpenSocial gadgets container
  • Web publishing tools - Wiki, blogs, simple web page creation
  • Content views - manage, configure, and sort content listings
  • Faceted navigation - repository browsing with dynamic filtering on multiple facets


What ?



Enterprise Content Management (ECM) is the strategies, methods and tools used to capture, manage, store, preserve, and deliver content and documents related to organizational processes. ECM covers the management of information within the entire scope of an enterprise whether that information is in the form of a paper document, an electronic file, a database print stream, or even an email.

What ?


ECM follows a set of Government standards which are listed below:

- HIPAA (Health Insurance Portability and Accountability Act)
- SAS 70 (Statement on Auditing Standards No. 70)
- BS 7799 (Best practices for Information Security Management)
- ISO/IEC 27001 (Information Security Management System (ISMS) )


Where ?


ECM is used for various relationships in and between

- B2E (Business to Employee)
- B2B (Business to Business)
- B2G (Business to Government) derived from B2B


To start with there are various open source solutions available in the market see my article for details and their features.

Various roles of Architect



A word "Architect" is very confusing and does trigger lot of questions. Here are some

What does an architect do ?
Who is called Architect ?



Here are some of them defined:-
Senior Enterprise Architect
Enterprise Architect
Solutions Architect
Lead Architect
Enterprise Architect
Chief Architect
Technical Architect
Infrastructure Architect

to be updated soon....

How important is design for a sprint ?



First sprint meeting has been completed and all members involved in the sprint have agreed to a list of user stories required by product owner. Now second sprint meeting has been started. Discussion started between development team, product manager and product owner.

………..

Dev Team
- We need a design task for defining the architecture,
- Decide frameworks, patterns and practices, 3rdparty tools/components
- Design sequence diagrams, activity diagrams etc.

Product Manager – Why ?

Dev Team
- Everyone gets the overall picture of what we are doing
- Easy reference point for anyone in the team and also for new team members

Product Manager – So do we need this in every sprint?

Dev Team – Yes to have update design documentation relating to changes/enhancement

………..

This is a common question for any scrum projects. Now the answer is basic and smart design which helps today and flexible for tomorrow. Also there are various tools available in the market that helps you generate design diagrams from code. So Development team do not have to update design documents each time there is a change in the requirement or added a new enhancement.

Here are some examples of how to achieve this

- Generate sequence diagrams from code
- Class diagrams from code

And more importantly now you can generate layer diagrams which give the overall picture of the whole projects along with components for more details refer to MSDN

Also layer diagrams allow you to define a set of rules which can be validated against the project. Layer diagrams can be validated as part of the build process that shows if any of the design rules are violated. So no longer do you need to manually verify code against the design document.

All of these can be automated or can be generated as and when required. So no longer design is a separate task. We only need to do what we need at this point of sprint (fit for purpose) not overestimating other things that might come in future (this is waste of time).

“Simplicity is the ultimate sophistication.”
Leonardo da Vinci quotes
top