4483 Software Technology 1 and 8995 Software Technology 1 G

{`
University of Canberra
Faculty of Science and Technology 
4483 Software Technology 1 and
8995 Software Technology 1 G
Semester 1, 2020
`}

The SpaceW Cubesat planner

Assignment Briefing:

The wonderful company, SpaceW, is a fictional company that makes its money by providing orbital services (aka, blasting rockets into space). They are ramping up spaceflights; to help them they need a planning and costing program that can produce a report on the profitability of CubeSat launches.

For the curious, CubeSats are generally launched as a secondary payload, on launches of larger satellites.

The output of the system is a one online query and two reports. The online query advises how profitable a single CubeSat launch is likely to be and provides a ‘guideline’ price to the customer. The input for this option is to come from the keyboard and the program must not crash, no matter what rubbish is typed in. Obviously incorrect inputs should generate sensible error messages.

The reports are summaries of all the CubeSat launches for a given month or launch. The input for this option is to come from an input file (comma separated) with one line per CubeSat. For the loading report, the file may contain more than one launch. This file may have trailing blank lines.

The reports are:

  • Profit report – effectively the same information as the online query summed up for a month;
  • Loading report for a given launch to help engineers position the CubeSats for launch. (For a bonus point or two you can enhance this option). ?????????????? (The HD level option worth only 4 marks and very optional)

Space vehicles can be launched into many standard orbits, but SpaceW limits CubeSats to: LEO (low earth orbit equatorial) and LEOP (low earth orbit polar).

You program needs to do the following (also see marking rubric below):

  • Show a small menu with 5 options (console input)
    • Online pricing Query;
    • Profit report;
    • Loading report; and
    • Exit
  • The loading report is focused on producing a loading guide and determining spare capacity (which can still be sold) or detecting overselling for a given launch. It’s optional and worth only a few marks – see marking guide.
  • The two report options process a file. The file is the monthly orders file for a given company. Several of these input files will be provided for testing and mandatory testing. (See format below.)

Monthly-Orders format (input file) comma separated

Field Number

Name

Contents

1

Date

The date of the order in format dd/mm/yy

2

Launch ID

The launch ID; a 10-character code unique to each launch

3

Client

The client Id (a string of up to 10 characters)

4

Orbit

LEO or LEOP

5

Service

ORBC1U, ORBC2U, ORBC3U, ORBC6U

6

Customer Discount

As a percentage (i.e. 1.3 is 1.3%)

(This is negotiated by the salesperson and can be any value within the range 0 to 25, but the sales manager can discount up to 30% for ‘community’, and loyalty reasons)

7

Satellite ID

A string of up to 20 characters

To keep it simple no launches are ever done on leap days (29 Feb) and it is not necessary to check that it’s a valid date To make your life a bit easier you can assume the date format in the file to be dd/mm/yy so you may get 01/07/19 but you won’t get 1/7/19. Which makes sorting and editing a bit easier.

Below is the test file Oct2021.txt (which I supply for your testing)

19/10/21,HAWK21018,ESAA,LEO,ORBC2U,20,WEATHER014

19/10/21,HAWK21018, NASHA,LEO,ORBC1U,21.5,TESTGRAV

Below is the test file Nov2023.txt (which I supply for your testing)

03/11/23,HAWK23028,ESAA,LEO,ORBC2U,22.1,MOONZERO2

03/11/23,HAWK23028,NASHA,LEO,ORBC6U,21.5,MINITELESCOPE

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC3U,30,PrimaryCharity

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES01

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES02

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES03

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES04

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES05

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES06

03/11/23,HAWK23028,BINCPRIVAT,LEO,ORBC1U,6.12,ASHES07

03/11/23,HAWK23028,TICK,LEO,ORBC2U,7,TICK2UA321D

03/11/23,HAWK23028,TICK,LEO,ORBC6U,7,TICK27

19/11/23,HAWK23029,ESAA,LEOP,ORBC2U,20,WEATHER019A

19/11/23,HAWK23029,NASHA,LEOP,ORBC1U,21.5,TICKLLE

19/11/23,HAWK23029,MARZ,LEOP,ORBC6U,26.0,MARSEXP1

19/11/23,HAWK23029,MARZ,LEOP,ORBC6U,26.0,MARSEXP2

NOTE: for simplicity’s sake there will never be more than 99 lines in the file.

I also provide an error file example Oct2021err.txt

SpaceW Launch services

Service Code

Description

Cost$ US LEO

Cost$ US LEOP

Price US LEO

Price US LEOP

ORBC1U

One micro satellite 10x10x10cm (size 1)

365,000

379,000

500,000

600,000

ORBC2U

One micro satellite 10x10x20cm (size 2)

693,000

758,000

950,000

1,100,000

ORBC3U

One micro satellite 10x10x30cm (size 3)

1,015,000

1,097,000

1,400,000

1,550,000

ORBC6U

One micro satellite 10x20x30cm (size 6)

1,403,000

1,653,000

2,300,000

2,400,000

All Cubesats ride share with another payload in a similar orbit.

