Software Architecture and Design Concepts

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

Interfaces

The specification of a software unit's interface describes the externally visible properties of the software unit

What is the Objective of Testing?

(A) To show that a program works (B) To improve the reliability of a program (C) To find defects in the code (D) to protect the end-user (E) To protect the developing community ANSWER: C

Refactoring

"Improves the internal structure of a design (or source code) without changing its external functionality or behavior"

Pure Polymorphism

- Achieved via inheritance and subtyping (derived classes) - Subtyping allows derived classes to be treated as instances of the base class - Pure polymorphism the ability to treat objects of different derived classes as objects of their base class - Dynamic binding: during runtime, the correct method is invoked based on the actual type of the object Polymorphism

Functional (ideal degree)

- 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 - An adaption of functional cohesion to data abstraction andobject-based design - Data, actions, or objects are placed together

Specification-based or black-box or closed-box or functional testing

- Functionality of the test objects - No view of code or data structure - input and output only

Design Concepts: Modularity

- Helps development, increments and changes, testing anddebugging, long-term maintenance - Increase cohesion, decrease coupling - Favored by architectural techniques tending to ensure decentralization of modulesSoftware design 41

Code-based or white-box or clear box or glass box or structural testing

- Structure of the test objects is explored -Internal view of code and data structures

Supertype in place of a subtype

- You can substitute a base class object, reference, or pointer inplace of a derived class object when calling functions ormethods

Objected of Test-to-fail (constructive testing)

-Aggressive testing -Testing a feature in every conceivable way possible -Break the software (find faults)

Developing software architecture

-Choose architecture style (e.g., a layered architecture) -Identify components (subsystems) -Identify connectors (how the components willcommunication)

What is a software architecure represented in terms of

-Components -Connectors -Configuration (topology) -Rationale for decomposition, identification, definition

Where do software architectures come from?

-Domain-specific software architectures• -Reference architectures• -Architectural styles -Design Patterns

Software Architecture subtopics

-Organization -how software is decomposed into components -Server organization -technologies that you use to build software

Objected of Test-to-pass (constructive testing)

-Software works minimally -Apply straightforward test cases for correct behavior -Capabiliteis are not pushed -The right way of itnital testing

A test is successful when

A fault is discovered

Normal VB

4n+1 test cases min min+ nominal max- max

NO single-fault assumption

5^n test cases Interested in what happens when more than one variable has an extreme value Also known as Multiple-Fault BV Testing

Robust BV

6n+1 test cases min- min min+ max- max max+

ISO/OSI model

7 Layer organization

Abstract Class

A class with defined methods, but no implementationthat act as a template i.e. shape class where square, circle, rectangle all inherit from it i.e. methods: area

Design Pattern

A design pattern is a general repeatablesolution to a commonly occurringproblem in software design

Robust EC Testing

A few within bounds and someoutside

Fundamental Concepts in Module Design

A function A method A class

Combination of Robust and Multiple-fault assumption

All combinations of 7 valeus for all variables 7^n test cases

Verification

Are we building the product right?

Validation

Are we building the right product?

Functional Testing Ex

BV Testing

When do you fix problems?

Before and druing the development process to IMPROVE the process

Specification based testing

Black Box Testing Functional Testing Mostly to establish confidence

Composability

Build software elements so that they maybe freely combined with others to produce new software

Debugging

Consequence of successful testing

Use of DBMS

Contain information about a particular enterprise Database systems are used to manage collections of data that are lareve, and accessed at the same time

Database Langugaes

Data Defenition Language (DDL) Data Manipulation Language (DML)

Domain-specific software architectures

DSSAs represent the most valuable type of experience useful in identifying a set of alternative arrangements for a design

Comprehensive language

Data definition, schema definition, data manipulation, transaction control, indexing, securityspecification active databases, ..

Decomposability

Decompose complex systems into subsystems

Failure

Departue from teh system's required behavior

Functional Independence

Design concepts: Functional independence• Functional independence Each module has a simple interface

Steps in Choosing Test Cases

Determing Test Cases Selecting Test Cases Defining a Test

EC

Equivalence Class

Blackbox Testing

Equivalence partitioning, boundary value analysis, decision table testing

Information hiding

Every module should be known tothe outside world through an official, "public" interface

Templates in C++

Example stack, slide 7 12b slides

Whitebox testing

Following examples

BV Testing

Impossible to check all input/output combinations: need to choose some

Good Test Case

