EECS 348 Final

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

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


Ensembles d'études connexes

Complicated Intrapartum Bonus Quiz

View Set

Informatika 2.2 A számítógép felépítése

View Set