1 Student Project Thesis How to specify a Simulation Configuration with the help of Modern Requirement Analysis in a Re-Engineering Process by Carsten Schmitt 28th Feb. 2005 2 ABSTRACT The topic of this student research project is specification and design of an abstract configuration mechanism for the ComNets Simulation Framework which is part of the WINNER-Project. The project aim is to be fulfilled by using modern software development methodologies like the process of requirement management and UML. Possible solutions will be discussed and compared. KURZFASSUNG Das Thema dieser Studienarbeit ist die Spezifikation und das Design eines abstrakten Konfigurationsmechanismus für das ComNets Simulation Framework. Dieses Projekt ist ein Teilprojekt des WINNER-Projekts. Das Ziel dieser Studienarbeit soll unter Verwendung moderner Methoden der Softwareentwicklung wie der UML und dem verwalten von Anforderungen erreicht werden. Mögliche Lösungen werden diskutiert und miteinander verglichen. CONTENTS Abstract 3 Kurzfassung 4 1 Introduction 1.1 Introduction into Methodologies . . . . . . . . . . . . . . . . . . . . 1.1.1 Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3 The Rational Unified Process - A Reference Process Model 1.2 Introduction into the Analysis Object . . . . . . . . . . . . . . . . 1.2.1 Short Description of ComNets . . . . . . . . . . . . . . . . . 1.2.2 The ComNets Simulation Framework . . . . . . . . . . . . . 1.2.3 Problems which Motivate this Student Project Thesis . . . 1.2.4 Aim of this Student Project Thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . 7 . 7 . 7 . 8 . 9 . 9 . 9 . 10 . 10 2 Requirement Management 2.1 Requirement Management Overview . . . . . . . . . . . . . . . . . . . 2.1.1 The Problem Domain . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 The Solution Domain . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.1 Feature of the System . . . . . . . . . . . . . . . . . . 2.1.2.2 Software Requirements . . . . . . . . . . . . . . . . . 2.1.3 Justification of the Requirement Management Approach . . . . 2.2 Problem Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 The 5 Steps of Problem Analysis . . . . . . . . . . . . . . . . . Gain Agreement on the Problem Definition . . . . . . . Identifying the Root Causes . . . . . . . . . . . . . . . . Identify the Stakeholders and the Users . . . . . . . . . . Define the Solution System Boundary . . . . . . . . . . . Identify the Constraints to be Imposed on the Solution . 2.2.1.1 User Interview . . . . . . . . . . . . . . . . . . . . . . 2.2.1.2 Results of the Interview . . . . . . . . . . . . . . . . . User needs . . . . . . . . . . . . . . . . . . . . . . . . . . Developer needs . . . . . . . . . . . . . . . . . . . . . . . 2.3 Solution Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1.1 From Stakeholder Needs to Features . . . . . . . . . . User Features . . . . . . . . . . . . . . . . . . . . . . . . Developer Features . . . . . . . . . . . . . . . . . . . . . 2.3.1.2 Feature Prioritization . . . . . . . . . . . . . . . . . . 2.3.2 Software Requirements . . . . . . . . . . . . . . . . . . . . . . . 2.3.2.1 A Further Characterization of Software Requirements 2.3.2.2 Functional Software Requirements and Use Cases . . . Definition of the Term Use Case . . . . . . . . . . . . . . Purpose of Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 14 14 14 14 14 16 16 16 16 18 19 20 20 21 21 21 22 22 22 23 23 23 24 25 25 26 27 6 Contents Use Cases for the ComNets Simulation Framework ration System . . . . . . . . . . . . . . 2.3.2.3 Non-Functional Software Requirements . . . . . 2.3.2.4 Design Constraints . . . . . . . . . . . . . . . . . Configu. . . . . . 28 . . . . . . 32 . . . . . . 32 3 Designing the Right System 3.1 Analysis of the actual Configuration Mechanism . . . . . . . . . . . . . . . . 3.2 Making a New Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Introduction to Collaborations . . . . . . . . . . . . . . . . . . . . . 3.2.1.1 Structural and Behavioral Aspects of Collaborations . . . . 3.2.1.2 Using Collaborations to Realize Sets of Individual Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Usage of Collaborations on the Configuration Problem . . . . . . . . 33 33 33 33 33 4 Presentation of a Potential Implementation 4.1 XML as a Possible Implementation . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Introduction to the Extensible Markup Language (XML) . . . . . . . 4.1.1.1 A Word on XML Schemas (XSD) . . . . . . . . . . . . . . 4.1.2 Conceptual Mapping from UML to XML . . . . . . . . . . . . . . . . 4.1.3 Type Based Example Configuration for ComNets Simulation Framework in XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.4 Implementation of a Prototype . . . . . . . . . . . . . . . . . . . . . 4.1.5 Review and Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 39 39 41 List of Figures 47 List of Tables 49 Glossary 51 List of Abbreviations 53 Bibliography 55 34 34 41 44 45 CHAPTER 1 Introduction 1.1 1.1.1 Introduction into Methodologies Abstract A big part of the ComNets activities in the WINNER-Project is to build up a simulation environment capable to fulfill a lot of very different simulation needs in the WINNERProject. One essential constraint is to reuse already existing software modules. Because every module has its own history and developing methodology a common abstraction level for describing these modules is missing. This must be realized in a re-engineering process. This student project thesis is concerned with the aspect of configuration simulations. The necessary steps to achieve an abstract configuration mechanism will be motivated an related to modern methodologies. 1.1.2 Preliminaries The development of complex software involves a lot of persons with quite different expertise and interests. Models are the means to represent what should be developed. In order to prevent misunderstandings the representation form of models must be unique for every stake holders in a project. Process models like the RUP (Rational Unified Process) define phases of the development process and related abstraction levels a representation forms. All phases cover the whole path from the problem specification to the software solution. The application of such a process model ensures that the system under development has valid representations and allows checks that the correct system will correctly developed. Re-engineering is the inverse development process. It starts from existing software (code) and aims to acquire the knowledge about the existing software. This should help to make correct decisions for the ongoing in a project. Therefore the knowledge must be represented uniquely and correctly for every stake holder. The UML (Unified Modeling Language) has the potential to support these aims. However, it incorporates object oriented thinking. Like a poet, who uses well chosen terms to express the spirit of a situation, an UMLModeler differentiates situations with the help of classes and relations between classes to express the essential ideas or concepts of the aspect actually to be modeled. The modeler of system visions is confronted with the fundamental problem that new semantics must be associated to terms preloaded with legacy semantics. For example, the term simulation configuration has a meaning which is well defined with respect to every module. In the context of the extended simulation environment this term has a new meaning. In order to express the differences one needs terms which specify the difference. But these terms itself are loaded with legacy meaning. Because this is not really a simple problem it is as specification dilemma characterized. 8 1. Introduction 1.1.3 The Rational Unified Process - A Reference Process Model According to [1] processes are used because people are uncertain. They are uncertain that • • • • • • the project will produce the wrong result. the project will produce a result of inferior quality. the project will be late. they will have to work 80 hour weeks to meet deadlines. they will have to break commitments. they will not be having a good working atmosphere. These fears motivate to describe a process which constrains the activities and demands certain outputs without destroying creativity. People draw these constraints and outputs from past experience, choosing things that appear to work well in previous projects. The hope is that these processes will work again and again, and take their uncertainness away. Over the years, they have come to recognize that many successful processes, though they differ in their particulars, seem to have a common shape. It provides a framework within which to build a process that may put their fears to rest. That framework is called the Rational Unified Process (RUP). Figure 1.1 visualizes the different phases of the RUP. Figure 1.1: The Phases and Iteration of RUP Figure 1.2 classifies the Rational Unified Process into three different levels of abstraction. The highest level of abstraction is the Meta Meta Layer which contains Theory and Standards. This layer provides different application views which depend on the current situation. 1.2. Introduction into the Analysis Object 9 Figure 1.2: The Phases and Iteration of RUP with its superior meta layers The second layer - the Meta Layer - is the Modelling Layer. This layer contains the different methods which might be used. This depends on the current application view which has been chosen in the upper layer. For example the Use Case Approach might be used in a functional view. The lowest level of abstraction is the Object Layer. This layer is divided into several sub layers which describe the different actions inside of the Rational Unified Process, itself. 1.2 1.2.1 Introduction into the Analysis Object Short Description of ComNets ComNets, a chair of Aachen University, is one of the largest university departments in Germany working on Mobile Communications. Research projects are mainly funded by third parties like national and European boards and communication industries. The main field of research is traffic performance analysis which consists of event driven stochastic simulation based on emulated protocol stacks and traffic theory. 1.2.2 The ComNets Simulation Framework The application of the ComNets Simulation Framework is an embedded process in traffic performance analysis of mobile radio networks. This process is realized by application software, tools and documentation. For example a scenario might consist of four symmetrically placed tower blocks. Each of these tower blocks might hold a base station. Moreover, each mobile station in the system owns a movement model which describes the movement behaviour (e.g. placing a call in a driving car). In addition each station owns a load model which describes the network traffic (e.g. ftp and http load). Beside, the protocol stack of 10 1. Introduction each station can be assembled individually. Figure 1.3: Closed Loop of Finding the Ideal Solution Figure 1.3 visualizes the closed loop of finding the ideal solution to a given problem. This is iterative process is a common approach - simulate, spectate and modify. 1.2.3 Problems which Motivate this Student Project Thesis Complex systems often need complex configurations. The simulation framework consists of more than one complex subsystems. Every subsystem has its own configuration file with a size up to 400 kByte, and there is no superior configuration file which contains global settings like the number of mobile stations to be simulated. Additionally, these huge configuration files depend on each other. This often leads to inconsistent configuration files which produces unforseenable program errors or results. Another problem is the different implementation of object containers in the different modules. This produced a mapping workaround which might be another source of errors. Moreover, it is quite copious to perform simulation series. Up to now it is necessary to make twenty copies of all configuration files to perform twenty simulations. Then the parameters inside the huge configuration files have to be modified manually. All these problems are surely controllable by developers itself. But the project will go open source in near future and then these circumstances become unacceptable. These problems motivate the this student project thesis. 1.2.4 Aim of this Student Project Thesis One core point of this student project thesis is to determine the requirements of a possible solution for the configuration problem. Another point is to propose possible solutions based on the resulting requirements. 1.2. Introduction into the Analysis Object 11 In this student thesis the used methods are shortly described. Then the described methods are adopted to the specific problem. The reader of this document should learn something about the method itself and then see the concrete usage of the method on the problem. The used process is described in the book [2]. 12 1. Introduction CHAPTER 2 Requirement Management 2.1 Requirement Management Overview A general problem is the communication between a customer and a project team. These two parties live in two different worlds and speak two different languages. This makes it quite hard for the project team to build the system which does what his buyer wants it to do. This is where Requirement Management comes into the play. According to [2] Requirement Management is a systematic approach to eliciting, organizing, and documenting the requirements of the system, and a process that establishes and maintains agreement between the customer and the project team on the changing requirements of the system. This definition sounds as if this process solves all problems. In the following the different steps of this process will be explained and then used to solve the Configuration Problem of the ComNets Simulation Framework. The following section gives a short overview about the Requirement Management Process Figure 2.1: Overview of the problem domain and the solution domain. 14 2. Requirement Management 2.1.1 The Problem Domain The problem domain is the space a customer normally moves in. He has a problem and wants it to be solved. The problem is that the customer is often unable to decide between a problem and a possible solution. So the project team needs some time to understand the problem behind the problem and to identify the root cause. Just after the problem is understood,the project team is able to specify the customer’s real needs - the stakeholder needs. This is not the time to spend much time on thinking about how to solve the problems or how to meet the needs! This will be part of the next section - the solution domain. 2.1.2 The Solution Domain Defining a solution for the user’s problem is the focus of this section. It is divided into two parts: Defining the features of the system and finding the adequate software requirements. 2.1.2.1 Feature of the System This section proposes solutions the the specified problems on a high level of abstraction. These features are simple descriptions in the user’s language. Simple features might be: • The car will have two independent breaking systems • The program will allow automatic backups • An automatic step-and-repeat weld cycle is required To increase understandability and lower ambiguity it is important to provide an exact definition of the feature term: A feature is a service provided by the system that fulfills one or more stakeholder needs. Graphically, the feature is represented as a base for the previous needs pyramid in figure 2.1. 2.1.2.2 Software Requirements When all features are specified the Software Requirements can be specified. If the project team builds a system that conforms to those requirements one can be sure that the system will deliver the features the customer requested. There are an amount of methods which might be used to come from the given features to the software requirements. One of those methods is the Use Case Approach which will be explained later on in this document. 2.1.3 Justification of the Requirement Management Approach According to [2] requirements errors cause high costs. The following figure comes from studies performed at companies including GTE, TRW, IBM and HP. Figure 2.2 illustrates, that if a unit cost of one is assigned to the effort required to detect and repair an error during the coding stage, then the cost to detect and repair and error during the requirements stage is between five to ten times less. Furthermore, the cost to detect and repair an error during the maintenance stage is twenty times more. The factors in figure 2.2 reach from 0.1 to 20. The factor one of the coding level expresses the effort of repairing requirements errors to the programmer. This is because nearly every developer has a rough idea of coding and its effort. For example the effort of fixing a design error which was realized during the Acceptance Test Phase is multiplied by 10 (0.5 multiplied by 10 is 5). The ComNets Simulation Framework is currently located between the Coding- and Unit Test Phase. 2.1. Requirement Management Overview To sum up and bring it to the point: 1. Requirements errors are likely to be the most common class of error. 2. Requirements errors are likely to be the most expensive errors to fix. Figure 2.2: Relative cost to repair a defect at different life cycle phases. 15 16 2. Requirement Management 2.2 2.2.1 Problem Domain The 5 Steps of Problem Analysis According to [2] problem analysis can be defined as the process of understanding real-world problems and user needs and proposing solutions to meet those needs. Moreover a definition of the problem term is necessary: A problem can be defined as the difference between things as perceived and things as desired. The goal of problem analysis is to gain a better understanding of the problem being solved before development begins. Reference [2] propose a 5 step approach: 1. 2. 3. 4. 5. Gain agreement on the problem definition. Understand the root causes - the problem behind the problem. Identify the stakeholders and the users. Define the solution system boundary. Identify the constraints to be imposed on the solution. According to this method problems will be written down in tables like 2.1 to gain agreement on the problem. Table 2.1: Problem Statement Format Element The problem of... Affects... And results in... Benefits of a solution... Description Describe the problem Identify stakeholders affected by the problem Describe the impact of this problem on stakeholders and business activities Indicate the proposed solution and list a few key benefits Gain Agreement on the Problem Definition To get a first idea of the fundamental problems and possible solutions, a first conversation with the product manager took place. This meeting highlighted the following problems: • The problem of redundancy when configuring a simulation • The problem of huge configuration files • The problem of entity-mapping between different layers The identified problems will be explained in the following: Identifying the Root Causes Now is the time to identify the root causes. This means to identify the problem behind the problem (if any). To do so the method in [2] is used - Fishbone Diagrams: This lead to the following conclusion: The two main problems of redundancy and huge configuration files exist because no smart configuration mechanism exists. This is illustrated by figure 2.3 and figure 2.4. The reason lays in the rather low priority of such a 2.2. Problem Domain 17 Table 2.2: Problem 1: Specification of configuration redundancy problem Element The problem of... Affects... And results in... Benefits of a solution... Description Redundancy when configuring a simulation. User, Developer Up to now there is a configuration file for every subsystem. To perform a simulation with more than one subsystem the different configurations must match in some points. For example the count of simulated mobiles must be equal in every configuration file. This is a big source for wrong configurations which are unacceptable for an average user. This makes high level expertise in configuration necessary. Ignoring this problem would make the whole project fail. There might be a hierarchy in the configuration. For example some files might contain the scenario information and other files just contain the technical parameters which are necessary for the component itself. Table 2.3: Problem 2: The problem of huge configuration files Element The problem of... Affects... And results in... Benefits of a solution... Description The configuration files are huge and complex. User, Developer An average user would hardly get an overview about what to configure and what not. This makes high level expertise in configuration necessary. Ignoring this problem might cause the whole project to fail. This problem might be exterminate by introducing a type concept which provides different hierarchies of configuration. Moreover it makes sense to preallocate parameters with default values. So it would be possible to perform a simulation within 10-20 lines of configuration code. mechanism. Another root cause for the huge configuration files is the high complexity of the specific modules. This complexity will rather increase than decrease what is another argument for a new configuration mechanism. A new configuration mechanism would solve the problems of redundancy and huge configuration files because of a possible separation between global and local parameters. Anyway, the integration of this new solution into the old system would take some time. Figure 2.5 shows possible root causes for the existing entity-mapping problem. Every developer created his own mechanism when it was needed. This might happened because of a lack of project management. Resolving upon an agreement would have avoided these problems. This problem might be solved with a new configuration mechanism, too. Primary the previous argumentation justifies the development of a new configuration mechanism. 18 2. Requirement Management Table 2.4: Problem 3: The problem of entity-address-mapping between different layers Element The problem of... Affects... And results in... Benefits of a solution... Description Entity-address-mapping between different layers exists because every developer decided to use different IDs and allocation orders for the entities in his subsystem. Developer Dirty workarounds and bugs are probable. There might be an agreement on the ID form and the allocation orders. This problem might be solved by solving the redundancy problem (Problem 2). Figure 2.3: Fishbone diagram 1 demonstrates the root causes of the redundancy problem Identify the Stakeholders and the Users According to [2] a stakeholder is anyone who could be materially affected by the implementation of a new system or application. Understanding the needs of the users and other stakeholders is a key factor in developing an effective solution. Complex problems typically involve a diverse group of stakeholders. An understanding of who these stakeholders are can be obtained by asking the following question: Figure 2.4: Fishbone diagram 2 visualizes the problem of huge configuration files 2.2. Problem Domain 19 Figure 2.5: Fishbone diagram 3 illustrates why the entity-mapping problem exists • • • • • Who are the users of the system? Who is the customer (economic buyer) for the system? Who else will be affected by the outputs the system produces? Who will evaluate and approve the system when it is delivered and deployed? Are there any other internal or external users of the system whose needs must be addressed? • Who will maintain the new system? • Is there anyone else who cares? Define the Solution System Boundary Now is the time to define the solution system boundary. To do so it is necessary to answer at least the following questions: • • • • • • Who will supply, use, or remove information from the system? Who will operate the system? Where will the system be used? Where does the system get its information? Who will perform any system maintenance? What other external systems will interact with the system? Figure 2.6 shows the boundaries from system perspective. The black line distinguishes the system from its environment. It also illustrates, that a part from the New Simulation Framework Configuration System is included into the existing ComNets Simulation Framework. Moreover there are two different stakeholder types: User and Developer. Figure 2.6: System perspective 20 2. Requirement Management Identify the Constraints to be Imposed on the Solution According to [2] a constraint is a restriction on the degree of freedom a product team has in providing a solution. The only constraints which exist regarding to this project are: • The use of C++ to provide a solution • No commercial software can be part of the result 2.2.1.1 User Interview The interview method will help to gather information from different stakeholders. Based on the interviewing results the stakeholder needs will be identified. Reference [2] provides a generic interview template which was modified to its purpose: 1. Part 1: Establish User Profile • What are your key responsibilities ? • Where in the whole framework is your subsystem is located ? 2. Part 2: Assessing the Problem • What are the basic problems according to the configuration ? – Why does this problem exist ? – How do you solve it now ? – How would you like to solve it ? 3. Part 3: Understanding the User Profile • Where / to which subsystems are the basic dependencies ? • Who are the users of the module ? • What are your expectations for usability of this module ? 4. Part 4: Recap for Understanding • List customer-described problems in your own words 5. Part 5: Assessing Your Solution • What if you could: – Perform a simulation within 10-20 lines of code ? – Simply change default settings ? – Extend the configuration model ? 6. Part 6: Other requirements • Are there any standards that must be supported ? • Can you think of any other requirement we should think about ? 7. Part 7: Wrap-up • Would you be willing to participate in a requirements review ? 8. Part 8: The Analyst’s Summary • The three highest-priority needs/problems are: – 1. 2.2. Problem Domain 21 – 2. – 3. 2.2.1.2 Results of the Interview The interview provides a list with stakeholder needs which is listed below. The different stakeholder needs are assigned to the different stakeholders: User needs • Simple, self-explanatory and intuitive configuration concept • Simple performing of simulation series • Simulation parameters and simulation results must be allocatable Developer needs • Simple integration into existing system • Simple extensibility of the whole configuration mechanism when there are new parameters 22 2.3 2. Requirement Management Solution Domain In this section we have to define a solution for the users problem. This we call features a feature is a service provided by the system that fulfills one or more stakeholder needs. Features answer the question What to do in a solution - not How!) 2.3.1 Features Features are high-level expressions of desired system behaviour. Features can be in conflict with each other - this make a prioritization of features necessary. The previous definition of a feature ensures that these features can’t be to far removed from their needs. These features provide a useful and convenient way to describe the functionality of a new system without getting bogged down in too much detail. It is important to notice that features address the issue of what the customer thinks the system must do to address his needs thus how - while needs express exactly what the customer needs. Figure 2.7 visualizes the transformation form Needs to Feature. Figure 2.7: Needs and features are closely related 2.3.1.1 From Stakeholder Needs to Features Going back to the concrete configuration problem, the collected stakeholder needs will be traced to features. These features are listed below. Figure 2.8 visualizes this process. The matrix columns contain the different stakeholder needs while the rows hold the defined features. The arrows show which need is fulfilled by which features. This figure was generated using [4]. 2.3. Solution Domain 23 User Features • • • • • • Simple, redundancy-free administration of existing configuration Configuration must be human readable with a simple text editor Assign comments to parameters for documentation purpose Automation of the whole simulation process (to perform simulation series) Configuration files must support parameter variation Simulation parameters and results must be place together Developer Features • New mechanism is compatible to old INI-file format • New configuration mechanism implements old interface • No modification of the configuration mechanism is required when new parameters arise • Simple to extend configuration model when new parameters arise Figure 2.8: This is a screenshot from a traceability matrix in Rational RequisitePro 2.3.1.2 Feature Prioritization Figure 2.9 visualizes the used questionnaire for feature prioritization. It was given to several potential users and developers. The results of the survey is shown in figure 2.10. Diagram 2.10 shows, the three most wanted features. 1. Simple, redundancy-free administration of existing configuration 24 2. Requirement Management 2. Simple to extend configuration model when new parameters arise 3. No modification of the configuration mechanism itself is required when new parameters arise This leads to the conclusion that it is more important to create a configuration mechanism which allows simple and intuitive configuration than a mechanism which implements old interfaces or formats. The result of this survey justifies a new, clean approach which does not directly depend on the existing mechanism. Of course this approach would increase the integration work according to the ComNets Simulation Framework. Figure 2.9: This is a screenshot of the used questionnaire for the feature prioritization Figure 2.10: This figure shows the results of the feature survey 2.3.2 Software Requirements The software requirements become interesting when the feature set is established. Software requirements are the more specific requirements which are necessary to impose on the solution. 2.3. Solution Domain 2.3.2.1 25 A Further Characterization of Software Requirements To become a little more flexible, it is necessary to differ between software requirements. This will help to understand more about the system to be built. Figure 2.11 visualizes the different types. Figure 2.11: There are three different types of requirements 1. Functional software requirements Functional requirements express how the system behaves - its inputs, its outputs, and the functions it provides to its users. These requirements can usually be captured with use cases. 2. Nonfunctional software requirements The functional software requirements do not describe the system completely. There are still some system properties which have nothing to do with functionality itself. These requirements are called nonfunctional software requirements. Examples for nonfunctional software requirements are: • • • • Performance Supportability Reliability Usability 3. Design constraints Design constraints typically impose limits on the design of the system. According to [2] design constrains are restrictions on the design of a system, or the process by which a system is developed, that do not affect the external behaviour of the system but that must be fulfilled to meet technical, business, or contractual obligations. 2.3.2.2 Functional Software Requirements and Use Cases Use cases carry the majority of the requirements for the system. The development team, with user involvement, writes the use cases in a common standard format. These use cases 26 2. Requirement Management can be used for test case development later on. Definition of the Term Use Case Intuitive a use case is something that happens when a user uses a system. This definition is a bit imprecisely. According to [2] a use case is defined as an accumulation of sequences of actions a system performs that yields in an observable result of value to a particular actor. That does not mean more than use cases describe the interaction with a system. Figure 2.12 shows the common notation. Thus, a use case represents a sequence of actions describing a set of functions, an algorithmic procedure, or any other internal process that produces a result. The actions of an use case must be atomic - that means it is performed either entirely or not at all! A use case must be worth to an user. Therefore, ’the occupant pushes the light button’ is not a valid use case. But ’the occupant pushes the light button an the system turns on the light’ is a meaningful description of a use case. An use case must motivate to interact with the system. The system makes something for the actor. It exhibits the functionality described in the use case and takes its orders from the actor. The actors notation is displayed in figure 2.13. Figure 2.12: Use case Figure 2.13: Actor More information about defining and using use cases can be obtained at [5]. 2.3. Solution Domain 27 Purpose of Use Cases Use cases are just one way to express software requirements. Use cases express the upper features in much more detailed terms! This is the direct relationship between features and software requirements. Primary use cases are used to capture functional software requirements. That means that a big part of features might be mapped to functional software requirements. But there will still be some features left which have no representation on the requirement layer. These features will be mapped to non-functional software requirements (like usability, reliability and performance) or design constraints (that means restrictions on the design of a system). 28 2. Requirement Management Use Cases for the ComNets Simulation Framework Configuration System In this section the basic use cases for the ComNets Simulation Framework Configuration System are described. Table 2.5 describes a schema which is used to describe use cases in a textual form. Table 2.5: Use Case Schema Name: Description Actors: Basic Flow: Use Case Name Describe the use case List the actors • Atomic action 1 • Atomic action 2 • ... Alternative Flows: • Alternative 1 – First alternative - Atomic action 1 – First alternative - Atomic action 2 – ... • Alternative 2 – Second alternative - Atomic action 1 – Second alternative - Atomic action 2 – ... • ... Pre-conditions: • Pre-Condition 1 • Pre-Condition 2 • ... Post-conditions: • Post-Condition 1 • Post-Condition 2 • ... Figure 2.14 gives an overview about the identified use cases. Formulating each of these use cases in textual form would blast the scope of this student project thesis. Thus, just the more important use cases will be described later on. Short Description of the shown Use Cases 1. Add new parameter During development it is always necessary to add new parameters to the parameter space. This includes defining a type and limitations for the new parameter. This is 2.3. Solution Domain 29 Figure 2.14: The Use Cases from Actors Perspective typically done by a developer. 2. Remove existing parameter This use case describes the inverse operation to add new parameter. 3. Create new configuration Creating a new configuration is always necessary when an individual wants perform a simulation. The configuration basically describes the simulation scenario: • How many mobiles • Which protocol stacks • Traffic behaviour • Movement model of mobile stations • Used antennas This scenario will be designed by a user by creating the mentioned configuration. 4. Load configuration Loading a configuration is the first thing to do before getting and setting of parameter values is possible. For example the configuration could be a set of files which have to be translated into an internal memory representation. 5. Save configuration Saving writes the whole configuration back to a persistent medium. 6. Check configuration Before the configuration is usable it must be valid. This use case describes the steps which are necessary to check a configuration and what is to be done if something goes wrong. 7. Get parameter value Parameters can mainly be requested from the ComNets Simulation Framework. Depending on the realization these use cases are not necessary any longer. Table 2.6 30 2. Requirement Management provides a more detailed description of the use case of getting a parameter value from a loaded configuration. Figure 2.15 shows an UML activity diagram which describes the use case in detail to avoid misunderstandings. 8. Set parameter value This is similar to the Get Parameter Value use case. Table 2.6: Use Case - Get Parameter Value Name: Description Actors: Basic Flow: Get parameter value This use case describes the systems behaviour on getting parameter values from the loaded configuration. ComNets Simulation Framework • Get parameter identifier • Find parameter identifier in loaded configuration • Return the parameter value Alternative Flows: • Alternative 1 - User did not overwrite the parameter value – Get parameter identifier – Find parameter with identifier in the default configuration – Return the default value of this parameter • Alternative 2 - Parameter identifier does not exist – Get parameter identifier – Find parameter with identifier in the default configuration – Not found - report failure Pre-conditions: • Configuration must be loaded • Configuration syntax must be valid Post-conditions: • When reading a parameter-value correctly, the system returns into the state it was before because a reading operation does not take any effect on the state. • When an error occurred (e.g. parameter name not found) the system informs the user but returns into the state it was before to handle new parameter requests. 2.3. Solution Domain 31 Figure 2.15: The appropriate UML Activity Diagram to the Get Parameter Value Use Case 32 2. Requirement Management 2.3.2.3 Non-Functional Software Requirements The whole configuration mechanism must be simple to integrate because the ComNets Simulation Framework is a large project and configuring a system is surely not its main purpose. Moreover the configuration mechanism must be simple and intuitive to use by a average user. At this point it is time to define the non-functional software requirements in detail. Doing this for every defined non-functional feature would blast the scope of this student project thesis. So this is just done for the feature: The configuration mechanism must be simple and intuitive to use by a average user. Below is a list with software requirements which should met this highly requested feature. 1. Hierarchically meaningful grouping of information 2. Assign a default value to every attribute 3. A textual description can be bind to the configuration parts, directly 2.3.2.4 Design Constraints As described above there are still some features which could not mapped to functional software requirements: The whole project will go open source, soon. This excludes the use of commercial software in any way. Moreover the basic parts of the project are coded in C++. So it is obvious to write the configuration mechanism in C++, too. CHAPTER 3 Designing the Right System 3.1 Analysis of the actual Configuration Mechanism The actual configuration mechanism works with INI-files. These files provide a static hierarchy of three levels - filename, section parameter name. Every parameter can take exactly one parameter value. Figure 3.1 shows the conceptual coherences. A parameter value can be accessed by passing a filename, a section name and a parameter name. Such a static hierarchy is fairly enough for small and medium configurations but evidently it breaks down when the amount of parameters gets to big. Figure 3.1: The old parameter concept 3.2 Making a New Design 3.2.1 Introduction to Collaborations Use cases are realized via Collaborations. Collaborations are key modeling constructs. They represent the way in which the use case is implemented in the design model. So it is possible to trace from the use case model (which expresses the software requirements) into the design. Figure 3.2 shows such a collaboration. 3.2.1.1 Structural and Behavioral Aspects of Collaborations Collaborations have two aspects: 1. A structural part that specifies the static structure (e.g. classes, interfaces, and subsystems on which the implementation is structured) 2. A behavioral part that specifies the dynamics of how the objects interact to accomplish the result 34 3. Designing the Right System Figure 3.2: A use-case realization in the design model A collaboration is not a physical thing - it is just a description of how elements of the system work together. For example a class diagram (see figure 3.3) can represent the structural aspects of a collaboration. The behavioral aspects might be represented by an interaction diagram (see figure 3.4). Figure 3.3: An Example Class Diagram 3.2.1.2 Using Collaborations to Realize Sets of Individual Requirements It is also possible to model the implementation of any individual requirement or any set of requirements as a collaboration, and apply that technique to achieve requirements-to-design traceability. With this extension it is possible to use requirements of all types to drive design and implementation. Figure 3.5 shows a model of requirements implementation as a collaboration. 3.2.2 Usage of Collaborations on the Configuration Problem Creating a design which meats all use cases and requirements would blast the scope of this student project thesis. So the process of design is described considering as example. As described above the most important feature is simple, redundancy-free administration of existing configurations. As described above this feature will be fulfilled by the following software requirements: 3.2. Making a New Design Figure 3.4: An Example Interaction Diagram Figure 3.5: Model of requirements implementation as a collaboration 35 36 3. Designing the Right System 1. Hierarchically meaningful grouping of information 2. Assign a default value to every attribute 3. A textual description can be binded to the configuration parts, directly This is the starting point for an appropriate design. Figure 3.6 shows the collaboration which interconnects the according software requirement to the design. In this case class diagram 3.7 represents the structural aspects of the collaboration. Figure 3.6: The collaboration which interconnects the software requirement Figure 3.7: The new type concept The collaboration is more intuitive when using modern design tools like [6]. In fact the collaboration contains the class diagram. The textual description in figure 3.6 should symbolize this. Figure 3.7 introduces the type concept. The type concept allows it to construct complex configurations which are still simple to be managed. This is reached by introducing a hierarchy into a configuration. This hierarchy allows a meaningful grouping of information because types carry sematic by itself. These groupings are called types. This is not absolutely exact but it will do for the moment. 3.2. Making a New Design 37 According to 3.7 a type has a name and a description. This description satisfies the software requirement: A textual description can be bind to the configuration parts, directly. Moreover there is a decission between a Simple Type and a Complex Type. These two classes inherit from the Type class. This decission is necessary because the type hierarchy must be terminated. That simply means that every Complex Type consists out of Simple Types at last. According to the definition of classes in object orientated programming a complex type consists of attributes. Attributes are variables which are members of a class of type. To be conform to the definitions of object oriented programming at this point, the attribute term is used here. Attributes have a name, a type and they can have a value. This is the point of recursion because an attribute has a Type and a type can be a Complex Type again. As described above every Complex Type consists of Simple Types. These Simple Types can have default values. This mets the software requirement: Assign a default value to every attribute. This is because every Complex Type consists of Simple Types. If every Simple Type owns a default value, every Complex Type will have default values automatically. Moreover a Simple Type can have Aspects. These Aspects confine the use of a defined type (classifiers). For example defining a date type would confine the month attribute from one to twelve. The software requirement: Hirachically meaningful grouping of information is met by the described type concept automatically. Because of the recursive nature of the described concept, the hierarchical depth of the configuration is user-defined. In this way the displayed design in figure 3.7 mets the requested software requirements. 38 3. Designing the Right System CHAPTER 4 Presentation of a Potential Implementation In this section a possible implementation for the previously described design is proposed. Such an approach should met the basic issues of the design. In this case the three mentioned software requirements should be fulfilled in any way. 4.1 XML as a Possible Implementation XML - the eXtensible Markup Language supports the definition of types. Moreover it is possible to create instances of these types. This is the dispositive criteria which allows XML for a possible implementation. This type concept includes the use of default values, hierarchy and documentation. Moreover the XML format is human readable. 4.1.1 Introduction to the Extensible Markup Language (XML) XML is designed to improve the functionality of the Web by providing more flexible and adaptable information identification. It is called extensible because it is not a fixed format like HTML (a single, predefined markup language). Instead, XML is actually a metalanguage - a language for describing other languages. This enables a potential developer to design his own customized markup languages for limitless different types of documents. It is obvious that XML is more than just a better INI-file format - in fact it is a real language. Figure 4.1 shows an example XML file named note.xml which contains some simple tags. Figure 4.1: A small XML Example 4.1.1.1 A Word on XML Schemas (XSD) XML Schemas express shared vocabularies and allow machines to carry out rules made by people. They provide a means for defining the structure, content and semantics of XML documents. XSD was approved as a W3C recommendation. In context to the previously met design XSD is used to define the Types. Beside, XML Schemas are an alternative to DTDs (Document Type Definitions) - the previous method to define document structures. The following arguments should point out why XML Schemas are better than DTDs: 40 4. Presentation of a Potential Implementation 1. XML Schemas use XML Syntax (a) No new language is to be learnt (b) Simple editing of XML Schemas by using the standard XML editor (c) Use of the standard XML parser to parse Schema files 2. XML Schema has Support for Data Types (a) It is easier to describe permissible document content (b) It is easier to validate the correctness of data (c) It is easier to work with data from a database (d) It is easier to define data facets (restrictions on data) (e) It is easier to define data patterns (data formats) (f) It is easier to convert data between different data types 3. XML Schemas are Extensible (a) Reuse your Schema in other Schemas (b) Create your own data types derived from standard types (c) Reference multiple schemas from the same document Figure ref:XSDExample shows the appropriate XML Schema to the XML example in figure 4.1. Figure 4.2: The appropriate XML Schema Now the task is to map the UML vocabularies, which were used in the previous design section, to equivalent XML vocabularies. This is topic of the following section. Additional information on XML and XSD can be obtained from [7]. 4.1. XML as a Possible Implementation 4.1.2 41 Conceptual Mapping from UML to XML At this point it is necessary to transform the design to the described technology. According to [8] it is possible to analyze XML vocabularies with UML. Figures 4.3 and 4.4 show the conceptual mapping of terms. For example a XSDComplexType in XML can be seen as a Class in UML. This enables a direct mapping from the design to the XML technology: For example the Attribute-class can be implemented by a XSDElement. The defined Simple Type and Complex Type can be directly accepted without any modification. Moreover the previously mentioned Aspects of the Simple Types can be mapped to the so called Facets. These Facets are restrictions on XML elements. The mapping from XML to UML is not always unambiguous. For example XML defines XSDAttribute and XSDElement while UML just uses terms like Class and Attribute. However, this does not cause any problem because it is only necessary to map from UML to XML in this case because the met UML design needs a representation in XML and not contrary. Figure 4.3: Mapping of terms from UML to XML part 1 4.1.3 Type Based Example Configuration for ComNets Simulation Framework in XML The following section illustrates the concept of type based configuration. Figures 4.5 and 4.7 show graphical representations of the XML Schemas. These graphics were created with [9] and show a small part of a possible configuration layout of the ComNets Simulation Framework. The appropriate XML code is shown in figures 4.6 and 4.8. Figure 4.7 for instance shows a type definition for a station. In this example a station can have a name, an id and a position. In fact a station has many more possible attributes but 42 4. Presentation of a Potential Implementation Figure 4.4: Mapping of terms from UML to XML part 2 Figure 4.5: Graphical Representation of an XML Schema which defines a Complex Type - a 2D point 4.1. XML as a Possible Implementation Figure 4.6: XML Code representation of an XML Schema which defines a Complex Type - a 2D point Figure 4.7: Graphical Representation of an XML Schema which defines a Station 43 44 4. Presentation of a Potential Implementation Figure 4.8: XML Code representation of an XML Schema which defines a Station these three should be enough to illustrate the concept. The position attribute is a complex type by itself. Obviously, the station type uses other complex types - in this case a defined position type. The definition of these two complex types takes place in two different XSD files. The station type simply includes the position type definition (like an inclusion of header files in C++). Evidently, it is possible to split type definitions to different files. That fact has a direct effect on the file size. The type definition is similar to a class definition in C++. In both cases an instance of the type and class respectively is needed. Figure 4.9 shows such an instance of a station type. The two attributes ID and Name are overwritten while the position attribute is left. This might cause the configuration mechanism to use the default values which are defined in the position type itself. Moreover the type definition can restrict the range of attribute values. This happens by checking the XSD against the XML input. 4.1.4 Implementation of a Prototype A complete implementation of a prototype would blast the scope of this student project thesis. However, this section makes some proposals which might be useful. An appropriate XML parser which supports the needed functionality (XML Schema, XInclude etc.) can be obtained at [10]. A possible solution might be the encapsulation of the XML mechanism into a Configuration Manager which provides an simple interface to the corresponding modules. 4.1. XML as a Possible Implementation 45 Figure 4.9: XML Instance of a Station Type 4.1.5 Review and Conclusion At last, the enforced process leads to necessarily useful results - the proposition of a solution which will met the stakeholder needs which have been captured at the beginning. These needs have been captured by interviewing the different stakeholders. These stakeholders have been identified by a previous stakeholder analysis. Moreover, an extensive problem analysis helped to identify the problem behind the problem. With this knowledge it was possible to define features which have been refined to real software requirements by using use cases. Additionally, some non-functional software requirement have been identified. On this base it was possible to drive an adequate design. This design was mapped to potential technologies. The next step in the process is the development of a simple prototype which proofs the usability of the selected technology. A solution which fulfills the captured requirements would present a simple to use configuration mechanism to the average user. In the long run the result will be profitable for the developers to, despite the higher development effort. 46 4. Presentation of a Potential Implementation LIST OF FIGURES 1.1 1.2 1.3 The Phases and Iteration of RUP . . . . . . . . . . . . . . . . . . . . . . . . 8 The Phases and Iteration of RUP with its superior meta layers . . . . . . . 9 Closed Loop of Finding the Ideal Solution . . . . . . . . . . . . . . . . . . . 10 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 Overview of the problem domain and the solution domain. . . . . . . . . . . Relative cost to repair a defect at different life cycle phases. . . . . . . . . . Fishbone diagram 1 demonstrates the root causes of the redundancy problem Fishbone diagram 2 visualizes the problem of huge configuration files . . . . Fishbone diagram 3 illustrates why the entity-mapping problem exists . . . System perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Needs and features are closely related . . . . . . . . . . . . . . . . . . . . . . This is a screenshot from a traceability matrix in Rational RequisitePro . . This is a screenshot of the used questionnaire for the feature prioritization . This figure shows the results of the feature survey . . . . . . . . . . . . . . . There are three different types of requirements . . . . . . . . . . . . . . . . Use case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Actor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Use Cases from Actors Perspective . . . . . . . . . . . . . . . . . . . . . The appropriate UML Activity Diagram to the Get Parameter Value Use Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 15 18 18 19 19 22 23 24 24 25 26 26 29 3.1 3.2 3.3 3.4 3.5 3.6 3.7 The old parameter concept . . . . . . . . . . . . . . . . . . . . A use-case realization in the design model . . . . . . . . . . . . An Example Class Diagram . . . . . . . . . . . . . . . . . . . . An Example Interaction Diagram . . . . . . . . . . . . . . . . . Model of requirements implementation as a collaboration . . . . The collaboration which interconnects the software requirement The new type concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 34 35 35 36 36 4.1 4.2 4.3 4.4 4.5 A small XML Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The appropriate XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . Mapping of terms from UML to XML part 1 . . . . . . . . . . . . . . . . . . Mapping of terms from UML to XML part 2 . . . . . . . . . . . . . . . . . . Graphical Representation of an XML Schema which defines a Complex Type - a 2D point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XML Code representation of an XML Schema which defines a Complex Type - a 2D point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graphical Representation of an XML Schema which defines a Station . . . . XML Code representation of an XML Schema which defines a Station . . . XML Instance of a Station Type . . . . . . . . . . . . . . . . . . . . . . . . 39 40 41 42 4.6 4.7 4.8 4.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 42 43 43 44 45 48 List of Figures LIST OF TABLES 2.1 2.2 2.3 2.4 2.5 2.6 Problem Statement Format . . . . . . . . . . . . . . . . . . . . . . . Problem 1: Specification of configuration redundancy problem . . . . Problem 2: The problem of huge configuration files . . . . . . . . . . Problem 3: The problem of entity-address-mapping between different Use Case Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Use Case - Get Parameter Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . layers . . . . . . . . 16 17 17 18 28 30 50 List of Tables GLOSSARY Collaboration Collaborations are key modeling constructs. They represent the way in which the use case is implemented in the design model. Configuration In this case a configuration is just a parameter configuration. A parameter configuration is the instance of a parameter space where specific parameter values are assigned to parameters. Feature A feature is a service provided by the system that fulfills one or more stakeholder needs. Parameter space A parameter space is a set of parameters. Each of these parameters has a defined range of values and a type. Requirement A software capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documentation. stakeholder needs A reflection of the business, personal, or operational problem (or opportunity) that must be addressed in order to justify consideration, purchase or use of a new system. Use case A use case is defined as an accumulation of sequences of actions a system performs that yield an observable result of value to a particular actor. Parameter A parameter has a name and a type and takes exactly one parameter-value which must be conform to its type. Attribute An attribute describes a specific characteristic of a class. Subsystem A subsystem is a system which is entirely included into another system. It encapsulates functionality which is provided to the upper system but is still able to run standalone. 52 Glossary LIST OF ABBREVIATIONS XML Extensible Markup Language W3C World Wide Web Consortium XSD XML Schemas DTD Document Type Definition 54 List of Abbreviations BIBLIOGRAPHY [1] http://www.objectmentor.com. Rational unified process versus xtreme programming. http://www.objectmentor.com/resources/articles/RUPvsXP.pdf. [2] D. Leffingwell and Widrig D. Managing software requirements - a use case approach. Addison-Wesley, page 502, 2003. [3] IBM. Rational requisitepro (xde) - software for managing requirements. http://www.ibm.com. [4] B Bittner and I. Spence. Use case modeling. Addison-Wesley, page 347, 2004. [5] IBM. Rational xde. http://www-306.ibm.com/software/rational/. [6] http://www.w3schools.com. http://www.w3schools.com/schema/default.asp. [7] David Carlson. Analysis http://XMLmodeling.com. and design Information of xml [8] Altova. Altova xmlspy 2005. http://www.altova.com. [9] Apache. Xml parser. http://xml.apache.org/xerces-c/. on vocabularies xsd. with uml.
© Copyright 2024