EECS 348 Final
Cloud platform examples
Amazon Web Services, SAP Cloud platform
Extensibility
Can define and add any number of observers
API
The way for two programs to communicate. An interface specification
(...) (RE)
capture everything enclosed
Debugging maps ___________ to _________
symptoms, cause
a* (RE)
zero or more of a
What is the spectrum of cohesion?
(best) Functional cohesion->Sequential cohesion->Communication cohesion->Procedural cohesion->Temporal cohesion->Logical cohesion->coincidental cohesion (worst)
What is the spectrum of dependence for coupling?
(best) No direct coupling->data coupling->stamp coupling->control coupling->external coupling->common coupling->content coupling (worst)
What is the starting five-element set for multiple-fault BV testing?
(min, min+, middle, max-1, max)
a{3,}
3 or more of a
Multiple-Fault (Worst-Case) Boundary Value Testing
5^n test cases, multiple-fault assumption. What happens when more than one variable has an extreme value. All combinations of 5 values for all variables
BNF Language
<terminal> Defined as: ::= Alternative: | Optional: [] Combining: () Repeated: {} or (...)* One or more: (...)+ Recursion: <integer> ::= <digit> | <integer><digit>
Template Class (C++)
A class that allows the programmer to operate with generic data types.
Abstract Class
A class that is missing implementations for some of its methods
Data abstraction
A collection of data that describes a data object
Software Component
A collection of one or more services that may be used by other components
Host Machine
A computer on which a hypervisor runs one or more virtual machines
What is the advantage of containers?
A container can be moved across virtual environments without worrying about the underlying dependencies. Accelerates the process of deploying virtual servers on the cloud. Useful for providing isolated application services where each user sees their own version of an application
Docker
A container management system that allows users to define the software to be included in a container as a Docker image
Failure
A departure from the system's required behavior
Modularity
A design concept. Helps development, increments and changes, testing and debugging, long-term maintenance. Increases cohesion, decreases coupling. Favored by architectural techniques tending to ensure decentralization of modules
Generality
A design principle that makes a software unit as universally applicable as possible, to increase the chance that it will be useful in some future system
Git
A distributed code management system that is the most widely used system for software product development
Fault vs Error vs Failure
A fault is a mistake in the code (whether it runs or not) An error is a fault that runs (whether it shows a faulty output or not) Failure is a faulty output
What is a concern?
A feature specified by the requirement model
BNF
A formal meta language used in defining context-free grammars
Design Pattern
A general repeatable solution to a commonly occurring problem in software design
Polymorphism
A generic code that works with objects of different but related types. Occurs when code is written in terms of interactions with an interface. Code behavior depends on the object associated with the interface at runtime and on the implementations of that object's method
What is the cloud made up of?
A large number of virtual servers that you can rent for your own use. Remote accessed: pay for what you need
JSON (JavaScript Object Notation)
A lightweight format for storing and transporting data--an open standard
Containers
A lightweight operating system virtualization technology that allows independent servers to share a single operating system. Allows for rapid replication and deployment of virtual servers
XML
A markup language much like HTML used for structuring arbitrary data
SOAP
A message protocol that enables the distributed elements of an application to communicate
Uniform Access Principle
A module's facilities are accessible to its clients in the same way whether implemented by computation or storage
Architectural Style
A named set of architectural design decisions that introduce useful qualities in each resulting system
Regular Expression
A pattern that can be recognized by a FSM
Docker Hub
A registry of images that has been created. These may be reused to setup containers or as a starting point for defining new images
Multi-Instance System
A separate copy of the system and database is made available for each user
Procedural Abstraction
A sequence of instructions of a specific and limited function, with details of the function suppressed
[abc] (RE)
A single character: a, b, or c
What is the common notation for initial state?
A small black circle
Software service
A software component that can be accessed from remote computers over the Internet
Adapter Design Pattern
A software design pattern that allows the interface of an existing class to be used as another interface. It is often used to make existing classes work with others without modifying their source code
Class
A software module that partially or totally implements an abstract data type
Virtual Server
A stand-alone system that can run on any hardware in the cloud
Building quality in
A system of methods and procedures used to assure that the software product meets its requirements
Virtualization
A technology that allows multiple server instances to be run on the same physical computer
What does a good test case include?
A test case identifier (usually a short name for test management purposes), name, purpose (e.g., a business rule), pre-conditions (if any), inputs, expected outputs, observed outputs, pass/fail?
Subsumption
A test criterion C1 subsumes C2 if and only if every set of test cases that satisfies criterion C1 also satisfies C2
Hypervisor
A type of computer software, firmware, or hardware that creates and runs virtual machines
The Cloud
A very large number of remote servers that are offered for rent by companies that own these servers
Code-based (white-box)
Aka clear box or glass box or structural testing. Test case generation technique. Structure of the test objects is explored. Internal view of code and data structures
Specification-Based (black-box)
Aka closed-box or functional testing. Test case generation technique. Functionality of the test objects. No view of code or data structure -- input and output only
Multi-Tenant System
All customers are served by a single instance of the system and a multitenant database
Functional cohesion
All elements essential to a single function are contained in one module, and all of the elements are essential to the performance of the function. Data, actions, or objects are placed together (1)
API gateway
An API management tool that sits between a client and a collection of services. A single point of contact that translates service requests from the app into calls to the microservices
WSDL (Web Service Description Language)
An XML based definition language used to describe functionality of a web service
Microservices
An architectural and organizational approach to software development where software is composed of loosely-coupled small independent services that communicate over well-defined APIs. Small, independent services with a single responsibility that work together
Service-oriented architecture (SOA)
An architectural style that focuses on discrete services instead of a monolithic design. Each service in an SOA embodies the code and data required toe xecute a complete
Component
An element that implements a coherent set of functionality or features
Subtyping relationship
An example of pure polymorphism. Any object of type S can safely be used in any context where an object of type T is expected (if S is a subtype of T)
What does a test case have?
An identity, a set of inputs and expected outputs, and is associated with a program behavior
Cohesion
An indication of the relative interdependence of elements of one module
What is a virtual server made up of?
An operating system plus a set of software packages that provide the server functionality required. Runs on an underlying physical computer
[^abc] (RE)
Any single character but a,b, or c
[a-z] (RE)
Any single character in the range a-z
[a-zA-Z] (RE)
Any single character in the range a-z or A-Z
Object
Any uniquely identifiable runtime entity that can be designated as the target of a message or request
What is provider managed for SaaS that is not provider managed for PaaS?
Application and data
What two considerations do we apply to boundary value testing?
Are invalid values an issue? Can we make the "single fault assumption" of reliability theory?
Verification
Are we building the product right?
Validation
Are we building the right product?
Single Fault Assumption for equivalence class testing
Assumes there is one fault from each class
Multiple fault assumption for equivalence class testing
Assumes there is one fault from each class in Cartesian product
Which service communication is more challenging, asynchronous or synchronous?
Asynchronous
What is the database transaction ACID rule?
Atomicity, consistency, isolation, and durability. Either all updates are completed or none of them are. Database is always consistent
Characteristics of microservices
Autonomous, specialized, self-contained (code can be updated without knowing anything about internals of other microservices), highly cohesive, loosely coupled (updating one service doesn't require changing other services)
What does BNF stand for?
Backus-Naur Form
Type 1 Hypervisor
Bare-metal. Runs directly on the physical hardware of hte host machine
What is managed by the cloud vendor for IaaS?
Basic computational services
What is managed by the cloud vendor for PaaS?
Basic computational services, cloud management services, application services (databases etc)
Why is quality assurance more effective than quality control?
Because the emphasis moves to the development process. You attempt to fix problems before and during the development process and improve the process and therefore reduce the number of defects in a lasting manner
Why can a virtual server run from anywhere?
Because the virtual server has no external dependencies
How do regular expressions express finite languages?
By defining a pattern for finite strings of symbols
How do we make a unit more general?
By increasing the number of contexts in which it can be used. Parameterizing context-specific information
How to achieve scalability in a system?
By making it possible to add new virtual servers (scaling out) or increase the power of a system server (scaling up) in response to increasing load
How does edge computing enable processing at greater speeds and volumes?
By processing data closer to where it's being generated
What is BV testing appropriate for?
Calculation-intensive applications with variables that represent physical quantities (e.g., have units such as meters, degrees, kilograms)
Benefits of SaaS for software product providers
Cash flow, update management, continuous deployment, payment flexibility, try before you buy, data collection
The three steps to developing software architecture
Choose architecture style, identify components (subsystems), identify connectors (how the components will communicate)
Robust Equivalence Class Testing
Classes of valid and invalid values of inputs. Detects faults due to invalid values of a single variable
Normal Equivalence Classes
Classes of valid values of inputs
What's the difference between edge computing and cloud computing?
Cloud computing: computation takes place in the cloud Edge computing: computation takes place in the devices
Edge Computing Architecture
Cloud layer (Internet; big data processing, data warehousing), edge layer (LAN/WAN), device layer (sensors & controllers)
PaaS examples
Cloud management, monitoring, database, software development
Difference between cloud, fog, and edge computing
Cloud: data centers (thousands) Fog: nodes (millions) Edge: devices (billions)
What is the worst type of module cohesion?
Coincidental cohesion
What is a subsystem?
Collection of closely interrelated classes
Worst-Case Robust BV Testing
Combination of worst-case and robustness BV testing. 7^n test cases. All combinations of 7 values for all variables
Test-To-Pass
Constructive testing. Software works minimally. Apply straightforward test cases for correct behavior. Capabilities are not pushed. The right way of initial testing
What is the worst type of coupling?
Content coupling
What type of coupling is worse, stamp or control?
Control
Examples of external quality factors
Correctness, efficiency (performance), reusability, extendibility, portability, usability, reliability (robustness), maintainability, interoperability
Business issues to consider when choosing a cloud platform
Cost, target customers, developer experience, service-level agreements, portability and cloud migration
Disadvantages of multi-instance databases
Cost, update management
Branch coverage
Cover both the true and false possibilities
Examples of design patterns
Creational patterns, structural patterns, behavioral patterns
What kinds of issues does SaaS have?
Data storage and management-- Software response time for data transfer can be limited by network speed Data security Data exchange is difficult between a cloud service and other services/applications Differing laws in different countries on storage of info
Benefits of using microservices
Decentralized, deploy independently, modeled around a business domain, isolate failure, hide internal details (reduce coupling). Make applications easier to scale and faster to develop, enabling innovation and accelerating time-to-market for new features
What's the difference between condition coverage and decision coverage?
Decision coverage has better sensitivity to the control flow
Service-oriented approach to software
Decomposes the system into fine-grain stateless services. Each service is independent and can be replicated, distributed, and migrated from one server to another
Inheritance
Defines a new class by directly reusing (and adding to) the definitions of an existing class
Solution of design pattern
Describes elements, relationships, responsibilities, and collaborations which make up the design
Name of design pattern
Describes the pattern, adds to common terminology for facilitating
Problem of design pattern
Describes when to apply the pattern
What is needed to write self-describing programs?
Descriptive identifiers (variables, functions, constants), prelude comments, appropriate and consistent indentation, line alignment, and use of blank lines to show the relationship between blocks of code
Refactoring
Design concept. A reorganization technique. Simplifies the code of a component without changing its functions. Examines an existing design for redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures, any other design failure that can be corrected to yield a better design
Composability
Design concept. Build software elements so that they may be freely combined with others to produce new software
Decomposability
Design concept. Decompose complex systems into subsystems
Interfaces
Design concept. The specification of a software unit's interface describes the externally visibile properties of the software unit
Reusability
Design concept. To use parts of the design and implementation in other applications
Test-To-Fail
Destructive testing. Aggressive testing. Testing a feature in every conceivable way possible. Break the software (find faults)
External Quality Factor
Determined by factors whose presence or absence may be observed by the users of the software. Affect users. Used as the ultimate criterion to judge the quality of a system
Customizability
Different observers offer different views of subject
Challenges with monolithic software
Difficult to scale, long build/test/release cycles, architecture is hard to maintain and evolve, new releases take months, long time to add new features, lack of agility, lack of innovation
Monolithic Approach to software
Distribution across multiple servers running large software components
What are examples of container technologies?
Docker, AWS ECS, Microsoft Azure
Problems with quality control
Does not reduce the number of defects Does not improve the process Does not result in better products Does not motivate improvement Results in adversarial relationships
Where do software architectures come from?
Domain-specific software architectures, reference architectures, architectural styles/patterns, architectural styles, design patterns
What is the most costly time of the development process to find and repair a defect?
During the maintenance (last) stage of the product
Examples of pure polymorphism
Dynamic binding, subtyping relationship
Function of Functional Independence
Each module addresses a specific subset of requirements, each module has a simple interface
Guest Machine
Each virtual machine
Factors to consider for design
Easy to change algorithm, easy to change data representation, easy to change function, good performance, easy to reuse. Lesser: modularity, testability, security, ease of use, ease of integration, extensibility
Benefits of fog computing
Enables low-latency networking connections between devices Minimizes bandwidth requirements compared to if that data had to be transferred back to a data center or cloud for analysis
What does a software component do?
Encapsulates a subset of the system's functionality and/or data, restricts access to that subset via an explicitly defined interface, and embodies principles of encapsulation, modularity, and abstraction (+ composability, reusability, evolvability)
Domain-Specific Software Architectures
Encode substantial knowledge acquired through experience. A reference architecture for an application domain (ex. airline reservation systems)
Information Hiding
Every module should be known to the outside world through an official, "public" interface
What is the fundamental feature of the cloud?
Everything can be delivered as a service and accessed over the internet
What should an interface specification communicate to other system developers?
Everything they need to know to use our software unit correctly. Purpose, preconditions, protocols, postconditions, quality attributes
What do containers in Docker hub do?
Execute images
Technical issues to consider when choosing a cloud platform
Expected load and load predictability, resilience privacy and data protection, supported cloud services
Internal Quality Factor
Factors invisible to the end users. Help achieve the external quality
True/False: Condition coverage always achieves branch coverage
False
True/False: Full condition coverage guarantees full decision coverage
False
True/False: In DevOps, different teams are responsible for development, deployment, and software support
False
True/False: Services cannot be replicated across several servers
False, because there is no local state
True/False: Uncoupled modules have one or less interconnections
False, they have no interconnections
True/False: Information is stored in a different database for each customer in a multi-multi-tenant system
False. All stored in the same database
True/False: For decision coverage, the entire Boolean expression is considered one true-or-false predicate only if it doesn't contain logical-and or logical-or operators
False. It is always considered one true-or-false predicate
True/False: Services maintain an internal state
False. Services do not maintain any internal state
True/False: In SaaS, customers have to install the software that they are renting
False. They access the remote system through a web browser or dedicated mobile app
True/False: Regular expressions are more powerful than BNF
False. They are less (they don't have recursion)
What is the difference between fan-in and fan-out?
Fan-in refers to the number of units that use a particular software unit while fan-out refers to the number of units USED by a particular software unit
Benefits of DevOps
Faster deployment, reduced risk, faster repair of buggy code, more productive temas
Single Fault Assumption
Faults are very rarely the result of the simultaneous occurrence of two ore more faults
What is the wrong way to debug?
Find the defect by guessing
Advantages of multi-instance databases
Flexibility, security, scalability, resilience
Condition Coverage
For every condition, we consider test cases that consider the true and false value independently for each condition
What is the best type of module cohesion?
Functional cohesion
Boundary Value Testing
Functional testing. When choosing some input/output combinations, choose extreme values (near their boundaries)
Robust Boundary Value Testing
Goes beyond extreme values for robustness. 6n+1 test cases.
() Unix symbol
Groups regular expressions
Traditional Software Deployment
Hardware, operating systems, apps installed on top of the operating systems
What does container technology do?
Help develop containers to solve the dependency problems like build, ship, deploy, scale, and have different versions of the same library. Allows easy move from one machine to another. Includes the libraries and dependencies.
How do you achieve functional independence?
High cohesion and low coupling
Objectives of Design Patterns
High readability and maintainability, high testability, high reusability
Type 2 Hypervisor
Hosted. Installed on an OS
Object Composition
How to build new classes by combining component classes
Process of equivalence class testing
Identify valid and invalid values of all variables; test one invalid variable at a time (single fault assumption)
Lost Update Problem
If an otherwise successful update of a data item by a transaction is overwritten by another transaction that wasn't "aware" of the first
When is a design object-oriented?
If it decomposes a system into a collection of runtime components called objects that encapsulate data and functionality
How many test cases do we use for boundary value testing?
If there are n variables, 4n+1 test cases
Small interfaces principle
If two modules communicate, they exchange as little information as possible
What do data structure choices do in a program?
Improve ability to solve problems abstractly, execution speed, memory requirements, maintenance (debugging, extending, etc.), improve your ability to analyze your algorithms
Where is state information stored for a software service?
In a database or it's maintained by the service requestor
Disadvantages of multi-tenant databases
Inflexibility, security (in the case of a security breach, it affects all customers), complexity
The Debugging Process
Information collection Fault isolation Fault confirmation Fault correction Fault and correction Regression testing Documentation
Fault Seeding
Intentionally inserting a known number of faults. detected seeded faults/total seeded faults = detected non-seeded faults/total non-seeded faults
Coupling
Interdependence between different modules
What does architectural design include?
Its overall organization, how the software is decomposed into components, the server organization, the technologies that you use to build the software
What does the architecture of a software affect?
Its performance, usability, security, reliability, and maintainability
Quality control goal
Keep quality at an acceptable level by rejecting unacceptable products
Fog Computing
Layer between edge computing and cloud computing. Receives data from the edge before it reaches the cloud
Edge Computing
Layer between the cloud and device. Handles data processing and reduction, data caching and buffering, control response, virtualization. LAN/WAN
For traditional software deployment, each new software app will have its own what?
Libraries, dependencies
What design issues does SaaS have?
Local/remote processing, authentication, information leakage, multitenant or multi-instance database management
What are the benefits of cloud computing?
Lower cost (avoid initial capital costs of hardware procurement), startup time (don't have to wait for hardware to be delivered), server choice (can easily add or upgrade servers), distributed development (easily work together with people from different locations)
What kind of coverage is required for aviation software?
MC/DC
What are the benefits to decomposing?
Management (clears assignment of requirements to modules), modification (decouples parts so that changes to one don't affect others), understanding (allows understanding system one chunk at a time)
$ Unix symbol
Matches end of string
^ Unix symbol
Matches start of string
? Unix symbol
Matches up exactly one character
* Unix symbol
Matches up zero or more times the preceding character
Constructor Methods
Methods inside the class definition that spawn new object instances
Advantages of SaaS for customers
Mobile, laptop, and desktop access No upfront costs for software or servers Immediate software updates Reduced software management costs
Observer Design Pattern Consequences
Modularity, extensibility, customizability, unexpected updates
Examples of internal quality factors
Modularity, information hiding, abstraction, low complexity, well-defined interfaces, encapsulation, reusability
Communication cohesion
Module elements operate on the same data set (data structures) (3)
Common Testing Organization
Module testing, component testing, or unit testing; integration testing; function testing; performance testing; acceptance testing; installation testing
Temporal cohesion
Module's data and functions related because they are used at the same time in an execution (5)
Which approach is stronger, MC/DC or multiple condition coverage?
Multiple condition
Elements of a design pattern
Name, problem, solution, consequences
What is the best type of coupling?
No direct coupling
Types of Reuse
Object code, classes in source code form, assemblies of related classes
How can we build new classes?
Object composition (by combining component classes) or by extending or modifying definitions of existing classes (inheritance)
Unexpected updates
Observers don't know about each other
What do microservices communicate through?
Only a well-defined API
Modified Condition/Decision Coverage (MC/DC)
Only consider conditions that independently impact the outcome of a decision. For each condition, find two rows in the decision table where the condition changes and outcome changes while other conditions remain the same
What do microservices rely on?
Only each other's public API
Types of polymorphism in C++
Operator and function overloading, template classes, runtime binding
Logical cohesion
Parts are related only by the logic structure of code (6)
Coincidental cohesion
Parts are unrelated to one another (7)
Sequential cohesion
Parts of a module are grouped because the output from one part is the input to another (get data from a database, prepare result, return results) (2)
What is Unix extremely powerful for?
Pattern matching (vim, grep, sed)
Virtual Machines
Physical server replicas on which you run your own operating system, technology stack, and applications
What is pure polymorphism?
Polymorphism that binds at compile time
Prelude comments
Precisely but concisely describe what a unit does. Include pre- and post-conditions as comments or assertions. Clearly describe the expected parameters
Disadvantages of SaaS for customers
Privacy regulation conformance Network constraints Security concerns Loss of control over updates Service lock-in Data exchange
Which type of module cohesion is better, temporal cohesion or procedural cohesion?
Procedural
Instance Variables
Program variables whose values are references to objects
Equivalence Class Testing
Provides a strategy to resolve gaps of untested functionality and redundancy using equivalence classes and partitions
What does resilience rely on?
Redundancy. Replicas of a software and data are maintained in a different location (standby system) and the system switches to the standby if the operating system fails
Scalability
Reflects a system's ability to adapt automatically to changes in the load on that system
Resilience
Reflects a system's ability to continue to deliver critical services in the event of system failure or malicious system use
Scability
Reflects the ability of your software to cope with increasing numbers of users. Handles the changing needs of an application
Between regular expressions and FSMs, which is textual (metal language) and which is graphical?
Regular expressions are textual and FSMs are graphical
What do you call the grammar defined by regular expressions?
Regular grammar
Elasticity
Related to scalability; allows for scaling down as well as scaling up. To match the resources allocated with the actual number of resources needed at any given point in time
Platform as a Service (PaaS)
Renting a platform from a cloud provider--You use libraries and frameworks to implement your software. Provide access to a range of functions, including SQL and NoSQL databases
Infrastructure as a Service (IaaS)
Renting an infrastructure from a cloud provider such as a compute service, network service, or storage service that you can use to implement virtual servers
What does . do in Unix?
Replaces any character
\ Unix symbol
Represent special characters
Advantages of multi-tenant databases
Resource utilization, few security vulnerabilities, update management
Consequences of design pattern
Results of applying the pattern, benefits and costs
What can a good test case do?
Reveal a failure
What tests test for validation?
Reviews, system test, acceptance test
What tests test for verification?
Reviews, walkthrough, unit test, integration test
What is provider managed for PaaS that is not provider managed for IaaS?
Runtime, middleware, operating system
What is the difference between scalability and elasticity?
Scalability adds or removes resources to meet demands. Elasticity makes sure that the resources in use match the resources needed (i.e. not using extras--reduces)
What are the three key properties of software that runs on the cloud?
Scalable, elastic, resilient
Horizontal Scaling
Scaling out-- adds more of the same devices
Vertical Scaling
Scaling up-- making the devices bigger, better.
What scalability approach is typically used in cloud-based systems?
Scaling-out
Structured Constructs
Sequence, if, while, until, case
What is included in cloud computing?
Servers, storage, databases, networking, software, analytics
Which approach to software is better for cloud-based software, monolithic or service-oriented?
Service-oriented because the services are deployed in containers
Procedural cohesion
Similar to temporal, and functions pertain to some related action or purpose (4)
What does SOAP stand for?
Simple Object Access Protocol
Are remote servers implemented in software or hardware?
Software (they are virtual)
What is a software architecture represented in terms of?
Software components; software connectors; configuration (topology); a rationale for the decompositions, identification, or definition of the previous
What does separation of concerns lead to?
Software modularity, functional independence, refinement, and aspects
Umbrella Activities for Quality Software
Software testing (static, dynamic), formal specification and verification, technical reviews, software configuration management, software project tracking and control, metric and measurement
Test Case Generation Techniques
Specification-based/back-box, code-based/white-box
What kind of system do we use to provide resilience for a cloud-based system?
Standby
IaaS examples
Storage, Network, Computation, Virtualization
Modularity
Subject and observers may vary independently
Factors to consider when choosing a database organization
Target customers, transaction requirements, database size and connectivity, database interoperability, system structure
Disadvantage to compound coverage
Tedious to determine the minimum set of test cases required, especially for very complex Boolean expressions
Decision Coverage
Test cases ensure boolean expressions tested in control structures evaluated to both true and false. Exercises different cases of a switch statement. Also called branch or edge coverage, decision-decision-path
Statement coverage
Test cases ensure that each statement in a program P is executed. Also called line coverage, basic block coverage. A weak coverage--insensitive to some control structures.
What does it mean for an object to be composed?
That an object's attributes may themselves be objects, thereby encapsulating the implementations of the object's internal variables
Information hiding principle
The designer of every module must select a subset of the module's properties as the official information about the module, to be made available to authors of client modules
Architecture
The fundamental organization of a software system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution. The process of defining structures of a system. The structure of a system
DevOps
The integration of software development and the management of that software once it has been deployed for use
What do domain-specific software architectures represent?
The most valuable type of experience useful in identifying a set of alternative arrangements for a design
Function overloading
The number and type of the parameters determine which function is called
Fault identification
The process of determining what fault(s) caused the failure
Fault correction
The process of making changes to the system so that the faults are removed
How can modules be dependent on each other?
The references made from one module to another, the amount of data passed from one module to another, the amount of control that one module has over the other
Software System's Architecture
The set of principal design decisions made about a system to be developed. A blueprint for the system construction and evolution
In what ways are containers better than traditional applications?
They are better for installation, software dependencies, packaging, [development, staging, production, shipping], isolation, and scalability
How is a software service accessed?
Through its published interface
Why do you need to pay attention to architectural design?
To create a reliable, secure, and efficient product
What is the primary purpose of black-box testing?
To establish confidence
What is the purpose of the MC/DC approach?
To reduce time for testing. MC/DC requires n+1 test cases.
What is the primary purpose of white-box testing?
To seek faults
True/False: A virtual server on a virtual machine is the same hardware platform as a physical server
True
True/False: All details of the software service implementation are hidden
True
True/False: Function overloading is different from function overriding
True
True/False: MC/DC subsumes branch and condition coverages
True
True/False: Many virtual servers can run simultaneously on each cloud hardware node
True
True/False: Object-oriented code can be polymorphic
True
True/False: Regular expressions and FSMs are equivalent concepts
True
True/False: The design stage of software architecture only includes designing the component interface and leaves the implementation of the interface to a different process
True
True/False: Services can be dynamically reallocated from one virtual server to another
True, because there is no local state
What is the common notation for final state?
Two circles, one inside the other
Multiple Fault Assumption
Two or more simultaneous faults can be the reason for failure
How can the implementation of an object be reused and extended?
Via inheritance
What is provider managed for IaaS?
Virtualization, networking, storage, servers
What are the two types of multi-instance databases?
Vm-based and container-based
Compound/Multiple Condition Coverage
We consider all possible true and false combinations of all conditions. 2^n test cases
Questions to ask when deciding which cloud platform should be used
What database organization to use, what scaleability and resilience requirements are needed, what software structure to use
When is a test successful?
When a fault is discovered
When does failure occur?
When the code corresponding to a fault executes
When are two modules tightly coupled?
When they depend a great deal on each other
When to stop testing
When you run out of time When continued testing causes no new failures When continued testing reveals no new faults When you cannot think of any new test cases When you reach a point of diminishing returns When mandated coverage has been attained
Explicit interfaces principle
Whenever two modules A and B communicate, this is obvious from the text of A or B or both
a? (RE)
Zero or one of a
(a | b) (RE)
a or b
\d (RE)
any digit
\D (RE)
any non-digit
\S (RE)
any non-whitespace character
\W (RE)
any non-word character
\s (RE)
any whitespace character
\b (RE)
any word boundary character
\w (RE)
any word character (letter, number, underscore)
a{3,6}
between 3 and 6 of a
chase
cgase
What does XML stand for?
eXtensible Markup Language
JSON is a common format for ___________ _____ ____________
electronic data interchange
$ (RE)
end of line
\z (RE)
end of string
a{3} (RE)
exactly 3 of a
A ______ occurs when a human makes a mistake, called an ______, in performing some software activities
fault, error
Control Structures
if-then-else, loops
a+ (RE)
one or more of a
SaaS examples
photo editing, logistics management
Software as a Service (SaaS)
software product that runs on the cloud and is accessed by users through a web browser or mobile app
^ (RE)
start of line
\A (RE)
start of string
What is the objective of testing?
to find defects in the code