ISEN1000 – Introduc0on to Software Engineering
Assignment Specification
Learning objectives
1. Design and develop software adhering to basic modularity concepts, verify whether code is following basic modularity concepts, and refactor if not.
2. Design test cases using black-box and white-box testing approaches.
3. Implementing test codes based on test cases, execute them, and test a production code.
4. Use version controlling to keep track of a small software engineering project.
1. Introduction
Basic concepts of version controlling, modularity, and so8ware tes:ng are the key topics you have learned in the second half of this unit. This assessment evaluates your competency in above areas of so8ware engineering. It expects the knowledge you have gained via lectures, prac:cal classes, and con:nuous assessments to design and implement a simple piece of so8ware following modularity principles, verifying your code against a review checklist and refactor it, if needed, and design test cases and test the code you have developed. You will document your work in each stage so that another person can understand the work you have done and reflect on your own work for improvements. You will use a version control system to keep track of all the ac:vi:es of the whole assessment task.
Your work will be assessed based on the code, documenta:on you produced, and a demonstra:on of your work.
Mark of the assignment is given out of 100 and the assessment is worth 50% of your final mark (overall mark of the unit) as specified in the unit outline.
2. Scenario
Your team is developing a program to manage college :metables. There will be mul:ple units being
run. With each unit having mul:ple classes and each class having mul:ple students.
Each unit will need to:
• Display its name
• Display Unit ID
• Display the UC and contact details
• Classes in that unit
Each Class will need to:
• Display its name
• Display teacher and contact details
• Display its :me
• Show the students enrolled into that class
Each Student will need to:
• Display name
• Display Student ID
• Display Contact details
• Display classes they are enrolled into
Your program overall will need to:
• Add/Remove Units
• Add/Remove Classes
• Add/Remove Students
• Validate all data
Your program will not need to (but can be included if desired):
• Check for student :metable clashes
• Check for class clashes
• Manage student grades
3. Detailed description
Considering the scenarios given above, you will
(a) design and implement suitable produc:on code following modularity guidelines
(b) Design test cases and test your produc:on code using proper tes:ng processes.
(c) You will use basic version control methods to keep track of your work.
You are expected to cover all func:onali:es expected in the scenarios, with any suppor:ng
func:onality needs to fulfill the given tasks, such as a checking the validity of inputs (as per the scenarios). When designing your produc:on code, you must think about tes:ng also.
Choosing how to take input, and make available output:
You are free to decide how to handle imports/exports of your software modules. Imports can be parameters, keyboard inputs, or text files. Exports can be available via return values, displaying on screen, or wri:ng to a text file.
You are expected to think about how easily the overall software you design can accommodate
more func:onali:es later and reusability (such as providing more informa:on when a Lucky Number is known).
Your work will be organized in seven parts as described below.
1. Version Control: Apply version control process to keep track of a simple so3ware project
[16 marks]
First, read all assessment tasks and get a clear idea of what you are supposed to do in this assignment. You are supposed to use version controlling and keep track of all your work (documents and code both) relate to this assignment in a single Git repository. All your
code must be in a directory called “code” and documents should be in a directory called “documents”.
Derive a short plan, iden:fying what branches you will need, and why you need them, and when the branches will be merged.
Now, create a Git local repository (do not use GitHub) for this assessment using your
surname and ID as part of the repository name following the format
_<firstname>_ISErepo). Commit all code and documents you create in the rest of the assessment as you create and modify them. Make sure you commit your
changes as and when you are doing them, but not all at once at the end.
Note: There is no hard rule about what each commit should contain, and you are expected to show your ability to use version control meaningfully.
2. Modularity: Design modules following good design principles [ 9 marks]
Looking at the given scenario, iden:fy most suitable modules you will need for a so8ware to achieve the required func:onality, considering the good modularity principles discussed in lectures/ worksheets.
a. Write down module descrip:on/s for modules you decided to implement. You must apply good modularity principles you have learned in lectures/ worksheets when iden:fying and planning modules. Each module descrip:on should include short, meaningful name, clear and detailed explana:on on what the intended task of the module, how it gets inputs to do the intended task and how the outputs make available, as shown in the module descrip:on examples of Lecture
8, slides 24-39, Lecture 9 slides20-33.
How imports, if any, of the modules are to be handled:
You are free to decide which input method/s are to be used in which of your modules (parameter passing, keyboard entry, or reading from text files.).
How exports(results), if any, of the modules are to be handled:
You are free to decide which input method/s are to be used in which of your modules.
(Return values, display on the screen, or write to files).
However, in the Tes:ng sec:on, you must demonstrate your ability to test different input methods/output methods. Therefore, design different modules to use different import/export methods so that you can demonstrate tes:ng skills.
You should decide on suitable, meaningful names for all modules and variables. You may make assump:ons, if you think they are required, and state them clearly.
b. Explain your design decisions, and how good modularity principles are considered in your modules.
Note 1
In this unit, “modules” refers to any sub-part of a program. The terms “module” and “sub- module” are used interchangeably. The module/s you design in this stage affect the rest of your assessment. Therefore, read the whole assignment properly before finalizing the answer for this sec0on. You are strongly advised to use itera0ve approach especially for task 2 and 4.
3. Modularity: Implemen:ng the produc:on code, reviewing, and refactoring [20 Marks]
a. Implement the modules designed in the part 2 above considering the good modularity principles discussed in lectures/ worksheets.
b. You can use either Python (Python3) or Java for your implementa:on. Execute and verify that you have got your code running without syntax errors.
Note: This step will create a produc0on code, not a test code.
c. Create a short review checklist to check whether you have followed good modularity principles. You are expected to cover all basic guidelines covered in lecture 7.
d. Review your code using the prepared checklist, iden:fying any issues. You must use the format suggested in the worksheet 7 to record your results. Each module must be reviewed for modularity issues.
e. If you have iden:fied any issues, refactor your code to address such issues.
Explain how your code is improved now. If no refactoring is required, jus:fy your decision.
f. A8er refactoring, revise your preliminary descrip:ons of your modules and shown as revised module descrip:ons.
4. Test design [25 marks]
a. Black box test design [16 Marks]
Based on the module descrip:ons wrioen by you in part 2 above (OR the revised version a8er refactoring in Part 3 above, if any revision is done), design suitable test cases to test your modules using following methods:
I. equivalence par::oning.
II. boundary value analysis.
You must design test cases using equivalence par::oning approach for all modules you have
defined. You may use boundary value analysis for some of the modules only. Men:on clearly which approach is used in each test design. Describe briefly how you decide your test cases.
b. White-box test design [9 marks]
Look at your code implemented in part 3 above and iden:fy at least two modules where white-box tes:ng approach will be beneficial. Design test cases to cover func:onality of the selected modules using white box tes:ng approach. Test at least two different types of constructs relate to paths you have learned. Indicate clearly which modules are tested with white-box approach. Describe briefly how you decide your test cases.
|
Note 2:
In this sec:on (Test design), showcase your ability to test wide verity of situa:ons:
• Tes:ng test data of different data types: Integers, Strings, Boolean values.
• Tes:ng various forms of inputs: parameter passing, keyboard input, text files.
• Tes:ng various forms of outputs: return values, console outputs, text files. (Refer “General instruc:ons” sec:on for more informa:on)
|
|
Note 3:
Your test data must include following data items among other test data items (in any test cases of your choice, either in a) or b) above):
|
|
Last four digits of your student ID, and your last name as appear in your ID.
|
5. Test Implementa:on [20 Marks]
Implement your test designs for part 4 and part 5 above using either Python or Java. You may use test fixtures to organize your test code. Using a unit test framework is op:onal.
Run your test case and obtain results. Iden:fy any test failures and then aoempt to improve your code.
6. Summary table of your work (Traceability matrix) [ 5 marks]
Produce a table which shows the following informa:on to help you and the marker to check the work you have done (E BB : black-box, WB: white-box P: equivalence par::oning, BVA: boundary value analysis).
|
|
Design of test cases
|
Test code implementaAon and execuAon
|
|
Mod ule
nam e
|
BB
(EP)
|
BB
(BV
A)
|
WB
|
Dat a
type /s
|
Form of Input/ output
|
EP
|
BVA
|
White-Box
|
|
xxx
|
done
|
done
|
not
don e
|
|
|
|
|
|
|
yyy
|
done
|
|
don e
|
|
|
|
|
|
|
….
|
|
|
|
|
|
|
|
|
You may note the total marks as per the above detailed descripAon is 90. The rest ofthe marks (10 marks) will be allocated tomarks of documentaAon (for the Cover page, IntroducAon, Discussion, formaIng etc.) as explained in secAon 7.
4. Documentation
You need to document what you have done in each stage of the assessment so that another person can get a clear idea about what you have done. You must produce a short report, colla:ng all your work as part of your submission.
Your report name must be of the following format:
“ < YourFirstName>__ISEReport”
Your report must bewriSen in markdown. Refer hSps://www.markdownguide.org/ if you are not familiar with the markdown (.md ) format. This file format is helpful when tracking your
documenta0on using a version control system.
Your report should include following sec:ons and content:
a. Cover page [1 mark]
Include the assessment name, your name as in Moodle, Cur:n student ID, prac:cal class (date/ :me). This may not be in a separate page, but as the first thing in your document in a clear
format.
b. Introduc:on [1 mark]
A brief overview of work you have done.
c. Module descrip:ons [7 marks, part 2 of the assessment task]
Original module descrip:ons you have created for part 2 of this assessment.
An explana:on on your design decision, and why you have chosen modules as the way you
have done and any assump:ons you have made, if any.
d. Modularity [10 marks out of 20 marks of the part 3 of the assessment task] A descrip:on on how to run your produc:on code with correct commands.
Sample output of running your produc:on code. You must use screen shots to support your answer in this sec:on.
A brief explana:on on how different modularity concepts is applied in your code.
Your review checklist, results of reviewing your produc:on code using the review checklist, with explana:on on your results, and refactoring decisions.
Revised module descrip:ons resulted a8er refactoring, if any (a8er doing the part 3 of the detailed descrip:on)
e. Black-box test cases [16 marks of the part 4 (a) of the assessment task]
All test cases you have designed for part 4 of this assessment, produced in the tubular test design format shown in lecture 8, assump:ons you made if any, and brief explana:on on your test design decisions.
f. White-box test cases [9 marks of the part 4 (b) of the assessment task]
All test cases you have designed as the answer for part 5 of this assessment, produced in the tubular format shown in lecture 10, brief explana:on on your test design, and any
assump:ons you made.
g. Test implementa:on and test execu:on [3 marks out of 20 marks of the part 5 of the assessment task]
A brief descrip:on of how to run your test code with correct commands.
Results of test execu:on with outputs of test successes and failures, with short discussion of results/improvements from part 5 of this assessment.
You must use screen shots to support your answer in this sec:on.
h. Summary of your work (traceability matrix)[ 5 marks]
Table you have produced in the part 6 of this assessment.
i. Version control [3 marks out of 16 marks of the part 1 of the assessment task]
Log of the use of your version control system (image of the log is sufficient), any explana:on /discussion on version control. (refer part 1 of the detailed descrip:on)
j. Discussion [5 marks]
Reflect on your own work including summary of what you have achieved, challenges you have faced, limita:ons and ways to improve your work with other features you have not considered, and any other informa:on you wish to present.
Your report would be around 12-20 pages.
5. What you will be submitting
Your submission will be done in three steps.
Submission step 1:
Youmustsubmit asigned and dated assignment cover sheet in PDF format to the “Assignment
submission: cover sheet” link provided in the assignment folder. Blank assessment coversheet is
available under Assessments page of Moodle. You can sign a hard copy and scan it, or you can fill in a so8 copy and digitally sign it.
Submission step 2:
Your documenta:on, i.e., your report (refer sec:on4), should be submioedtothe Turni:nlink (“Assignment
submission: step2 documents only”) provided in theassignmensolder. Yourreportsubmioed to this link should beinPDF format.(Youmustconvertyourreportin markdownformat toaPDFfilebeforesubmi[ng tothis link). Your report namemust follow the following format:
“ __ISEReport”
Submission step 3:
You must submit single zip file of all the work produced in this assessment to the “Assignment submission: step 3” link provided in the assignment folder. First, create a folder with name
< YourFirstName>_ student ID>_ISEAssignment. Then place all your work inside this folder. Example : JohnWhite_12134567_ISEAssignment
Avoid using file formats other than .zip file to reduce delays in marking.
To include hidden .git repository in zip file run zip command with -r switch, i.e. zip -r <file_name>
The folder should contain:
a. All you code files: You must submit all your code files (produc:on and test codes), any sample data files (if created) and any other files used/ resulted in part 3 and 6 of this assessment. Name your files in appropriate manner.
b. A single Readme file: a short text file indica:ng the purpose of each file you have submioed.
c. .git sub directory of the Git repository you have used in the assessment.
d. Your report (refer sec:on 4) in markdown format ( .md file)
e. Your report (refer sec:on 4) in PDF format which was already submioed to the Turni:n link.
f. Your signed and dated assignment cover sheet in PDF format which was already submioed to the “Assignment submission cover sheet” link.
Zip this folder and submit to the “Assignment submission: step 3” provided in the assignment page.
Make sure that your zip file contains what is required. Anything not included in your submission may not be marked, even if you aoempt to provide it later. It is your responsibility to make sure that your submission is complete and correct.