<<

Code Tool to Help Teach Mainframe Programming Languages Claudio Gonçalves Bernardo Paulo Roberto Chineara Batuta MSc. Computer Engineer MBA Quality Universidade Paulista Centro Universitário Araraquara Brazilia – Brazil São Paulo - Brazil [email protected] [email protected]

Abstract – The purpose of testing activity is to discover errors in important to check the quality of software at various stages of software and for this objective to be achieved many activities development, not only restricting the testing phase of the software. must be performed. There are several types of test and while An appropriate test is one that discovers the greatest possible some are generated and focused on functional verification of a number of faults in the software and when this software is designed component and incorporating components in the structure of the to run in an large environment, also known as Mainframe, becomes program, others are applied to point traceability requirements. an even greater difficulty, since this environment is complex and the There are systems tests designed to validate part of a software characteristics of each facility are different. Universities see this component, which is a part of software solution greater. Its difficulty as a major obstacle to the teaching of languages such as function is only to be a small part of a more complex reality. The Cobol, PL/I, Easytrieve, Assembler and others, who did not die and different types of tests are complementary and in most cases are will not die, as a single system mainframe can deliver thousands of applicable to all software developed. All aim to develop programs virtual platforms with a small fraction the dollar cost, power with the fewest mistakes as possible, allowing the product to and space [20]. The preparation of students for the global IT industry deliver the desired quality. The activity of preparing becomes very difficult. [12] states that it is necessary that the professionals in the use of language for Mainframe environment professional has complete mastery of the where the tests will is difficult mainly because the programs need to test both the be carried out and for this to happen should apply innovative uses of online environment as batch. This work presents a modern tool technology in the classroom, thus seeking to reduce the learning time for debugging source code developed in Mainframe platforms. It with a closer view of the possible day-to-day industry produces presents the tool and its installation. Its use in a teaching unit of software for Mainframe environments. the programming language for Mainframe environment becomes essential as it allows the student to know the procedures of II. SOFTWARE TEST preparation and test execution step by step. This activity will prepare students better for becoming a member of a team The need of Software Test before delivery, whether Individual developing applications large and it allows to accurately meet the Test, System Test, Integration Test or Test Certification is a notorious requirements presented by area of any issue in all organizations that develop IT solutions. To ensure that the institution, whose intention is to deliver the final product with product is delivered according to specified was necessary that the IT minimum possible errors meeting all the requirements generated market suffer some facts of reality. According to research presented by the final customer in the shortest time. by [11], 50% of companies surveyed 25% or more of IT projects are completed late, 57% of companies in each two IT initiatives, Keywords: , Preparing for IT Industry, generated only a positive business results. Companies that can Debugging Tool, Mainframe, Innovation in classroom. accelerate the completion of projects and IT services acquire a significant profit margin, while the others were not capable of it are I. INTRODUCTION victims of ruthless competition. is an activity that involves several stages, The activity of Software Testing performed in a controlled and including the testing phase. The test phase is assigned responsibility disciplined performance ensures superior to software product for finding the largest number of possible errors, avoiding that they delivered, due to the reduced number of errors when it enters the are already found by the client when implanted [16]. Because it is a production phase. In [14] researchers argue that the developer should human activity, has a high probability of insertion errors. On average, use software agents for prioritizing test cases in order to maximize 10 errors can be found for every 1000 lines of code (1 error per the number of faults found during the time available for testing with a KLOC - Kilo Line of Code). The test software allows errors to be particular order of priority. In [1] is presented research that provides a identified before being delivered to the customer, a situation that systematic review of the use of statistical tests to assess randomized enables correction of the problem; because this fact allows the parties algorithms in . Here the aim was to show that involved (customer and supplier) enter into agreement on the solution randomized algorithms are used in a significant percentage of or consequences caused by error identified. projects and that in most cases do not appear in searches. There are The activity of software testing can be considered as one of those many statistical tests based on different subjects and not always contributing to the improvement of quality, since the software tends peaceful spot when and how these tests should be used. to have improvements compared to its previous state. Software In [13] researchers report cases of manual tests are time consuming quality must consider not only the occurrence of error but also the and are prone to many errors. They argue that tests based searches software serves the purpose perfectly expected by the client. It is can help in automating this process by reducing the time and effort to automatically generate test cases and complex data for relevant tests. They claim that research has focused on programming languages and According to [4], a failure can be caused by various reasons, such statistical data inputs for simple tests such as input of numbers, but as the specification that may be incorrect, incomplete or unclear, it this practice is not for dynamic programming languages that are may contain requirements impossible to implement due to hardware widely used by developers . limitations or software or even by sheer nonsense of requester, that generated the requirements. To ease the difficulty between the end A. DEFECTS , ERRORS AND FAILURES and the creator of the requirements was established . Another reason for the occurrence of a fault may be the To be presented some elements of the discipline of Software existence of a totally disorganized, featuring clearly the lack Testing is necessary to identify some concepts relevant to it. The first of preparation for mass screening appropriate to consider all possible one is to interpret what constitutes a defect. This is inconsistent act ways that the conditions of business rules may lead. Finally, failures committed by an individual trying to understand a piece of may also be the consequence of defects in deployed script prepared information, solve a problem or to use a method or tool. An for the tests. The student of courses at a instruction or incorrect command within a source code illustrates the university or even training companies need to have the exact idea of concept categorically Defect. the importance of testing for the software industry, need to Error is a concrete manifestation of the defect described in the understand how this industry suffers if requirements are generated so preceding paragraph, when this happens in a software artifact. The inaccurate as this inaccuracy directly affects the results that are difference between the value obtained and the expected value, expected of program testing to be performed. representing any intermediate state incorrect or unexpected result in the execution of a program is a mistake. Failure is the operational B. TEST FEATURES behavior of the software different than expected by the user. It can be It is extremely important to identify the different features that the caused by several errors, but it is important to note that some errors Software Testing presents. Not just a matter of nomenclature, but to throughout the lifetime of a software solution, can never cause ensure that all possibilities to interpret this discipline are reflected in failure. software development. According to [5] some project leaders The defects are considered part of the physical universe, which is understand that Software Testing is an activity that should be handled the software application in a real and are caused by people, through only at the end of the development process and is perceived that the the misuse of any technology. These can cause errors in the delay in detecting errors makes the delayed repair and costly. So manifestation of a product, in building a software differently to what spending on financial correction could be used for other project was specified. Errors generate faults, interpreted as unexpected activities. The test becomes of great importance in the development, behaviors in a software that directly affect the end user of the as it allows the hits are performed before implementation. application, so you can undo all the generated worked to develop the The set of principles, described below, serve as a guide to make the same. most effective software testing: Some factors such as incorrect understanding of user needs, the • All tests must be related to customer requirements; lack of ability to deal with changing requirements and the discovery of serious problems in the final stages of the project lead to failures in • Tests should be planned long before it starts; software [16]. Faults can be considered as incorrect results regarding • The Paretto Principle applies to software testing. This specification, obtained by using the software. The consequences of principle implies that 80% of all errors discovered during failure are faults inserted into software. The defects are characterized the test tend likely to be related to 20% of all program by being representations of human activity executed in error, and are components therefore must be isolated suspected representations of human error committed. components and test them closely The defects can be classified according to the degree of severity of • Testing should begin in the individual components, failures which cause, establishing criteria for evaluation. They are towards the entire system; classified into: • The full test is not possible; • Smooth: failures that offends the aesthetic sense; • • Moderate: failure due to redundancy; To be more effective the test should be conducted by someone other than the developed. • Hater: faults that generate disagreement about the human standard; One of the important features and testability, which is the ability of the software, has to be tested. The Operability ensures that the • Disruption: failures that lead to no processing some legitimate better the system work better will be tested. The Controllability transactions; ensures that the more you can control the software more testing • Seriously: failure that causes loss of transactions; can be automated and optimized. The Observability is the ability to • Very Seriously: dangerous failure results completely wrong; allow monitoring of the test by observing the inputs and outputs. • Record: whose fault occurrence becomes frequent; What you see is what you test each input and generates an output • Intolerable: speech that corrupts a database; distinct, facilitating the identification of nonconformities. The • Catastrophic: generates a system shutdown; source code is available. Decomposability is characteristic of isolating parts of the system to test. Controlling test scope, one can • Infection: Failure generating shutdown on a system that quickly isolate problems and make further tests more rationally. propagates to other systems Simplicity, which has the view that the simpler the faster tested. The discovery of defects in the software presents a high cost to the Even as we feature Understandability, where more information project, increasing substantially as the project progresses through the enables greater rationality to run the test, and to finalize the phases of development. The later a defect is discovered the greater Stability because fewer changes cause less disruption in the the cost to repair it. software. C. STEPS OF TEST At the time of student software’s construction, whose pretends to g) Beta Test, where the user receives the test version and report be a software developer, aware of the number of observations, any problems found. Occurs on the desktop software user and the contributes to the implementation of a good test, which shows a high client reports problems to the developer to make the corrections; probability of finding errors. When preparing a test he should have as h) Recovery Test, which is the system's ability to recover and much information as possible about the software and know the points return the processing failures within a pre-specified time. There are where this software can fail. A good test is not redundant, it should cases where a system must be fault-tolerant, being able to continue be very simple or very complex. In general, each case must be run processing without stopping global operations; separately, to avoid masking of errors. i) Test Security, which verifies the software's ability to protect It is necessary for the effective functioning of the activity of the itself from invasion improper or illegal, harming or benefiting test run are followed - in this order - the steps: someone wrongly. This test attempts to verify that protection a) Planning, where are certain test cases are chosen and the data and mechanisms built into the system will actually protect you from determined the expected results; invasion; b) Test Execution, that is the time they are established scenarios, test j) Stress Test, which verifies the software's ability to react to scripts and instrumentation programs; situations and data processing quantities and extreme high frequency c) Evaluation of the results to decide whether some changes should of use or application of abnormal volumes; be made to the code tested. This step is performed to compare the k) Performance Test, which checks how the software reacts during results computed with the expected results and reports generated execution. It is designed to test the performance of the software when notes. Any institution responsible for the development of software running in the context of an integrated system; must be able to establish a strategy for testing. This means defining l) Test Unit, also known as , which aims to explore the what are the patterns, techniques, models and criteria to be used to smallest unit of the project, seeking to provoke failures caused by allow software testing. defects in logic and implementation for each module separately. The A good test strategy should: target universe of such testing are methods of objects or even small code snippets; • Contain the activities to be completed to the test; m) Integration Test, which aims to cause failures associated with • Establish criteria for evaluating the software; the interfaces between programs when these are integrated in • Know the types of test to be applied; accordance with what was designed in the architectural phase of the • Have adequate data to generate results conference; project; n) Test System, which evaluates the software for faults through • Start from the most basic level, progressing to reach the the use of the same, as if an end user. Thus, the tests are run in the software as a whole, including integrations with other same environments, with the same conditions and with the same software; input data a user would use in their day-to-day handling of the software. This activity allows you to check if the product meets the • Have flexibility to allow creativity and customization; customer's requirements; • Allow monitoring and compliance test plans outlined. o) Acceptance Testing, which are usually performed by a small group of end users of the system, simulating routine operations of the D. TEST TYPES system to verify that their behavior is in accordance with the request; There are some types of tests that can be applied by the developer p) , which is a strategy to reduce side effects. or by the customer and can be performed for each program, only the This type of test is applied to each new software version or every system or application across the organization, also the integration of cycle, all the tests that have been applied in versions or test cycles this system with its other systems, with the aim of bringing up as previous system. This is a test procedure to be applied after the much as possible to the reality of implementation in production, final program has been modified since aims to ensure that no new defects phase in which the software is available for use in day-to-day [16]. were introduced during maintenance, checking that maintenance The test types are: performed corrected the defect or functions according to the modification required; a) Structural Test, which seeks to find bugs in the code, known as the program structure; q) Structural Testing or White-Box Testing. This is based on the internal architecture and the software is to ensure that all independent b) Functional Test, aiming to find discrepancies between what is paths from one module to run at least once, and ensures that all expected to result versus the actual result presented; logical decisions have been treated, also ensures that all cycles were c) Integration Test, which verifies the behavior of software during performed within its boundaries and within their operating ranges; interfaces; ensures that internal data structures were implemented to ensure its d) Regression Testing, which is focused on , validity. Structural testing seeks to find factual errors in code; seeking to ensure that no new defects were introduced in new r) Functional Test or Black Box, which serves to validate the versions presented; expected results with the results. This test is performed based on the e) Validation Test, which identifies whether the software works requirements of software obtained from the client and seeks to according to customer expectation, if it was built meets user needs. identify gaps in functionality, integrations and total software; This test is also known as Acceptance Test or Acceptance; s) Integration Test, which serves to ensure that data is not lost f) Alpha Test, where the user performs the test in the development during the interfaces between modules, or that one module does not environment, along with the developer. Is to bring the user to the have an effect on inappropriate or that another combination of sub- ; testing environment and allow contact with this software developed functions fail to generate the desired function for the developer to register the errors and problems encountered; There are testing environments, architectures and specialized applications, due to the wide variety of capabilities and software application areas become necessary to identify errors that other types of test ignore.

