1 / 66

WARNING

WARNING. These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010. They may not show up well on other PowerPoint versions. You can download PowerPoint 2010 viewer from here .

rkrause
Download Presentation

WARNING

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WARNING • These slides are not optimized for printing or exam preparation. These are for lecture delivery only. • These slides are made for PowerPoint 2010. They may not show up well on other PowerPoint versions. You can download PowerPoint 2010 viewer from here. • These slides contain a lot of animations. For optimal results, watch in slideshow mode.

  2. Module Recap Oct 28, 2016

  3. 1500+ slides, 26 handouts, 24hours of lectures, Many tutorials, activities, quizzes, demos, discussions, resources, …

  4. We use OO to ‘align the view’. We use UML as the standard notation. DESIGN IMPLEMENTATION QUALITY ASSURANCE ANALYSIS Stakeholders (Complex)Problem domain RCS = Validation & Verification SystemSpecification • Establish requirements… • brainstorming • Focus groups • User surveys • Product surveys • Observations • Interviews • Prototyping A B D C Unit testing Can be top-down, bottom-up, sandwich, big-bang A C Architecture styles such as n-tier, client-server, peer-to-peer, broker, pipes-and-filters, service-oriented, transaction-processing, and MVC Architecture D Integration Combat complexity… Use abstraction, build models Developer testing • Other V&V techniques: • formal verification • static analyzers • code reviews • … B Can be late-one-time, or early-and-continuous Sequence diagrams A B Integration testing • Specify requirements… • Textual descriptions • Feature list • User stories • Use cases • OO domain models • Object diagrams • State machine diagrams • Activity diagrams • UI prototypes • Glossary • Supplementary requirements • … Top-down design D API (Application Programming interface) Testing After modifications… Regression testing B x y QA z System testing y Framework Class diagrams Bottom-up design System x z Library More agile -> less upfront detailed design Platform operations • Made up as you go → Exploratory testing • Predetermined → Scripted testing • Can be created in these ways: • Black-box, Glass-box, Grey-box User Acceptancetesting Alpha/beta testing Detailed design Detailed design Detailed design Detailed design Test cases Detailed design • Possible Improvements: • Refactor code • Coding standards and good coding practices • Protect code using assertions, exceptions, logging, and defensive coding. • Build automation • Possible Improvements: • Automate testing • Use Test-Driven Development • Increase efficiency and effectiveness of testing (Equivalence partitioning, Boundary Value analysis) • Increase test coverage (function/entry/exit/statement/branch/ condition/path coverage) • isolate SUT using drivers, stubs and dependency injection • Possible Improvements: • ↑Cohesion, ↓Coupling • Apply design patterns (Abstraction Occurrence, Singleton, Command, Observer) • Apply design principles (Open/close, Law of Demeter, Separation of concerns, …) • Use polymorphism (inheritance, interfaces, dynamic binding) • Good product design guidelines (e.g., usability, …) • Possible Improvements: • Apply OO paradigm • Apply analysis patterns • Categorize and prioritize requirements Requirements Specification Project plans Sequential Team structures Unified process CMMI Work-breakdown structures Agile processes PROJECT MANAGEMENT Chief-programmer Iterative Issue trackers Includes buffers and milestones Egoless Scrum XP Breadth-first Depth-first Strict hierarchy

  5. ANALYSIS • Possible Improvements: • Apply OO paradigm • Apply analysis patterns e.g. Abstraction occurrence • Categorize and prioritize requirements Who are typical stakeholders of a software project? Why asking the user is not enough? How do models help to combat complexity? Why use UML? When should we prefer use case descriptions over user stories? Comment on this step that appeared in a use case description: “user clicks the open button” What does an OODMcaptures? What does an object diagram capture? How to use object diagrams in analysis phase? What are non-functional requirements? What’s the difference between requirements and system specification? Stakeholders (Complex)Problem domain • Establish requirements • Focus groups • User surveys • Interviews • Brainstorming • Product surveys • Observations • Combat complexity… • Use abstraction, build models • Specify requirements… • Textual descriptions • Feature list • User stories • Use cases • Prototyping • OO domain models • Object diagrams • Activity diagrams • State machine diagrams • UI prototypes • Glossary • Supplementary requirements • … Requirements Specification

  6. DESIGN For what purpose do you use sequence diagrams? Complete this sentence: A is coupled to B if …. What is a pattern? What’s the difference between separation of concerns and single responsibility principle? SystemSpecification Architecture styles such as n-tier, client-server, peer-to-peer, broker, pipes-and-filters, service-oriented, transaction-processing, and MVC A C Architecture D B Sequence diagrams :A :B :D API (Application Programming interface) Top-down design Bottom-up design Is Unified process iterative or sequential? What’s the difference between buffers and padding? What’s the benefit of identifying the critical path of a project? • Possible Improvements: • Good product design guidelines (e.g., usability, …) • Use OOP concepts: abstraction, encapsulation, inheritance, polymorphism • ↑Cohesion, ↓Coupling • Apply design principles (SOLID, Law of Demeter, Separation of concerns, …) • Apply design patterns (Singleton, Façade, Command, Observer, …) B :x :y :z y Class diagrams x z operations design Detailed design PROJECT MGT More agile  less upfront design Issue trackers Project plans Sequential Includes buffers and milestones Unified process CMMI Work-breakdown structures Agile processes Iterative Scrum Breadth-first Depth-first XP

  7. IMPLEMENTATION TESTING How is refactoring different from bug fixing? How are assertions different from exceptions? Is Git centralized or distributed RCS? What distinguishes a platform from a framework or a library? Describe CI (Continuous Integration). Acceptance testing is validation or verification? Give one pro and one con of white box text case design. How is integration testing different from unit testing? How does equivalence partitioning help in increasing E&E of testing? Give an advantage of TDD. Which is stronger: statement coverage or path coverage? What is the purpose of dependency injection? QA = Validation + Verification RCS Unit testing A B D C • Other V&V techniques: • formal verification • static analyzers • code reviews • … Can be top-down, bottom-up, sandwich, big-bang Developer testing Integration Can be late-one-time, or early-and-continuous Integration testing Testing After modifications… Regression testing QA System testing design Test cases • Made up as you go → Exploratory testing • Predetermined → Scripted testing • Can be created in these ways: • Black-box, Glass-box, Grey-box User Acceptancetesting Alpha/beta testing Framework System • Possible Improvements: • Automate testing • Use Test-Driven Development • Increase efficiency and effectiveness of testing (Equivalence partitioning, Boundary Value analysis) • Increase test coverage (function/entry/exit/statement/ branch/ condition/path coverage) • isolate SUT using drivers, stubs and dependency injection • Possible Improvements: • Refactor code • Coding standards and good coding practices • Protect code using assertions, exceptions, logging, and defensive coding. • Build automation, Continuous Integration Library Platform

  8. We use OO to ‘align the view’. We use UML as the standard notation. DESIGN IMPLEMENTATION QUALITY ASSURANCE ANALYSIS Stakeholders (Complex)Problem domain RCS = Validation & Verification SystemSpecification • Establish requirements… • brainstorming • Focus groups • User surveys • Product surveys • Observations • Interviews • Prototyping A B D C Unit testing Can be top-down, bottom-up, sandwich, big-bang A C Architecture styles such as n-tier, client-server, peer-to-peer, broker, pipes-and-filters, service-oriented, transaction-processing, and MVC Architecture D Integration Combat complexity… Use abstraction, build models Developer testing • Other V&V techniques: • formal verification • static analyzers • code reviews • … B Can be late-one-time, or early-and-continuous Sequence diagrams A B Integration testing • Specify requirements… • Textual descriptions • Feature list • User stories • Use cases • OO domain models • Object diagrams • State machine diagrams • Activity diagrams • UI prototypes • Glossary • Supplementary requirements • … Top-down design D API (Application Programming interface) Testing After modifications… Regression testing B x y QA z System testing y Framework Class diagrams Bottom-up design System x z Library More agile -> less upfront detailed design Platform operations • Made up as you go → Exploratory testing • Predetermined → Scripted testing • Can be created in these ways: • Black-box, Glass-box, Grey-box User Acceptancetesting Alpha/beta testing Detailed design Detailed design Detailed design Detailed design Test cases Detailed design • Possible Improvements: • Refactor code • Coding standards and good coding practices • Protect code using assertions, exceptions, logging, and defensive coding. • Build automation • Possible Improvements: • Automate testing • Use Test-Driven Development • Increase efficiency and effectiveness of testing (Equivalence partitioning, Boundary Value analysis) • Increase test coverage (function/entry/exit/statement/branch/ condition/path coverage) • isolate SUT using drivers, stubs and dependency injection • Possible Improvements: • ↑Cohesion, ↓Coupling • Apply design patterns (Abstraction Occurrence, Singleton, Command, Observer) • Apply design principles (Open/close, Law of Demeter, Separation of concerns, …) • Use polymorphism (inheritance, interfaces, dynamic binding) • Good product design guidelines (e.g., usability, …) • Possible Improvements: • Apply OO paradigm • Apply analysis patterns • Categorize and prioritize requirements Requirements Specification Project plans Sequential Team structures Unified process CMMI Work-breakdown structures Agile processes PROJECT MANAGEMENT Chief-programmer Iterative Issue trackers Includes buffers and milestones Egoless Scrum XP Breadth-first Depth-first Strict hierarchy

  9. We use OO to ‘align the view’. We use UML as the standard notation. DESIGN IMPLEMENTATION QUALITY ASSURANCE ANALYSIS Stakeholders (Complex)Problem domain RCS = Validation & Verification SystemSpecification • Establish requirements… • brainstorming • Focus groups • User surveys • Product surveys • Observations • Interviews • Prototyping A B D C Unit testing Can be top-down, bottom-up, sandwich, big-bang A C Architecture styles such as n-tier, client-server, peer-to-peer, broker, pipes-and-filters, service-oriented, transaction-processing, and MVC Architecture D Integration Combat complexity… Use abstraction, build models Developer testing • Other V&V techniques: • formal verification • static analyzers • code reviews • … B Can be late-one-time, or early-and-continuous Sequence diagrams A B Integration testing • Specify requirements… • Textual descriptions • Feature list • User stories • Use cases • OO domain models • Object diagrams • State machine diagrams • Activity diagrams • UI prototypes • Glossary • Supplementary requirements • … Top-down design D API (Application Programming interface) Testing After modifications… Regression testing B x y QA z System testing y Framework Class diagrams Bottom-up design System x z Library More agile -> less upfront detailed design Platform operations • Made up as you go → Exploratory testing • Predetermined → Scripted testing • Can be created in these ways: • Black-box, Glass-box, Grey-box User Acceptancetesting Alpha/beta testing Detailed design Detailed design Detailed design Detailed design Test cases Detailed design • Possible Improvements: • Refactor code • Coding standards and good coding practices • Protect code using assertions, exceptions, logging, and defensive coding. • Build automation • Possible Improvements: • Automate testing • Use Test-Driven Development • Increase efficiency and effectiveness of testing (Equivalence partitioning, Boundary Value analysis) • Increase test coverage (function/entry/exit/statement/branch/ condition/path coverage) • isolate SUT using drivers, stubs and dependency injection • Possible Improvements: • ↑Cohesion, ↓Coupling • Apply design patterns (Abstraction Occurrence, Singleton, Command, Observer) • Apply design principles (Open/close, Law of Demeter, Separation of concerns, …) • Use polymorphism (inheritance, interfaces, dynamic binding) • Good product design guidelines (e.g., usability, …) • Possible Improvements: • Apply OO principles • Apply analysis patterns • Categorize and prioritize requirements Requirements Specification Project plans Sequential Team structures Unified process CMMI Work-breakdown structures Agile processes PROJECT MANAGEMENT Chief-programmer Iterative Issue trackers Includes buffers and milestones Egoless Scrum XP Breadth-first Depth-first Strict hierarchy

  10. We use OO to ‘align the view’. We use UML as the standard notation. DESIGN IMPLEMENTATION QUALITY ASSURANCE ANALYSIS Stakeholders (Complex)Problem domain RCS = Validation & Verification SystemSpecification • Establish requirements… • brainstorming • Focus groups • User surveys • Product surveys • Observations • Interviews • Prototyping A B D C Unit testing Can be top-down, bottom-up, sandwich, big-bang A C Architecture styles such as n-tier, client-server, peer-to-peer, broker, pipes-and-filters, service-oriented, transaction-processing, and MVC Architecture D Integration Combat complexity… Use abstraction, build models Developer testing • Other V&V techniques: • formal verification • static analyzers • code reviews • … B Can be late-one-time, or early-and-continuous Sequence diagrams A B Integration testing • Specify requirements… • Textual descriptions • Feature list • User stories • Use cases • OO domain models • Object diagrams • State machine diagrams • Activity diagrams • UI prototypes • Glossary • Supplementary requirements • … Top-down design D API (Application Programming interface) Testing After modifications… Regression testing B x y QA z System testing y Framework Class diagrams Bottom-up design System x z Library More agile -> less upfront detailed design Platform operations • Made up as you go → Exploratory testing • Predetermined → Scripted testing • Can be created in these ways: • Black-box, Glass-box, Grey-box User Acceptancetesting Alpha/beta testing Detailed design Detailed design Detailed design Detailed design Test cases Detailed design • Possible Improvements: • Refactor code • Coding standards and good coding practices • Protect code using assertions, exceptions, logging, and defensive coding. • Build automation • Possible Improvements: • Automate testing • Use Test-Driven Development • Increase efficiency and effectiveness of testing (Equivalence partitioning, Boundary Value analysis) • Increase test coverage (function/entry/exit/statement/branch/ condition/path coverage) • isolate SUT using drivers, stubs and dependency injection • Possible Improvements: • ↑Cohesion, ↓Coupling • Apply design patterns (Abstraction Occurrence, Singleton, Command, Observer) • Apply design principles (Open/close, Law of Demeter, Separation of concerns, …) • Use polymorphism (inheritance, interfaces, dynamic binding) • Good product design guidelines (e.g., usability, …) • Possible Improvements: • Apply OO principles • Apply analysis patterns • Categorize and prioritize requirements Requirements Specification Project plans Sequential Team structures Unified process CMMI Work-breakdown structures Agile processes PROJECT MANAGEMENT Chief-programmer Iterative Issue trackers Includes buffers and milestones Egoless Scrum XP Breadth-first Depth-first Strict hierarchy

  11. Top-down design Revision control Automated testing …

  12. Product-focused project modules iPad module Facebook module Multimedia project Game project …. Engineering-focused project modules Software Engineering project I, II Thematic project Top-down design Revision control Automated testing … Storage UI Logic

  13. Module Recap • It's a toolbox. Use as necessary. • Aim for higher level learning • Prepare for the future • portfolio + learning muscle > CAP • You have reasons to be confident

  14. Expert Does the right thing intuitively. Gets the big picture. Needs the big picture. Appreciates process. • Proficient e.g. can apply patterns effectively Understands conceptual models. Can use them to solve problems. • Competent Dreyfus model of skill acquisition e.g. can apply a pattern • Advanced beginner Can learn technologies/tools quickly, can start coding stuff quickly. Don’t want to get bogged down with fundamentals. Not yet appreciative of the big picture. Novice Needs recipes e.g. can pick up Git from an online tutorial e.g. how to use Git in project Which level are you in now?

  15. Expert • Proficient • Competent • Advanced beginner Novice

  16. Expert • Proficient • Competent • Advanced beginner Novice

  17. Architect • Expert • Proficient Software engineer • Competent Programmer • Advanced beginner Novice

  18. Expert • Expert Proficient • Proficient Competent • Competent Advanced beginner • Advanced beginner CS2103/T Novice Year 1 programming modules

  19. Expert • Expert Does the right thing intuitively. Proficient • Proficient Gets the big picture. Needs the big picture. Appreciates process. Competent • Competent e.g. can apply patterns effectively Understands conceptual models. Can use them to solve problems. Advanced beginner e.g. can apply a pattern • Advanced beginner CS2103/T Novice Novice

  20. Expert • Expert Does the right thing intuitively. Proficient • Proficient Gets the big picture. Needs the big picture. Appreciates process. Competent • Competent e.g. can apply patterns effectively Understands conceptual models. Can use them to solve problems. Advanced beginner e.g. can apply a pattern • Advanced beginner CS2103/T Novice Novice

  21. Expert • Expert Proficient • Proficient Competent • Competent Advanced beginner • Advanced beginner CS2103/T Novice Novice

  22. Image credit: www.crafthubs.com

  23. Don’t learn like a mouse, learn like a cat [develop your ‘helicopter factor’]

  24. Module Recap • It's a toolbox. Use as necessary. • Aim for higher level learning • Prepare for the future • portfolio + learning muscle > CAP • You have reasons to be confident

  25. [2014] Salary/month Project duration $3400 x2x3≈$20,000 Angry Graduates Overhead $0.99

  26. Hard work Stress Learning ... $3400 x 2 x 3 ≈ $20,000 Your job is to deliver value, solve problems.

  27. Hard work Stress Learning ... You could be the weakest employee, if you are lucky.

  28. Hard work Stress Learning ... Success Take Grades Give Work Grades Work Money Skills

  29. Success ? Take Grades Skills

  30. Module Recap • It's a toolbox. Use as necessary. • Aim for higher level learning • Prepare for the future • portfolio + learning muscle > CAP • You have reasons to be confident

  31. Which describes you best? • Current CAP is 4.5+ and I want to a PhD at a top university • I am at risk of getting expelled due to low CAP • I am near to a minimum CAP requirement set by a relevant special program or a scholarship board • I aim for a job in the civil service or a bank and am currently close to a first class (4.5) • None of the above but I can’t afford to drop my CAP further due to reason …… • None of the above cap {answer} e.g. cap d 77577OR tinyurl.com/answerpost

  32. Which describes you best? … and it’s not something someone else does to you. Career is not something that happens *after* university. • Current CAP is 4.5+ and I want to a PhD at a top university • I am at risk of getting expelled due to low CAP • I am near to a minimum CAP requirement set by a relevant special program or a scholarship board • I aim for a job in the civil service or a bank and am currently close to a first class (4.5) • None of the above but I can’t afford to drop my CAP further due to reason …… • None of the above Your degree is a career optimization problem, not a CAP maximization problem!

  33. [You] CAP 3.2 CAP maximizer [Your competition]CAP 4.9

  34. CAP maximizer [You] CAP 3.5 [Your competition]CAP 3.4 I have more potential This is the absolute best I can be 

  35. [You] CAP 3.53.2 CAP maximizer [Your competition]CAP 4.2 You can beat this guy! 1500 500 25 years

  36. [You] CAP 3.53.2 CAP maximizer [Your competition]CAP 4.2 My CAP for ___ subjects is 4.5! How to beat this guy? • Relevant subjects Do more • Module projects I have done many more ____ subjects 1500 500 25 years

  37. CS3217 (iPad) CS3216 (Facebook) Create novel products to solve problems. ~40 students, 5MC, 5MC Example job: GrabTaxi Entry points to CS special programs: von Neumann Program, Turing Program CS3201+CS3202 SE project I, II Create an efficient implementation of a precise specification. C++, 4+4 MCExample job: Microsoft VS team • Contribute to an external OSS project • Add a feature to an internal OSS project • Build up an expertise • Ready the CV for internship interviews Enhance an existing product that has real users.~20 students, 4+4 MCExample job: Paypal CS3281+CS3282 Thematic project I, II

  38. [You] CAP 3.53.2 CAP maximizer [Your competition]CAP 4.2 How to beat this guy? • Relevant subjects Do more • Module projects • Internships 1500 500 25 years

  39. Paid USD 5500 by Google Work for an open source project e.g. Mozilla During summer Can be used for CP3200 (SIP) My own OSS projects taking part (7 slots in 2016)!

More Related