联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2018-07-14 05:24


Page 1 of 4

Software Engineering 265

Software Development Methods

Summer 2018

Assignment 3

Due: Thursday, July 19th, 11:55 pm via a push by git “push.

No late submissions accepted

Programming environment

For this assignment you must ensure your work executes correctly on the machines

in ECS B238 (i.e., these have Python 3.6 installed). You are free to do some of your

programming on your own computers; if you do this, give yourself a few days before

the due date to iron out any bugs in the Python script you have pushed to your

remote repository.

Individual work

This assignment is to be completed by each individual student (i.e., no group work).

Naturally you will want to discuss aspects of the problem with fellow students, and

such discussion is encouraged. However, sharing of code fragments is strictly

forbidden without the express written permission of the course instructor

(Zastre). If you are still unsure regarding what is permitted or have other questions

about what constitutes appropriate collaboration, please contact me as soon as

possible. (Code-similarity analysis tools may be used to examine submitted

programs.)

Objectives of this assignment

• Continue to learn features of the Python 3 language.

• Use some of the object-oriented features of Python 3.

• Use some of the error-handling features of Python 3.

• Use some of the regular-expression functionality in Python 3.

• Use Git to manage changes in your source code and annotate the evolution of

your solution with “messages” provided during commits.

• Test your code against the twenty provided test cases.

• Be prepared to justify your script’s handling of errors during the assignment

demonstration.

Page 2 of 4

This assignment: formatdriver.py and uvroff_class.py

For this assignment you will wrap a solution to the formatting problem into a class.

The class constructor will accept a filename and a list of strings. The formatted

output will be available from the class instance via the get_lines() method.

• The class must be named UVroff and appear in a file named uvroff_class.py.

• The script that uses this class is in a file named formatdriver.py. The file has

been provided and you must not modify it.

• If a non-blank filename is provided to the formatdriver.py script, then that file

will be opened and its contents formatted.

• If no argument (i.e., filename) is provided to the formatdriver.py script, then

the contents of stdin will be formatted.

• If an instance of UVroff is used without being called from formatdriver.py, and

no filename is provided to the constructor (i.e., None is given as the filename

argument), then the lines in the list provided as a parameter will be

formatted. Put differently, the UVroff constructor will accept (besides “self”)

two parameters: a string and a list of strings, with the latter having the value

of None when the constructor is called from formatdriver.py. Have a look at

the code in testlines.py in the /home/zastre/seng265/assign3 directory to find

out how a list is passed to the constructor. (uvroff_class.py must therefore

contain an implementation of UVroff that provides interface as is seen to be

used in formatdriver.py.) Also provided is testnull.py that checks to ensure

formatted lines are returned as a list (i.e., the formatted lines must not be

output directly by the UVroff class!).

• Global/module scope variables are not permitted in your solution.

However, classes can and should have instance variables. Class variables

must only be used for values that are constant (i.e., more than one UVroff

object should be permitted to exist in some program).

• The formatting specifications from the second assignment are to be used for

this assignment.

• The script that uses this class will be in a file named formatdriver.py (as

mentioned above).

• You must provide some error handling in UVroff. Your task is to enumerate

the things that could go wrong when faced with such a formatting task, and

to either provide or suggest the code for handling each error item. The

provided test files are not meant to contain errors, so you may create up to

five of your own test files containing errors. These must be in a directory

Page 3 of 4

named assign3/tests with names starting with the “e” (e.g., e_in01.txt and

e_out01.txt, etc.). Document your chosen error cases—and your code’s

handling of them—in a Markdown file named error_handling.md, and place

this file in your a3 directory. (For more information on the Markdown file

format, visit https://en.wikipedia.org/wiki/Markdown.)

• The solution must be written in Python 3 and work correctly on the

workstations in the ELW B238 laboratory.

With formatdriver.py using the code within your completed uvroff_class.py, the input

would be transformed into the output (here redirected to a file) via one of the two

following UNIX commands:

$ ./formatdriver.py /home/zastre/seng265/assign3/tests/in11.txt > \

./myout11.txt

% cat /home/zastre/seng265/assign3/tests/in11.txt \

|./formatdriver.py > ./myout11.txt

where the file myout11.txt would be written in your current directory. (Note: The

backslash syntax shown above for the Unix commands is simply to permit the

command to continue on the next line within bash.)

Exercises for this assignment

1. Within your Git repository project create an a3 subdirectory. Use the test

files in /home/zastre/seng265/assign3/tests. (Note for the observant: These

are the same test files as used for the previous assignment.) The

formatdriver.py and your uvroff_class.py script files must appear in your

repository’s a3 subdirectory. Ensure that when you create the assign3

directory, you immediately perform a git add and git commit.

2. Reasonable run-time performance of your script is expected. None of the test

cases should take longer than 15 seconds to complete processing on a

machine in ELW B238.

What you must submit

• Python 3 files named formatdriver.py (i.e., just a copy of what has been

provided to you) and uvroff_class.py (i.e., your assignment solution) your git

repository.

Page 4 of 4

• A text file named error_handling.md which enumerates the errors that are

addressed by your submission.

• Additional test-case files for your error-handling implementation, with the

files placed into your a3/tests.

Evaluation

Our grading scheme is relatively simple and is out of 10 points. We will award

grades within the categories below.

• 10/10: formatdriver.py and uvroff_class.py run together without any

problems. All tests pass. Errors have been enumerated in error_handling.md

and are either suitably handled or a sensible response strategy has been

suggested. The program is clearly written and uses functions appropriately

(i.e., is well structured).

• 8/10 : A submission completing the requirements of the assignment.

formatdriver.py and uvroff_class.py run together without any problems. All

tests pass. Errors have been enumerated in error_handling.md and are either

suitably handled or a sensible response strategy has been suggested.

• 7/10: A submission completing most of the requirements of the assignment.

formatdriver.py and uvroff_class.py run together with some problems. Some

important error cases have been overlooked.

• 5/10: A serious attempt at completing requirements for the assignment.

formatdriver.py and uvroff_class.py run together with quite a few problems.

• 4/10 or lower: Either no submission given, or submission represents very

little work.


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp