Learning Objectives
- Explain the benefits of a software development methodology
- List and describe the phases in the traditional systems development life cycle
- Compare and contrast the traditional systems development life cycle with alternative methodologies
- Explain factors that influence the decision to build custom software or purchase commercial, off-the-shelf software
- Define open source software
- Describe major outsourcing models
- List the benefits and risks of outsourcing
Time, Cost, and Quality
Every software development project faces a tension among time, cost, and quality. This reality is known by several names, including the project triangle, the engineering triangle, and the design triangle.
The three constraints are as follows:
- Time: How long will the project take to complete?
- Cost: What resources are required to complete the project?
- Quality: How well does the completed project meet user requirements?
There is an old saying:” You want it fast, good, and cheap? Pick any two.”
Software Development Methodologies
Developing software is a complex, time-consuming, and costly endeavor. So it often useful to have a framework for planning, structuring, and controlling software development projects.
- Such frameworks are called software development methodologies
- It provides discipline to the software development process by defining processes, roles, and deliverables related to software development.
- The methodologies break down software development into phases
- The standardized roles, processes, documentation, and deliverables make it easier for a new team member to become familiar with what has been done on the project.
Traditional Systems Development Life Cycle
- Systems development life cycle (SDLC) provides a disciplined approach to systems development. Projects follow a well-defined set of phases that have related objectives, processes, and deliverables.
- The traditional SDLC is sometimes called the waterfall method.
- Sometimes you need to go back and refine an earlier phase based on new information that emerges.
Planning Phase
- The goal of the planning stage is to define the overall goal and scope of the system and determine the feasibility of the project.
- Answer the questions “Why build the system?”
- Several different aspects to feasibility:
- Technical feasibility: can the proposed system be completed from a technical standpoint?
- Economic feasibility: is it affordable and worth the investment?
- Organizational feasibility: does it fit with the organization’s strategies and practices?
- Legal feasibility: does it violate any laws or regulations?
- Ethical feasibility: does it fit within ethical guidelines and practices of the organization and its industry?
Requirement Phase
- The goal of the requirements phase is to uncover and document the functions that the system should provide and desired levels of performance.
- What the system should/must do?
- Two types of requirements:
- Functional requirements – how the system should interact with users and other systems; example: The system shall allow customers to look up the price of a product?
- Nonfunctional requirements – related to constraints on the system; example: how well it should perform, “the system shall be available at least 23 hours per day?”
- The output of the requirements phase is a specification of the system’s functional and nonfunctional requirements. – a set of use cases, in either text or diagram form
- A use case describes a sequence of actions that results in an outcome for some actor.
Design Phase
- The main goal of the design phase is to describe in detail how the system will meet the requirements specified earlier.
- How the system will satisfy the requirements
- Elements of the model: database diagrams, user interface, business rules, processing logic, plans for implementing and testing the system, and training plan
- Outcome: The system design document
Development Phase
- Goal: convert the outputs of the design phase into the actual information system.
- Steps involved:
- software is written
- databases are created
- hardware is installed
- system testing is performed (A critical step!)
- Deliverables: application software, data and files for testing, and documentation.
Implementation Phase
Goal: make the system operational in a production environment.
Involves:
- notify users of rollout schedule, new processes, and responsibilities, and how to get technical support
- convert data to the new system (if needed)
- have users start using the new system
- provide user training
- conduct a post-implementation review
Deliverable: the system itself, installed and running correctly.
Four common approaches to system migration:
- Direct changeover – at a specific point in time, old system is no logner used and is replaced by the new system.
- Parallel operation – Both the old and new systems operate for some period of time.
- Phased implementation – The new system is implemented in stages.
- Pilot operation – The new system is implemented in a business unit or location.
Maintenance Phase
- The final phase in the SDLC is the maintenance phase.
- The longest, most costly phase of the life cycle.
- Goal: ensuring that the system operates properly to meet current needs.
Alternative Methodologies
Prototyping
- Build a fast, high-level small-scale mock-up of the system (prototype)
- Flaws are pointed out and prototype is refined and reviewed
- This cycle repeats until the stakeholders are satisfied that all requirements are met. Then the full system is implemented.
- Advantages:
- Stakeholder involvement – stakeholder know the particular business area; increase the satisfaction
- Uncovering requirements when unclear, ambiguous
- Disadvantages:
- Documentation may be difficult to write
- Can lead to poorly designed systems when scaled up for actual use.
- Difficult to estimate how many iterations are required, which makes it difficult to estimate costs and schedules.
Rapid Application Development (RAD)
- RAD is intended to develop systems more quickly than traditional methods.
- RAD typically breaks software development projects into smaller chunks to reduce overall project risk.
- Low cost, but low quality
- RAD process: Gather requirements -> Design prototype -> Develop prototype -> Test prototype -> Review with users -> (continue to the first step)
DevOps
DevOps is an approach to software development that focuses on rapid development of applications and services.
In development operations (DevOps), the operations of the software are no longer separated from the development of the software
Success of DevOps is based on:
- delivering frequent but small updates to the software
- microservices — building a set of small services to build an application
- continuous integration
The benefits of DevOps are numerous.
- First, because employees working within operations and within the development enterprise are jointly involved in the development, operations, and monitoring of the software, companies experience better collaboration and communication.
- Of course, the goals of DevOps being speed of development and rapid delivery are also benefits
Build or Buy Decision
When the need arises for a new software-based system, managers face a long-standing decision: whether to create the software or purchase existing commercial, off-the-shelf (COTS) software.
Custom-built software
- better fit with business requirements – create a competitive advatage
- greater control over adding or modifying functions after initial implementation
- take longer and more costly to develop
** COST software**
- less expensive
- higher quality
- provided in a much shorter time frame
- downsides: 1. change existing business practice to fit the COST software; 2. need support from vendor or consultants.
Hybrid solutions
- Customizing COST software by modifying programming code or adding scripts
- better fit business requirements and existing processes but less expensively and more quickly than custom solutions.
- difficult to find expertise to modify or combine the COST components.
A number of questions must be addressed:
- Is there COST software that will meet the business’s needs?
- Will the software give your company a competitive advantage?
- Does the COST software fit with existing IT architecture and staff?
- Do you have the capability to create the required system?
- When is the system needed?
- What is total cost of ownership for each approach?
Using Open Source Software in Business
- Open source software is software that allows users to access the underlying source code for an application.
- The licensing for open source software allows users to modify the program.
- Free of charge
- Examples: Mozilla Firefox, OpenOffice, Linux, Android…
Pros and Cons:
- potential cost saving
- avoid being dependent on proprietary software vendors for ongoing development and support
- more reliable than proprietary software
- users have the ability to modify the software as needed – additional flexibility
Outsourcing Information Systems
Information technology outsourcing occurs when an organization goes to an outside company to provide IT services that were previously provided internally.
Outsourcing Modeling
- Full or complete outsourcing: outside company handles all IT functions so the organization can focus on its core activities
- may reduce IT costs.
- Selective or partial outsourcing: only certain aspects of IT are outsourced to a service provider.
- Process-based outsourcing: organization outsources a particular function or business process (payroll, help desk, etc.)
- Personnel outsourcing: hire staff without the long-term costs associated with hiring permanent workers.
- Project-based outsourcing: contracting with a vendor for a specific project.
- Application outsourcing: service provider handles activities related to a specific software application for a fee.
Benefits and Risks or Outsourcing
Benefits
- Access to expertise not available in-house
- Potential cost saving – vendor has lower cost structures through economies of scale or lower wage rates
- Shifting fixed costs to variable costs
- Effective way to manage capacity – additional expertise
- Focus on core activities
- Potential for 24-hour productivity
Risks - Loss of internal competencies
- Dependence on service provider
- Opportunistic behavior by service provider
- Lower morale of remaining workers
- Compromises to confidentiality
Making the Outsourcing Decision
Questions:
- How mature is the IT system in question?
- Systems that have been around a long time are better candidates for outsourcing.
- How significant is the system to the organization’s competitive advantage?
- Outsource to concentrate on core activities.
- How does the organization’s IT capability compare with competitors’?
- If the organization has relatively weak IT capabilities, it may be better to outsource.
- Are there cost advantages to outsourcing?
- Even if there are not, it may still be a good idea to outsource if the organization can focus on critical areas.
Geographic Consideration
- Offshore outsourcing: using a vendor that provides services from a location outside the organization’s region
- Reduces cost because of lower wages
- May create backlash (shipping jobs overseas, language barriers)
- Nearshore outsourcing: close to the organization’s home location.
- Onshore outsourcing: outsourcing to a firm located in the same country