Test Flashcards
(33 cards)
- Attributes of good software?
Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable.
- Software products: generic products & customized products
Generic Products: Stand-alone systems that are marketed and sold to any customer who wishes to buy them; cookie-cutter based products. Ex: Project management tools, photoshop software, calculator program, C book, etc.
Customized Products: Software that is commissioned by a specific customer to meet their own needs. Ex: Embedded control systems, traffic monitoring systems, bank management software, a system to operate a company’s machinery.
- Software process activities?
Software Specification - Customers and engineers define the software that is to be produced and the constraints on its operation.
Software Development - Software is designed and programmed.
Software Validation - Customer checks to ensure that the software is what the customer requires.
Software Evolution - Software is modified to reflect changing customer and market requirements.
Useful Acronym: SDVE
4(a). Stand-Alone Applications
Run on a local computer, such as a PC or phone. Includes all necessary functionality and does not need to be connected to a network.
4(a). Interactive Transaction-Based Applications
Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. Ex: E-commerce applications that interact with a remote system.
4(a). Embedded Control Systems
Software control systems that control and manage hardware devices.
4(a). Batch Processing Systems
Business systems that are designed to process data in large batches; process large numbers of individual inputs to create corresponding outputs
4(a). Systems for modeling and simulations
Developed by scientists and engineers to model physical processes or situations, which include many separate interacting objects.
4(a). Data collection systems
Systems that collect data from their environment using a set of sensors and send that data to other systems for processing. “Big data” analysis may involve cloud-based systems carrying out statistical analysis and looking for relationships in the data.
4(a). System of systems
System composed of a number of other systems.
- 8 Software Application Types
Stand-alone, Embedded Control Systems, Batch Processing, Systems for modeling and simulations, Data collection systems, system of systems, Entertainment, Interactive-transaction based
- Software engineering ethics
Confidentiality - Respect the confidentiality of employers or clients regardless of a formal agreement.
Competence - Engineers should not knowingly accept work that goes beyond their competence (ability).
Intellectual Property Rights - Be aware of local laws governing the use of intellectual property such as patents, copyright, etc.
Computer Misuse - Do not use technical skills to misuse other people’s computers. Can be minor (gaming on a PC) or major (spreading a virus or keylogging).
- Four activities that are common to all software processes
Specification - Defining what the system should do.
Design and Implementation - Defining the organization of the system and how it will be implemented.
Validation - Checking that the software does what the customer wants.
Evaluation (Evolution) - Modifying the system in response to changing customer needs.
Waterfall model
A plan-driven model with separate and distinct phases of specification and development. Effective for large system engineering products where a system is developed at several sites and when requirements are fairly well-known from the start.
Advantages:
* Useful when the requirements are well-understood and changes will be fairly limited during the design process.
Cons:
* There is difficulty accommodating change after the design process is underway.
* Difficult to respond to changing customer requirements.
Incremental Development
Incremental Development - Specification, development, and validation are interleaved. Developed as a series of versions (increments), with each version adding functionality to the previous version. Can be plan-driven or agile.
Advantages:
* The cost of accommodating changing customer requirements is reduced.
* It is easier to get customer feedback on the development work that has been done.
* Quicker delivery and deployment of useful software to the customer.
Cons:
* The process is not visible (hard to produce documents for every version).
* System structure tends to degrade as new increments are added.
Integration and Configuration
Integration and Configuration - Based on software reuse where systems are integrated from existing components or application systems (“off the shelf”). Reused elements may be configured to adapt the behavior and functionality of a new user’s requirements. Standard approach for building many types of business systems.
Advantages:
* Reduced costs and risks.
* Faster delivery and development of the system to be made.
Cons:
* Requirement compromises are inevitable.
* Loss of control over the evolution of reused system elements.
- Component testing, system testing, and customer testing.
Component Testing - Individual components are tested independently, without other system components.
System Testing - Tests the system as a whole to find errors that result from unanticipated interactions between components and component interface problems.
Customer Testing - Testing with customer data to check that the system meets their needs.
Prototyping
Prototyping is using the initial version of a system to demonstrate concepts and try out design options. Used in the requirements, design, and testing processes.
Benefits include: Improved system usability, having a closer match to user needs, improved design quality and maintainability, and reduced development effort.
Agile Development
In agile development, program specification and design and implementation are interleaved.
The system is developed as a series of versions or increments with stakeholders involved in version specification and evaluation. There is minimal documentation; working code is the focus.
- Advantages and disadvantages of agile development?
Advantages:
* Can get feedback from the customer quickly.
* The whole team has visibility of the product.
* Effective when a product has many requirement changes over time, and when developing small or medium-sized products.
Disadvantages:
* Lack of product documentation.
* Keeping customers involved in the development process.
* Maintaining the continuity of the development team.
- Extreme Programming: test-first development, refactoring, on-site customer, small releases, and collective ownership.
Extreme Programming (XP) - An “extreme” approach to iterative development. New versions may be built several times per day. Increments are delivered to customers every 2 weeks. All tests must be run for every build, and the build is only accepted if tests run successfully.
* Remember, XP uses test-first development! Development cannot proceed until test cases have been developed.
Refactoring - Changing the code to create a more efficient way to run the program. All developers are expected to refactor the code continuously as soon as possible to keep the code simple and maintainable. This is done even when no software improvements are immediately needed.
On-Site Customer - A representative of the end-user of the system should be available full-time for the use of the XP team. This person is responsible for bringing system requirements to the team for implementation on the behalf of the customer.
Small Releases - The minimally useful set of functionality that provides business value is developed first. Releases of the system are frequent; incrementally add functionality to the first release.
Collective Ownership - Pairs of two developers work on all areas of the system, so that no islands of expertise develop and all developers take responsibility for the code. Anyone can change anything.
- What is scrum?
Scrum is an agile method that focuses on managing iterative development, rather than specific agile practices.
Three phases: Outline planning, sprint cycles, and project closure.
- Roles in Scrum: Scrum master, team, and product owner.
Scrum Master - Responsible for ensuring that the scrum process is followed and guides the team in the effective use of Scrum.
Team - A self-organizing group of software developers responsible for developing the software and other essential project documents. No more than 7 people should be in a team.
Product Owner - An individual or small group whose job is to identify product features or requirements, so they can prioritize these for development. They continuously review the product backlog to ensure that the project continues to meet critical business needs.
- Keywords: Velocity, product backlog, sprint planning, sprint review, product owner, and multi-team Scrum.
Velocity - An estimate of how much product backlog effort a team can cover in a single sprint. Can help estimate what can be covered in a sprint and provides a basis for measuring performance.
* Sprint: A development iteration. They are usually 2-4 weeks long.
Product backlog - A “to do” list of items that the scrum team must tackle. May feature definitions for the software, software requirements, user stories, or descriptions of supplementary tasks that are needed.
Sprint planning - The team pulls a chunk from the product backlog and decides how to complete it.
Sprint review - Reviews the product to see if the work is potentially shippable.
Product owner - Defined in Question 15 above.
Multi-team Scrum - Scrum that has been adapted for large-scale development. Characteristics include:
* Role Replication - Each team has a product owner for their work component and Scrum Master.
* Product Architects - Product architects collaborate to design and evolve the overall system architecture. Each team gets one.
* Release Alignment - Dates of product releases from each team are aligned so that a demonstrable and complete system is produced.
* Scrum of Scrums - There is a daily scrum of scrums where representatives from each team meet to discuss progress and plan work to be done that day.
Bonus: Remember that Scrum and XP are examples of agile development techniques.