Ping-source`s software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another.


Ping-source aspires to be an organisation that reflects the globally diverse audience that their products and technology serve. Ping-source believes that in addition to hiring the best talent, a diversity of perspectives, ideas and cultures leads to the creation of better products and services.

Ping-source is and always wants to remain an engineering company. Ping-source hires people with a broad set of technical skills who are ready to take on some of technology`s greatest challenges and make an impact on millions, if not billions, of users. At Ping-source, engineers not only revolutionize search, they routinely work on massive scalability and storage solutions, large-scale applications and entirely new platforms for developers around the world.

Ping-source`s software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Ping-source products need to handle information at massive scale and extend well beyond web search.

You have recently joined Ping-source and is given a range of tasks during the probationary one-year period.

Task 1 - Report

You need to create a report that will cover the basics of software engineering. You are required to do the following:

a. First part of the report covers modelling languages and their benefits. In the introduction, describe different modelling languages followed by an explanation of the benefits of using modelling languages in system design.

b. Second part of the report covers the management of software testing using different strategies. Start the second part with an evaluation of how software testing differs for different strategies.

c. To conclude the report, describe the stages of system testing and evaluate different software testing tools available for the automation of the testing process.

Task 2 - Lab demonstration

You had a busy first month and the report is now accepted by the management. Now you are asked to demonstrate your software development skills. You are required to demonstrate a series of activities as following:

Design and implement UML

An automated teller machine (ATM) or the automatic banking machine (ABM) is a banking subsystem (subject) that provides bank customers with access to financial transactions in a public space without the need for a cashier, clerk, or bank teller.

Customer (actor) uses bank ATM to Check Balances of his/her bank accounts, Deposit Funds, Withdraw Cash and/or Transfer Funds. ATM Technician provides Maintenance and Repairs. All these use cases also involve Bank actor whether it is related to customer transactions or to the ATM servicing.

On most bank ATMs, the customer is authenticated by inserting a plastic ATM card and entering a personal identification number (PIN).

(Extension) ATM Technician maintains or repairs Bank ATM. Maintenance use case includes Replenishing ATM with cash, ink or printer paper, Upgrades of hardware, firmware or software, and remote or on-site Diagnostics.


a. Design and build class diagrams using a UML tool for the above user case.
b. Define/refine class diagrams derived from the given extension code scenario using a UML tool of your choice.
c. Build an application derived from UML class diagrams using your preferred language.

Task 3 - Lab demonstration

You have successfully completed task 2 and now you are allocated with a final task to complete the probationary period.


You are asked to (re)create the popular retro ‘Simon` game. In the game ‘Four` coloured buttons light up in a specific pattern. After displaying the pattern, the player must repeat the pattern by clicking the buttons in proper order. The pattern gets longer each time the player completes the pattern. If the player presses a wrong button, the game ends. At the end of the game, the software should display the current score and also the top 10 scores.

a. Develop software using a variety of constructs and apply collections and generics in developing software.
b. Apply different testing techniques to validate code.