Wednesday, 19 April 2017

The Skill of Agile development – Test Driven development

Kentico Software Development Companies

Introduction

Software development is a very challenging task, in which fault occurs commonly. In the old-fashioned development approaches, most errors and faults are found during build stage. These approach lead to different kind of problem being detected in later stages, often when the application is being used by the end user. This is the perspective for Test Driven Development (TDD). The Test Driven Development is a software development technique, a lot associated to agile methods.

Test Driven Development 

Test-driven development (TDD) is an evolutionary method to development having quick cycle of fulfilling testing, coding, and refactoring. When accumulating a feature, there can be repetition of these cycles, executing and refining the software in small development steps until there is no addition or deletion left. As per various researches carried out, result shows Test driven development substantially reduces the incidence of defect. When used properly, it also helps improve your design, documents your public interfaces, and guards against future errors.

The software development process with respect to Test Driven Development, also known as Red-Green-Refactor cycle, outlooks the repetition of running of the development steps.

First is to mark a unitary test that fails before writing any functional code, this turns out to be a Red phase; to write a functional code up until the unitary test is approved i.e. it turns to Green; during termination, if necessary, to restructure and reform the code, removing redundancies and refining its structure, assuring that all unitary tests are successful i.e. Refactor.

Test Driven Development also mentions the test automation, so there is always a built code which can run as part of regular process. Thus, guaranteeing that the addition of a new feature or restructuring the code doesn’t ruin features which exists already.

Benefits of Test driven Development:
  • Maintainable, Flexible, Easily Extensible
    - As the testing in Test Driven development is incorporated into the development process at the most granular level, it is definite that every standalone piece of logic can be tested. At the end of the application development, there many test cases. When any change is made to the application, the existing test cases is run to see if the change has adversely impacted the application. This eliminates all roadblocks from keep informing legacy applications and making alterations within the current development.
  • Clean Interface
    - As the test is written first by the programmers, the APIs they build are written from an API-user viewpoint. Thus, these APIs are too easy to use than those written by programmers more concerned with the internal workings of their packages.
  • Unparalleled Test Coverage & Streamlined Codebase
    - In Test Driven Development, code is written after writing a test. This marks to unprecedented test coverage. Additionally, the refactoring process ensures written code is as reasonable as possible, restructuring the code base. This eases maintenance and helps improve scope.
  • Refactoring Encourages Improvements
    - The refactoring process central to Test Driven Development confirms that developers constantly strengthens of the code base. This prevents applications from growing dated and monolithic

Conclusion: 

As the testing modules are put together into continuous integration development model, software development organizations using a Test Driven Development approach can easily make variations to their applications without panic of ‘breaking’ the application and restricting their daily operations.

References :

Friday, 10 March 2017

Factors to consider while making a SaaS contract

Kentico Software Development Companies

SaaS contract: It’s a term used to describe the agreement between a SaaS service provider and a SaaS client. It sets the conditions under which the specified software might be accessed by the employees of the organization developed by software outsourcing companies or service provider. It controls the use of software and specifies the entitlements and commitments of service provider and the client.
Some of the factors that are of concern to both the parties while making a SaaS contract are mentioned below.

Service Level Agreement (SLA)

SLA is a type of service guarantee for SaaS services which are used to support business critical functions of the organization by the software developed by software outsourcing companies. Often, SaaS SLA’s are made keeping in mind the interests of a service provider. The terms that need to be covered in SLA are:
Uptime
The contract should clearly specify when the service will be accessible for the users. Availability is mostly expressed in terms of number nine. The more number of nines, in your SLA, indicates lesser downtime. To achieve this availability percentage, the client might have to pay a higher cost.
Downtime
The service providers do not want the client to orient SLA to the business value they get from the software. Many service providers will simply start with 100% availability and then cut the duration in which their internal systems report an error. From a client’s perspective, both unscheduled errors and schedule maintenance count as downtimes but for a service provider, only the unscheduled ones count. The compensation in case of downtime plays a primary role in making of an agreement. The Mean Time to Respond and Mean Time to Repair are the terms to look for in the downtime section of SLA.

Escalation Flow

When there is a problem with your internal system, you call your IS department or raise a ticket in an outsourcing company. In SaaS, you can’t talk to the service provider with admin privileges on infrastructure. A SPOC on the service provider side is what you need. There is no holding back with the call center for the service provided by the vendor. The hours of support is also a key factor considering the escalations that need to be addressed.

