SWENG 411 Exam 2
Why Architectural Design?
*To enable everyone to better understand the system *To allow teams to work on individual pieces of the system in isolation *To prepare for extension of the system *To facilitate reuse and re-usability
What are the different types of tests to perform on a system?
Unit tests, integration tests, system tests, and validation tests
Check the slides on canvas for diagram notations and other details!
Ya cunt
What is the primary relationship among systems and subsystems?
aggregation
When you test software, you use _______________ data
artificial
What are the three kinds of relationships in UML?
associations, dependencies, and generalizations
Where do more errors in software occur?
at the boundaries of equivalence classes
True or false: an element can be owned by more than one package
false
What does it mean for a package to be "purely conceptual"?
it doesn't exist at run time; only at development time
A state diagram shows the ______________ of an object
life-cycle
what are the two integration testing strategies?
the "big bang" approach and incremental testing
What do you test as a unit in the "big bang" approach?
the entire system
True or false: UML allows a class to inherit from multiple superclasses
true
Disadvantages of alpha testing
-A relatively small number of customers -Expensive to invite the users onsite
Advantages of beta testing
-Cheap -A large number of tests can be conducted -Test cases are performed in different environments and settings
Advantages of Repository Pattern
-Components can be independent—they do not need to know of the existence of other components. -Changes made by one component can be propagated to all components. -All data can be managed consistently (e.g., backups done at the same time) as it is all in one place. -Efficient way to store large amounts of data
What makes up the 'pipe' and 'filter' of the pipe and filter architectural pattern and what do they do?
-Components: called filters, apply local transformations to their input streams and often do their computing incrementally so that the output begins before all input is consumed -Connectors: called pipes, serve as conduits fro the streams, transmitting outputs of one filter to inputs of another.
Advantages of the layered architectural pattern
-Design: based on increasing levels of abstraction -Enhancement: Changes to one layer affect at most two other layers -Reuse: Different implementations (with identical interfaces) of the same layer can be used interchangeably
Advantages of Pipe and Filter
-Easy to understand -Supports reuse -Systems can be easily maintained and enhanced -Naturally supports concurrent or sequential execution
Disadvantages of beta testing
-Many reported problems might not be real problems related to the software system -Large number of system tests/errors might have to be processed -Not always easy to duplicate tests
Some classical software architectural patterns (4)
-Model View Controller (MVC) -Layered -Repository (data-centered) -Pipe and filter (data-flow)
Disadvantages of Repository Pattern
-Must agree on a data model -The repository is a single point of failure so problems in the repository affect the whole system -May have inefficiencies in organizing all communication through the repository -Distributing the repository across several computers may be difficult.
Disadvantages of Pipe and Filter
-Not good for interactive systems -Excessive parsing and unparsing leads to loss in performance and increased complexity in writing the filters themselves
What does it mean if package P1 generalizes package P2?
-P1 specializes the more general P2 -P1 inherits the elements of P2 -P1 can replace the inherited elements and add new ones
Disadvantages of the layered architectural pattern
-Providing a clean separation of layers is difficult -Performance can be an issue
Advantages of alpha testing
-controlled environment means that errors/tests can be repeated. -Test cases/errors are recorded by staff
What are the two 'types' of classes?
-ones found during analysis (people, places, events, etc.) -ones found during design (specific objects like windows and forms that are used to build the system)
A well designed package .......
....groups elements that are semantically close and tend to change together
Dependencies between packages reflect...
...dependencies between any two classes in the packages
Testing is intended to...
...show that a program does what it is intended to do and to discover program defects before it is put into use.
Design Principles
1. Divide and conquer 2. Increase cohesion where possible 3. Reduce coupling where possible 4. Information hiding 5. Keep the level of abstraction as high as possible 6. Increase re-usability where possible 7. Design for change 8. Design for portability 9. Design defensively
Steps of developing an architectural model
1. Sketch an outline of the model 2. Refine the architecture 3. Consider each use case and adjust the architecture to make it realizable 4. Mature the architecture
Navigability of an association
A constraint on an association relationship that determines which class associates with the other.
What is a "good" test?
A good test has a high probability of finding an error, the test is not redundant and the test is not too simple nor too complex
Design Process
A problem-solving process whose objective is to find and describe a way to implement the system's functional requirements while respecting the constraints imposed by the non-functional requirements and while adhering to general principles of good quality.
What is the difference between a system and a subsystem?
A system represents the highest-level thing in a given context. A system is defined in terms of subsystems. The subsystems that make up a system provide a complete and non-overlapping partitioning of the system as a whole.
What is a guarded transition?
A transition with an additional condition (guard)
Repository Architectural Pattern
All data in a system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository.
what is a state-independent object?
An object that always responds the same way to all events
What are the two classical phases of software design?
Architectural design and detailed design
Which relationship is stronger: Association or Dependency?
Association
True or false: testing by brute force is sometimes necessary
False. Testing by brute force should never occur
What is an activity?
In a conceptual diagram, an activity is some task that needs to be done. In a specification-perspective or implementation-perspective diagram, an activity is a method on a class.
Whats the difference between Internal and Self transitions?
Internal transitions do not leave the state, whereas self transitions leave and re-enter the state
What does it mean when an element of a package have a +, -, or # next to its name?
It means its visibility is defined as public (+), private (-), or protected (#)
What are the three logical components of the MVC model?
Model - manages the system data and associated operations on that data View - defines and manages how the data is presented to the user Controller - manages user interaction and passes these interactions to the View and the Model
Acceptance Testing
Performed by end users and conducted over a period of weeks or months to uncover cumulative errors that might degrade the system over time.
Bottom-up integration testing
Start by testing the lowest levels of the software. You need drivers (simple programs designed for testing that make calls to lower layers) to test the lower layers
Top-down design process
Start with high-level structure of the system, gradually work down to detailed decisions
Recovery Testing
Testing how the system recovers from a crash, power outage, etc.
Stress Testing
Testing how the system runs with a large amount of simultaneous users/ large amount of data processing
Security Testing
Testing if the system can be broken into from an outside source
Performance Testing
Testing run-time performance within the context of an integrated system
Alpha Testing
Tests done by a selected number of customers/users on the developer's site in a controlled environment.
Why should some non-developer test the software?
The developer will be gentle on the software, whereas a non-developer will try to break the system to ensure quality.
Architectural Design
The process of designing the global organization of a software system, including dividing software into subsystems, deciding how these will interact, and determining their interfaces
'Pipe and Filter' Architectural Pattern
The processing of the data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. The data flows (as in a pipe) from one component to another for processing.
package interface
The public part of a package, called its exports
What is "the ripple effect" in terms of testing?
There is a high probability that the efforts to remove the defects may have added new defects.
What is the purpose of defect testing?
To discover faults or defects in the software where its behavior is incorrect or not in conformance with its specification
True or False: Integration testing combines individual units and tests them as a group
True
What is the difference between verification and validation?
Verification ensures that the software conforms to its specification. Validation ensures that the requirements are met.
What's the difference between white-box and black-box testing?
White-box testing: tests are generated from the implemented structure Black-box testing: Tests are generated and executed from the specification of the required functionality at defined interfaces
How does incremental testing work?
You test each individual subsystem in isolation. Continue testing as you add more subsystem to the final product
What is a driver?
a "main program" that accepts test case data, passes such data to the component (to be tested), and prints relevant results
Package
a general purpose mechanism for organizing elements into groups
What does a generalization relationship do?
a generalization connects a subclass to its superclass. It denotes an inheritance.
What is an equivalence class?
a group of inputs that will all be treated the same in a given algorithm.
What is an interface?
a named set of operations that specifies the behavior of objects without showing their inner structure. They have no attributes or state. Rather, they specify the services offered by a related class.
UML class diagram
a picture of the classes in an Object Oriented system, their fields and methods, and connections between the classes that interact or inherit from each other
What is a stateful object?
a stateful object exhibits different behaviors in different states
Architectural Pattern
a stylized description of good design practice, which has been tried and tested in different environments.
In the layered architectural model, a layered provides services to the layer _________________ it so the lowest-level layers represent core services that are likely to be used throughout the system.
above
What are the two special associations?
aggregations and compositions
What are some things are NOT represented in a UML class diagram?
algorithmic details or how a particular behavior is implemented
What are activity diagrams useful for (other than describing activities)?
describing complicated methods and describing use cases.
Each design issue normally has several alternative solutions, also known as _____________.
design options
True or false: an object can be an instance of more than one class
false
true or false: state diagrams need to represent every possible event
false
Top-down integration testing
highest-level modules are tested first and progressively lower-level modules are tested thereafter. Start by testing the user-interface and write stubs (pieces of code that have the same interface as the lower level functionality)
Dependency Relationship
indicates a semantic relationship between two or more elements.
What are the 4 view models of software architecture?
logical view, process view, development view, physical view
McCabe Cyclomatic Complexity Strategy
number of linearly independent paths: = number of simple decisions + 1 = number of edges - number of nodes + 2
When a class is dependent on an interface, it is called a ________
realization relationship
What is a stub?
replaces modules that are subordinate (called by the component to be tested)
What is the name of the testing strategy that is a mix of top-down and bottom-up?
sandwich testing
What are the two ways that activities can be aligned?
sequentially - one activity is followed by another parallel - two or more sets of activities are performed concurrently, and order is irrelevant
Bottom-up design process
start with reusable low level utilities, then decide how they will be combined to create higher constructs
A designer is faced with a series of design issues. These are _______________ of the overall design problem.
sub-problems
regression tests
tests that are re-run
When making a design decision, the software engineer uses knowledge of what 4 things?
the requirements, the design as created so far, the technology available, and software engineering principles and 'best practices'
Beta Testing
the system is distributed to customers to be tested remotely. Customers are supposed to record all problems during testing.
What is the purpose of validation testing?
to demonstrate to the developer and the system customer that the software meets its requirements
True or False: a mix of top-down and bottom-up design processes can be used to design software systems
true
when in the regression testing process do you stop testing?
when a test fails, stop testing and wait until the fault has been corrected. Then start testing again
When is an association relationship needed?
when two class in a model need to communicate with one another.