WHAT IS A SOFTWARE
Software is a collection of instructions that tell a computer how to work. This is in contrast to hardware, from which the system is built and actually performs the work.
WHAT IS SOFTWARE DEVELOPMENT
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components.
Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.
Software itself is the set of instructions or programs that tell a computer what to do. It is independent of hardware and makes computers programmable. There are three basic types:
System software to provide core functions such as operating systems, disk management, utilities, hardware management and other operational necessities.
Steps in the software development process
Developing software typically involves the following steps:
- Gathering requirements to understand and document what is required by users and other stakeholders.
- Choosing or building an architecture as the underlying structure within which the software will operate.
- Developing a design around solutions to the problems presented by requirements, often involving process models and storyboards.
- Building a model with a modeling tool that uses a modeling language like SysML or UML to conduct early validation, prototyping and simulation of the design.
- Constructing code in the appropriate programming language. Involves peer and team review to eliminate problems early and produce quality software faster.
- Testing with pre-planned scenarios as part of software design and coding — and conducting performance testing to simulate load testing on the applicatio.
- Managing configuration and defects to understand all the software artifacts (requirements, design, code, test) and build distinct versions of the software. Establish quality assurance priorities and release criteria to address and track defects.
- Deploying the software for use and responding to and resolving user problems.
- Migrating data to the new or updated software from existing applications or data sources if necessary.
- Managing and measuring the project to maintain quality and delivery over the application lifecycle, and to evaluate the development process with models such as the capability maturity model (CMM).
The steps of the software development process fit into application lifecycle management (ALM). The IBM Engineering Management solution is a superset of ALM that enables the management of parallel mechanical, electrical and software development.
- Requirements analysis and specification
- Design and development
- Maintenance and support
Software development process steps can be grouped into the phases of the lifecycle, but the importance of the lifecycle is that it recycles to enable continuous improvement. For example, user issues that surface in the maintenance and support phase can become requirements at the beginning of the next cycle.
WHAT IS CUSTOM SOFTWARE DEVELOPMENT
Custom software development is the process of designing, creating, deploying and maintaining software for a specific set of users, functions or organizations. In contrast to commercial off-the-shelf software (COTS), custom software development aims at a narrowly defined set of requirements. COTS targets a broad set of requirements, allowing it to be packaged and commercially marketed and distributed.
Microsoft Office and Sitebuilder.com, for example, are packaged commercial software products and services. They meet the generalized needs of office productivity and website creation.
Custom software, on the other hand, is designed for a specific set of needs, such as:
- a field service equipment maintenance program for a manufacturer or
- an online banking app designed for the unique requirements of the bank and its customers.
Custom software, and its development, is also referred to as bespoke software. The term has its origins in old English and the tailoring trade.
Efforts associated with custom software development include application customization, application modernization and application management. Application customization refers to modifying COTS applications to support individual requirements. Application modernization plays a critical role in maintaining the viability of a business’s custom software to meet evolving user and market demands. Application management makes software effective by supporting tasks like installation, updating, performance and availability optimization, and service desk functions.
Keys to effective custom software development
The first key to an effective custom software development project is making sure that custom software is truly needed, as opposed to buying a packaged solution — and there is good reason to be sure. Software solution finder and researcher Capterra reports that 75 percent of business and IT executives anticipate that their software projects will fail and that, over a year, fewer than a third of projects are completed on time and on budget.
One approach to a build-vs-buy analysis is to ask if there is already a packaged software solution that delivers greater than 80 percent of the functions needed to:
- Support or automate unique business processes and transactions
- Handle information and data specific to an industry or line of business
- Meet unique privacy or security requirements
- Facilitate integration with legacy applications and data
- Replace or help consolidate existing solutions at lower cost
- Replace or help consolidate existing solutions to achieve greater productivity
- Enable new opportunities or improve competitive advantage
- Grow and adapt to changing requirements.
Collaboration is key
If the decision is to build, an important initial consideration is to get buy-in from key participants and ensure that they communicate and collaborate on the project. Collaborators include sponsors, users, developers, even customers and business partners outside of the organization.
In this context, collaboration means business users working together on requirements, sharing knowledge among global development teams, and working hand-in-hand across development and operations teams to improve quality and responsiveness.
Requirements are required
One of the critical outcomes of collaboration is a clear, shared vision for what the software is required to do — and not do. IBM has established that “organizations need to effectively define and manage requirements to help ensure they are meeting customer needs, while addressing compliance and staying on schedule and within budget” and that “requirements definition and management is an activity that has the potential to deliver a high, fast ROI.”
A “good” requirement, according to IBM, is…
- Correct (technically and legally possible)
- Complete (expresses a whole idea or statement)
- Clear (unambiguous and not confusing)
- Consistent (not in conflict with other requirements)
- Verifiable (can be determined that the application meets the requirement)
- Traceable (uniquely identified and tracked)
- Feasible (can be accomplished within cost and schedule)
- Modular (can be changed without excessive impact)
- Design independent (does not impose specific solutions on design).
Why is custom software development important?
Custom software development is important because it helps meet unique requirements at a cost competitive with purchasing, maintaining and modifying commercial software.
Some of the benefits include:
- Efficiency: Custom software is purpose-built to support processes swiftly and productively, without the need to tinker with or adjust COTS applications.
- Scalability: Custom software can grow as an organization or business grows and changes. Designers and developers can assess future needs as part of their requirements gathering. These factors can then be incorporated into the application, rather than incurring costs by purchasing additional licenses or subscriptions of packaged applications.
- Lower integration costs: One of the chief considerations of commercial software is: will it work with existing and legacy applications? If the answer is no, organizations face a further investment in getting commercial software to communicate and operate with their existing infrastructure. Custom software can be built to integrate with its intended environment.
- Profitability: It’s possible to make money with custom software development. Depending on the terms and conditions of the project, businesses that develop their own software may own the software and therefore be able to license or sell it to other organizations.
- Independence: The benefits of being free of a commercial software vendor cut both ways. On the plus side, organizations can avoid price hikes for licensing and support — and getting stuck maintaining packaged software should the vendor go out of business or terminate a product. On the negative side, the cost of supporting and maintaining custom software falls to the organization that created it or had it developed. How the equation works out requires each organization to look carefully at whether it’s better to build or buy.
Drop your Comment