You are on page 1of 21

Syllabus

2. THE ORIGINS OF SOFTWARE


• 2.1 Concept of outsourcing.
• 2.2 Six different sources of software.
• 2.3 How to evaluate off-the-shelf software.
• 2.4 Reuse and its role in software development
Concept of outsourcing
• Outsourcing is a business practice where a company contracts out certain tasks or functions to external service
providers rather than handling them in-house. This practice is commonly adopted to improve efficiency, reduce
costs, and focus on core business activities.
• Software Outsourcing is defined as “A method of employing a third-party service provider or expert to
develop a software project.” Outsourcing software development has become prudent for every business to
continuously evolve. It is challenging for businesses to stay abreast of changing technology trends, manage
overall operations, within budget and also gain an edge over the competition. This makes hiring a software
outsourcing company a strategic decision for efficient, cost-effective, and successful software development.
Previously, this outsourcing method was more inclined to the financial stature of the business, but now there are
hundreds of influencing factors responsible for outsourcing software development.
• “Software development outsourcing involves hiring an individual or a team from external sources to handle
some or all of the software development projects”.
• Software outsourcing takes place when companies choose to have custom software solutions developed by
a third party. Outsourcing software development has many advantages including cost reduction,
improved efficiency, mitigated risk, and enhanced security.
4 Common Types Of Software Outsourcing
• Homeshoring: this involves delegating the project to a software development team within the city
or country you’re in. With close proximity, the teams can be invited to face-to-face meetings.
• Nearshoring: this type involves tapping an outsourcing company to work with that’s located in a
nearby country. It comes as a good option if you prioritize skill set expertise, cost-effectiveness,
and minimal to no timezone difference.
• Offshoring: offshore outsourcing work is commissioned to distant countries. It can entail large
timezone distinctions and language barriers but gets you access to more expert developers that
might not be available for the first two options.
• Onshoring: the last type of software outsourcing involves bringing back a software development
team to the organization's home country.
What Are The Basic Outsourcing Models?
• Staff Augmentation: this model involves giving the outsourcing company the job of putting
together the software development team, handling day-to-day operations, and bringing the project
to completion. However, the client can have a call on who to hire and fire, how big the team
should be, and how the responsibilities should be distributed to each developer.
• Dedicated Team: with this model, the outsourcing services handle every aspect of the project, and
the team is retained for future projects.
• Project-Based: unlike a dedicated team that works with a client long-term, a project-based model,
as the name suggests, works with the client on a per-project basis. The outsourcing services handle
most of the decision-making aspect of the project and the client simply gets updated through
progress reports.
Six different sources of software.
Information technology services firms:
• Organization lacks resources to develop in-house system
• Suitable off-the-shelf solution is not available
• Help companies develop custom information systems for internal use
• Develop, host and run applications
• Provide other services
• IT Service firms employ consultants with domain-specific experience
Packaged software Producers
• Produce pre-packed or off the shelf systems
• Products range from broad-based packages to industry specific packages
• Two types of software
• Turnkey – cannot be modified to meet specific users needs
• Non-turnkey – can be modified
• Off-the-shelf software can meet up to 70% of an organization’s needs.
Vendors of enterprise solution software

• Also called Enterprise Resource Planning (ERP) Systems


