Key Terms
- acceptance testing
- process used to determine whether the software solution fulfills the customer’s expectations, also called user acceptance testing
- accessibility testing
- subset of usability testing that focuses specifically on the needs of users with disabilities
- Agile Software Development Ecosystem (ASDE)
- Agile SDLC frameworks and methods that emphasize the difficulty of predicting future needs and thus avoid creating long-term plans and fixed processes so developers can instead collaborate with customers and adjust to their current needs
- application software
- software that enables you to fulfill common tasks such as creating a text document, drawing a picture, or playing music
- architecture management
- helps improve the architectural design while it is under development
- automated testing
- form of testing that uses software tools to check functionality of a software system or some of its parts; this allows for repeating tests without requiring repeated effort on the part of the tester
- availability
- measure of how busy a system is when a user attempts to use it
- black box testing
- manner of testing where the tests are based on the requirements and the functionality of what is being tested without the need to focus on the code itself; input-output testing, specification-based testing, and behavioral testing
- bug
- issue or error with software programming
- bug tracking system
- aids in the tracking and resolution of fixing issues with software
- closed-source
- form of software licensing that prohibits access to underlying source code; this type of software is typically developed for organizations or for software that is meant to be sold
- code coverage
- measurement of the percentage of code that is activated or reviewed by unit tests
- code review
- process whereby the source code written by one developer is manually inspected by another developer or a team of reviewers
- construction phase
- framework activity in which the design documents are used to write corresponding source code in a programming language and to create any supporting assets
- containerized
- software packaged in such a way that it can run on different computer systems easily
- crosscutting activity
- (also: umbrella activity) activity that crosscuts the entire software development process but is not part of the main building steps themselves
- debugger
- program that assists in detecting and correcting bugs; it does this by allowing the user to pause program execution at any statement, view the state of the program at that moment, before allowing the computer to continue until the next statement at which they want to pause
- deployment
- framework activity that involves making the developed software solution available to users
- design pattern
- reusable solution to a design problem that software engineers repeatedly encounter while architecting and designing systems
- detail-level design (DLD)
- focuses on detailing or expanding upon the HLD; as part of the DLD, every element of a system is provided with detailed specifications, and the logic for each component within each module of a system solution is determined
- DevOps model
- Agile software process model that combines practices of software development and operations and uses a short development life cycle and continuous delivery to achieve high-quality software products
- dynamic quality
- nonfunctional feature that relates to the qualitative behavior of software while it is in use, which means that it also depends on the hardware that the system runs on
- elaboration phase
- framework activity that involves further analyzing the requirements to produce design models of the system to be developed
- embedded software
- software that is integrated with hardware and can include both application and system software features
- extensibility
- measure of the amount of work and cost required to add new features to software
- flexibility
- measure of the amount of work and cost required to make changes to a system when requirements change
- functional requirement
- based on expectations of the user for the inherent characteristics of the software
- gray box testing
- manner of testing in which the person who designs the test has a partial knowledge of code structure and understands the intended design of the software; it is a hybrid of white box and black box testing
- high-level design (HLD)
- focuses on providing a general description of the overall system design, and can include information on the overall aspects of a system, including its architecture, data, systems, services, and platforms as well as the relationships among various modules and components
- inception phase
- framework activity that involves focusing on the gathering and refinement (i.e., definition) as well as the management of functional and nonfunctional requirements, which is also known as requirements engineering
- incremental model
- software process model in which software development is divided into modules, and each module focuses on a smaller set of requirements based on an overall business plan
- legacy software
- software that has been written in the past, relies on obsolete technology, and is still in use today
- line coverage
- type of code coverage that measures the percentage of activated lines of source code that are tested in a unit test
- maintainability
- measure of the amount of work required to make changes to a software system
- maintenance
- process of updating software after it is deployed
- manual testing
- form of testing where a person must run the software system, provide any input, and manually check all output; repeating tests requires these efforts to be repeated by the tester
- nonfunctional requirement
- describes a desired quality feature and covers aspects such as flexibility, maintainability, performance, portability, reliability, scalability, security, and more
- open-source
- form of software licensing that provides access to the underlying code and generally allows the code to be reused and modified; also known as free and open-source (FOSS)
- operating system
- software that controls and provides access to the computer’s basic functionality
- path coverage
- type of code coverage that measures the percentage of paths through source code that you go through in a unit test
- pattern
- high-level concept that supports the idea of reuse and provides reusable solutions to problems often encountered when building software
- performance
- measure of response time as seen by the user
- physical design
- graphical representation of the method for effectively implementing what was determined in the logical design of a software solution
- portability
- measure of the amount of work and cost required to migrate software solutions to a new platform, such as a new operating system
- prescriptive process model
- advocates an orderly approach to software engineering that involves following a prescribed set of activities in a continuous manner; in contrast to Agile development
- profiler
- program that performs dynamic program analysis that can be used to optimize or otherwise streamline code
- prototyping model
- software process model that requires the quick creation of a mock-up (or demo) of the expected final product doing what it is expected to do so that end users may provide feedback; also known as RAD (Rapid Application Development)
- refactoring
- process of restructuring source code without changing its functionality
- requirements modeling
- software engineering action that is part of the inception phase and focuses on the analysis/decomposition of software requirements
- scalability
- measure of the amount of work and cost required to modify a system to provide higher throughput
- scenario
- specific instance of operational flow within a use case that is focused on understanding a specific action
- Scrum
- type of Agile software development model
- security
- measure of confidence that data is protected from unauthorized disclosure and that systems are protected from unauthorized access
- software architecture
- description of the overall structure of a software system, its major components, and their interrelationships
- software design
- engineering design task set in which the abstraction and refinement of requirements are formed into a specification that can be used in the creation of a software solution
- software development life cycle (SDLC)
- structured set of framework activities required to develop a software solution based on a set of requirements
- software license
- documentation that determines whether an organization’s source code and functionality can be used by others without permission
- software process improvement
- process of transforming the existing approach to software development into something that is more focused, more repeatable, more reliable (in terms of the quality of the product produced and the timeliness of delivery), and more cost-effective
- Software Quality Management (SQM)
- focuses on the development and management of the quality of the solution being developed
- spiral model
- software process model that is a combination of the waterfall model with an iterative model approach and that focuses on reducing risk within a project
- sprint
- fixed-length workflow event that is part of Agile software process development and typically runs one to four weeks
- statement coverage
- type of code coverage that measures the percentage of statements that are activated at least once when you run all unit tests
- static quality
- nonfunctional feature that is unchangeable and thus might be associated with the source code or with legal or project-environment specific requirements
- system software
- software that enables you to control hardware and provides an environment in which other software can run
- system testing
- focuses on the complete and fully integrated software product to make sure the complete software solution works on the whole as expected
- test-driven development (TDD)
- process where developers write tests before they write code
- throughput
- measure of the total amount of input data that may flow through a system; it is different from performance, which measures how fast a system can perform its functions
- traditional process model
- process framework that encompasses four framework (i.e., generic) activities that are also known as phases: inception, elaboration, construction, and deployment
- umbrella activity
- (also: crosscutting activity) activity that crosscuts the entire software development process but is not part of the main building steps themselves
- Unified Modeling Language (UML)
- visual modeling language that can be used to capture the result of software analysis and design
- Unified Process (UP) model
- software process model in which the development of a software system is divided into four primary phases (inception, elaboration, construction, and transition), each of which involves multiple iterations
- unit testing
- tests individual units of code, such as methods and functions, and is usually done by developers during the development of the software or when updates are made
- usability
- measure of how intuitive the user interface is
- usability testing
- confirms that the software being developed not only meets the requirements that were set by the user, but is also easy and intuitive for the user to use
- use case
- describes how software system is expected to be employed by users to accomplish a goal or requirement
- user interface/user experience (UI/UX)
- part of computer programming that is concerned with how information is presented to the user and how the user can interact with a program
- user story
- generic explanation aimed at the user to tell them how a software feature works
- V-model
- software development process model that is similar to the waterfall model in that it is a continuous prescriptive model, but it is associated with a verification or validation testing step/phase, and thus also known as the verification and validation model
- validation
- tests that the software solution conforms to the requirements and, therefore, does what the user wants it to do
- verification
- tests that the software solution functions without errors
- version control system
- tool used to store the history of changes to source code and facilitates collaboration of multiple developers
- waterfall model
- continuous prescriptive software process model in which phases “flow” into another the way water flows from the top of a waterfall down to the bottom
- white box testing
- manner of testing where the tester uses the source code so they can develop tests that verify that the internal structure of the item being tested works properly; also known as glass box, clear box, and structural testing