ch-1 & 2: SOFTWARE ENGINEERING

0.0(0)
studied byStudied by 1 person
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/95

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

96 Terms

1
New cards

SOFTWARE

Computer programs and associated documentation

2
New cards

Software products

may be developed for a particular customer or may be developed for a general market

3
New cards

Generic

developed to be sold to a range of different customers

4
New cards

Bespoke

developed for a single customer according to their specification

5
New cards

Software engineering

is an engineering discipline which is concerned with all aspects of software production

6
New cards

System engineering

concerned with all aspects of computer-based systems development including: hardware, software , and process engineering

7
New cards

Software Process

A set of activities whose goal is the development or evolution of software

8
New cards

Specification

what the system should do and its development constraints

9
New cards

Development

production of the software system

10
New cards

Validation

checking that the software is what the customer wants

11
New cards

Evolution

changing the software in response to changing demands

12
New cards

Software Process Model

A simplified representation of a software process, presented from a specific perspective

13
New cards

CASE

Computer-Aided Software Engineering

14
New cards

CASE

Software systems which are intended to provide automated support for software process activities, such as requirements analysis, system modelling, debugging and testing

15
New cards

Upper-CASE

Tools to support the early process activities of requirements and design

16
New cards

Lower-CASE

Tools to support later activities such as programming, debugging and testing

17
New cards

Maintainability

Software must evolve to meet changing needs

18
New cards

Dependability

Software must be trustworthy

19
New cards

Efficiency

Software should not make wasteful use of system resources

20
New cards

Usability

Software must be usable by the users for which it was designed

21
New cards

Legacy systems

Old, valuable systems must be maintained and updated

22
New cards

Heterogeneity

Systems are distributed and include a mix of hardware and software

23
New cards

Delivery

There is increasing pressure for faster delivery of software

24
New cards

Software

is built to meet a certain functional goal and satisfy certain qualities

25
New cards

Software engineering (SE)

is an intellectual activity and thus human-intensive

26
New cards

Software qualities

sometimes referred to as “ilities”

27
New cards

Intangible

difficult to describe and evaluate

28
New cards

Intangible

something that can be touched or felt. (hardware)

29
New cards

Malleable

easily influenced or controlled by other people. (software)

30
New cards

Human Intensive

needs a lot of people to do the work involved. (peopleware)

31
New cards

Maintainability

How easily the software can be maintained, modified, or extended without introducing errors. This includes aspects like code readability, modularity, and documentation.

32
New cards

Flexibility

The ability of the software to adapt to changing requirements or environments without extensive modifications. This often relates to the architecture and design choices made during development.

33
New cards

Scalability

The ability of the software to handle increasing amounts of work or users without sacrificing performance. Scalability is often a concern for large-scale systems.

34
New cards

Performance

How efficiently the software executes its tasks, including factors like speed, responsiveness, and resource utilization

35
New cards

Reliability

The degree to which the software performs its intended functions consistently and accurately under varying conditions.

36
New cards

Security

The measures taken to protect the software from unauthorized access, data breaches, and other security threats.

37
New cards

Testability

How easily the software can be tested to ensure that it behaves as expected and meets its requirements. This includes aspects like the presence of automated tests and the ease of setting up test environments.

38
New cards

Usability

The ease with which users can interact with the software to achieve their goals. This includes factors like intuitiveness, learnability, and efficiency of use.

39
New cards

Accessibility

The degree to which the software can be used by people with disabilities, including considerations for factors like screen readers, keyboard navigation, and color contrast.

40
New cards

Performance

While performance is also an internal quality, it's worth mentioning here as it directly affects the user experience. External performance refers to how responsive and fast the software feels to users.

41
New cards

Reliability

Similarly, external reliability relates to how consistently the software performs for end-users, without crashes, errors, or unexpected behavior

42
New cards

Compatibility

The ability of the software to work seamlessly with other systems, platforms, or devices, ensuring a smooth experience for users regardless of their environment.

43
New cards

Portability

How easily the software can be transferred or deployed across different environments, platforms, or devices, without significant modifications.

44
New cards

Aesthetics

The visual design and appeal of the software, including aspects like layout, typography, color scheme, and graphical elements.

45
New cards

Functional Requirements

Software correctness starts with meeting its functional requirements.

46
New cards

Functional Requirements

These are the specific behaviors and capabilities that the software is supposed to exhibit.

47
New cards

Functional Requirements

Ensuring that the software accurately implements these requirements is fundamental to its correctness.

48
New cards

Validation and Verification

Both processes involve testing the software through various methods such as unit testing, integration testing, system testing, and acceptance testing to identify and correct errors.

49
New cards

Boundary and Error Handling

Correct software should handle both normal and exceptional conditions effectively. It should gracefully handle boundary cases and edge conditions without crashing or producing incorrect results. Proper error handling ensures that unexpected inputs or situations are managed appropriately, preventing the software from entering an inconsistent or erroneous state

50
New cards

Consistency and Data Integrity

Software correctness also involves maintaining consistency and integrity of data throughout its lifecycle.

