Software Engineering Final

studied byStudied by 39 people
get a hint

Architectural Design

1 / 102

Tags and Description

Pertains to chapters 6, 7, 8, 9

103 Terms


Architectural Design

Identifies the main components. Output is a model that describes the set of communicating components.

New cards


Refactoring the system architecture is usually ________ because it impacts so many components.

New cards

Types of architectural abstraction

In the small: How individual components are decomposed into components.

In the large: Architecture of complex enterprise systems that include other systems, programs, and program components.

New cards

Why use architectural models?

Facilitate discussion about the system. Documentation

New cards

What are architectural design decisions?

A creative process that depends on the system is built. There are common decisions that span all design processes which affect the non-functional characteristics of a system.

New cards

What is architecture reuse?

Systems in a similar domain (industry) have similar architectures. Reuse these rather than innovate a new solution.

New cards

Architecture and system characteristics (5 of them)

Performance: Localize critical operations and minimize communications. Uses larger components rather than fine-grained.

Security: Layered architectures

Safety: Localize safety-critical features in a small number of sub-systems.

Availability: Redundant components and mechanisms for fault tolerance.

Maintainability: Use fine-grained, replaceable components.

New cards

What are architectural views?

Each model shows one view or perspective of the system. Typically want multiple views of the software architecture.

New cards

Types of view models (4 of them)

Logical view: Shows the key abstractions as objects or classes.

Process view: Shows the interacting processes and run-time.

Development view: How the software is decomposed for development.

Physical view: Shows system hardware and how software components are distributed across the processors in the system.

New cards

Architectural patterns

A stylized description of good design practice, which has been tried and tested.

New cards

Types of architectural patterns and how they work (5 of them)

Model-View-Controller: Used when there are multiple ways to view and interact with data. Allows data to change independently of its representation. Ca involve code complexity in simple interactions. Model: manages system data and associated operations on the data. View: defines and manages how the data is presented to the user. Controller: manages user interaction and passes interactions to the view and model.

Layered architecture: Used when building facilities on top of existing systems or when development is spread across several teams. Also used when there is a requirement for security. It allows the replacement of entire layers and has increased security and dependability. In practice, providing a clean separation between layers is difficult.

Repository architecture: Used when a system where large volumes of data need to be stored for a long time. Components are independent, and changes made to the data by one can be propagated to all components. However, the repository is a single point of failure.

Client-server: Used when data in a shared database has to be accessed from various locations. Also, each server will handle each service. Servers can be distributed across a network. Each server is a single point of failure and is susceptible to network attacks like DOS.

Pipe and filter: Used in data processing applications. It is easy to use and can be implemented in sequential or concurrent systems. However, the data and transfer format must be agreed upon before processing.

New cards

What are application architectures?

Application systems are designed to meet an organizational need. Generic application architecture is an architecture that may be configured and adapted to create a system that meets specific requirements.

New cards

Use of application architecture

A starting point for architectural design.

As a design checklist.

A way of organizing the work for teams.

Assessing components for reuse.

New cards

Examples of application types

Data processing applications --> Transaction processing applications.

E-commerce systems or reservation systems

Event processing systems.

Language processing systems --> Compiler and interpreters.

New cards

Transaction processing systems

Process user requests for information from a database or requests to update the database. It should be asynchronous.

New cards

Design, Implementation

______ and _____are often inter-leaved in agile development.

New cards

Object class identification

Identifying different object classes or components within a system.

New cards

Approaches to identification

Natural language description of the system.

Using tangible things in the applications domain.

Identify objects based on their participation and behavior.

Analyze scenarios to discover objects, attributes, and methods

New cards

Subsystems models

Show logical groupings of objects into subsystems. Usually modeled in UML

New cards

Interface specification

Interfaces define the signatures and semantics of the services provided by the object or group of objects.

UML uses class diagrams for interface specification.

New cards

What is a design pattern?

A pattern is a description of the problem and the essence of the solution. It should be sufficiently abstract to be reused. Usually take advantage of OOP characteristics such as inheritance and polymorphism.

New cards

Design pattern elements (4 of them)


Problem Description

Solution Description


New cards

Implementation issues (3 of them)

Reuse: You should make as much use as possible of existing code.

Configuration management: Keeping track of different versions of each software component in a configuration management system.

Host-target development: You develop it on one computer(host) and execute it on a separate computer(target)

New cards

Why do we reuse code?

Code was initially written from scratch, but costs and scheduling pressure made this approach unviable.

New cards

Levels of reuse (4 of them)

Abstraction level: You do not reuse the software directly but use the knowledge of successful abstractions in the design.

Object level: Directly reuse objects from a library.

Component level: Components are reused.

System level: Reuse entire application systems.

New cards

Reuse costs

It depends on the system you are developing.

New cards

Configuration management

The general process of managing a changing software system

New cards

Configuration management activities (3 of them)

Version management

System integration

Problem tracking

New cards

Host-target development

Most software is developed on one computer(the host). Runs on separate machine (the target)

New cards

Development platform tools

An integrated compiler and syntax-directed editing system allow you to create, edit and compile code.

Graphical editing tools to edit UML models Testing tools like JUnit

New cards

Integrated development environment

Software development tools grouped together.

New cards

Component/system deployment factors

If a component is designed for specific hardware or software, it must be deployed on a platform that provides the required hardware and software.

New cards

Open source development

Source code of the system is published, and volunteers are invited to participate in the development process.

New cards

Goals of program testing

New cards

Verification vs. validation

Verification: Check that the software meets its functional and non-functional requirements.

Validation: Software meets the customer's expectations.

Done to establish confidence that the system is ‘fit for purpose’

New cards

V & V confidence (How much confidence do you need for different situations)

Software purpose: How critical is the software to an organization? A higher level of confidence is needed for critical systems.

User expectations: The confidence level depends on the users' expectations.

Marketing environment: Getting a product to market early may be more important than finding defects in the program.

New cards

Inspections and testing (static and dynamic verification)

Inspections (Static verification): Concerned with analyzing the static system representation to discover problems. Advantages of Inspections: This does not require system execution. Concerned with examining the source code. No extra cost to be inspected. Can check compliance with standards, portability, and maintainability.

Testing (Dynamic verification): Concerned with exercising and observing product behavior. Advantages of Testing: Checks non-functional requirements.

New cards

Stages of testing

Development testing: test during development to discover bugs and defects

Release testing: Testing a complete version before release

User testing: Users test the system in their own environment

New cards

Development testing types

Unit testing: Test individual program units, objects, or classes. It focuses on testing the functionality of these methods. Defect testing process.

Component testing: Where several individual units are integrated to create composite components. Each component has an interface which is what is tested.

System testing: Where some or all of the components in a system are integrated, and the system is tested as a whole. Focus on testing component interactions.

New cards

Automated testing

Unit testing should be automated so that tests are run and checked without manual intervention.

New cards

Automated test components (as in what are the different parts of automated testing)

Setup: Initialize the system with the test case, namely the inputs and expected outputs.

Call: Call the object or method to be tested.

Assertion: Compare results with expected results.

New cards

Two types of unit test cases

Reflecting normal operation

Using abnormal inputs to check that these are properly processed and do not crash the component.

New cards

Testing strategies

Partition testing: Identity groups of inputs with common characteristics should be processed similarly.

Guideline-based testing: Use testing guidelines to choose test cases. Guidelines reflect the experience of other programmers.

New cards

General testing guidelines

Choose inputs that force errors

Design inputs that cause input buffers to overflow

Repeat the same input numerous times.

Force invalid outputs to be generated.

Force computation results to be too large or too small.

New cards

Types of interfaces

Parameter interfaces: Data passed from one method or process to another.

