Ch. 2: Risks and Challenges of Enterprise Software Engineering Flashcards
Please name six aspects that contribute significantly to the complexity of enterprise software systems.
- 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.
Please name three typical properties/quality requirements of software systems.
Function suitability, reliability, fault tolerance, usability, performance efficiency, maintainability, portability.
Explain at least 4 properties/quality requirements of enterprise software systems
- 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.
Please explain the term software engineering.
Application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
How does software engineering differ from other engineering disciplines, such as architecture or electrical engineering?
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 do software systems differ significantly from other industrial products?
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.
What are the main risks for software projects?
- Project termination risks
- Software applicability risks
- Maintainance risks
Please name two possible risks for why a software project can fail.
- 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.
Please name two possible risks for delivering a software system that cannot be used.
- 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.
Please name two possible risks of the maintenance and evolution of software systems.
- 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.
Please explain why software development is a highly knowledge-driven process and what impact this has on a software project.
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.
Why can lack of expertise among software developers be a project risk?
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.
Software Engineers apply systematic, disciplined, quantifiable approaches to the development, operation, and …
… maintenance of software.
Please use the term “cone of uncertainty” to explain the economic uncertainty of software projects.
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.
Explain technological uncertainty during a software development project for enterprise software systems.
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.