51
New cards

Consistency and Data Integrity

This includes proper handling of data validation, storage, retrieval, and manipulation to ensure that data remains accurate and reliable.

52
New cards

Concurrency and Multithreading

In multi-threaded or concurrent systems, correctness involves ensuring that shared resources are accessed and modified safely and that race conditions, deadlocks, and other concurrency-related issues are avoided or mitigated effectively

53
New cards

Regression Testing

As software evolves through updates and enhancements, it's essential to conduct regression testing to ensure that existing functionality remains correct after changes are made.

54
New cards

Regression Testing

helps detect unintended side effects or regressions introduced by new code.

55
New cards

Documentation and Compliance

Comprehensive documentation helps ensure that developers, testers, and other stakeholders have a clear understanding of the software's intended behavior and how it should be used. Compliance with relevant standards, regulations, and best practices also contributes to the correctness of software, particularly in safety-critical or regulated domains.

56
New cards

Reliability

can be defined mathematically as “probability of absence of failures for a certain time period”

57
New cards

Robustness

refers to its ability to remain stable and functional even under unfavorable conditions, such as unexpected inputs, errors, or adverse environments.

58
New cards

Robustness

software behaves “reasonably” even in unforeseen circumstances (e.g., incorrect input, hardware failure)

59
New cards

Error Handling

Robust software includes comprehensive error handling mechanisms to detect and manage unexpected situations.

60
New cards

Error Handling

This involves catching errors, exceptions, or faults and responding to them appropriately, such as logging the error, providing informative error messages, and taking corrective actions to recover from the error state.

61
New cards

Input Validation

Robust software validates input data to ensure that it meets expected criteria and does not cause unexpected behavior or vulnerabilities.

62
New cards

Input Validation

This includes checking for data type mismatches, boundary conditions, format compliance, and potential security risks such as injection attacks or buffer overflows.

63
New cards

Graceful Degradation

Robust software gracefully handles degradation in performance or functionality under adverse conditions, such as high load, network failures, or resource constraints.

64
New cards

Graceful Degradation

It may prioritize critical operations, throttle requests, or provide alternative functionality to maintain essential services even in degraded states.

65
New cards

Resilience to External Dependencies

Software often relies on external dependencies such as libraries, APIs, or services.

66
New cards

Resilience to External Dependencies

Robust software minimizes the impact of failures or changes in these dependencies by implementing fallback mechanisms, retry strategies, caching, or alternative providers to maintain continuity of operation.

67
New cards

Security Measures

Robust software incorporates security measures to protect against malicious attacks, unauthorized access, and data breaches.

68
New cards

Security Measures

This includes implementing encryption, access controls, authentication mechanisms, and security patches to mitigate vulnerabilities and threats.

69
New cards

Concurrency and Multithreading

In concurrent or multi-threaded systems, robustness involves managing shared resources and synchronization effectively to prevent race conditions, deadlocks, and other concurrency-related issues.

70
New cards

Concurrency and Multithreading

Proper thread management, locking strategies, and synchronization primitives help maintain system integrity and stability.

71
New cards

Fault Tolerance

Robust software designs include provisions for fault tolerance, allowing the system to continue functioning even in the presence of hardware failures, software bugs, or other faults.

72
New cards

Fault Tolerance

This may involve redundancy, replication, failover mechanisms, and distributed architectures to ensure uninterrupted operation and data integrity.

73
New cards

Testing and Quality Assurance

Robust software undergoes rigorous testing and quality assurance processes to identify and address vulnerabilities, bugs, and edge cases that could compromise its stability and functionality.

74
New cards

Testing and Quality Assurance

This includes unit testing, integration testing, system testing, and user acceptance testing to validate robustness across different levels and scenarios.

75
New cards

Usability

Expected users find the system easy to use

76
New cards

Usability

Rather subjective, difficult to evaluate

77
New cards

Usability

Affected mostly by user interface

78
New cards

Verifiability

How easy it is to verify properties

79
New cards

Maintainability

Can be decomposed as – Repairability and Evolvability

80
New cards

Repairability

ability to correct defects in reasonable time

81
New cards

Evolvability

ability to adapt sw to environment changes and to improve it in reasonable time

82
New cards

Reusability

Existing product (or components) used (with minor modifications) to build another product

83
New cards

Portability

Software can run on different hw platforms or sw environments

84
New cards

Portability

Remains relevant as new platforms and environments are introduced (e.g. digital assistants)

85
New cards

Portability

Relevant when downloading software in a heterogeneous network environment

86
New cards

Interoperability

Ability of a system to coexist and cooperate with other systems

87
New cards

Productivity

denotes its efficiency and performance

88
New cards

Timeliness

ability to deliver a product on time

89
New cards

Visibility

all of its steps and current status are documented clearly

90
New cards

Timeliness

Often the development process does not follow the evolution of user requirements

91
New cards

Timeliness

A mismatch occurs between user requirements and status of the product

92
New cards
93
New cards
94
New cards
95
New cards
96
New cards