Shared memory interfaces: A block of memory is shared between procedures or functions.

Procedural interfaces sub-system: Encapsulates a set of procedures to be called by other sub-systems.

Message passing interfaces: Request services from other subsystems.

New cards

Interface errors

Interface misuse: An example is calling parameters in the wrong order.

Interface misunderstanding: Assumptions about the behavior are incorrect.

Timing errors: Operate at different speeds and out-of-date information is accessed.

New cards

Interface testing guidelines

Parameters to a called procedure are at the extreme ends of their ranges.

Always test pointer parameters with null pointers

Design tests that force the container to fail

Stress test

In shared mem components, vary the order in which components are activated.

New cards

Why do we use use case testing?

Developed to identify system interactions

New cards

Testing Policies

Policies are put in place because exhaustive testing of an entire system is impossible.

New cards

Test-driven development

Inter-leave testing and code development.

Tests are written before writing the code; passing the tests is a stage of development.

Develop a test for the increment and then develop the code.

New cards

Test-driven development activities

Identify the functionality required for an increment.

Write a test

Run the test along with every other developed test. It will fail.

Implement the functionality and rerun test.

New cards

Benefits of test-driven development

Code coverage: Every code segment has at least one associated test.

Regression testing: A regression test suite is developed.

Simplified debugging: When a test fail it is clear where the problem lies.

System documentation: The tests are a form of documentation that describe what the code should be doing.

New cards

Regression testing

Testing the system to check that changes have not ‘broken’ previous code.

All tests are run every time a change is made to the program.

New cards

Release testing

Process of testing a particular system release for use outside the development team. The primary goal is to convince the supplier of the system that the system is good enough for use. This is a form of system testing. A separate team should be responsible for release testing.

New cards

Performance testing

Usually involves planning a series of tests where the load is steadily increased until performance becomes unacceptable.

New cards

Stress testing

The system is deliberately overloaded to test its failure behavior.

New cards

User testing

Users or customers provide input and advice on system testing.

New cards

Types of user testing (3 types)

Alpha testing: Test at the developers' site.

Beta testing: The release of the software is made and tested by users.

Acceptance testing: Customers test a system to decide whether or not it is ready to be accepted.

New cards

Stages in the acceptance testing process (6 stages)

Define acceptance criteria

Plan acceptance testing

Derive acceptance tests

Run acceptance tests

Negotiate test results

Reject/accept the system

New cards


In agile, the user/customer is a part of the development team and is responsible for making decisions on the ________of the system. Tests are defined by the user/customer

New cards

Why is software change inevitable?

New requirements emerge when the software is used

The business environment changes

Errors must be repaired

New computers and equipment are added to the system

The performance or reliability of the system may have to be improved

New cards


The core problem for all organizations is implementing and managing change to their ______ systems

New cards

Importance of Evolution

Software systems are huge investments to organizations and are seen as critical business assets. The only way to maintain the value of a system is to change and update. The majority of the software budget in large companies is allocated to changing and evolving existing software

New cards

Timeline of a software (4 main parts)

Software development

Software evolution

Software Servicing

Software Retirement

New cards


While the software is in use, it is evolving as new requirements are proposed and implemented in the system.

New cards


The only changes made to the software are those required to keep it operational (ex, bug fixes). No new functionality is added at this stage

New cards

Phase out

While the system may still be in use, there are no further changes made to it

New cards

What is the software evolution process dependent on?

The type of software being maintained

The development processes used

The skills and experience of the people involved

New cards

Proposals for change

When proposing change you should take into account the components that are affected by the change to estimate the true cost and impact of the change.

New cards

Change implementation

Iteration of the development process where the revisions to the system are designed, implemented, and tested

New cards

Program Understanding

The first stage of change implementation, especially if the original system developers are not responsible for the change implementation. The developers have to understand how the program is structured, how it delivers functionality, and how the proposed change might affect the program.

New cards

