COMP3111 -‐-‐ Introduc1on to So3ware Engineering Learn. Pra1ce. Have fun!
What’s COMP3111 • Introduc1on level – Developing large so3ware systems by many people in a long 1me; – Basic thoery, model, prac1ce – Prac1ce using real world languages, tools, and methods
• Difference between so3ware engineering and programming
What we going to cover (Thoery) • How to develop large so3ware as a team effort – Non-‐technical aspects • As a process of coordina1ng human ac1vi1es (macroscopic) • As a result of effec1ve communicta1ons (socio-‐technical) – With client – With team members
– Technical aspects • As a set of drawings (modeling) • As a collec1on of clever design ideas (pa\erns) • As a correct instruc1ons to computers (tes1ng)
COMP3111 Syllabus (Theory) • • • • • • Introduc1on to so3ware engineering So3ware development process UML modeling Requirements capture Design pa\erns Tes1ng
Syllabus (Pra1ce) • • • • • • • Basic Java programming Java collec1ons framework Java GUI programming with Swing CVS environment in Eclipse Java I/O Java Unit tes1ng Finding bugs in your code
How do you learn both? • Lecture • Tutorial • Lab – 1 hour + 20 mins for special needs – Review prac1ce materials in lecture – More detailed and advanced topics – Solve the posted problem, not graded – Prac1ce with the help of TA – Use the technique in your project – Lecture: if you really want to talk, talk to me. – Project: independent work or steal smartly
• Project
• Course e1que\e
Grading Item Midterm Project Final Bonus Due Date Mar 17 TBD Will explain Weight 20% 40% 4% Part I (Apr 3) Part II (May 8) 40-‐48%
You guessed right! A\ending lecture/tutorial/lab is op1onal!
The Project • Group work – Group of 4. You can form your own group. Do it before Feb. 17 or I will do it for you – Sign up sheet posted on Google doc, link on course website – Each team will be assigned a TA as mentor – A fully func1onal mul1-‐user Calendar – Comple1on in two major steps – Evaluated by acceptance test cases and documenta1on
• Objec1ve
Project Organiza1on • Given the source code of the Calendar GUI and a detailed HIGH LEVEL specifica1on • Complete the project in two phases: • Phase 1: Single-‐user memory based scheduling
– Learn to program in modern object oriented language such as Java using a fully featured integrated development environment (IDE). – Learn to convert imprecise textual technical requirements to precise technical specifica1ons. – Learn to extend the given code base by adding new GUI elements and major new features. – Learn to develop so3ware as a controlled and monitored process through the use of version control.
Project Organiza1on (Cont.) • Phase 2: Mul1-‐user disk-‐based scheduling – Learn to implement a sophis1cated set of func1onali1es. – Learn to support the no1on of persistence and data management. – Learn to use unit tes1ng and regression tes1ng to maintain the quality of the so3ware. – Learn to ar1culate and document the design and architecture of so3ware systems.
Bonus Compe11on • You can earn bonus for the project by implemen1ng a feature/func1onality not yet specified
– Must be a new way of interac1ng with the user – For example, an Android version of the calendar is not counted as bonus – Inform your mentor any 1me in the term to enter the compe11on – Submit your work at the end of the Phase II – The teaching team will sit together and rank all par1cipants – Top 3 teams will get the full bonus, the next 3 will get 50% of the full bonus
• Top 6 teams will get the bonus