• Consist of a series of integrated modules
• Each module supports individual traditional business function
• Accounting
• Distribution
• Manufacturing
• Human Resources
• Integrated to focus on business processes rather than business functional areas
• Enables an organization to integrate all parts of a business process in a unified information system
• All aspects of a transaction occur seamlessly in single information system
Benifit
• Single repository for all aspects of a business process
• Ensures more consistent and accurate data
• Less maintenance
• Flexibility of modules
• Additional modules can be added as needed
• Additional modules are immediately integrated into existing system
Disadvantage
• Complexity of implementation
• Extended implementation time
• Reliance upon consultants
• Often, organizations must change the way that they do business in order to use systems
• ERP vendors
Cloud Computing
• Software is rented or licensed from third party providers
• Run at remote sites
• Applications are accessed through the Internet or a VPN
• Applications bought, installed and maintained by service provider
• Users pay per-use or month-to-month license
• Includes software as a service as well as hardware as a service
• Some examples:
• Google Apps
• Salesforce.com
• Predicted that by 2015 will create 14 million new jobs.
• Total market of $1.1 trillion.
• Reasons for Choosing Cloud
• Freeing internal IT staff
• Faster access to applications than internal development
• Lower-cost access to corporate-quality applications
• Concerns
• Reliability
• Security
• Compliance with government regulations
• Sarbanes-Oxley
Open-Source Software
• Freely available
• Includes source-code
• Maintained by a group of interested individuals
• Some examples
• Linux
• Firefox
• mySQL
In-house development.
• Complete system
• Hybrid systems
Off-the-shelf software.
• Off-the-shelf software refers to standardised programs that are mass-produced, easily accessible to
the public, and ready for use immediately. They give a wide range of customers a comprehensive
set of features that help operations run more smoothly.
• Example Figma, Canva, Photosop, Gmail, Outlook, Windows Linux etc.
How to evaluate off-the-shelf software.
• Phase 1: Candidate product identification This phase identifies an initial set of candidate products and
collects information for these products for subsequent phases of the evaluation process. The main sources
for identifying candidate products are by reading literature, attending conferences and talking to experts.
• Phase 2: Features identification In this phase, each product is studied separately in detail and its features
are identified. As the first product is studied, an initial (or informal) set of features is generated. Any
new and potential useful features existing in other candidate products and not in the features list is
added to the list. At the end of this phase, a more comprehensive set of features is obtained.
• Phase 3: Features classification In this phase, features obtained from the previous phase are studied in
more detail and divided into two main categories: functional and non-functional features. Further, the
functional features are subdivided into two categories: technical and general features. Then all identified
features are sorted into these categories.
• Phase 4: Measurement criteria identification. In this phase, measurement criteria are identified for each set
of features. The measurement criteria are established based on the nature of each feature.
• Phase 5: Scoring In this phase, products are assigned scores for each feature based on the
identified measurement criteria identified in the previous phase.
• Phase 6: Importance ranking In this phase, an importance rank is allocated to each feature. The
importance ranks used are: critical, important, less important and optional features. The rank
allocated to each feature depends on the user needs.
• Phase-7: Initial selection If only one product supports all the critical features then the
selection is made and the evaluation process ends at this phase. 6 If none of the candidate
products supports all the critical features, then the evaluation should proceed to the eighth phase
where rankings are revised. A small number of candidates (supporting the highest number of
critical features) are passed to phase 8.
• Phase 8:Phase 8 in the software evaluation process involves revising the importance ranking and
features set for selected products. If no candidate product supports all critical features,
considerations are made to demote or provide missing features in another way. If multiple
products are selected, they may be ranked based on important features. The process includes
revising the features list, importance rankings, and eliminating products that don't support critical
features. The system supporting more important features is preferred. If no product supports all
critical features, a detailed study is conducted, and if no preference emerges, a random selection is
made.
Reuse and its role in software development
• Software reuse is the process of creating new software from pre-existing software components.
• Reuse in software development refers to the practice of using existing software components or
artifacts in the creation of new software. The goal is to leverage previously developed and tested
components to save time, effort, and resources, and to improve overall software quality. Reuse is a
fundamental principle in software engineering, contributing to increased productivity,
maintainability, and scalability.
Some key aspects of reuse in software
development:
• Library and Framework Reuse: Developers can reuse pre-built libraries and frameworks that
provide common functionalities, such as data structures, algorithms, and user interface
components.
• Module Reuse: Modular programming encourages the creation of independent and reusable
modules, making it easier to update, replace, or extend specific parts of a system without affecting
the entire codebase.
• Component Reuse: Components are self-contained, independent units of software that can be
integrated into larger systems. Reusing components accelerates development by focusing on
assembling existing solutions rather than building everything from scratch.
• Design Pattern Reuse: Design patterns are proven solutions to recurring design problems. By using
design patterns, developers can follow established best practices and create solutions that are both
reusable and maintainable.
• Automated Code Generation: Tools and generators can create code snippets or entire modules
based on predefined specifications, enabling developers to quickly incorporate common
functionality without manual coding.
• API and Service Reuse: Incorporating third-party APIs or services allows developers to leverage
existing functionality without having to implement it themselves. This is common in modern
software development, where services like cloud storage, authentication, and payment processing
are often outsourced.
• Lessons Learned: Developers can reuse knowledge and experience gained from previous projects
to make informed decisions, avoid common pitfalls, and improve overall development efficiency.
• Library Dependency Management: Version control systems and package managers enable the easy
integration and management of external libraries and dependencies, facilitating reuse across
different projects.
Benefits of Reuse:
• Time and Cost Savings: Reusing existing components reduces the time and resources required for
development.
• Consistency and Quality: Reused components are often well-tested and proven, contributing to
more reliable and consistent software.
• Maintainability: Updating or fixing issues in a single reusable component can have a positive
impact on all projects that use it.
• Challenges and Considerations:
• Compatibility: Ensuring compatibility between different versions of reused components can be
challenging.
• Documentation: Clear and comprehensive documentation is crucial for successful reuse, helping
developers understand how to use and integrate reusable components.
• Customization: Reused components may require customization to meet specific project
requirements.

You might also like