Presentation on theme: "Advanced Software Engineering by Prof. Dr Jan Pajak"— Presentation transcript:
1Advanced Software Engineering by Prof. Dr Jan Pajak Topic ASE-5System-engineering based approach to Software Engineering
2SyllabusThis course deals with various software engineering areas such as object-oriented SE, system engineering-based SE, component-based SE, architecture-based SE, etc. The analysis covers various issues such as conceptual, methodological, technological, institutional and social issues. Attending students will be able to elevate their capability for trend estimation and total life-cycle engineering in SE field.
3Electronic copy of these notes pajak.6te.net then click ASE, orpajak.6te.net/ase_1_2007.htmorpajak.fateback.com then click ASE, orpajak.fateback.com/ase_1_2007.htm
4#1. Introduction:The system-engineering based approach to SE is a variation of software engineering which instead of concentrating solely on software, focuses on a variety of elements, analysing, designing, and organising those elements into a system that can be a product, a service, or a technology for the transformation of information or control. (See  page 122.)The system-engineering based SE attempt to bring order to the development of computer-based engineering systems.
5#2. Computer-based systems: In order to understand engineering systems, we need to understand in general what is “a system”. In our specialisation, the best understanding of idea of a “system” is to have a close look at computer-systems which we know. The term computer-system is usually defined as:A set or arrangement of elements that are organised to accomplish some predefined goal through processing information.Every computer system is composed of a variety of system elements. Let us recall some of these elements. They usually include:-Software. This usually includes computer programs, data structures, and other related constructs which assist in processing information and in controlling the entire system. -Hardware. This includes all electronic devices that provide computing capabilities, as well as interconnectivity devices and devices controlled by a given system.-People. Means, operators and users of given hardware and software.-Database. A large organized collection of information that is accesses via software and persists over time.-Documentation. Means descriptive information which allows to use a given system.-Procedures. These are steps that define specific use of each system element or the procedural context in which the system resides.Note that each element above can be subdivided further into several sub elements. For example, a vital part of computer software, is system-software. System software is any software whose primary purpose is to support the operation of the computing environment. It represents a contrast with application software, which is computer software developed to support a specific user requirement. System development software is any computer tool used to develop software, such as – but not limited to: compilers, debuggers, documentation tools, etc.All the above constitute a computer system. Such a system is capable to transform information. In turn this transformed information can be the motive force for the operation of different systems in which computer systems are just a component.
6#3. Terminology:The interesting characteristic of computer-based systems is that while they can be taken separately as a whole, they can also represent a single component for much larger systems. Examples of such enlarged systems, in which computer-systems are just a single component within an entire hierarchy of other systems, include: computer-controlled manufacturing systems, factory automation systems, robotic systems, traffic control systems, computerised health care systems, and many other.The problem with naming such enlarged computerised systems is, that while being themselves systems, they contain computer systems as one amongst numerous other their components. So in order to make naming them simpler, we are going to use here their popular name of “computerised systems”. In turn, the entire computer systems which constitute only one amongst the numerous components of these computerised systems, we are going to call simply “computers”.
7#3.1. The multi-fold meaning of the term “engineering”: The major problem with technical English terminology is that the same words in various contexts may have drastically different meanings. (This problem is non-existent in many other languages, e.g. in precise technical German, in which every meaning is described by a different word, or combination of words.) Thus we have here a situation, that two words “engineering” used in the title of this lecture, namely in “system-engineering based approach to Software Engineering” practically have two different meanings. Namely in the expression “system-engineering” this word is almost synonymous with the word “technical systems” or “technological systems”, while in the expression “Software Engineering” means almost the same as “software development”.Please notice that the term “engineering” in other contexts may also mean several other things. For example consider expressions “Genetic Engineering”, “Agro-Engineering”, “Planetary Engineering”, or “Science and Engineering”.
8#4. System-engineering based approach to software engineering: The system-engineering based approach to software engineering differs from classical software engineering. There are various sources of these differences, the major of them being:-Area of application. The software that we discuss here is applied in various areas of Engineering, in spite that it is run on computer systems and produced by people who are familiar with the discipline of Software Engineering.-Expertise they require. Entire computerised systems for which given engineering-based software is being produced, focus on highly specialised tasks that are to be accomplished. Thus they usually require a lot of highly specialised expertise from people involved in their development. Thus, the software produced for such enlarged systems almost always is requiring from the system engineer two different levels of expertise, namely the expertise in software engineering, as well as the expertise in specific specialised area. As an example consider programming robots, CAD/CAM, or programming machine tools with computerised control. To carry out programming in these areas, just expertise in SE or in programming is NOT enough. The system engineer who does such programs must also have a highly specialised knowledge of robots, CAD/CAM, or machining (manufacturing) systems that are just being programmed.The situation gets even much more complicated, when the engineered is specialised system software that controls such enlarged computerised systems (i.e. systems for which computer system is just a single component). Then such a system engineer must have even more advanced knowledge in at least two different disciplines, namely in SE, as well as in the specific system that is programming.The expertise demand for such computerised system software is usually satisfied by a new generation of university graduates who complete so-called “interdisciplinary studies”, a component of which is Engineering.
9#5/0. Kinds of software being engineered within the scope of the system-engineering based approach to software engineering:When in conventional software engineering we talk about e.g. development of “application software”, everyone knows what kind of software we have in mind. However, when we start to talk about system-engineering based software development, then actually there is a confusion. Most of programmers and software engineers do not know what kinds of software is involved there. So let us now describe major kinds of software being developed within the scope of the system-engineering based approach to software engineering.While reviewing the list of software that we are going to talk about, one needs to bear in mind that this software mutually differs drastically not only by function that it performs and by the way it operates, but also by the level of expertise that is demanded from people involved in the development of it. Let us provide some basic information on this subject:
10#5/1. Kinds of software being engineered within the scope of the system-engineering based approach to software engineering:-Engineering systems software. This one is simply system software for such newly created enlarged computerised systems. As an example of this area consider computer-controlled manufacturing, or robotics. The system-software area focuses on the development of system software for newly build such manufacturing systems or industrial robots. Examples include APT language (i.e. Automatic Programming Tools), CAD/CAM software (i.e. Computer-Assisted Design/Manufacturing), and many more.
11#5/2. Kinds of software being engineered within the scope of the system-engineering based approach to software engineering:-Control software (also called “control programs”). This one is an (application) control software for such enlarged computerised systems that already do exist and carry out specific tasks. For example, in computer-controlled manufacturing, or in robotics, this particular area focuses on the development of control software which is allowing the everyday use of already existing such systems. Examples include control programs that make industrial robots to perform specific sets of operations on specific machines (e.g. that make them to assemble chasses on cars, or feed numerically controlled machine tool with parts and tools, etc.).
12#5/3a. Kinds of software being engineered within the scope of the system-engineering based approach to software engineering:-Modelling software. This one constitutes an operational nucleus of every such enlarged computerised system. Every such a system contains at least a single numerical model expressed in a pre-programmed form. Some systems contain even several models (as an example consider a “cruise missile” which must have at least following models: topography and geography which it crosses, its own propulsion systems, satellite control, and self-defence management). This system model allows to predict the behaviour of a given aspect of the modelled system in various circumstances. Thus, by comparing the predicted behaviour with the real situation it allows to control a given system. For example, to control a robot, inside of it a model of reality must be pre-programmed. The preparation of such system models requires a completely different specialisation of system engineers.
13#5/3b. Kinds of software being engineered within the scope of the system-engineering based approach to software engineering:Note that there is a significant difference between so-called “numerical models”, and so-called “mathematical models”. Numerical models are simply values that describe a given object. Thus usually these are represented by a series of numbers (i.e. constants for liner equations that can be solved using computers). In turn mathematical models usually are sets of full equations expressed with symbols, which describe a given object (e.g. consider the Navier-Stock's equation describing flow of fluids, Laplace's equation describing heat transfer, or the Bernoulli Equation from hydromechanics – this one describes the so-called “dynamic pressure” that makes a ping-pong ball hover inside of a fountain stream, and also creates the gravity field as described by the recent theory of gravity).
14#5/4. Kinds of software being engineered within the scope of the system-engineering based approach to software engineering:-Simulation software. This one is designed to forecast the behaviour of a given system is specific circumstances.The reality is, that such enlarged computerised, systems in which computers are just components, gradually increase their presence in out everyday life. They are slowly overtaking the manufacturing, automated production, traffic control, health services, distribution management, and many other areas. Thus practically the demand for software developers in such system-engineering areas is rapidly growing. There a significant chance that a majority of our class actually will be employed in this area.
15#6. Engineering systems software: Before software can be engineered for such enlarged systems that include computers as one of their components, the entire system for which this software works must be understood. To accomplish this, the goal of the existence of a given system must be known and clearly defined, the role of each component of this system must be identified and described, and the operational requirements must be identified, analysed, specified, modelled, validated, and managed. All these activities are foundations of system engineering. ( p. 122 & 125.)If we would define system-engineering approach to SE, it is a collection of methods that allows a successful development of software for a given system.A system engineer starts the work from formulating system requirements through interaction with future system users, customers, reviewing operation of similar systems in existence, considering conditions in which a given system is to work, etc.Frequently a vital part of formulating system requirements is a system model.
16#7. Problem specific and device specific components of engineering systems software (i.e. processors and post-processors, versus application packages and drives):Many software packages for such enlarged computerised systems must generate control programs for a variety of different devices that perform the same functions. In order to explain this on the example of computer systems which are known to us in a best manner, for example word-processors (which can be compared to system software from such enlarged computerised systems) must print their documents on a variety of printers. In order to make this possible, the process of making printed documents with the use of word-processors is subdivided into two stages, namely problem-specific stage (i.e. defining the content and appearance of a given document), and device specific stage (i.e. making this document to be printed on a given printer). Thus every word-processor must use a number of different drivers which allow to print documents that it produces on a variety of printers.A similar situation is with the large computerised systems. They not only need to solve a specific kind of control problem, but also make a control program for a specific technical device which does the control. For this reason the system software for such computerised systems also is composed from two main parts, the first of which is problem specific, while the second one is device specific.In large industrial systems these two parts of software usually are called “processor” (problem specific) and “post processor” (device specific). Examples of systems which involve such processors and postprocessors are languages for programming computerised manufacturing systems, for example APT (i.e. Automatic Programming Tools developed in the USA), or NEL (developed in the National Engineering Laboratory, UK). The “processor” from these software systems always solves the control problem for an ideal machine which is described by a set of standards (e.g. by the so-called CLDATA standards), while the “post-processor” adopts this solution to a specific device on which a given control program is to work later.
17#8. Control software engineering: Control software development for specific enlarged systems that include computers significantly differs from the development of system software for these enlarged computerised systems. The difference is made by the focus of expertise demanded. In system engineering the expertise is focused more on the SE aspect of the development. In turn in the engineering of control software (also called “control programs”), the focus is on expertise concerning a given kind of enlarged systems for which the control software is just being developed. As an example consider making control programs for industrial robots, or for computer-controlled manufacturing systems. The person that develops such control programs for robots, or for numerically controlled machine tools, must know more about intricate details of the process that they are going to control, than about general principles and methods of Software Engineering. Actually a person who is trained just in Software Engineering would NOT be able to write such control programs because of the lack of highly specialised expertise involved in controlling specific systems.
18#9. System modelling:Modelling is a process of creating models. Because every computerised system contains at least one such a model, modelling is an extremely important activity in engineering systems.In system-engineering based approach to SE a variety of models is used. Thus there is also used a variety of modelling processes and techniques.From the point of view of kinds of models utilised in given modelling, most frequently used are following types of modelling (see  page 169):-Behavioural modelling (see  p. 173). It is used to describe the overall behaviour of a given system. Good examples are models used in flight simulators. Behavioural models are the most important ones, and also the most difficult to create. They are components of every control system.-Object modelling ( p. 181). This most frequently are used to describe an object. Examples include almost every object-oriented program. Furthermore, simplified object models can be used to illustrate the appearance or shapes of specific objects (e.g. see architecture models, or CAD – Computer Assisted Design models).-Context modelling ( p. 171). This one is to document the content of something. An example can be a model of a library system.Of course, there is much more variations of models, and thus also much more kinds of modelling. But the above list gives some indication as to what problem area is involved in modelling.
19#10. Examples of most known principles utilised in system modelling: Every modelling is based on some mathematical principles (model) and on some method that implements these principles in form of a computerised algorithm. Most of modelling principles and methods boil down to a set of equations that describe a given subject of modelling. The computerised modelling system that implements these principles and methods in the first stage of work generates a set of equations that describe a given object, and then solve these equations to determine variables (unknown quantities) that the model is to simulate.Here are examples of algorithms or methods which are well known from their suitability for the use in system modelling:-Finite Elements Method. The finite-element method was born because of demands of classical engineering to solve various problems that appear in materials and in structures being designed. It is a very old method, as first theoretical works on it were done in 1941 and The method depends on the discretization of a continuous objects into a set of discrete sub-objects which are mutually linked by various boundary conditions. Expressing this in other words, instead of considering e.g. a whole machine or a whole airplane, this method cuts this machine or airplane onto a number of smaller pieces (usually into squares or into cubes), and then considers how these pieces mutually interact with each other. (At boundaries of the object these pieces interact with so called „boundary conditions”.) In turn, the mutual interaction of these pieces allows later to simulate numerically the behaviour of the entire machine or airplane in pre-defined conditions.-Thermal Graph Method. This one is used for modelling thermal phenomena. It assumes that an entire object being modelled is simply a structure represented by appropriately designed graph (i.e. a mesh made of nodes and connections). This graph usually is computer generated. Means all nodes and connections of this graph are generated by a computer to represent the real object in a most optimal way that is possible. Boundary conditions are modelled in this method just as connections of specific branches of this graph.- PERT (i.e. Program Evaluation and Review Technique) and CERT (i.e. Critical Event Reviewing Tool). These are used for modelling of plans and implementations in large-scale endeavours (type building a dam or a highway, development of a new airplane or a rocket, etc.).
20#11. System models for behavioural modelling: In case of behavioural modelling, means in this one that in system engineering is utilised for control purposes, system models are allowing us to accomplish following goals ( p. 126):-Define the processes, thus provide vital information to the observer and controller of this process.-Represent the behaviour of a given process. Thus by comparison the representation of the behaviour with the real behaviour it is possible to determine the direction in which the real process is going to go.-Identify the input and output of a given process. Thus allow to fine tune or/and to control this process.-Understand linkages between a given process and the world outside of it. Thus allow to predict the impact that a given process is going to have at the outside world, or vice versa (i.e. outside stimuli on the process).Please notice that each of these goals is actually a foundation for designing a different practical application of a given system model.
21#12. Constraints of system models – means why engineering models sometimes do fail: As we have learned e.g. from the Chernobyl disaster on April 26, 1986, computerised models used in science and engineering sometimes do fail. The reason is that they are just models, thus not always they reflet reality with a required accuracy. The primary source of errors committed by these models are constraints which are in action at the time of creation of these models. Let us list here at lest the most vital out of such constraints ( p. 127):-Assumptions. These reduce the number of possible variations that are reflected by a given model. Thus sometimes these assumptions are making a model unrealistic. For example, the majority of computerised models for astronomical events do NOT take under consideration the changes of calendars in specific countries (e.g. England for the majority of the last millennium used a different calendar from the rest of the Europe – although the difference was usually just a day or a couple of days).-Simplifications. These are necessary to create models on time, within the budget, and in a predefined size. But they decrease the accuracy of modelling.-Limitations. E.g. too extensive models could NOT be processed on time by a given generation of computers, or may not fit into the computer memory.-Preferences. Designers of models may prefer to use in them specific principles, or data representation, etc. However, not always this preferences may turn the best for the model.-State of our knowledge. Models are based on the current state of our knowledge. But as we know this knowledge all time is incomplete and thus not all that is needed to construct given models is already known.
22#13. System simulation:The system simulation software is a computerised tool that displays an ability to predict a behaviour of a real-time system prior to the time that this behaviour appears in a real system. Therefore, such system simulation software allows to exert a control over real-time systems. ( p. 128.)Examples of system simulation software include the nucleus of so-called “auto-pilots” that fly airplanes, control software for manufacturing systems, control software for complex electronic systems, control software for petroleum industry (that simulates the operation of entire refineries), and many others.Simulation software systems are utilised in all circumstances when computer-based systems interact with the real world in a reactive fashion. In order words, these are used in situations when real-world events are monitored by the hardware and software of a given computer-based system, and when these real world events are then controlled by the computer-based system. The majority of real-time and embedded systems belong to this category of reactive systems.
23#14. Benefits stemming from the wide use of the system-engineering based software: The growing use of the system-engineering based software is a source of numerous benefits for our civilisation. Let us list here at least the most vital ones:-Automation (e.g. of production, traffic, operation, etc.). These systems release humans from the heavy labour, allowing them to concentrate on entertainment and on more pleasant creative work.-Better control over living and health conditions. Consider computer-controlled air-conditioners, or life-support systems in hospitals.-Mastery of complex technologies. Many technologies cannot be mastered without computerised systems. As an example consider modern petroleum industry.-Nanotechnology. These systems allow to master frontiers that were inaccessible before. For example to build machines which are smaller than ants (nanotechnology).-Space probes. These system can allow explorations of areas where is too danger or too inconvenient to send humans.-Internet and ubiquitous computing. It would NOT be possible without computerised systems (imagine how it would be done through the application of human operators).
24#15. Drawbacks of the increasingly wide use of the system-engineering based software: Unfortunately, the growing use of the system-engineering based software, is also a source of numerous drawbacks that affect our civilisation badly. Let us list here at least the most vital ones:-Militarisation. The use of these systems for military purposes allows to crate killing machines of the efficiency unknown previously in the human history.-Gradual erosion of human rights and increase in the “Big Brother” control. Computerised systems combined with recent surveillance technology and internet replacing traditional post, cause the increase in control that authorities exert over population, and erode human rights.-The increase in complexity of all objects. E.g. in old times grandpa could repair his own car, or his room heater. But present cars or air-conditioners need to be repaired by highly specialised services.-Large-scale failures and disasters. The more of large-scale facilities is under control of such computerised systems, the greater are disasters when such systems do fail. A best example of the harm that these systems can inflict is the Chernobyl disaster. Another example is the so-called “volcano of boiling mud” that was started in Sidoarjo, Indonesia in May 2006 because of an inadequate geological modelling of the area subjected to drilling.-Growing unemployment. The use of computers and automation means also the lesser need for human labour. This in turn means unemployment. There was a movement in England of 18th century, when workers kept destroying machines because these deprived them jobs and earnings. It may happen that one day a similar movement will raise against computers.-Deterioration of health of societies. Because these computerised systems gradually eliminate human physical labour, they are a factor that contributes to the recent change of human working and resting habits, and thus also human health (e.g. consider the name “generation of couch potatoes”).
25#16. Sample review questions concerning “engineering systems” and system-engineering based approach to SE:Here are examples of review questions which can be expected from this topic:ASE5-Q1: Explain what is the area of interests of the system-engineering based approach to SE.ASE5-Q2: Provide a definition of the computer-based system. Explain each component of such a system.ASE5-Q3: Explain in different (your own words) what means each term (word) from the expression “the system-engineering based approach to software engineering”.ASE5-Q4: Explain what so-called “interdisciplinary studies” have to do with the system-engineering based approach to software engineering.ASE5-Q5: List and explain the basic kinds of software that is develop within the scope of the system-engineering based approach to software engineering.ASE5-Q6: Explain what we understand by the term “engineering system software” in the system-engineering based approach to software engineering.ASE5-Q7: Explain what we understand by the terms “processor” and “post-processor” in software manufactured within the scope of the system-engineering based approach to software engineering (e.g. in the APT programming language – from Automatic Programming Tool).
26#16. Sample review questions concerning “engineering systems” and system-engineering based approach to SE (cont ...):ASE5-Q8: Explain what we understand by the term “control software” or “control programs” in the system-engineering based approach to software engineering.ASE5-Q9: Explain what we understand by the term “modelling software” in the system-engineering based approach to software engineering.ASE5-Q10: List and explain at least three widely known examples of principles or methods utilised in “modelling software” from the system-engineering based approach to software engineering.ASE5-Q11: Explain what system models do in the behavioural modelling created within the scope of the system-engineering based approach to software engineering.ASE5-Q12: Explain why computerised engineering models sometimes fail and bring various disasters.ASE5-Q13: Explain what we understand by the term “simulation software” in the system-engineering based approach to software engineering.ASE5-Q14: List and explain at least 5 main advantages that stem from the increasingly wide use of computerised engineering systems.ASE5-Q15: List and explain at least 5 main disadvantages that stem from the increasingly wide use of computerised engineering systems.