Custom Coded Software
Custom Coded Software is software envisioned, designed and developed for a specific customer and/or function. For the purpose of clarity, consider the difference between Custom Coded Software and Commercial-Off-The-Shelf (COTS) Software, which is envisioned, designed and developed for a particular market. Unlike a Custom Coded Software solution, COTS Software must be purchased as a pre-manufactured package and later customized for a specific customer and/or function.
Custom Coded Software can fall into the category of Embedded Software, i.e. software that drives device logic such as missile navigation, or Application Software, i.e. software that drives complex business functions such as Supply Chain Management. In either case, the value of custom coded software is the level of precision to which it can meet a requirement or fulfill a task. In the arena of Application Software, a custom coded solution could render an application for Supply Chain Management or a utility that improves information exchange between multiple, distinct enterprise applications. Custom coded software offers advantages in cost, scalability and innovation. (A more complete discussion of Custom Coded Software would take into account well known limits and risks associated with it.)
Object Oriented Methodology
Object Oriented Methodology is a software engineering approach that applies to both Custom Coded Software solutions and Commercial-Off-The-Shelf (COTS) Software solutions. In the event of Custom Coded Software solutions, OO Methodology is at the heart of application development. In the event of COTS Software solutions, OO Methodology is often critical to customize the COTS Software product for use by an individual customer or function.
The innovation of the “Object Oriented” (OO) approach begins with the analysis of a business and its needs. In a departure from previous conventions, OO Methodology organizes analyses and design around business “objects” rather than “actions” and around business “data” rather than “logic”. OO Methodology is not the latest attempt at software innovation, but it remains the most resilient, reliable and effective technique for constructing application software. The OO approach is a platform for improved software reusability, interoperability and reliability. It affords an improved developmental environment, a reduction in software maintenance & sustainability, and an easier, more efficient software change process.
Agile Methodology is an approach to managing the software engineering lifecycle.
Agile Methodology is a technique that seeks cost savings and software quality through innovation of the engineering lifecycle process. It organizes technical collaboration and stakeholder participation around small, incremental sets of requirements and abbreviated, iterative sets of design and development. It enables requirement, design and development processes the capacity to operate in parallel. By focusing on a smaller set of requirements, it makes for speedier, more effective test and it enables test feedback to be incorporated at the end of each iterative cycle. The disadvantages of Agile Methodology tend to emerge from mishandling the relationship between technical, managerial and stakeholder staffs. Though there are benefits to more immediate technical, managerial and stakeholder collaboration, deeper collaboration carries with it the risk of excessive, non-value-added communication, and a propensity to redefine requirements, schedule and deliverables.
COTS Software refers to “Commercial-Off-The Shelf” Software, which is a pre manufactured suite of software designed to meet the requirements of a particular market or function. For the purposes of this discussion, “COTS Software” is that which is intended to serve or provide an enterprise level application, function or service, e.g. fleet management, customer relationship management.
COTS Software is an alternative to Custom Coded Software. Whereas Custom Coded Software is, from the very beginning, designed and developed with a specific customer and / or function in mind, COTS Software is built specifically for a certain market and later customized to the requirements and/or functions of an individual customer.
COTS Software, when considered as a means of providing an enterprise level function portends benefits and risks of that are critical to understand.
Cost savings is advertised as the most significant benefit of COTS Software based approaches, but there is an important caveat. To the degree by which a COTS Software product could be used “as is” or “out of the box”, significant cost savings are possible. However, “as is” or “of the box” usage is a rarity. Additional costs are proportionate to the level by which a COTS Software product must be customized to the requirements of a particular enterprise, application or function. Additional impacts arise from ongoing vendor costs such as license fees, upgrades and/or fixes. Costs can particularly spike for COTS Software that is expected to integrate with multiple legacy or new enterprise level applications.
Beyond cost factors related to purchase, selection of a COTS Software based solution includes consideration of a range of additional issues. While a COTS Software based approach may appear to be the best solution, the decision should emerge from careful, critical analyses such as that made available through enterprise, data, network and security architecture.