Ch. 2: Risks and Challenges of Enterprise Software Engineering Flashcards

1
Q

Please name six aspects that contribute significantly to the complexity of enterprise software systems.

A
  • A software system must support as many functions as possible.
  • A software system is part of a complex application landscape and is connected to many other software systems via technical interfaces.
  • A software system is used by many users.
  • A software system should work on as many devices as possible under different operating systems.
  • After it has been put into operation, a software system should be expandable in as many ways as possible.
  • A software system is created by many people.
  • A software system consists of many different components and subsystems.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Please name three typical properties/quality requirements of software systems.

A

Function suitability, reliability, fault tolerance, usability, performance efficiency, maintainability, portability.

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

Explain at least 4 properties/quality requirements of enterprise software systems

A
  • Functional suitability: When completely developed, software should match its (intended) specification. One important aspect of functional suitability is interoperability. A software system is interoperable if it can be merged or integrated with other systems with little effort.
  • Reliability: The software is available and the user can use it in the context of their business activities.
  • Fault tolerance: If the software is not used as originally intended, or if a connected system does not behave as originally planned, a software system should behave tolerantly and not produce any uncontrolled errors or inconsistent data.
  • Usability: Software is usable when users find it easy to use.
  • Performance efficiency: Performance refers to how the system complies with requirements such as response time and resource consumption.
  • Maintainability: The ability of software to be changed in an economically viable way is known as maintainability. Maintainability depends heavily on the internal structure of the software and its documentation.
  • Portability: The portability of software results from the effort required to make software executable on a different platform (e.g., database, operating system, mobile device) compared to the (new) development effort for software.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Please explain the term software engineering.

A

Application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

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

How does software engineering differ from other engineering disciplines, such as architecture or electrical engineering?

A

Since software systems are immaterial, their size and diversity are not limited by natural or physical laws. In contrast to other disciplines, such as architecture or electrical engineering, there are almost no natural restrictions such as gravity, friction, or resistance.

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

How do software systems differ significantly from other industrial products?

A

You can’t touch software, since software is immaterial. A finished software system manifests itself as a very long series of 0 and 1 on a hard drive.

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

What are the main risks for software projects?

A
  • Project termination risks
  • Software applicability risks
  • Maintainance risks
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Please name two possible risks for why a software project can fail.

A
  • Central requirements turn out to be unrealizable during the project.
  • The cost of the project was completely out of line before the system was up and running.
  • Members or different organizational units within the project have fundamentally different opinions or are at odds.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Please name two possible risks for delivering a software system that cannot be used.

A
  • During deployment, it turns out that important business functions are missing or have been implemented incorrectly.
  • The quality properties required by the customer are not met.
  • The system is not accepted by the users.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Please name two possible risks of the maintenance and evolution of software systems.

A
  • The team responsible for maintenance cannot assess the consequences of its actions.
  • The internal structure of the system has degenerated over the years due to a lot of minor maintenance work and adjustments.
  • There is no knowledge available about the technologies used in the legacy system.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Please explain why software development is a highly knowledge-driven process and what impact this has on a software project.

A

Requirements for the system to be created are only recognized during the software process. However, the system requirements form the starting point for all further activities within a software project. As a rule, relevant requirements are only recognized by users and customers after they have seen a first version of the system.

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

Why can lack of expertise among software developers be a project risk?

A

The development team must have a business understanding of the requirements formulated by the stakeholders so that it can deliver a usable software system. Because today’s enterprise software systems are usually integrated into complex application landscapes via many technical interfaces, the development team must be able to understand the conceptual relationships across system boundaries. In addition, a project team with specialist knowledge of the area of application can cope more reliably with unclear requirements, as it can independently identify gaps or errors in the requirements and offer the stakeholders targeted solutions.

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

Software Engineers apply systematic, disciplined, quantifiable approaches to the development, operation, and …

A

… maintenance of software.

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

Please use the term “cone of uncertainty” to explain the economic uncertainty of software projects.

A

The earlier the total costs are estimated in a project, the higher the deviation from the actual effort at the end of the project. As the process progresses, an estimate of the total costs becomes more precise, but it is only at the end of the project that it is possible to precisely say how high the effort is. In contrast to production processes, in which the consumption of resources and the duration of the individual work steps can be calculated, a comparable precise forecast is usually not possible in software projects.

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

Explain technological uncertainty during a software development project for enterprise software systems.

A

At the beginning of a project, there is still a lot of freedom to decide which technologies to use. Technical decisions are made by the software architect on the basis of the current knowledge in order to support the requirements known at that point in time as well as possible. However, since requirements are only recognized in the course of the project, the interim results must be checked continuously. The technical solution can then be further adapted and expanded within the scope of all constraints. As a rule, the possible scope for decision-making with regard to the technical solution becomes smaller as the project progresses, until a concrete solution has been worked out at the end of the project.

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

Please explain problems caused by a lack of communication and coordination in a software project.

A

Various departments are usually involved in development projects for enterprise software systems, for example, marketing, sales, auditing, IT application development, IT operations, external consultants, the staff council, and the legal department. Each organizational unit has its own ideas and objectives regarding the software system. There may already be differences within individual departments. This diversity is often supplemented by areas of responsibility that are not clearly delimited and a lack of professional competence. A neglected communication management in such software projects quickly leads to different objectives, the failure to make or postpone important decisions, and the resolution of personal conflicts.

17
Q

Please describe a scenario that shows the challenges exposed by the conflicting goals between costs, deadlines, and quality.

A

If quality is very important in the context of a project, the quality assurance activities are at the expense of timely completion. If the focus is on project costs and all deadlines are met, then fewer resources remain for quality assurance. But if high quality is to be delivered on time, then the budget will not be able to be kept. This scenario is often referred to as the “magic trinagle”.

18
Q

Please name four reasons for the increasing complexity of software systems.

A
  • Availability of more powerful hardware
  • Availability of more expressive programming languages
  • Networking of computer systems
  • Expansion of transmission capacities
  • Mobilization of computer systems
  • Availability of more powerful development tools
19
Q

What does “analysis paralysis” mean and why does it pose a risk for software projects?

A

In software projects, attempts are often made to compensate for uncertainties by creating a plan that is as precise as possible, or a model that is as detailed as possible, of all possible outcomes. This means that either a project plan that is too detailed is drawn up, which is intended to predict for the entire project which activities are to be carried out by whom and with what effort. Or, the business requirements or the solution ideas of the software system are analyzed on a very detailed level. The danger of “analysis paralysis” is that many resources are tied up that are missing when implementing an initial software version. However, the analysis models that were elaborately created at the beginning often become obsolete due to newly gained knowledge during the implementation and presentation of the first software version.