新南威尔士大学COMP1531Iteration1课业解析

  • May 15, 2020

新南威尔士大学COMP1531Iteration1课业解析题意: 通过测试、开发和维护python后端服务器写几个开发文档 解析: 1.在协议接口中为所有的功能创建测试 2.写一个pdf,记录你当前对产品的了解和对用户需求的理解 3.对规范和所提供功能的解释提出假设,写在assumptions.md里 4.写一个计划文档,介绍自己下一步将如何进行开发阶段,写在plan.md 5.写下对团队合作如何成功运作以及对团队合作的思考,写在Reflection.md 涉及知识点: 团队合作思考,开发计划文档 更多可加微信讨论微信号:Ssss_970521pdf

COMP1531 Major ProjectAims:• To provide students with hands on experience testing, developing, andmaintaining a backend server in python.• To develop students’ problem solving skills in relation to the softwaredevelopment lifecycle.• Learn to work effectively as part of a team by managing your project,planning, and allocation of responsibilities among the members of yourteam<• Gain experience in collaborating through the use of a source control andother associated modern team-based tools.• Apply appropriate design practices and methodologies in thedevelopment of their solution• Develop an appreciation for product design and an intuition of how atypical customer will use a product.ChangelogNothing here yetBackgroundTo manage the transition from trimesters to hexamesters in 2020, UNSWhas established a new focus on building an in-house digital collaborationand communication tool for groups and teams.Rather than re-invent the wheel, UNSW has decided that it finds thefunctionality of Slack to be nearly exactly what it needs. For this reason,UNSW has contracted out Rayden Pty Ltd (a small software business runby Rob and Hayden) to build the new product. In UNSW's attempt toconnect with the younger and more "hip" generation that fell in love withflickr, Tumblr, etc, they would like to call the new UNSW-based productslackr.Rayden Pty Ltd has sub-contracted two software firms:• BananaPie Pty Ltd (two software developers, Sally and Bob, who will buildthe initial web-based GUI)• YourTeam Pty Ltd (a team of talented misfits completing COMP1531 in19T3), who will build the backend python server and possibly assist in theGUI later in the projectIn summary, UNSW contracts Rayden Pty Ltd, who sub contracts:• BananaPie (Sally and Bob) for front end work• YourTeam (you and others) for backend workRayden Pty Ltd met with Sally and Bob (the front end development team)2 weeks ago to brief them on this project. While you are still trying to getup to speed on the requirements of this project, Sally and Bob understandthe requirements of the project very well.Because of this they have already specified a common interface for thefront end and backend to operate on. This allows both parties to go offand do their own development and testing under the assumption thatboth parties comply will comply with the common interface. This is theinterface you are required to useBeside the information available in the interface that Sally and Bobprovided, you have been told (so far) that the features of slackr thatUNSW would like to see implemented include:1. Ability to login, register if not logged in, and log out2. Ability to reset password if forgotten it3. Ability to see a list of channels4. Ability to create a channel, join a channel, invite someone else to achannel, and leave a channel5. Within a channel, ability to view all messages, view the members of thechannel, and the details of the channel6. Within a channel, ability to send a message now, or to send a message ata specified time in the future7. Within a channel, ability to edit, remove, pin, unpin, react, or unreact to amessage8. Ability to view user anyone's user profile, and modify a user's own profile(name, email, handle, and profile photo)9. Ability to search for messages based on a search string10.Ability to modify a user's admin privileges: (MEMBER, ADMIN, OWNER)11.Ability to begin a "standup", which is a 15 minute period where users cansend messages that at the end of the period will automatically be collatedand summarised to all usersTo get further information about the requirements, Rayden Pty Ltd willprovide a pre-recorded video briefing (with verbal and visual descriptions)of what they'd like to see in the Slackr product. This will be released onSeptember 23rd.SetupAfter your week 2 tutorial, you should know who your team members are.Follow the instructions on the tutorial sheet to ensure your team isregistered. You need to do this by Thursday 9PM in week 2.If you registered your team on time, then on Sunday of week 2, youshould have access to an individual repository at this URL:https://gitlab.cse.unsw.edu.au/COMP1531/19T3/team_namewhere team-name is the name of your group as registered on the coursewebsite.Progress check-inDuring your lab class, in weeks without demonstrations (see below), youand your team will conduct a short stand-up in the presence of your tutor.Each member of the team will briefly state what they have done in thepast week, what they intend to do over the next week, and what issuesthey faced or are currently facing. This is so your tutor, who is acting as arepresentative of the client, is kept informed of your progress. They willmake note of your presence and may ask you to elaborate on the workyou've done.Iteration 1: Tests and StoriesTaskIn this iteration, you are expected to:1. Create extensive tests (using pytest) for all of the functions in the agreedupon interface.These should all be in files of the formn *_test.py. See below for moreinformation.2. Create user stories for your current understanding of the product basedon your previous understanding of a slack-like app.Each individual story should form its own card on the project task board.3. Write assumptions that you feel you are making in your interpretation ofthe specification and of the functions provided.Write these in markdown in assumptions.md.4. Write a brief 1-page plan highlighting how you will approach the followingiteration (the development stage).Write these in markdown in plan.md. You may include diagrams, tables orwhatever other information you believe conveys your plan.5. Write a brief 1-page reflection on how this iteration has gone and how yousuccessfully operated as a well-functioning team.Write these in markdown in reflection.md.You are not expected to begin developing or completing the actualfunctions themselves.The files described above should all be in the root of your repository. Ifyou've not written markdown before (which we assume most of youhaven't), it's not necessary to research the format. Markdown isessentially plain text with a few extra features for basic formatting. Youcan just stick with plain text if you find that easier.TestsIt is up to you how you structure your tests, but we do require that youwrite all of your stubs and tests in the /server/ folder.Our recommendation is to break all of the functions to test up into 1 ormany files (this is a decision for you and your team), and then create testfiles in the same directory as the files the tests are testing. An example ofthis has been done with:• /server/echo.py/server/echo_test.py• Remember that we encourage you to write stub functions for all of thefunctions we provide. Stub functions are dummy implementations offunctions that allow them to be trivially tested. E.G. A stub function for auser to login may always return a dummy auth token "123456". This willallow your tests to successfully compile. It is expected that some errorsmay appear in your tests as you write them that you won't discover untilyou develop the backend in iteration 2.You may also wish to create some helper files with extra helper functionsif that would assist you writing your tests.(More info) User StoriesThe scaffold for user stories will be provided in the lecture on Monday23rd September. Please refer to that lecture for information about thestructure of the user stories.SubmissionThis iteration is due to be submitted at 5pm Sunday 6th October (week 3).You will then be demonstrating this in your week 4 lab. All team membersmust attend this lab session.To submit, run this command in the CSE environment:1531 submit iteration1This will submit the contents of your repo on GitLab and perform a checkto make sure that the files above are present. Make sure that everythingyou intend to submit is included in your repo. User stories should beentered into GitLab on the task board for your project.Marking Criteria40%

  • Demonstrated an understandingof good testcoverage
  • Demonstrated anunderstanding of the importance ofclarity on the communication of testpurposes
  • Demonstrated anunderstanding of good testdesign
  • Tests not under or overengineered

