.NET Center of Excellence

.NET Center of Excellence

Overview
The Microsoft .NET platform marks a paradigm shift in the way applications are developed for the Internet. It incorporates open standards that enable businesses to collaborate over the Internet with minimal investment. Hanu Software Solutions Inc. (HSS) is an expert in using .NET to develop solution frameworks and applications.

HSS has established a dedicated Center Of Excellence (COE) that leverages the company’s expertise in the .NET platform for the benefit of its customers. The HSS COE team delivers technical excellence through improved system architectures, applications development capabilities, and reusable enterprise components, and also focuses on building business solutions using existing and emerging .NET technologies and standards.
The .NET Center of Excellence at Hanu Software Solutions

Background
Despite all the attention given to returns on IT investments, little progress has been made in linking all the elements of IT to what a business is trying to do. Managing IT investments, and demonstrating the value of IT to a business, are more challenging than ever, and most businesses seem to be losing ground. Often, management asks CIOs to justify the very IT components that provide value to the business.

This white paper describes strategies that HSS has developed to maximize its efficiency in delivering .NET solutions to our customers.

As a software service organization, whose business itself is IT, HSS has learned how to align its operations on technology-centric Centers Of Excellence (COEs).
What is a COE?

The term Center of Excellence (COE) is a generic phrase used across many types of institutions, mainly in education, research, and healthcare. The IT industry picked up this phrase and started using it to define the collection of tools, resources, and skills used to perform specific development and maintenance tasks by a focused team working at a single location.

Sometimes “COE” became more of a marketing term, with little substance behind it, for IT. This was because IT service organizations happen to be project-centric organizations with defined schedules and objectives, in contrast to other departments that may not have the vision, longevity, and resources to maintain a long-term delivery system focused along a common thread.
Making Business Sense

From the start, HSS has had a strategy of delivering value-added, cost-effective solutions to its customers on a continuous basis. As the company grew, HSS saw the need for a common set of processes and procedures that would allow its developers to create solutions quickly and leverage project knowledge across projects, so that the company can deliver continuously-improving services and solutions. This need also mandated that all specialized tool sets, languages, and the knowledge of how to use them be available to HSS engineers in a structured and defined system, enabling them to develop new solutions flexibly, faster, and at lowered costs. Enter the HSS Center of Excellence.
The Elements of an HSS COE
HSS has established a structure for all of its COEs, consisting of the following key elements:

1. Languages and Technologies

2. Tools

3. Process

4. People

Languages and Technologies
Each COE includes various programming languages, technologies, development libraries, and compilers related to the particular technology domain of that COE. For example, .NET COE uses the following technologies:

· Languages: C#.NET, VB, VB.NET, ASP, ASP.NET, C++.NET, JavaScript, VB Script, XML, XSL, XPath, and AJAX.

· Web Services: SOAP, XML RPC, and WSDL.

· Distributed Technologies: COM/COM+/DCOM/CORBA, RPC, and NET Remoting.

Tools
The HSS development tool set is an important element of the company’s unique selling proposition, namely, its ability to deliver solutions for many different life cycles, budgets, and timelines. HSS does not believe in developing a new solution from scratch for each new project. Its tool set includes:

· Engineering tools: GUI controls, reusable components, generic data access layer, SQL data scriptor, SQL schema scriptor, SQL compare, and many more.

· Migration Tools: VB to VB.NET , VB.NET to C Sharp, ASP to ASP.NET, PHP to ASP.NET.

· Process automation tools: defect management, VSS, dashboard, line counting, MS Project.
HSS also employs tools for analysis, utilities, and controls.

Process

Process is important at HSS. The processes that HSS uses are documented and defined in its quality management system (QMS). All HSS development engineers follow these processes. The QMS implements industry best practices and is based on ISO quality standards and on the Software Engineering Institute’s Capability Maturity Model (CMM), and includes:

· Formally documented Project Management processes, including Planning, scheduling, progress monitoring, reporting, communications, issues, delivery management and many more.