Urgent Changes may be implemented without going through all the stages of the software engineering process if:

A serious system fault has to be repaired to allow normal operation to continue.

Changes to the system’s environment (ex, an OS upgrade) have unexpected effects.

There are business changes that require a very rapid response (ex the release of a competing product)

New cards

Agile Method and Evolution (easy? hard?)

The incremental development of agile methods makes the transition from development to evolution an easy one since evolution is the continuation of the development process based on frequent system releases.

New cards

Automated Regression Testing

Regression testing is testing the system to check that changes have not broken previously working code.

New cards

Handover Problems

When the development team used an agile approach that the evolution team is unfamiliar with since they prefer a plan-based approach. The evolution team may expect detailed documentation to support evolution but they were not produced during the development.

When the development team used a plan-based approach, but the evolution team preferred to use agile methods the evolution team may have to develop automated tests from scratch and the code in the system may not have been refactored and simplified as it is in agile development

New cards

Legacy Systems

Older systems that rely on languages and technologies that are no longer used for new systems development. They are not just software systems but are broader social-technical systems including hardware, software, libraries and other supporting software

New cards

Legacy Software

May be dependent on older hardware such as mainframe computers and may have associated legacy processes and procedures.

New cards

Components of a Legacy System (6 parts)

System Hardware: may no longer be available

Support Software: may be obsolete or unsupportable

Application Software: that provides the business services is usually made of a number of application programs

Application Data: that are processed by the application system may be inconsistent, duplicated, or held in a different database

Business Process: that are used to achieve some business objective and may be designed around a legacy systems and constrained by the functionality that it provides

Business Policies and Rules: define how the business should be carried out and constraints on the business. The use of the legacy application system may be embedded within the policies and rules

New cards

Legacy System Layers (5 layers)

Socio-Technical System

Business Processes

Application Software

Platform and infrastructure software


New cards

Why is it risky to replace legacy systems?

Lack of complete system specification

Tight integration of system and business processes

Undocumented business rules embedded in the legacy system

New software development may be late and/or over budget

New cards

Why is legacy system change expensive? (6 main reasons)

No consistent programming style

Use of obsolete programming languages with few people available with these language skills

Inadequate system documentation

System structure degradation

Program optimization may make them hard to understand

Data errors, duplication, and inconsistency

New cards

Legacy System Management Strategies (4 main stratagies)

Scrap the system completely and modify business processes so that it is no longer required

Continue maintaining the system

Transform the system by re-engineering to improve its maintainability

Replace the system with a new system

New cards

Legacy System Categories (4 main categories)

Low Quality Low business value systems should be scrapped

Low-quality, high business value systems should be re-engineered or replaced if a suitable system is available

High-quality, low-business value systems should be replaced with COTS, scrapped completely or maintained

High-quality, high business value systems should continue in operation using normal system maintenance

New cards

Viewpoints that should be taken into account for value assessment. (5 main viewpoints)

System end-users

Business customers

Line managers

IT managers

Senior manager

New cards

Issues in Business Value assessment

If systems are only user occasionally or by a small number of people they may have a low business value

A system may have a low business value if it forces the use of inefficient business processes

If a system is not dependable and the problems directly affect business customers the system has a low business value

If the business depends on system outputs then the system has a high business value

New cards

System Quality Assessment

Business Process Assessment → how well does the business process support the current goals of the business?

Environment Assessment → How effective is the system’s environment and how expensive is it to maintain?

Application Assessment → What is the quality of the application software system?

New cards

Factors used in Environment Assessment (7 factors)

Supplier Stability → is the supplier still in existence, financially stable, and likely to continue in existence? If not is there someone else to maintain the system?

Failure Rate → Does the hardware have a high rate of failure? Does the support software crash and force system restarts?

Age → How old is the hardware and software? The older it is the more obsolete the system will be.

Performance → Is the performance adequate or do performance problems have significant effect on system users?

