City University of Hong Kong
Software EngineeringBest Practices for Final Year Projects
byDr. Andy Chun, Hon WaiSubject Group Leader for SEDepartment of Computer Science
Software Engineering – Best Practices for FYP 2Copyright © Chun, Hon Wai 2004-2005
Content
FYP Lifecycle
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
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
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!
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
Software Engineering – Best Practices for FYP 7Copyright © Chun, Hon Wai 2004-2005
4 Key Phases
1. Inception Phase2. Elaboration Phase3. Construction Phase4. Transition Phase
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
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
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
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%)
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
Software Engineering – Best Practices for FYP 13Copyright © Chun, Hon Wai 2004-2005
Talk to Your Advisor
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
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
Software Engineering – Best Practices for FYP 16Copyright © Chun, Hon Wai 2004-2005
Work with Your Advisor
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
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
Software Engineering – Best Practices for FYP 19Copyright © Chun, Hon Wai 2004-2005
Software Must Work
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
Software Engineering – Best Practices for FYP 21Copyright © Chun, Hon Wai 2004-2005
Software Engineering Principles:
Agile Manifesto:Working software over comprehensive documentation
Software Engineering – Best Practices for FYP 22Copyright © Chun, Hon Wai 2004-2005
Manage Changes
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
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
Software Engineering – Best Practices for FYP 25Copyright © Chun, Hon Wai 2004-2005
Be an Expert
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
Software Engineering – Best Practices for FYP 27Copyright © Chun, Hon Wai 2004-2005
Manage Project Scope
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
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
Software Engineering – Best Practices for FYP 30Copyright © Chun, Hon Wai 2004-2005
Develop Iteratively
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
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
Software Engineering – Best Practices for FYP 33Copyright © Chun, Hon Wai 2004-2005
Test Your Software
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
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
Software Engineering – Best Practices for FYP 36Copyright © Chun, Hon Wai 2004-2005
Learn to Manage Yourself
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
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
Software Engineering – Best Practices for FYP 39Copyright © Chun, Hon Wai 2004-2005
Software Engineering Principles:
Personal Software Process (PSP)From the CMM folks
Software Engineering – Best Practices for FYP 40Copyright © Chun, Hon Wai 2004-2005
Practice Makes Perfect
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
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
Software Engineering – Best Practices for FYP 43Copyright © Chun, Hon Wai 2004-2005
Most Important Best Practice
Remember to Have Fun
Software Engineering – Best Practices for FYP 44Copyright © Chun, Hon Wai 2004-2005
Questions
Top Related