44
City University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy Chun, Hon Wai Subject Group Leader for SE Department of Computer Science

Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

  • Upload
    dinhbao

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

City University of Hong Kong

Software EngineeringBest Practices for Final Year Projects

byDr. Andy Chun, Hon WaiSubject Group Leader for SEDepartment of Computer Science

Page 2: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 2Copyright © Chun, Hon Wai 2004-2005

Content

FYP Lifecycle

Page 3: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 3Copyright © Chun, Hon Wai 2004-2005

Content

Agile Principles1. Talk to Your Advisor2. Work with Your Advisor3. Software Must Work4. Manage Changes

Page 4: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 4Copyright © Chun, Hon Wai 2004-2005

Content

FYP Best Practices5. Be an Expert6. Manage Project Scope7. Develop Iteratively8. Test Your Software9. Learn to Manage Yourself10. Practice Makes Perfect

Page 5: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 5Copyright © Chun, Hon Wai 2004-2005

Remember!

Your FYP is the single most important project in your whole undergraduate life!

Page 6: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 6Copyright © Chun, Hon Wai 2004-2005

FYP Lifecycle

Project ManagementEnvironment

Business Modeling

ImplementationTest

Analysis & Design

Preliminary Iteration(s)

Iter.#1

PhasesProcess Workflows

Iterations

Supporting Workflows

Iter.#2

Iter.#n

Iter.#n+1

Iter.#n+2

Iter.#m

Iter.#m+1

Deployment

Configuration Mgmt

Requirements

Elaboration TransitionInception Construction

Page 7: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 7Copyright © Chun, Hon Wai 2004-2005

4 Key Phases

1. Inception Phase2. Elaboration Phase3. Construction Phase4. Transition Phase

Page 8: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 8Copyright © Chun, Hon Wai 2004-2005

Inception Phase (Sept)

Tasks:Finalize FYP with advisorDo some basic reading to help decideSet goals and objectives for yourself

Objectives:Common understanding between you and advisor on scope of work

Deliverables:“Project Plan” - a detailed proposal with project schedule

Page 9: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 9Copyright © Chun, Hon Wai 2004-2005

Elaboration Phase (Oct-Nov)

Tasks:Perform background researchDefine system requirementsBased on research, design your system

Objectives:Detailed design based on solid research

Deliverables (may need 2 iterations):“Interim Report” (10%) - background research and initial design

Page 10: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 10Copyright © Chun, Hon Wai 2004-2005

Construction Phase (Dec-Mar)

Tasks:Coding and testingExperimentation and AnalysisDemonstrate prototype to advisor for feedback

Objectives:Finish software development

Deliverables (may need 2 iterations):Source code with documentationsDemonstration to advisor and assessor

Page 11: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 11Copyright © Chun, Hon Wai 2004-2005

Transition Phase (Mar-Apr)

Tasks:Document work as Final ReportPrepare for presentation

Objectives:Wrap up and present project

Deliverables:“Final Report” (30%)Source code“Project Presentation” (10%)

Page 12: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 12Copyright © Chun, Hon Wai 2004-2005

10 FYP Best Practices

My own personal observations for the past 10 years at CityUNote:

This is only my own personal opinion Follow your supervisor’s guidelines first

Page 13: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 13Copyright © Chun, Hon Wai 2004-2005

Talk to Your Advisor

Page 14: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 14Copyright © Chun, Hon Wai 2004-2005

Notes:

Report what you are doing at least once a month

Preferably once every 2 weeksTell advisor:

What papers you have readWhat you have learnedYour design/coding progress

Page 15: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 15Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

Agile Manifesto:Individuals and interactions over processes and tools

XP Value:Communication

Page 16: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 16Copyright © Chun, Hon Wai 2004-2005

Work with Your Advisor

Page 17: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 17Copyright © Chun, Hon Wai 2004-2005

Notes:

Discuss problems with your advisorSeek guidance and verification on project direction Give advisor drafts of all deliverables for feedbackUnderstand advisor expectations

Understand minimum requirement for a “pass” Understand what makes an “A” project

Page 18: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 18Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

Agile Manifesto:Customer collaboration over contract negotiation

XP Values:FeedbackCourage

Page 19: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 19Copyright © Chun, Hon Wai 2004-2005

Software Must Work

Page 20: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 20Copyright © Chun, Hon Wai 2004-2005

Notes:

