Software Engineering › Past questions › 2023
Past questions: 2023
8 questions.
2023 2 marks Extended response The Software Engineering Project (Year 12) Prototypes
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 21, with NESA Marking Guidelines
Outline how a prototype can be used in the development of a software application. | 2
Marking criteria
[Question 21] Criteria | Marks • Demonstrates a sound understanding of the use of prototyping | 2 • Demonstrates some understanding of prototyping | 1
Sample answer
Sample answer: A prototype can be used to show screen design and navigation, to clarify understanding of the system and get client feedback.
2023 3 marks Extended response The Software Engineering Project (Year 12) Communication with clients; development cycle
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 22, with NESA Marking Guidelines
Explain why it is important for developers to communicate with their clients. Refer to | 3 specific stages of the software development cycle in your answer.
Marking criteria
[Question 22] Criteria | Marks • Explains the importance of communication over different stages in the software development cycle • Provides ONE benefit of communication, with reference to a stage in the software development cycle OR • Provides some benefits of communication • Demonstrates some understanding of the need for communication in software development
Sample answer
Sample answer: Without a clear understanding of client needs and without ongoing communication during the defining and planning stages, there is a risk that the final product does not meet their needs or that it becomes increasingly expensive to make necessary changes. Communication with the client during the testing stage is important in the development of relevant test data and for thorough evaluation of the software.
2023 5 marks Extended response Secure Software Architecture (Year 12) Security and authentication
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 23, with NESA Marking Guidelines
An online medical database stores the medical history of patients. It is updated each time a person seeks medical treatment. (a) | Give TWO reasons why security is important for this database. | 2 (b) | To provide increased security for the database, two-step authentication is | 3 implemented which requires a user to: • provide a valid username and password • enter an automatically generated six-digit verification code which is sent to their mobile phone. Complete the system flowchart for this two-step authentication process. UserID and password
Marking criteria
[Question 23 (a)] Criteria | Marks • Provides TWO reasons for the importance of security of this database | 2 • Demonstrates some understanding of the importance of data security | 1 Criteria | Marks • Provides a substantially correct system flowchart for the authentication process, using appropriate symbols • Provides a partially correct system flowchart | 2 • Provides a diagram that shows some understanding of the process | 1
Sample answer
Sample answer: Unintentional/malicious changes to the data may cause harm to the patients. Privacy of the patient may be compromised if the data is made public.
[Question 23 (b)] Sample answer:
2023 9 marks Extended response The Software Engineering Project (Year 12) Code reading, maintainability and testing
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 26, with NESA Marking Guidelines
Consider the following module. 1 | BEGIN CustomerOrders 2 | REPEAT 3 | Tries = Tries + 1 4 | Get UserId, Password 5 | CheckPasswordCorrect (UserId, Password, OK) 6 | UNTIL Tries > 3 OR OK = “Y” 7 | IF OK = “Y” THEN 8 | Open TodaysOrders for Input 9 | Read the next record from TodaysOrders into Order_Rec 10 | WHILE NOT EOF 11 | IF Order_Rec.CustId = UserId THEN 12 | PrintDetailsofOrder (Order_Rec) 13 | ENDIF 14 | Read the next record from TodaysOrders into Order_Rec 15 | ENDWHILE 16 | Close TodaysOrders 17 | ELSE 18 | InvalidUser (UserId) 19 | ENDIF 20 | END CustomerOrders (a) | Why is the Read statement needed in both line 9 and line 14? | 2 (b) | Give TWO reasons why the code in the CustomerOrders module is easy to | 3 maintain. Support your answer with examples from the module. (c) | The logic in the CustomerOrders module has been successfully tested with small | 4 files of test data, and using stubs in lines 5, 12 and 18. The module is to be included in a larger system, with the stubs replaced with existing subroutines that are known to work. Explain why both module and system testing are now required.
Marking criteria
[Question 26 (a)] Criteria | Marks • Demonstrates a sound understanding of why both Read statements are needed • Demonstrates some understanding of a read statement | 1 Criteria | Marks • Provides TWO reasons why the code is easy to maintain • Includes examples from the code • Provides ONE reason why the code is easy to maintain, using an example from the code OR • Provides TWO reasons why the code is easy to maintain • Demonstrates some understanding of code maintenance | 1 Criteria | Marks • Provides a thorough explanation of the need for both module and system testing in this scenario • Demonstrates a sound understanding of the need for module and system testing • Demonstrates some understanding of module and/or system testing | 2 • Demonstrates some understanding of testing | 1
Sample answer
Sample answer: Line 9 provides a priming read from the file and thus enables the EOF condition in line 10 to be tested, allowing for an empty file. Line 14 provides subsequent records for processing and provides the terminating condition when there are no more records.
[Question 26 (b)] Sample answer: The use of meaningful variable and module names, such as UserID and CheckPasswordCorrect, assists maintenance programmers to quickly understand the purpose of the code. Including calls to subroutines in lines 5 and 12 enables maintenance programmers to easily locate the detailed logic that may need to change.
[Question 26 (c)] Sample answer: Module testing will confirm that the module works, including the logic of the called modules with parameters being passed appropriately, for example when calling CheckPasswordCorrect with its three parameters. During system testing, live data will provide expected volumes of data which may show potential issues with performance and response times when accessing both files. Live data also ensures that unexpected combinations of data are well handled compared to the minimal conditions when using selected test data. It also tests for missing files or inappropriate file types or record formats.
2023 10 marks Extended response The Software Engineering Project (Year 12) User interface, structure chart, quality assurance
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 27, with NESA Marking Guidelines
A parking station requires a software application which allows customers to make an online booking for a parking space. (a) | When making a booking online, customers will input: | 3 • | date • | time of entry • | time of exit • | car number plate eg SDD223 • | large or small vehicle. Design a user interface for capturing these booking details, using appropriate screen design elements. Customers will be charged at an hourly rate, based on their actual entry and exit times. When a customer arrives at the parking station, the car number plate will be scanned. The system uses this to retrieve their booking record, and update it with the current time. The boom gate then opens to allow entry. On leaving the car park, the car number plate is scanned. The system retrieves the booking record and calculates the cost using the hourly rate. The customer swipes their credit card, their account is debited and the boom gates open. (b) | Construct a structure chart to represent this system. | 4 (c) | Describe how this system can be evaluated with reference to TWO quality | 3 assurance criteria.
Marking criteria
[Question 27 (a)] Criteria | Marks • Produces a well-designed interface which uses appropriate screen design elements • Produces an interface with some appropriate elements | 2 • Provides a diagram that demonstrates some understanding of the system Criteria | Marks • Produces a substantially correct structure chart that represents the system • Produces a structure chart that represents most components of the system • Produces a chart with some relevant components | 2 • Provides a diagram that demonstrates some understanding of the system Criteria | Marks • Describes how the system can be evaluated with reference to TWO appropriate quality assurance criteria • Shows some understanding of quality assurance | 2 • Provides some relevant information | 1
Sample answer
Sample answer:
[Question 27 (b)] Sample answer:
[Question 27 (c)] Sample answer: The functionality of the system could be evaluated by viewing samples of transactions and checking that the correct fees were charged, based on the recorded entry and exit times. The ease of use of the system could be evaluated by presenting a sample of users with a survey requiring them to comment on their experiences of the process and analysing the responses.
2023 6 marks Extended response The Software Engineering Project (Year 12) Desk check and debugging (validation)
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 28, with NESA Marking Guidelines
In a retail business, all product codes must start with an uppercase letter and then be followed by one or more lowercase letters. The algorithm below is designed to validate a product code. It contains errors. Note that Extract(string, start, N) returns N characters from a string, starting from position start. Eg Extract(“Names”, 3, 2) returns “me”. Line numbers have been provided for reference. 10 | BEGIN validate 20 | OK = “F” 30 | Get ProductCode 40 | Len = Number of characters in ProductCode 50 | WHILE OK = “F” AND ProductCode < > “Q” 60 | OK = “T” 70 | IF Extract(ProductCode, 1, 1) is not an uppercase letter THEN 80 | OK = “F” 90 | Display “Not uppercase” 100 | ENDIF 110 | FOR Count = 1 to Len 120 | IF Extract(ProductCode, Count, 1) is not a lowercase letter THEN 130 | OK = “F” 140 | Display “Not all lowercase” 150 | ENDIF 160 | NEXT Count 170 | IF OK = “F” THEN 180 | Display “Invalid code” 190 | Get ProductCode 200 | ENDIF 210 | ENDWHILE 220 | END validate (a) | Perform a desk check of the algorithm using the test data “p3”, “Pad”, “Q”, “X”. | 3 OK | ProductCode | Len | Extracted | Count | Display character (b) | The algorithm contains errors. | 3 Identify TWO errors and suggest how they can be corrected. Refer to line numbers in your answer.
Marking criteria
[Question 28 (a)] Criteria | Marks • Provides a substantially correct desk check | 3 • Provides a partially correct desk check | 2 • Demonstrates some understanding of the algorithm | 1 Criteria | Marks • Identifies TWO errors and suggests ways to correct them | 3 • Identifies ONE error and suggests a way to correct it OR | 2 • Identifies TWO errors • Identifies an error | 1
Sample answer
Sample answer: OK | ProductCode | Len | Extracted | Count | Display character F | p3 | 2 T | p F | Not uppercase p | 1 F | 3 | 2 | Not all lowercase Invalid code F | Pad | P T | P | 1 | Not all lowercase F | a | 2 Invalid code T | Q Note: X is not considered
[Question 28 (b)] Sample answer: At line 110 the FOR/NEXT loop counter should start at 2. The value of Len is not being updated for the next ProductCode. Move line 40 to line 55.
2023 3 marks Extended response The Software Engineering Project (Year 12) Algorithm design (menu)
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 30, with NESA Marking Guidelines
The following storyboard shows the navigation for a simple menu structure. | 3 MENU Screen 1 | Screen 1 | Screen 2 | Screen 2 Done | Done Screen 3 | Screen 4 Screen 3 | Screen 4 Quit Done | Done Quit A click on a button on the menu screen generates an appropriate number (from 1 to 4, or 9 if Quit is clicked) which is stored in the variable ButtonClick. A click anywhere else on the screen generates a 0. Write an algorithm for the menu screen that allows a user to access the other screens, exiting when the Quit button is clicked. Do NOT include the logic for any of the other screens.
Marking criteria
[Question 30] Criteria | Marks • Provides a substantially correct algorithm that addresses the following features: – Display menu screen – Get a non-zero ButtonClick – Perform correct subroutine – Loop until Quit (9) is selected • Provides an algorithm that attempts to address some of the features | 2 • Demonstrates some understanding of the problem | 1
Sample answer
Sample answer: BEGIN Menu REPEAT Display MenuScreen REPEAT Get ButtonClick UNTIL ButtonClick <> 0 CASEWHERE ButtonClick is 1 | : Screen1 2 | : Screen2 3 | : Screen3 4 | : Screen4 Otherwise : | Quit ENDCASE UNTIL ButtonClick = 9 END Menu
2023 8 marks Extended response The Software Engineering Project (Year 12) Test data and algorithm design (date validation)
NESA 2023 HSC Software Design and Development (OLD syllabus) - Section II Question 32, with NESA Marking Guidelines
An algorithm is required to convert a date in DD/MM/YYYY format into its equivalent long date such as 29 October 2023. The entered date will always be 10 characters and in the format DD/MM/YYYY. The date is validated as follows: • the month must be a valid month (from 1 to 12) • the day value must be valid for that month (for example, no more than 28 for February – ignore leap years). (a) | Complete the table with THREE items of test data that test different aspects of | 3 the logic of the algorithm. Test data | Reason for inclusion (b) | Design an algorithm to validate a date in the form DD/MM/YYYY and output the | 5 equivalent long date, eg 29 October 2023. Include all meaningful error messages to assist the user to understand why their entered date is not valid. You may use the following two library routines in your pseudocode: • Extract(string, start, N) eg Extract(“Names”, 3, 2) returns “me” • Value(string) converts a string to its numerical value eg Value(“42”) returns 42. You may use the following two arrays (indexed from 1) in your pseudocode. MonthName | DaysinMonth January | 31 February | 28 March | 31 April | 30 May | 31 June | 30 July | 31 August | 31 September | 30 October | 31 November | 30 December | 31 2023 HIGHER SCHOOL CERTIFICATE EXAMINATION Centre Number Software Design and Development Student Number
Marking criteria
[Question 32 (a)] Criteria | Marks • Provides THREE items of test data for different aspects of the algorithm, with corresponding reasons for inclusion • Provides TWO items of test data for different aspects of the algorithm, with some justification • Demonstrates some understanding of test data relevant to this algorithm | 1 Criteria | Marks • Provides a substantially correct algorithm that addresses the following features: – Validates the inputted date – Uses appropriate data structures and library routines – Outputs the correct long date – Provides meaningful error messages • Provides a substantially correct algorithm that addresses most of the features • Provides an algorithm that addresses some of the features | 3 • Provides an algorithm that attempts to address one of the features | 2 • Demonstrates some understanding of the problem | 1
Sample answer
Sample answer: Test data | Reason for inclusion 01/15/2022 | Check that the month is valid (1−12) 31/06/2023 | Check correct number of days in month 19/04/2022 | Verify that correct long date is produced
[Question 32 (b)] Sample answer: BEGIN date_conversion Get InDate MM = Extract(InDate, 4, 2) Month = Value (MM) DD = Extract(InDate, 1, 2) Days = Value (DD) YYYY = Extract(InDate, 7, 4) validmonth = CheckMonth(Month) IF validmonth THEN validday = CheckDays(Month, Days) IF validday THEN Display DD + “ ” + MonthName(Month) + “ ” + YYYY ELSE Display “Your days” + DD “are not valid for your entered month”; MM ENDIF ELSE Display “Your entered month must be a valid number between 1 and 12” ENDIF END date_conversion BEGIN CheckMonth(MM) flag = 1 IF MM < 1 OR MM > 12 THEN flag = 0 ENDIF RETURN flag END CheckMonth BEGIN CheckDays(Month, Days) flag = 1 IF Days > DaysinMonth(Month) OR Days < 1 THEN flag = 0 END IF RETURN flag END CheckDays