25%

  • Demonstration of anunderstanding of a user’s needs whenusing a product
  • Clear sense ofthe coverage needed for requirements(i.e. all reasonable possibilitiesexplored)
  • Strong understandingof the granularity in which to expressrequirements (not too specific, nottoo broad)
  • Demonstration of anunderstanding of the languagetypically used when writing userstories
  • Demonstration of anunderstanding of the differencebetween high-level/epic user storiesand their subsequent user storycomponents

10%

  • Clear and obvious effort andtime gone into thinking about possibleassumptions that are being made wheninterpreting thespecification

10%

  • Communication of plan fordevelopment in a writtenformat
  • Communication of plan fordevelopment in a diagramaticformat
  • Demonstration ofunderstanding of how to draw andanticipate atimeline
  • Demonstration ofthoughtfullness regarding softwaretools to assist the team in meetingthe development iteration

15%

  • Highlighting the timing andoutcome of teammeetings
  • Demonstration thatresponsibilities were allocated acrossteam members
  • Clear reflection onareas for improvement
  • Impressionthat team has worked togethercollaboratively
  • Impression thatteam had processes in place to workthrough disagreements ortension
  • Impression that team hada thought out methodology forcompleting this iteration

Advice• Do NOT attempt to try and write or start a web server. Don’t overthinkhow these functions are meant to connect to a frontend yet. This is for thenext iteration. In this iteration you are just focusing on the high levelfunctions that will eventually be used for a web server.• While we don’t encourage you to implement the functions (because thespecification may change, and there are no marks for implementation),we do encourage you to sufficiently “stub” out the functions to ensurethey’re testable and that your python tests can actually compile andrun