Support Requirements → What local support is required by the hardware and software? If there are high costs associated with this support consider system replacement

Maintenance Costs → Older hardware may have higher maintenance costs than modern systems. Support software may have high annual licensing costs

Interoperability → Are there problems interfacing the system to other systems?

New cards

Factors in Application Assessment (8 factors)





Programming Language

Configuration Management

Test Data

Personnel Skills

New cards

System Measurement

The higher the number of system change requests is the lower the quality of the system is. The more user interfaces the system has the more likely there is to be inconsistencies and redundancies. As the volume of the data processed by the system incessantly increases, so do the inconsistencies and errors in that data.

New cards

Software Maintenance

Modifying a custom software after it was been put in use and does not usually involve major changes to the system architecture. Changes are implemented buy modifying existing components and adding new components to the system

New cards

Types of Maintenance (3 types)

Fault Repairs to fix bugs/vulnerabilities and correct deficiencies

Environmental Adaptation to adapt software to a different operating environment

Functionality Addition and Modification to satisfy new requirements

New cards


Maintenance costs are usually ________ than development costs and increases as software is maintained due to corruption to the system's structure

New cards


It is usually more expensive to add new features to a system during maintenance since there is no incentive for the development team to write _________software

New cards

Maintenance prediction

The assessment of which parts of the system may cause problems and have high maintenance costs

New cards

Change Prediction

Predicting the number of changes requires an understanding of the relationships between a system and its environment. Tightly coupled systems require changes whenever the environment is changed.

New cards

Complexity of a system depends on (3 main things)

Control Structures

Data Structures

Object, method, and module size

New cards

Process Metrics (an increase in these may indicate a decline in maintainability)

Number of requests for corrective maintenance

Average time required for impact analysis

Average time taken to implement a change request

Number of outstanding change requests

New cards

Software Reengineering

Restructuring or rewriting part or all of a legacy system without changing its functionality. Involves adding effort to make them easier to maintain including re-structuring and re-documentation

New cards

Advantages of Re-engineering (2 main advantages)

Reduce Risk

Reduce Cost

New cards

Re-engineering Process Activities (5 of them)

Source code translation

Reverse engineering

Program structure improvement

Program Modularization

Data re-engineering

New cards

Explore top notes

note Note
studied byStudied by 2 people
Updated ... ago
5.0 Stars(1)
note Note
studied byStudied by 43 people
Updated ... ago
5.0 Stars(1)
note Note
studied byStudied by 58 people
Updated ... ago
5.0 Stars(1)
note Note
studied byStudied by 4 people
Updated ... ago
5.0 Stars(1)
note Note
studied byStudied by 59 people
Updated ... ago
5.0 Stars(5)
note Note
studied byStudied by 10850 people
Updated ... ago
4.9 Stars(51)
note Note
studied byStudied by 4 people
Updated ... ago
5.0 Stars(1)
note Note
studied byStudied by 17 people
Updated ... ago
5.0 Stars(1)

Explore top flashcards

flashcards Flashcard39 terms
studied byStudied by 8 people
Updated ... ago
5.0 Stars(2)
flashcards Flashcard52 terms
studied byStudied by 2 people
Updated ... ago
5.0 Stars(1)
flashcards Flashcard42 terms
studied byStudied by 2 people
Updated ... ago
5.0 Stars(1)
flashcards Flashcard33 terms
studied byStudied by 2 people
Updated ... ago
5.0 Stars(1)
flashcards Flashcard30 terms
studied byStudied by 2 people
Updated ... ago
5.0 Stars(1)
flashcards Flashcard42 terms
studied byStudied by 29 people
Updated ... ago
5.0 Stars(2)
flashcards Flashcard128 terms
studied byStudied by 53 people
Updated ... ago
5.0 Stars(1)
flashcards Flashcard50 terms
studied byStudied by 51 people
Updated ... ago
5.0 Stars(2)