· Formally documented Engineering Processes, including configuration management, requirements development, design, construction and unit test (UT), system testing, and user documentation development.

· Comprehensive quantitative process measurements and control, including productivity measurement, schedule variance tracking, defect density reporting, and effort variation tracking.

HSS engineers follow the following best practice during a software project lifecycle to reduce the development schedules as well as the schedule volatility:

1. Inspections – At each stage of development or maintenance, HSS performs a detailed, technical peer review of the software design and code implementation. Identifying and fixing errors at this early stage prevents bugs from entering the code, saving time and expense, and avoids bugs in the delivered software.

2. Component Reusability – HSS has developed a library of more than 100 frequently-used software components typical in .NET applications. These components are tried-and-tested, have proven designs, and are free of critical bugs. The components can be re-used without change, or with modifications. At the design phase of a new project, HSS engineers identify those components suitable for the new application. Only code unique to the application is designed and written from scratch. Building existing, high-quality software in this way into a new application saves the HSS customer time and expense, and helps ensure quality in the deployed application.

3. Change Control Board – The HSS QMS requires software developers to strictly adhere to the defined requirements for an application. On moderate to very large projects, a central control mechanism is needed to ensure that every change is properly considered and coordinated. That’s why on such projects, HSS establishes a Change Control Board. It includes the members from design, development, and test teams. It also sometimes includes the members from the customer team. Its purpose is to ensure that every baseline change is properly considered by all concerned parties and that every change is authorized before implementation. The CCB is the body that reviews all major change requests and approves it, disapproves it, or defer it for more information. Using this Board prevents “feature creep,” a typical problem in the software development industry, keeping the development schedule on track and with the features that the customer expects.

4. Nightly Software Build and Smoke Test – Each night HSS Build Group makes a new build of an application and run a series of tests that verify its basic operation. Making builds nightly enables the engineers to find and fix integration errors almost immediately. It also enables HSS to track feature implementation against the schedule, because it shows on a daily basis the features that have been implemented.

5. Risk List and Plan – As part of its QMS, HSS develops a list of the top-10 risks for each development project, together with a plan for addressing each risk should it materialize. The HSS engineers assess the risks weekly, resolving any and identifying potential new risks, minimizing impact to the schedule and to software quality.

People

Quality human resources are the fundamental asset in any organization. HSS staffs each COE with employees who are skilled in the set of tools, languages, and products used by that COE. The company hires engineering graduates who are experienced, trained, and certified in internationally recognized IT skill sets. For example, people on the .NET COE are certified MCPs and MCSDs.

HSS recruits the finest engineering talent from the best universities and puts them through six weeks of rigorous classroom and on-the-job training. HSS also provides ongoing advanced programmer training for all staff.

What this means to HSS customers is that their solutions, products, and software are developed by certified resources, so customers need not worry about the people deployed on their projects. This also means that HSS customers receive value-added recommendations for long-term planning and can develop IT roadmaps with the confidence that the recommendations from HSS are based on the latest knowledge.

The .NET COE: Delivering Agile Solutions on a Microsoft Platform
The HSS COE for .NET is aligned along the Microsoft platform and tool sets and provides business-critical solutions to a variety of technology and business domains. This COE has collective IT experience of 200 person-years and .NET experience of more than 75 person-years. Other key facts are:

Staff 45
Started 2002
Number of executed projects 30
Location Gurgaon, India
Components of the .NET COE
This diagram illustrates the building blocks of the .NET COE. Central is the HSS quality management system (QMS), which controls the activities, tools, and resources of the other elements.

Faster.NET – The HSS Development Framework for .NET Solutions
Continuing improvement work with the .NET COE enables HSS to offer scalable, on-demand .NET solutions to customers in a variety of industries. The company calls this Faster.NET. Its key elements are:

· Pre-assembled, reusable software components

· A reusable engineering tool set that does not require customization for each project, thereby improving development speed

· A reusable set of architectures or Solutions Blue Prints (SBP), saving the time of developing software architecture from scratch.