DemonstrationWhen you demonstrate this iteration in your week 4 lab, the breakdownwill go approximately like this:• 5 minutes of demonstration of the code you produced• 5 minutes of demonstration of your stories, assumptions, and plan• 10 minutes of Q&A from the tutor(s)Iteration 2: Servers and ProductsDetails will be released in week 4Iteration 3: Improvements from customerfeedbackDetails will be released in week 7Interface pecifications from Sally and BobData typesstringintegerstringstringstringstringstringbooleandatetimeintegerstringstringintegerintegerList of dictionaries, where each dictionarycontains types { u_id, message, time_created,is_unread }List of dictionaries, where each dictionarycontains types { id, name }List of dictionaries, where each dictionarycontains types { u_id, name_first, name_last }Functions(email,password) { token }(token) {}(email,password,name_first,name_last){ token }(email) {}(reset_code) {}(token,channel_id,u_id){}(token,channel_id){ name,owner_members,all_members }(token,channel_id,start){ messages,start, end }(token,channel_id) {}(token,channel_id) {}(token,channel_id,u_id){}(token,channel_id,u_id){}(token) { channels }(token) { channels }(token, name,is_public) { channel_id }(token,message,time_sent){}(token,message) {}(token,message_id) {}(token,message,message_id){}(token,message_id,react_id){}(token,message_id) {}(token,message_id) {}(token,message_id) {}(token){ email,name_first,name_last,handle_str }(token,name_first,name_last){}(token, email) {}(token,handle_str) {}(token,img_url,x_start,y_start, x_end,y_end){}(token) { time_finish }(token,message) {}(token,query_str) { messages }(token, u_id,permission_id) {}(token, u_id,permission_id) {}Due Dates and Weightings8pm Sunday 6thOctober (week3)In YOUR week 4laboratory 30%8pm Sunday27th October(week 6)In YOUR week 7laboratory 40%8pm Sunday17th November(week 9)In YOUR week 10laboratory 30%ExpectationsWhile it is up to you as a team to decide how work is distributed betweenyou, for the purpose of assessment there are certain key criteria allmembers must.• Code contribution• Documentation contribution• Usage of git/GitLab• Attendance• Peer assessment• Academic conductThe details of each of these is below.While, in general, all team members will receive the same mark (a sum ofthe marks for each iteration), if you as an individual fail to meet thesecriteria your final project mark may be scaled down, most likely quitesignificantly.Code contributionAll team members must contribute code to the project. Tutors will assessthe degree to which you have contributed by looking at your git historyand analysing lines of code, number of commits, timing of commits, etc. Ifyou contribute significantly less code than your team members, your workwill be closely examined to determine what scaling needs to be applied.Documentation contributionAll team members must contribute documentation to the project. Tutorswill assess the degree to which you have contributed by looking at your githistory but also asking questions (essentially interviewing you) duringyour demonstration.Note that, contributing more documentation is not a substitute for notcontributing code.Peer AssessmentYou will be required to complete a form in week 10 where you rate eachteam member’s contribution to the project and leave any comments youhave about them. Information on how you can access this form will bereleased closer to Week 10. Your other team members will not be able tosee how you rated them or what comments you left.If your team members give you a less than satisfactory rating, yourcontribution will be scrutinised and you may find your final mark scaleddown.AttendanceIt is generally assumed that all team members will be present at thedemonstrations and at weekly check-ins. If you’re absent for more than80% of the weekly check-ins or any of the demonstrations, your mark maybe scaled down.If, due to exceptional circumstances, you are unable to attend your lab fora demonstration, inform your tutor as soon as you can so they can recordyour absence as planned.PlagiarismThe work you and your group submit must be your own work. Submissionof work partially or completely derived from any other person or jointlywritten with any other person is not permitted. The penalties for such anoffence may include negative marks, automatic failure of the course andpossibly other academic discipline. Assignment submissions will beexamined both automatically and manually for such submissions.Relevant scholarship authorities will be informed if students holdingscholarships are involved in an incident of plagiarism or othermisconduct.Do not provide or show your project work to any other person, except foryour group and the teaching staff of COMP1531. If you knowingly provideor show your assignment work to another person for any reason, andwork derived from it is submitted you may be penalized, even if the workwas submitted without your knowledge or consent. This may apply even ifyour work is submitted by a third party unknown to you.Note, you will not be penalized if your work has the potential to be takenwithout your consent or knowledge.  

LATEST POSTS
MOST POPULAR

ezAce多年来为广大留学生提供定制写作、留学文书定制、语法润色以及网课代修等服务,超过200位指导老师为您提供24小时不间断地服务。