Make sure your scope is not too largeDivide your project into stages

At least the first stage must workHave a prototype working by end of Semester A to be safe

Page 21: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 21Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

Agile Manifesto:Working software over comprehensive documentation

Page 22: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 22Copyright © Chun, Hon Wai 2004-2005

Manage Changes

Page 23: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 23Copyright © Chun, Hon Wai 2004-2005

Notes:

Changes are unavoidable for any project

Learn how to control changeBut make sure changes do not impact schedule

If so, reduce or modify scope if neededFYP title can be changed any timeNeed to have prototype working asapto know if heading towards a dead-end

Page 24: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 24Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

Agile Manifesto:Responding to change over following a plan

RUP Best Practice:Control changes to software

Page 25: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 25Copyright © Chun, Hon Wai 2004-2005

Be an Expert

Page 26: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 26Copyright © Chun, Hon Wai 2004-2005

Notes:

FYP is an opportunity for you to demonstrate you can learn on your ownShow what you have learned by being an expert on your FYP topic

Know what current state-of-the-artKnow all players: researchers/productsKnow current technology directionKnow success stories

Technical merit is 40% of FYP

Page 27: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 27Copyright © Chun, Hon Wai 2004-2005

Manage Project Scope

Page 28: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 28Copyright © Chun, Hon Wai 2004-2005

Notes:

Must have a checklist of requirements

Prioritize this listEstimate effort/time for each itemVerify all requirements can be done within schedule

Page 29: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 29Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

RUP Best Practices:Manage requirements

XP Best Practices:Planning Game

Page 30: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 30Copyright © Chun, Hon Wai 2004-2005

Develop Iteratively

Page 31: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 31Copyright © Chun, Hon Wai 2004-2005

Notes:

You should have at least 2 or 3 iterations

Iteration 1 is prototype – used to get feedback from advisorIteration 2 is normal FYP deliverableIteration 3 is enhanced FYP for “A” student

Page 32: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 32Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

RUP Best Practices:Develop software iteratively

XP Best Practices:Small Releases

Page 33: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 33Copyright © Chun, Hon Wai 2004-2005

Test Your Software

Page 34: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 34Copyright © Chun, Hon Wai 2004-2005

Notes:

Must have at least unit test casesUse *UnitUse Log4*

Do benchmarking and comparisonsMust be able to compare:

Compare your results with results from other approaches for same or similar problems

Page 35: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 35Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

RUP Best Practices:Verify Software Quality

XP Best Practices:Test-driven

Page 36: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 36Copyright © Chun, Hon Wai 2004-2005

Learn to Manage Yourself

Page 37: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 37Copyright © Chun, Hon Wai 2004-2005

Notes:

Manage your timeFYP is equivalent of 2 courses per semesterYour have only 13 + 9 weeks to do FYPWe expect you to put in roughly 300 hours total

Roughly 2 days/week (14 hours)

Write down what you have done each week

Page 38: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 38Copyright © Chun, Hon Wai 2004-2005

Notes:

Keep track of:Time spent each weekPages of document written each weekLOC written each weekBugs found each weekRequirements satisfied each week

Compare with original scheduleProject management skills count 10% of FYP

Page 39: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 39Copyright © Chun, Hon Wai 2004-2005

Software Engineering Principles:

Personal Software Process (PSP)From the CMM folks

Page 40: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 40Copyright © Chun, Hon Wai 2004-2005

Practice Makes Perfect

Page 41: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 41Copyright © Chun, Hon Wai 2004-2005

Notes:

Make sure you practice your presentation beforehand

Give advisor a copy of PPT at least 1 week before to get feedbackDry run in front of friends/classmates

Page 42: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 42Copyright © Chun, Hon Wai 2004-2005

References:

Agile Manifestoagilemanifesto.org

RUPibm.com/developerworks/rational/library/253.html

XPextremeprogramming.org

PSPwww.sei.cmu.edu/tsp/psp.html

Page 43: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 43Copyright © Chun, Hon Wai 2004-2005

Most Important Best Practice

Remember to Have Fun

Page 44: Best Practices for Final Year Projects - CityU CShwchun/FYP/content/FYP2004.pdfCity University of Hong Kong Software Engineering Best Practices for Final Year Projects by Dr. Andy

Software Engineering – Best Practices for FYP 44Copyright © Chun, Hon Wai 2004-2005

Questions