They are launched by the CS-dispenser (see below) which presents the interesting HD level challenge for this assignment.

Customers table (you only need the code)

Code

Name

Contact name

Address

ESAA

Europe Systems Alternative Agency

Jean-Claude Junxer

23 Razor Road Belconnen ACT

2617

NASHA

National Air Space Hash Agency

Jimmy Briden

2 Mashup Drive

Bruce ACT

2617

ASA

Aussie Space Agency

Megan Clock

Flat 31/a, Bax Units

Stix St,

Marble Bar, WA

6760

TICK

Tick Incorporated

Mark Watson

87 Race Drive Bathurst, NSW

2795

BINCPRIVAT

Byer Private Space Incorporated

Marilyn Hewson

212 Webly Drive,

Canowindra, NSW

2804

CODC

Corporate Space Trust

‎Zhang Chen

212 Scorch Drive,

Beltana, SA

5730

MARZ

The Mars Gen Inc

Cool Dude

26 O’Conner’s Road,

Werribee South, VIC

3030

MANDATORY TESTING:

Most importantly your program must work and be tested, you need to provide a test plan and show how you tested the program including evidence of testing.

You may want to create additional test files; if so let us know (by providing evidence in your submission) so we can give you marks for them (providing they are sane, ie relevant and reasonable).

Some tests test error handling.

YOU MUST Run (providing evidence that you have executed the run) the following mandatory tests:

Test Id

File

Menu Option

Notes

MAND TEST1

NONE

online query

CODC, LEOP launch of CubeSat ORBC3U, with an 11% discount

MAND TEST2

NONE

online query

Error handling (see note below)

MAND TEST3

MAND1.txt

Profit Report

MAND TEST4

MAND4.txt

Profit Report

Error handling

MAND TEST5

MAND2.txt

Profit Report

MAND TEST6a

MAND3.txt

Loading Report

For launch HAWK2025X

MAND TEST6b

MAND1.txt

Loading Report

For launch HAWK23029

You must write, run & provide evidence you have run, MAND TEST2; its purpose is to test the online query, specifically that it can detect bad input without crashing. (Worth 2 marks).

Calculations:

I kept these deliberately simple, most of the assignment is editing and checking input and only the loading report has significant data processing (not calculations, but allocations – still data processing).

Example Calculation 1:

ORBC1U to LEO with 5% discount for Esaa

Cost 365,000

Price 500,000

500,000 * 5% = 25,000

So quote is 500,000 – 25,000 = 475,000

Profit is 475,000-365,000 = 110,000

Example Calculation 2:

The file

19/10/21, HAWK21018, ESAA, ORBC2U, 20, WEATHER014

19/10/21, HAWK21018, NASHA, ORBC1U, 21.5, TESTGRAV

Cost Satellite WEATHER014 is 693,000

Cost Satellite TESTGRAV 365,000

Price Satellite WEATHER014 950,000

Price Satellite TESTGRAV 500,000

Discount Satellite WEATHER014 20%

Discount Satellite TESTGRAV 21.5%

WEATHER014

950,000*.20 = 190,000

Quote= 950,000 – 190,000 = 760,000

Profit = 67,000 (760,000-693,000)

TESTGRAV

500,000 * 21.5% = 107,500

So quote is 500,000 – 107,500 = 392,500

Profit is 475,000-365,000 = 27,500

Total profit for file is: 94,500

Total Revenue for file is: 1,152,500

Example Calculation 3

Example Calculation 3 (for one launch code):

Allocate satellites c1a, c1b, c1c (all size 1 CubeSats)

Allocate satellites c2a, c2b (all size 2 CubeSats)

Allocate satellites c3b, c3c, (all size 3 CubeSats)

Allocate satellites c6b, c6c, (all size 6 CubeSats)

First allocate the size 6 sats to tube 2

Tube1

Tube2

c6b, c6c

Tube3

Then allocate the size 3 sats to tubes 1,3

Tube1

c3b, c3c

Tube2

c6b, c6c

Tube3

Then allocate the size 2 sats to tubes 1,3

Tube1

c3b, c3c, c2a

Tube2

c6b, c6c

Tube3

c2b

Finally allocate the size 1 sats to tube 1,3

Tube

Satelites

Total

Tube1

c3b, c3c, c2a, c1a

3+3+2+1 = 9

Tube2

c6b, c6c

6+6=12

Tube3

c2b, c1a, c1b, c1c

2+1+1+1 = 5

Tube can hold 6 so spare space is 6-5 = 1

Spare space (1/2/3) = 1U

Spare space must be represented as two numbers; one is the spare 6U number and the other the spare 1/2/3U number.

ADDITIONAL INFORMATION:

The system works in dollars and cents; values should be rounded to the nearest cent.

All non-numeric values must be input edited so incorrect codes cannot be entered.

All input numeric fields must be range edited, and errors handled. For this assignment the input of non-numeric data into numeric fields will be tested. This also includes data read from the input files

The system must also loop – to do more than one menu option in a single run, you don’t need an exit option on every input – but you must have a way to cleanly leave the system, with a message “** Program ending **” or something similar.

