Unit 1 - Software and software engineering Flashcards

(31 cards)

1
Q

What are the 3 characteristics that affect software development?

A

Malleability
Complexity
Size

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is malleability of a software?

A

Software is easy to change (programmers are often tempted to tweak their code). This malleability creates a constant pressure for software to be changed rather than replaced. Every change introduces the possibility of new errors.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is the complexity of a software?

A

Software is often complex. Complexity can usually be recognised, but it is less easy to define. One item of software can be considered more complex than another if it requires more explanation.

Part of that complexity arises from the potential variety of pathways between the components of a system. The number of errors is likely to depend on the complexity of a system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is the size characteristic of a software?

A

It is likely that there will be more errors in a large piece of software than in a small one.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is the defining quality of a good software system, and what are its main characteristics?

A

A good software system is one that meets its users’ needs. We can characterise a good software system as useful, usable, reliable, flexible, available and affordable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How might greater flexibility make a software system more affordable over its whole life?

A

Users’ needs will change over time. The time taken to implement the changes in requirements in a flexible system is less than for less flexible software.

As labour costs are the most significant component of software costs, flexible software is more affordable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Give two reasons why a delivered software system might not meet its users’ needs.

A

Software systems are usually out of date even as they are being developed because:

some needs are often missed during requirements capture

users’ needs change with time.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

For each of the three characteristics of software, explain why errors might arise in a piece of developed software

A

Malleability. As change is easy to make, often changes are introduced without thorough consideration of the full consequences of each new change introduced.

Complexity. The more complex a piece of software becomes, the more chances there are of a change affecting other parts of the software.

Size. The greater the number of lines of code in a piece of software, the greater the number of likely errors.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the characteristics of legacy systems?

A
  • old
  • large
  • developed using outdated techniques
  • implemented with old programming languages
  • critical to the business
  • changed a number of times since their inception
  • difficult to understand because of either a lack of documentation about their internal structure or a lack of experience within the group responsible for them
  • difficult to maintain because of the above factors.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Suggest a means of measuring the maintainability of a software system?

A

We could measure the effort required by a developer to locate and implement a given change to a software system. That effort can be classified in two components – the effort needed to locate and fix errors (bugs), and the effort needed to adapt the software system to meet its users’ needs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What can we learn from legacy systems about developing a good software system?

A

A legacy system may have started out with all the characteristics of a good software system, yet those characteristics may have changed over time, resulting in a less flexible and maintainable product. As change is inevitable, the right processes should be in place to make change happen in a more controlled way. This requires the adoption of standards and documentation conventions that help decision making on changes and how to introduce them. Any changes need to be well documented so that software is still understandable and less dependent on the people initially involved with developing and maintaining the software.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Suggest a reason why legacy systems will always be a problem.

A

The inherent malleability of software makes it easy to change. You have already seen that a legacy system is lacking in flexibility as a result of the number of changes made to it during its operational lifetime.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is decomposition of a software?

A

Decomposition means that we can divide the problem into smaller pieces, so that we can deal with them individually.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What are module?

A

A module is any identifiable part of a software system that is considered separately. For example, modules may be subroutines (in a procedural language equivalent to methods), classes (in an object-oriented language), library functions or other constructs that may be treated independently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is a problem domain in software development?

A

Problem domain is the specific area of knowledge, real-world context, or set of issues that the software is intended to address.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is modularization?

A

Modularization means decomposing a system into smaller modules.

17
Q

What is the interface of a module?

A

The interface of a module is a description of all operations that are visible externally and how they are connected to the other modules. The knowledge of implementations is omitted.

18
Q

What are context dependencies?

A

Context dependencies are other modules that are necessary for one module to work.

19
Q

What is abstraction?

A

Abstraction in software engineering is the practice of hiding complex implementation details while exposing only the essential features or behavior to the user (or another part of the system).

It’s about focusing on “what” a system does rather than “how” it does it.

20
Q

What is coupling in software development?

A

In software engineering, the term coupling is used to refer to the degree of interdependence among the different parts of a system.

21
Q

What is cohesion in software development?

A

Cohesion is a way of describing how closely the activities within a single module are related to each other. A cohesive modules performs one task well.

Cohesion is a general concept – for example, a department in an organisation might have a cohesive set of responsibilities (accounts, say), or not (miscellaneous services).

22
Q

What is circular dependency?

A

Circular dependency is a form of strong coupling.

23
Q

Why might you consider splitting up a large project into smaller chunks?

A

There is a limit to how much one person can understand at any one time. So there is a limit to the size of a software system that any one person can deal with. By splitting a large project into smaller chunks, it is possible to identify a number of more manageable tasks for those involved.

24
Q

How does the complexity of a software system affect the maintenance task?

A

It is essential to be able to make a change to a software system without having to know all about that system. Each change becomes difficult when the flow of control and dependencies within programs are complex. The greater the number and nature of the dependencies, the harder it is to maintain a software system

25
Why does it help to have low coupling in a software system?
With low coupling, there are few dependencies between modules. Therefore changes made to one part (one or more modules) of a software system are less likely to propagate throughout the whole system.
26
Give examples of the kinds of information that would be valuable when considering a change to a given module.
Which modules are clients of the module in question? This information indicates how far a change may propagate through the software system. What assumptions have been made in client modules of the module in question? An understanding of the expected services of a module will help assess the risks associated with a particular change
27
What are the benefits of using modules with defined interfaces?
Developers will need to know only about the module’s interface (its syntax and what it requires and achieves – its semantics), not how it provides those services. Consequently developers can be more productive. Developers can understand aspects of the software system more thoroughly, so fewer bugs will be introduced. It should be easier to find bugs, as irrelevant modules are avoided. The possibility of module reuse is increased once it is known what that module provides and requires.
28
Why does it help to have high cohesion in the modules of a software system?
1. Ideally one major abstraction per module. 2. This makes it easier for developers to understand the purpose of the module and how to use it. 3. In addition high cohesion tends to make a module more reusable in other applications, because it provides a set of operations that sit naturally together.
29
What characteristics should a module display that will help to ensure that it is easy and cheap to develop and maintain, and that errors are kept to a minimum?
1. A module should have low coupling and high cohesion. 2. Represent a good abstraction. 3. Have a well-defined interface.
30
Why is it important to achieve a balance between coupling and cohesion?
In constructing a system, you may have a choice between a smaller set of loosely coupled, less cohesive modules, or a larger set of tightly coupled, more cohesive modules. In the former case each module may be difficult to understand, while in the latter case the relationships between them may be over-complex. You need to strike an appropriate balance.
31