Test Flashcards
- 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.