










































Besser lernen dank der zahlreichen Ressourcen auf Docsity
Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo
Prüfungen vorbereiten
Besser lernen dank der zahlreichen Ressourcen auf Docsity
Download-Punkte bekommen.
Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo
This document contains all topics covered in the exam of Software Engineering Principles.
Art: Mitschriften
1 / 50
Diese Seite wird in der Vorschau nicht angezeigt
Lass dir nichts Wichtiges entgehen!











































Computer systems can also calculate ordinary numbers and store and display letters and other characters. There are defined mappings and standards for this (for ex. ASCII or UTF-8). To perform mathematical calculations, the numbers are first converted into the binary system in which they get calculated and then transferred back to the decimal system. The conversion is necessary because computer systems can only calculate with 0 and 1. 1.2 VON NEUMANN ARCHITECTURE The basic functionality of all current computer systems was introduced in 1945 by John Von Neumann. He developed the idea of storing the computer programs in a shared memory (the main memory) of the computer, together with the data being processed.This made re-programming computers possible, because the instructions for processing data could be easily changed. Almost every common computer system produced today follows the Von Neumann Architecture.
A distributed system consists of a server, a client, a communication network and an agreement on the structure of the messages to be sent. server - they are computers that make functions (also called services) accessible to other computers via a communication network. example:
The components for data transmission ensure that information is transferred physically over a certain distance. The components of the data exchanged ensure that the data are transported in a communication network using the optimal route from sender to recipient. message - computers exchange information using messages. the structure and content of the message are application-specific and usually defined by the server. A message is defined as logically related information that is sent by an application. the network interface of a computer must transform the message into a bit sequence, which is then split for transmission into smaller data packets with a predetermined length. Example – a typical data packet transmitted through the internet via a digital subscriber line (DSL) connection can transport 1452 bytes of user data; to send an image file with a size off 500 kilobytes from one computer to another , at least 353 data packets must be generated and sent over the communication network. CONCEPTUAL MODELS FOR COMMUNICATION The messages must be transformed into data packets before they leave a computer, this transformation takes place in several steps and the type of message and communication determine what happens in these steps. The internet protocol suite (TCP/IP) and the open systems interconnection (OSI) reference model describe network architectures that encode the messages in a cascade of different layers in packets that are suitable for the transmission channel. They also decode received packets to combine them into a message. *the OSI model has never been implemented fully in practice yet The functions used for coding and decoding in a layer are called protocol and each layer is responsible for a very specific aspect of the message exchange between computers. OSI reference model (7 layers)
The term “enterprise information systems” is used to refer to a commercially used software systems and their system context. Almost every medium and large organization depends on the use of information systems to achieve its goals, some of them depend on IT support. (ex. Banks). We distinguish 4 different kinds of information systems:
Functional suitability – software should match its intended specification (it is supposed to do exactly what was stated in the specification). One important aspect of functional suitability is interoperability (a software is interoperable if it can be merged easily with other systems). Reliability – the software is available and the user can use it in the context of their business activities. It is relevant depending on how critical the application of the software is and the height of the potential damage due to failure. Fault tolerance – 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(user experience), it often determines the success or failure of systems. Performance efficiency – how the system complies with requirements such as response time and resource consumption (typically in distributed systems where large number of users work at the same time). Maintainability – the ability of software to be changed in an economically viable way, it depends heavily on the internal structure of the software and its documentation. Maintainability decreases with increasing service life so it makes more sense to replace it with a new one. An important aspect is reusability, it describes the probability of a software or parts of it to be reused in a different context. Portability – it results from the effort required to make software executable on a different platform compared to the new development effort for software. It is relevant for applications that are intended for the end user and therefore must work on as many devices and operating systems as possible. 2.2 SOFTWARE ENGINEERING The term software engineering describes the structured and methodical planning, creation and evolution of software system, as well as their operation. It is defined as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. It Is a young discipline: each day software systems become more complex and powerful. Software systems are immaterial so their size and diversity are not limited by natural or physical law, there are almost no natural restrictions (gravity, friction, resistance). The power of software systems is strongly limited by the ability to develop abstract, logical structures as well as the communication abilities of people involved in the sof6ware project. Many recognized principles and methods of software engineering are therefore based on experience and knowledge in the development of complex information systems. A core principle of software engineering is the division of the software project int different activities and the distribution of members of the software team into distinct roles, another core principle is the use of patterns, the use of organizational structures that have proven themselves in several projects. Software engineering research is concerned with the evolution of existing methods and tools, as well as with the development and evaluation of new methods. 2.3 RISKS AND TYPICAL PROBLEMS The complexity of the system, with the immateriality of the system and expectations of the client and user leads to a number of typical risks.
Another typical cause of failed projects is the lack of communication and coordination among its participants. In development projects there are different departments involved, each with its own ideas and objectives. 2.5 CHALLENGES IN SOFTWARE ENGINEERING ECONOMIC UNCERTAINTY 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 determine the level of effort. TECHNOLOGICAL UNCERTAINTY A technological vision can be created at the beginning but the actual technical solution can only be precisely determined at the end of a project. 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. Since requirements are only recognized in the course of a project , the interim results must be checked continuously. Th e technical solution can then be adapted and expanded. 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.
The inclusion of various stakeholders represents an important challenge for enterprise software projects. New findings and changes to plan must be communicated to all relevant stakeholders in a manner that they can understand and they must be actively involved in making decisions and in quality assurance of artifacts generated in the software process. CONFLICTING GOALS Customer satisfaction is the top priority, but decisions within software projects also range between quality, time and costs. If quality is very important to a project, quality assurance activities are at the expense of timely completion and budget. If the focus is on project costs and all deadlines are met , then fewer resources remain for quality assurance. But if it is also to be delivered on time, the budget will not be kept.
It’s the initial phase: here all activities that are carried out before the start of software development activities can be determined. This phase is initiated by IT management who make the decisions relevant to the structure of the project: determination of requirements, financial planning, procurement, determination of conditions for all further phases. DETERMINATION OF NEEDS The reason for introducing a software system is the realization that there is a need for a system. The reasons for needing a system are diverse, typical occasions include: replacement of existing legacy systems – software systems evolve, they are usually revised to correct errors, but maintenance costs are very high, so most of the times it makes more sense to replace the existing system with a new one; in addition, the know-how for the maintenance of the existing system is often unavailable. business demands – enterprise software systems play a key role in value-adding processes. Companies develop competitive advantages, using highly specialized software systems, that’s why corporate It must react quickly to new business requirements and support the business departments with suitable systems in a targeted manner. If business requirements cannot be covered by existing software system, new systems must be provided. Technological evolution – technological evolution enables new fields of application and business that must be supported by appropriate IT solutions, therefore, changing technical constraints also lead to a need for software systems. MAKE OR BUY DECISION After the need has been identified, these questions must be answered:
Requirements engineering is when business requirements are further detailed and refined. After the business requirements have been determined, the required properties of the system in development are documented by a specification. SOFTWARE ARCHITECTURE AND IMPLEMENTATION The software architecture is determined based on the specification. For this purpose, the needs of the stakeholders are analyzed and weighed against each other, and the architecture definition is developed through several decisions and design activities. The program code of the system is implemented according to these specifications and the system is created accordingly. QUALITY ASSURANCE All artifacts generated during creation are checked to determine whether they meet specified requirements. However, the system can only be tested completely after implementation and integration has been finished (the program code is tested in different stages, depending on the status of the project). IT organizations have their own departments that are responsible for creating software. After the software has been implemented and tested, it is handed over to the departments responsible for operating the system 3.4 OPERATION The software system must be deployed in the operational environment and integrated into the exist8ing application landscape. The security and availability of the system must be guaranteed so that all users can work productively with the system as expected. OPERATIONAL ENVIRONMENT PROVISIONING In the operation phase work on the program is stopped and the system is used actively by its users. This means that the security risk also increases: the more people that have access to the system , the greater the risk of system, attacks or fraud. In addition, no data should be lost in the event of a hardware failure or the occurrence of a software error, and at the same time, the system should be able to cope with load peaks if necessary, but should only use as many resources as it truly needs when operating under normal requirements. The aim in operation is to ensure the application’s quality requirements, such as security, availability, and scalability. This means that the department responsible for operation must provide the appropriate infrastructure. During operation, long-term stability must be ensured, this results in a conflict between development and operation because development aims to quickly add functions to software systems. On the other hand, there must be a quick reaction to business requirements, but on the other the system should run reliably and safely. INTEGRATION After development, enterprise software systems must be deployed in the operational environment. In addition to being installed in that environment, the system must be integrated into the application landscape, which means that it must be connected to an existing system using the technical interfaces provided by the developers. The new system is only connected to other systems in the operational environment after all tests have been completed, so that real data in operational system are not accidentally changed during development.
Since systems within an application landscape are connected to one another via technical interfaces, all dependencies of the application beings switched off must be identified and resolved. Every actively used technical interface of the old system must be covered with a new or an alternative existing one. In the case of very old systems the extraction is very critical: technical dependencies must be identified and the system behaviour at the interfaces must be reproduced in the event of a system replacement. The basis for this is usually the documentation , however, id the documentation is outdated and incomplete, dependencies can only be identified with reverse engineering or testing the system context while the legacy system is detached. If there is no documentation the program code must be analyzed and the behaviour of the new system must be specified with the results: this requires expert knowledge of the technologies used in the legacy system and unfortunately there is a high chance that those knowledgeable have already left the company. DATA MIGRATION If data are stored in the legacy system, they might be migrated as part of the shutdown, which means that the data in the old system must be transferred to another system for further use. One challenge when migrating data is finding an appropriate mapping of the old data schema to the new data schema, another one is the amount of data to be transferred: even when transferring millions of contract data there must be no mistake(sometimes it’s more economical to dissolve the old contracts or to ha customers switch to a new one). CONTRACT TERMINATION In order to operate a software system, an appropriate operational environment must be provided an maintained. The infrastructure must be analyzed to determine whether term-based licenses and usage rights have been acquired. Corresponding contracts must be terminated, or they might not be automatically extended. Maintenance contracts with external service providers must also be taken into account. RETRAINING IT management must also ensure that employees responsible for the operation and maintenance of legacy applications find other tasks. Programs for retraining employees must be designed and implemented in advance.
The necessary functions and properties are called requirements. The activities for determination, documentation, negotiation, and administration are summarized under the term “requirements engineering”. According to the CPRE (Certified professional for Requirements Engineering) Glossary, requirements engineering has the following goals:
Determined business requirements are expanded and refined in the specification to include technical requirements. The result is a business-technical specification, based on which, the system design is created and the system is implemented. Test cases are also created based on the specification for the various test levels, in which the software system is tested for compliance with the requirements. Because the specification is both the basis for realizing the system (design and implementation) and the basis for the formulation of various test cases, misunderstandings of or errors in the specification have far-reaching effects on the entire project. To specify the technical requirements as clearly and measurably as possible, there are many means of representation in software engineering (e.g., software models or notations). From a technical point of view, the specification of a system provides the technically detailed framework for design decisions. A specification does not decide how the system must be constructed internally, but only describes the externally visible system properties. From the point of view of the specification, the system is a black box of which the internal structure is unknown. SPECIFICATION ELEMENTS A specification makes statements about what a system must be able to do. It describes the externally visible functional behavior of a system. Elements for specifying the functional behavior and properties of a system are:
Quality requirements and constraints in the specification are refined on a technical level and they are made verifiable, for example, through measurable metrics. The system must comply with technical and organizational constraints, such as guidelines, standards, laws, and style guides. SPECIFICATION OF GRAPHICAL USER INTERFACES (GUI) User interface specifications define specific requirements for the following aspects:
The specification of the structure and the behavior of the system can be divided into four steps: