HRG

 

Software Development

hrgresearch.com

 

 

Software Development

 

Software development is the process and technologies used to build a computer program. Software development encompasses a wide variety of technologies and methodologies. These have evolved over time and have constantly improved to make the actual process of developing software more structured and the process more efficient.

The methodologies involved in developing software address the architecture of the software, the process involved in developing the software, the testing of the software, the management of the software, and the maintenance of the software. The architecture describes and defines the components of the software along with how the components interact with each other and any external software components. The process involved in developing the software is usually referred as the development model. There are various development models from the original Waterfall to some of the current models like Agile, Spiral, Unified Modeling Language, and more. Testing software is becoming more and more important due to the cost of problem resolution when problems are discovered in the field. The costs are associated with determining the problem, fixing the problem, and delivering a new version of the software with the correction. It is much cheaper to find the problem before the software is released. There are several categories of testing – functionality testing, integration testing, stress testing and performance testing. Even after all these have been performed, there will still be defects that will be found in the field, but the goal is to reduce the number of defects before the software reaches the end user. The management of the software involves keeping track of changes to the software, maintaining the various versions of the software being developed and residing in the field, and delivering the software to the end user. The maintenance of the software involves supporting the end user with problems encountered in the field, managing the problems encountered, and developing the necessary corrections that need to be included in the next version of the software.

The types of software programs can be broken down into several categores:

  • System software – these are programs like operating systems, hypervisors, device drivers, etc. Programs in this category are very close to the hardware and in many cases need to have intimate knowledge of how the hardware works. Programs of this nature are written by systems programmers with special knowledge in the areas of hardware and firmware.
  • Middleware software – these are programs like transaction processing monitors,  Web servers, database managers, compilers, etc. Programs in this category usually reside above the operating system and in many cases need to have intimate knowledge of the specific operating system it is executing with. Programs of this nature are written by systems programmers with special knowledge of the operating system and other middleware products.
  • Application software – these are programs like banking, accounting, manufacturing, and financial applications. In many cases, these programs reside above the middleware software layer and use middleware software for many of their functions. Programs in this category are written by application programmers that do not need to know about the operating systems and very little about the middleware software. Application software can be further broken down into the database, business logic, and presentation sections of the application program. More specialized applications like web applications, B2B, and Web 2.0 also reside in this layer because they all use middleware to achieve their functions, and they interface directly with the end user.

Software development has become much more complex in the last few years due to demand for integration with disparate applications, development organizations being geographical dispersed throughout, not only the country but the world, and continued business competition. Therefore, each organization needs to determine the best course of action with respect to their evolving software products and wisely choose the software architecture, the development model, and the software management tools that best suit their business and cost structure.

 

 
  .LegalPrivacy PolicySitemap Copyright 2009 Harvard Research Group, Inc. All Rights Reserved.