460 likes | 475 Views
This module recap covers topics such as stakeholders, requirements, design, implementation, quality assurance, and analysis. It includes 1500+ slides, 20 hours of lectures, tutorials, quizzes, demos, and resources. The lecture materials are not optimized for printing or exam preparation.
E N D
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.
Module Recap March, 2018
1500+ slides, 20hours of lectures, 50+ top level LOs, Many tutorials, activities, quizzes, demos, discussions, resources, …
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
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 OODM captures? 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
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
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
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
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
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
Module Recap • Tool vs Toolbox • Aim for higher level learning • Prepare for the future • portfolio + learning muscle > CAP • You have reasons to be confident
Top-down design Revision control Automated testing …
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 …
Module Recap • Tool vs Toolbox • Principles vs Practice • Prepare for the future • portfolio + learning muscle > CAP • You have reasons to be confident
~30% VS ~70%
Module Recap • Tool vs Toolbox • Principles vs Practice • Prepare for the future • portfolio + learning muscle > CAP • You have reasons to be confident
Module Recap • Tool vs Toolbox • Principles vs Practice • Low level vs High level • portfolio + learning muscle > CAP • You have reasons to be confident
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?
Expert • Proficient • Competent • Advanced beginner Novice
Expert • Proficient • Competent • Advanced beginner Novice
Architect • Expert • Proficient Software engineer • Competent Programmer • Advanced beginner Novice
Expert • Expert Proficient • Proficient Competent • Competent Advanced beginner • Advanced beginner CS2103/T Novice Year 1 programming modules
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
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
Expert • Expert Proficient • Proficient Competent • Competent Advanced beginner • Advanced beginner CS2103/T Novice Novice
Module Recap • Tool vs Toolbox • Principles vs Practice • Low level vs High level • portfolio + learning muscle > CAP • You have reasons to be confident
Module Recap • Tool vs Toolbox • Principles vs Practice • Low level vs High level • CAP vs Capability • You have reasons to be confident
Factor X Side Projects
Factor X Have an "obsession"
Module Recap • Tool vs Toolbox • Principles vs Practice • Low level vs High level • CAP vs Capability • You have reasons to be confident
Module Recap • Tool vs Toolbox • Principles vs Practice • Low level vs High level • CAP vs Capability • Confused vs Confident
Self-learning Confidence Individual feedback, weekly Help Feedback
Module Recap • Tool vs Toolbox • Principles vs Practice • Low level vs High level • CAP vs Capability • Confused vs Confident
And this is NOT the end of CS2103 Don’t stop learning.