Identifier Name Purpose Pre-Conditions Inputs Expected Output Observed Outputs Pass/fail

Test Case

Identity and is associated with a program behavior; it also has a set of inptus and expected outputs.

Dijkstra's view on testing

In other words, a program can be proven incorrect by a test, but it cannot be proven correct.

Fault Identification

Is the process of determining what fault(s)caused the failure

What is a software component

It encapsulates a subset of the systems functionality and/or data -Composability, reusability, evolvability

Quality Control

Keep quality at an acceptable level by rejecting unacceptable product

Why we dcompose

Management, modification, understanding

One spec

Many Designs

Relational Model

Mathematical concept based on the ideas of sets

Error

Mistake

Design Pattern Consequences

Modularity Extensibility Customizability Unexpected updates

Temporal

Module's data and functions related because they are used at the same time in an execution

Types of testing

Module, compoennt, or unit

Elements of Design Pattern

Name Problem Solution Consequences

Fault

Occurs when a human makes a mistake

Types of Polymorphism

Overloading, Template functions

Coincidental

Parts are unrelated to one another

Quality Assurance

Process and Design Standards -> Requirements -> Development -> QC Inspection

The HAVING and ORDER clauses; very useful in DS queries

SELECT Major, AVERAGE(GPA)FROM STUDENTWHERE ExpGraduateYr = "2024"GROUP BY MajorHAVING AVERAGE(GPA) >=3.0ORDER BY Major;

SQL command sequence

SELECT, FROM, WHERE

Find the defect by guessing

Scatter debugging throughout the program

DBMS

Set of programs

DBMS Interfaces

Standalone query languages (SQL), Programming interfaces (CLI), user-friendly interfaces.

Whitebox testing

Statement coverage, branch coverage, condition coverage, path coverage, path coverage, dataflow testing

Software Testing is

Static, Dynamic

SQL

Structured Query Language

Objective of testing

TO find faults in teh program

Normal EC testing but no single-fault

Tests within all partitions inside the bounds.

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

Levels of testing

Unit Testing Integration Testing System Testing Acceptance Testing

Code based testing

White/clear/glass box testing structural testing mostly to seek faults

When are two members tightly couples

When they depened a great deal on each other

Formal Proof Techniques

Write assertions and theorems from A1 to An that proves the program works

Generality

a design principle that makes a software unitas universally applicable as possible, to increase thechance that it will be useful in some future system

Separation of concerns

a feature specified by the requirement model

Goal

high cohesion and low coupling

Uniformity acces principle

all code in the same form i.e. a.balance(), balance(a) all instances would be a.balance()

Strong Robust EC Testing

all partitions inside and outside of the ranges

Example of test cases

c1. 1 ≤ a ≤ 200 c4. a < b + c c2. 1 ≤ b ≤ 200 c5. b < a + c c3. 1 ≤ c ≤ 200 c6. c < a + b This defines min and maxes

Polymophism

code is written in terms of interactions with an interface, but code behavior depends on the object associated with the interface at runtime and on the implementations of that object's method

SQL Language

considered one of the major reasons for the commercial success of relational databases

CREATE TABLE

creates table CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, ....);

Reusability

design for reusability to use parts of the design and implementation in other applications

INSERT

inserts a tuple (row) in a relation (table) Must be in the same order

Coupling

interdependence between different modules low coupling is good

Cohesion

interdependence of elements of one module

pure polymorphism

is a technique used to define the same method with the same arguments but different implementations

Abstraction

present a problem and solution at appropriate levels of abstraction

Fault Correction

process of making changes to the system so that the faults are removed

Fan-in

refers to the number of units that use a particular software unit

Fan-out

refers to the number of units used by particular software unit

Adapter Pattern

the adapter pattern is a softwaredesign pattern that allows the interface of an existingclass to be used as another interface. It is often used tomake existing classes work with others withoutmodifying their source code."Software design 79

Software Architecture is

the set of principal design decisions made about a system to be developed

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


Ensembles d'études connexes

chpt 11 - unemployment & labor force participation

View Set

Chapter 23: Assessment of Respiratory Function

View Set

(PrepU) Chapter 8: Communication

View Set

Ch 9- An introduction to Microbial Genetics

View Set

Unit Test: Toward a More Perfect Union

View Set

Chapter 23: Care for patients with skin problems

View Set

Semester 1 Review - Multiple choice

View Set

Chapter 23 - Nursing Care of the Newborn and Family (Maternity) EAQ's

View Set