III. THE IMPORTANCE OF TESTING UNIT AND USE OF A DEBUG TOOL Some people still wonder why to write Unit Test. The fact that should be considered relevant is that the effective use of Unit Testing considering its realization through appropriate testing tool can avoid basic programming errors and allows the coverage of code written without using mass data. A unit test should be able to examine the behavior of the code under the most varied conditions. The behavior of the code can be analyzed by the content of the parameters passed to it, i.e. it performs and what it returns if a condition is true or not. Furthermore, evidence through which debugged code is indeed important. With it, we can consider what is called code coverage. A program which shows its cover code by means of a test tool is guaranteed that were performed types of tests made by the developer. A. DEBUG TOOL FOR Z /OS TO COMPLETION TEST UNIT AND COVERAGE CODE The companies that develop IT solution to launch every year lots Figure 1 - Interface with an Application Font: [10] of tools to aid in development. For almost all activities of the phases of software development tools are ready for use. In Phase Test B. HOW DEBUG FOR Z /OS EVIDENCE COVERAGE CODE Software is no different. The code coverage is evident in a practical manner, i.e., calculate One of the tools designed to debug individual tests is the Debug the percentage of code coverage by dividing the number of lines Tool for z/OS. z/OS [7] is the Mainframe tested by the total lines of the program multiplied by one hundred. environment. According to [8] Debug Tool for z/OS allows you to Therefore a basic tool that is present by indicating which line of code examine, monitor and control the execution of programs like C, C + was executed and how many times it was executed. +, COBOL and PL/I that are performed in the operating system z/OS. Figure 2 shows how the code coverage as evidenced in the tool It is an interactive tool for source-level debugging for applications Debug Tool for z/OS. The code coverage is evident in a practical compiled in a variety of environments. manner, i.e., when it terminates execution of white box testing, the It supports batch processing and on-line, stored procedures in the tool executes a command Debug Tool and it immediately makes the database DB2, IMS, and UNIX System Services. It also supports a calculation of percentage of coverage in your area and displays the seamless debugging of applications in languages mixed in the same log. session and offers a set of commands that can be interpreted used to This enables the to validate the quality and made his specify actions to be performed. It also offers the option of setting test. An area of quality can validate the test results both by the breakpoints in an application program, monitoring changes to evidence of the data generated as well as the percentage of code variables and noting exceptions and conditions specified during coverage that was stored by the tool. program execution and counts how many times a statement or verb IV. NEEED TEST OF CODE SOURCE TO ENSURE SOFTWARE was processed in an application program. Its integration with other development tools enables developers to debug applications in an QUALITY integrated environment. The software development organizations have a need to test your Figure 1 shows a screen printing with the operation of the tool source code as a prerequisite for ensuring the quality of software interface Debug Tool for z / OS with the application program. being delivered. An area of software development of any organization needs to create an Environment of Testing and Other features of the tool Debug Tool for z / OS are: Certification meeting ITIL recommendations [15][3] and the a. Level debugging code; requirements of Basel 2 [2]. His necessity exists for improvement of software quality and reducing problems in production. The b. Multiple breakpoints; organizations intend to achieve this by improving the performance of c. Conditional; existing applications in production as well as prevent new d. Unconditional; applications are poorly constructed. Most of these institutions create areas distributed in its Department of Information Technology, which e. Debugging step by step; usually are: Process, Methodology, Infrastructure, Systems and f. Dynamic changes; Production. The objectives of these areas are: g. Modifications of variables; a) Processes h. Entering commands; Reevaluate and set the new development cycle, contemplating the homologation environment and preserving the production i. Log of the commands used in the debugging session; environment; j. Cover tested code. Adapt the process of the development cycle while keeping the pole developer in distributed environment; Draw the new path of developing software contemplating new instance of approval; Set path emergency software development considering environmental approval; Define types of development according to business need, i.e. define which systems or programs need to be approved; Define indicators for a development, and homologation tests; Ensuring traceability; b) Methodology Reset the types of tests for each instance of development; Reset the deliverables of evidence validation of software testing; Reassess criteria for which systems or programs need to be approved or not; Develop training for the various areas involved in the new process. c) Infrastructure Draw the usage model of software tools that meet the requirements of new processes involving development environments, approval and production; Training resources on the use of new software tools; Differentiate libraries approval; d) Systems Make the activities included in the development process regarding the approval and development environments; Use productivity tools and problem determination in development environments and approval; e) Production Validate evidence of acceptance of the approval; l. Deploy the changes in the production environment; Figure 2 – Debug Tool and Code Coverage (Program Frequency Counting) Controlling the life cycle of software deployment predicting the back out. To attend a training scenario in the industry is necessary to To achieve these objectives it is necessary to perform the following implement an architecture that allows, in cases of Batch applications, tests: access the tool Debug Tool via publishers that comes in tools TSO - Time Share Option and Roscoe. Figure 3 illustrates one solution that i) Unit - To be done by ; positive and negative; white is typically drawn for Performing Batch. box, with evidence of testing in the development environment, and an uncontrolled environment.. To make a balance in his workload some organizations create two development environments and install them the same solution. Figure ii) Functional - Black Box - Regression - With test cases in test 4 shows how the architecture is a distribution in both development environment integrated, evidence also generating tests. This environments, and herein identified as DESA and DESB. The atmosphere should be a controlled environment. solution that is presented to execute online programs, also called iii) Performance - Stress and load being made in the homologation transactional batch is similar to the solution, and the differential is the environment, generating evidence test, being a controlled CICS environment [7]. Figure 5 shows an example of a solution. environment. To train students running tests in an environment similar to the V. USE OF TESTING DEBUGGING TOOL FOR TEACHING IN industries, the tool Debug Tool can be performed via a workstation MAINFRAME ENVIRONMENT RDT - RDZ Unit Test [18], which has a unit testing environment. This station shown in Figure 6 is a development platform for System Training courses in the area of Brazilian universities of z running in a personal computer capable of execute operating system Information Technology do not have computer labs in large scale, z/OS. This provides flexibility to run a customized environment also known as Mainframe machines, and for this reason are unable to because it facilitates developers to easily prototype releasing new train future professionals in this environment. According to [17] the applications using mainframe MIPS - Millions of Instructions per Information Technology industry has a demand for professionals is Second, which may be used to execute processes. This workstation not answered, and this because of the deficiency that universities reduces the dependencies because it is an individual unit. A have and the low number of trained professionals in their own university that can not afford to buy a Mainframe machine is able to organizations. buy this unit test, whose can support about 60 or more clients.

