L10 - IOS sourcing Flashcards
What are software development methodologies?
A framework for planning, structuring and controlling software development projects.
Provide discipline to the software development process by defining processes, roles, and deliverables related to software development.
Typically the methodologies break down software development into phases, each of which has its own set of processes, roles, and deliverables.
What are the benefits of having a formal software development methodology?
Provides discipline (clear definition of problem and work)
Allows individuals to more easily join a project in progress
Traditionally, many systems development projects have followed a semi-sequential, phased approach, which is typically called the systems development life cycle. Describe it
The 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 since the results of one phase flow as inputs into the next phase. It is important to realize that there are many different versions of the “traditional” SDLC. The differences boil down to how the phases are divided; some versions have more phases than others.
Feedback lines – sometimes you need to go back and refine an earlier phase based on new information that emerges
What characterises the planning phase (SDLC)?
The goal of the planning stage is to define the overall goal and scope of the system and determine the feasibility of the project. Essentially, you want to answer the question,
“Why build the system?” Feasibility: technical, economic, organisational (both fit and HR), legal, ethical
Technical feasibility: Can the proposed system be completed from a technical standpoint? Does the system fit with the existing technical infrastructure?
Economic feasibility: Is it affordable and worth the investment?
Organizational feasibility: Does it fit with the organization’s strategies and practices? If not,
what needs to be changes and are these changes feasible? Does the organization have access to the human resources necessary?
Legal feasibility: Does it comply with laws or regulations?
Ethical feasibility: Does it fit within ethical guidelines and practices of the organization and its industry?
What characterises the requirements phase (SDLC)?
Requirements elicitation: gathering requirements from various stakeholders. The task is to figure out and document what the system should do. There are two types of requirements: functional and non-functional. Functional requirements describe how the system should interact with users and other systems. Non-functional requirements are related to constraints on the system, for example, how well it should perform. The output of the requirements phase is a specification of the system’s functional and non-functional requirements.
What characterises the design phase (SDLC)?
Goal: describe in detail how the system will meet the requirements.
Process models (e.g. swimlane diagrams) Data models (e.g. ER-diagrams) User Interface mock-ups Business rules Implementation and Test plans Education and Training plans
What characterises the development phase (SDLC)?
Goal: Converted output from Design phase to the actual system
“Regular” steps Coding of software Setup of databases Installation of hardware Possible integration with existing IS Carry-out system test
Deliverable: Executable software, data, and files for test and documentation
What characterises the implementation phase (SDLC)?
The goal of the implementation phase is to make the system operational in a production environment. One important implementation phase activity is to notify users of the rollout of the new system (schedule, new work processes, responsibilities, how to obtain technical support). User training, converting data. Deliverable: the system itself, post-implementation review report.
What are 4 common approaches to system migration?
Direct changeover: At a specific point in time, the old system is no longer used and is replaced with the new system. Rapid but risky (old system no longer available)
Parallel operation: both systems operate for some period of time. Lower risk but takes longer and expensive. Duplication of work
Phased implementation: The new system is implemented in stages. This approach is an attractive compromise between direct and parallel approaches. However, it is best suited for systems that have clear modules that can be implemented in a phased manner.
Pilot operation: The new system is implemented in a business unit (such as a store or department) or location (such as a state or country). The initial pilot is followed by other pilot changeovers or a full changeover to the new system. Each pilot changeover must use one of the other approaches.
What characterises the maintenance phase (SDLC)?
Usually the longest and most costly phase. The goal of this phase is ensuring that the system operates properly to meet current needs. This involves fixing any problems that are uncovered and may also involve modifying or adding to the programs to meet new needs. In addition, the system may be modified to improve performance or take advantage of new technologies.
What is prototyping?
Prototyping is an approach to deal with aspects of a full methodology; it is not a complete, stand-alone methodology. In a prototyping approach to systems development, you begin with an initial investigation of the main requirements of the system. After the initial investigation, a prototype is built and reviewed by stakeholders. The stakeholders point out flaws, which reveals new or misunderstood requirements. The prototype is refined and reviewed. This cycle repeats until the stakeholders are satisfied that all requirements are met. Then the full system is implemented
What are the benefits of prototyping?
Increased stakeholder involvement: can lead to systems that better meet their needs and may increase satisfaction with the final system
Potentially more effective for uncovering system requirements
What are the drawbacks of prototyping?
It is also difficult to estimate how many iterations are required, which makes it difficult to estimate costs and schedules
Users may not understand the realistic scope of the system
Usually results in less-well-documented systems which may cause problems later
When is prototyping useful?
Prototyping is best for systems that require extensive user interaction and for which the analysts have some understanding of the business issues to be addressed, especially when functional requirements are not well understood.
Prototyping is less well suited for systems that have well-defined requirements, when nonfunctional requirements are especially important or when future scalability is important.
What is rapid application development?
Intended to develop systems more quickly than traditional methods. It is an iterative method that uses rapid development of prototypes rather than engaging in extensive up-front planning.
RAD typically breaks software development projects into smaller chunks in order to reduce overall project risk. This also facilitates making changes as the project’s requirements emerge. The focus is usually on filling organizational needs rather than creating technically perfect systems. Active user involvement is a key aspect of RAD. The idea is to work with users to determine high-level requirements and then build a prototype based on those requirements. Developers review the prototype with the users, who provide feedback. The prototype is refined based on the feedback. This process continues until the full system is developed. Development tools are integral parts of a RAD system