Where required, your program should ask for the name of the input file (e.g. “Oct2021.txt”), be able to locate it and read it into your program.

THE CS-DISPENSER DETAILS

The CS-dispenser Comprises 3 tubes to load with satellites and push them out. Tube capacity is summarised in the following table.

Tube Number

Kind of satellites

Maximum loading size

1

ORBC1U, ORBC2U, ORBC3U

9

2

ORBC6U

12

3

ORBC1U, ORBC2U, ORBC3U

6

This means that tube 2 can take 1 or 2 size 6 CubeSats

Tube 1 can take any combination of CubeSats of the types shown where size totals less than or equal to 9

Tube 3 can take any combination of CubeSats of the types shown where size totals less than or equal to 6

For example: tube 1 could take 2xORBC3U plus 1x ORBC2U plus 1x ORBC1U; or

tube 1 could take 1xORBC3U plus 2x ORBC2U plus 2x ORBC1U

Obviously, you need to load the smallest payloads last while you can do it without using arrays; arrays clearly help. To not use arrays, you need to process the file more than once.

Getting started:

  1. Read the assignment several times over to get a feel for the assignment, it’s mainly string and error handling with relatively little math.
  2. Start with the menu program. Create the basic four option menu where each option just prints a line that says – option … selected. When I did this, I wrote a separate method for each option which helps keep code manageable (it’s not necessary to do this).
  3. Check that Exit works and that the menu loops. If you can’t get this far talk to your tutor or go to PALS to get help.
  4. Now create a good test plan (this is worth up to 7 marks – easy marks in my opinion), you should create some new test case files, ensure you create and document MAND TEST 2.
  5. Because you did Assignmnet1, you will note that the option “on line query” is very close to Assignment1 in its general nature – so do it first, test and document the first Mandatory test.
  6. Next do the Profit Report. This not much more that a read and print file loop with the calculations from the previous step, so it should pose little problem to code. Do related mandatory tests and document them.
  7. If you are really “%&$#?@!” for time then do a reflection report, make sure you have a good test plan (with extra documented test cases), zip up and send it in and pray that it all works cause you have no spare marks, but you could pass the assignment. (I don’t recommend this but stuff happens).
  8. Ok so you want a better chance of a pass, then do the Loading Report (it is really optional) but gets you the last few marks.
  9. The assignment is done, don’t screw it up now! Write a reflection report making sure you have a good, well documented test plan (with extra documented test cases), zip up and send it in. If you did it well, you should get 25 out of 25.

HINTS: and help

HINT1: To document a test case: take a screen shot (I use alt print screen, then paste in windows).

HINT2: If you don’t want to use arrays, the sorted Loading Report is going to be challenging. You will need to code multiple file passes.

HINT5: here are three code fragments to help with date editing. The odds and ends slides and lecture will help here as well.

{`

SimpleDateFormat df;

…………………..

Date ddd=new Date();

boolean ok=true;

try

{

ddd = df.parse(ss[0]); // date

}

catch (ParseException e)

{

System.out.println("File input error>> Date Parse Failed");

ok=false;

}

……………………………..

if (ok)

{

launchDate=ss[0];

lDate=ddd;

}

else

{

launchDate="";

lDate=new Date(0);

return;

}

`}

Marking Guideline – this is slightly different from the rubric - markers will use it, it’s a guideline only

(Marked out of 27, but marks above 25 are truncated to 25 marks)

Marks

Feature

5

Good test plan and evidence of testing

Test plan should include:

· tests from the assignment

· mandatory tests

· additional tests created by the student

· the results of running the tests

A program must be supplied but it does not have to work particularly well to get these marks.

2

Good Mand 2 test.

A program must be supplied but it does not have to work particularly well to get these marks.

3 to 4

Your program code, accuracy, functionality and formatting

If the program wont compile or run you get 0 here

1

You used arrays – more than in string split

4 plus 2 Possible safety net points

A menu option to do the loading Report

3

Reflection Report - (half a page to one page in length, an honest appraisal of how you did the assignment, what you learned and what you would do different if you had to do it again)

6

Results of 6 mandatory tests

1 for each correct and documented test

-1 to -25

Fails additional tests not provided to students but run by marker. This is mainly to catch cases where the students submitted testing evidence which is not produced by the program submitted; or there is reason to believe the program is significantly faulty in some way not found by student testing.

-1 to -25

The program is not supplied as a .zip file. This penalty is applied if the submission is a .tar .gz .7z .rar .arc … or other non-zip format. (-30 is assuming we can’t un-archive it)

-1 to -3

Program has non-fatal significant bug

Maximum of 12marks for assignment

Program fatally crashes or won’t compile or is basically not working

Minimum of 13 marks for assignment

Program basically works and is acceptably documented with an ok test plan.

-1 to -25

Program is not a BlueJ project. My tutors are not responsible for converting your project from (insert your IDE here) to BlueJ.

Late submission

5% per day up to 1 week late then a mark of 0

Watch the Canvas site for late class wide extensions that may be given

NOTE: The Canvas site will be open for about an extra 2 week to catch very late submissions for students on a RAP or who have medical certificates

Example run screenshots