Figure 5 – Architecture of On-Line Solution (CICS) Font: [6] Figure 3 – Architecture of a Batch Solution Font: [6] This tool can be appointed as a new application in software testing, and may be part of the process of software development of the VI. CONCLUSION institution, allowing to accurately meet the requirements presented by the area of Software Quality, intending to deliver the final product This research presented a solution for debugging programs with minimum possible error meeting all the requirements generated Mainframe and use your suggestion in the activity of preparing by the end customer. students in learning languages for Mainframe environment. Its use in an educational facility programming language becomes essential as it allows the student to know the procedures of preparation and execution of testing in this environment, step by step. This activity will prepare graduates to join the industry in development teams large applications. The innovative use of this technology in the classroom will meet the requirements presented by industry.

Figure 6 – Characteristics of RDT - RDZ Unit Test Font: [19] It can be concluded from this research that the tool assists the university in teaching programming languages for mainframe environment because it reproduces the exact tests in the IT industry. When entering the labor market the newly graduated student will ease in adapting to a development team or tests, for work with the tool he used in his graduation with the same profile presented by industry because this tool can prepare them for IT Industry. Figure 4 – Environment Distribution Font: [6] VII. ACKNOWLEDGMENTS Like all kinds of tests are complementary they are designed to Authors of this paper would like to acknowledge: make the software into the hands of the customer with the fewest 1 – FAPDF – Fundo de Apoio à Pesquisa do Distrito Federal – A mistakes and less time spent. The hard part is reaching the exact Brazilian fund to support research located in Brasilia city, Distrito equation that is capable of delivering quality products and meeting Federal state. customer expectations. VIII. REFERENCES [1] ARCURI, A.; BRIAND, L. "A Practical Guide for Using Statistical Tests to Assess Randomized Algorithms in Software Engineering". ICSE '11 Proceedings of the 33rd International Conference on Software Engineering. ACM New York, NY, USA, 2011 [2] BANCO CENTRAL DO BRASIL. "Implementation of Basel II in vice/html/communityview?communityUuid=5d4610cf-76f1-46d9- Brazil" in portuguese. Brasilia, Brazil. Available in 806f-88f157367222. Access in 03/09/2013. http://www.bc.gov.br/?BASILEIA2 Acess in 06/12/2012. [20] O'Kane, K.C. "Basic IBM Mainframe Assembly Language [3] BEST MANAGEMENT PRACTICE. "itSFM - An Introductory Programming". Paperback, USA, 2011. Overview of ITIL® V3 - Version 1.0". Berkshire, UK. Available in: http://www.best-management- practice.com/gempdf/itSMF_An_Introductory_Overview_of_ITIL_V 3.pdf Acess in 12/06/2012. [4] DEVMEDIA. "Introdution in Software Test" in portuguese. Available in: http://www.devmedia.com.br/artigo-engenharia-de-software- introducao-a-teste-de-software/8035. Acess in 03/26/2012. [5] GOUVEIA, C.C. “Integration Test for Component Based Systems” in portuguese. Dissertation of Master’s degree in Computer - Universidade Federal da Paraíba, Campina Grande, Paraíba, Brazil, 2004. [6] HUGGLER, P. "Debug Tool in Banco do Brasil" in portuguese. Workshop for Banco do Brasil Employees. Brasília, Brazil, 03/08/2012. [7] IBM. "CICS Transaction Server Glossary. CICS Transaction Server for z/OS V3.2”. IBM Information Center, Boulder, Colorado, USA. September, 2010. http://publib.boulder.ibm.com/infocenter/cicsts/v3r2/index.jsp. Access in 06/02/2011. [8] IBM. "Debug Tool for z/OS". IBM Corporation, Armonk, New York, USA. Available in: http://www- 01.ibm.com/software/awdtools/debugtool/ Access in 05/05/2012. [9] IBM. “IBM previews z/OS Version 1 Release 13 and z/OS Management Facility Version 1 Release 13”. IBM Corporation, Armonk, New York, USA. February, 2011. Available in: http://www- 03.ibm.com/systems/z/os/zos/. Access in 05/05/2012. [10] IBM REDBOOK (2008), “IBM Application Development and Problem Determination Tools V7 for System z”. IBM Corporation, Armonk, New York, USA. Available in: http://www.redbooks.ibm.com/redbooks/pdfs/sg247661.pdf [11] IT WEB - "Delays in IT projects impacting corporate profitability" in portuguese. IT Web, São Paulo, Brazil. Available in http://itweb.com.br/28935/atrasos-em-projetos-de-ti-impactam- lucratividade-das-empresas/. Access in 06/12/2012. [12] KALE, N.D. "The Key Principle of Testing – Testing is Context Dependent". Test Experience Magazine, March/2011. Available in: http://www.istqb.org/references/articles/istqb-related-articles.html. Access in 08/01/2012. [13] MAIRHOFER, S.; FELDT R.; TORKAR, R. “Search-based software testing and test data generation for a dynamic programming language”. GECCO '11 Proceedings of the 13th annual conference on Genetic and evolutionary computation. ACM New York, NY, USA, 2011. [14] MALZ, C.; SOMMER K.; GÖHNER, P.; VOGEL-HEUSER, B. "Consideration of Human Factors for Prioritizing Test Cases for the Test". EPCE'11 Proceedings of the 9th International Conference on Engineering Psychology and Cognitive Ergonomics. Springer-Verlag Berlin, Heidelberg, 2011. [15] OFFICIAL ITIL® WEBSITE. "Information Technology Infraestructure Library". Buckinghamshire, UK. Available in: http://www.itil-officialsite.com/ Access in 06/12/2012. [16] PRESSMAN, R. S. “Software Engineering”, McGraw-Hill International Editions, Artmed, 2006. [17] NATION CAREER SERVICE. "Strong demand for IT professionals – and it’s predicted to rise ". Available in: https://nationalcareersservice.direct.gov.uk/aboutus/newsarticles/Page s/News-DemandForITPro.aspx. Access in 03/09/2013. [18] IBM. "Modern development tools for mainframe application development". Available in: http://www- 01.ibm.com/software/rational/products/developer/systemz/. Access in 03/09/2013. [19] IBM. "Rational System z Development and Testing Hub". Available in: https://www.ibm.com/developerworks/mydeveloperworks/groups/ser