Charging of services and Discounts

The service providers charge on monthly or annual basis. The metrics commonly used to measure subscription based charging are number of users or number of records. SaaS service providers specify the charging of services openly. As a client, there is still a room for negotiation. The discounts offered by service providers to win your business is a key factor. Upgrading and Downgrading of the plan as the time progresses is also a factor that should be considered while making the agreement.

Security of information
Concerns regarding the information that a software outsourcing company in India generates, due to its daily operations include:
  • What type of information is collected by the software?
  • Who is the owner of the information?
  • Where is the information stored?
  • How often is the data backed up?
  • What happens in case of a security breach?
So there is always a need of creating provisions for securing your data. Here are some examples of such provisions:
  • A requirement that the service provider comply with the client's information security practices.
  • Warranties with respect to information security, leakage and modification.
  • The client's right to perform audits and periodic security evaluations.
  • BCP-DRP, Service provider’s associated obligations along with a properly drafted force majeure clause.
  • Clear statements with respect to ownership of the data and return.
  • Service provider's obligation to perform frequent backups.
  • Service provider’s requirements regarding data restoration.
Other factors

SaaS raises legal considerations, including privacy issues (e.g., what type of information is being stored and for how long, and who is accessing the information); and export and administrational matters arising out of the location of the servers, which can trigger export control laws (e.g., if the provider’s servers are located outside of the USA, storing of data abroad may trigger a legal obligation) and subject your information to the laws of the jurisdiction in which a server is located.

Conclusion:
Thus company’s business and technical personnel need to understand, and the legal advisories need to carefully review and then negotiate the SaaS contract before making an agreement with the service provider. Software development companies should consider legal aspects into consideration before devising correct contract with the company.

Wednesday, 8 February 2017

Capacity Management in IT Companies

custom software development companies


Capacity management is a process used to manage information technology (IT). Its primary goal is to ensure that IT resources are right-sized to meet current and future business requirements in a cost-effective manner. Capacity Management considers all resources required by custom software development companies to deliver the IT service, and plans for short, medium and long term business requirements.
  • Business Capacity Management:
  • To translate business needs and plans into capacity and performance requirements for services and IT infrastructure.
  • To ensure that future capacity and performance needs can be fulfilled.
  • Service Capacity Management:
  • To manage, control and predict the performance and capacity of operational services.
  • This includes initiating proactive and reactive action to ensure that the performances and capacities of services meet their agreed targets.
  • Component Capacity Management:
  • To manage, control and predict the performance, utilization and capacity of IT resources and individual IT components.
  • Capacity Management Reporting:
  • To provide other Service Management processes and IT Management with information related to service and resource capacity, utilization and performance.
Capacity Plan:

Capacity plan is used to manage the resources required to deliver IT services. It contains scenarios for different predictions of business demand, and options with cost estimates to deliver agreed service level targets.
  • Business scenarios:
  • Known business initiatives
  • Known business volume forecasts
  • Forecast of service utilization and performance
  • Forecast of resource utilization and performance
  • Other potential impacts on service capacity and performance
  • Initiatives to adjust service capacity and performance
Key Performance Indicators: 

Here following are key performance indicators that help measuring effectiveness of capacity management in various software development companies:
  • Incidents due to Capacity Shortages:
  • Number of incidents occurring because of insufficient service or component capacity
  • Exactness of Capacity Forecast:
  • Deviation of the predicted capacity development from actual course
  • Capacity Adjustments:
  • Number of adjustments to service and component capacities due to changing demand
  • Unplanned Capacity Adjustments:
Number of unplanned increases to service or component capacity as result of capacity bottlenecks
  • Resolution Time of Capacity Shortage:
  • Resolution time for identified capacity bottlenecks
  • Capacity Reserves:
  • Percentage of capacity reserves at times of normal and maximum demand
  • Percentage of Capacity Monitoring:
  • Percentage of services and infrastructure components under capacity monitoring
Capacity Report:

The Capacity Report provides other Service Management processes and IT Management with information related to service and resource utilization and performance in software development companies. It is a preliminary document to the Service Level Report:
  • For all IT services
  • Incidents leading to reduced Service capacities or performance
  • Analysis of the effects upon IT capacities
  • Running and planned measures for the increase of Service capacities or performance
Benefits of Capacity Management:
  • The performance of IT resources is optimized.
  • The necessary capacity is available when it is needed, avoiding a negative impact on quality of service.
  • Unnecessary expenses caused by "last minute" purchases are avoided.
  • Growth of the infrastructure is planned, allowing it to be matched to real business needs.
  • The cost of maintenance and administration associated with obsolete or unnecessary hardware and applications are reduced.
  • Possible incompatibilities and faults in the IT infrastructure are reduced.
Challenges of Capacity Management:
  • Insufficient information for realistic capacity planning.
  • Unrealistic expectations about the cost savings and improvements in performance.
  • Inadequate resources to monitor performance properly.
  • Distributed and excessively complex IT infrastructure making access to data difficult.
  • There is insufficient commitment on the part of top management to implement the associated processes rigorously.
  • Rapid technological change makes it necessary to continuously review the plans and scenarios envisaged.

Successful capacity management requires a thorough understanding of how business demand influences demand for services, and how service demand influences demand on components. Capacity management also serves as a focal point for any capacity issues in IT Service Management in different software development companies.

Tuesday, 10 January 2017

Enterprise Data Warehousing

Introduction:
A data warehouse is a database designed to enable business intelligence activities. It exists to help users understand and enhance their organization's performance. A data warehouse environment can include an extraction, transportation, transformation, and loading (ETL) solution, statistical analysis, reporting, data mining capabilities and client analysis tools. It also helps for content management systems that manage the process of gathering data, transforming it into useful, actionable information, and delivering it to business users.

A common way of introducing data warehousing is to refer to the characteristics of a data warehouse as follow:

  • Subject-oriented:  Data warehousing is designed to help analysing data for a particular subject.
  • Integrated: Data warehouses must put data from disparate sources into a consistent format.
  • Non-volatile: Once data is entered into the data warehouse, it should not change. This is logical because the purpose of a data warehouse is to enable you to analyze what has occurred.
  • Time variant: A data warehouse's focus on change over time is what is meant by the term time variant.
Key characteristics of data warehousing:
  • Data is structured for simplicity of access and high-speed query performance.
  • End users are time-sensitive and desire speed-of-thought response times.
  • Large amounts of historical data are used.
  • Queries often retrieve large amounts of data, perhaps many thousands of rows.
  • Both predefined and ad hoc queries are common.
  • The data load involves multiple sources and transformations.
Tasks of Data Warehousing:
  • Configuring an Oracle database for use as a data warehouse
  • Designing data warehouses
  • Performing upgrades of the database and data warehousing software to new releases
  • Managing schema objects, such as tables, indexes, and materialized views
  • Managing users and security
  • Developing routines used for the extraction, transformation, and loading (ETL) processes
  • Creating reports based on the data in the data warehouse
  • Backing up the data warehouse and performing recovery when necessary
  • Monitoring the data warehouse's performance and taking preventive or corrective action as required
Challenges of data warehousing:
There are so many challenges faced by software development companies regarding data warehousing as follow:

Ensuring acceptable data quality:
  • Disparate data sources add to data inconsistency
  • Not stabilized source systems
Ensuring acceptable performance:
  • Prioritizing performance
  • Setting realistic goal
Testing data warehouse:
  • Test planning
  • No automated testing
Reconciliation of data in data warehouse:
  • Complex
User acceptance:
  • Reluctant users
Benefits of Data warehousing:
  • Congregate data from multiple sources into a single database so a single query engine can be used to present data.
  • Mitigate the problem of database isolation level lock contention in transaction processing systems caused by attempts to run large, long running, analysis queries in transaction processing databases.
  • Maintain data history, even if the source transaction systems do not.
  • Integrate data from multiple source systems, enabling a central view across the enterprise. This benefit is always valuable, but particularly so when the organization has grown by merger.
  • Improve data quality, by providing consistent codes and descriptions, flagging or even fixing bad data.
  • Present the organization's information consistently.
  • Provide a single common data model for all data of interest regardless of the data's source.
  • Restructure the data so that it makes sense to the business users.
  • Restructure the data so that it delivers excellent query performance, even for complex analytic queries, without impacting the operational systems.
  • Add value to operational business applications, notably customer relationship management (CRM) systems.
  • Make decision–support queries easier to write.
Conclusion:
Data warehousing is a collection of methods, techniques, and tools used to support knowledge workers—senior managers, directors, managers, and analysts—to conduct data analyses that help with performing decision-making processes and improving information resources. This concept is very useful to all software development companies in India.