Lecture 8 - Improving the Product, Improving Ourselves
Lecture 8 - Improving the Product, Improving Ourselves CS2103
Popular in Software Engineering
Popular in Quantitative Methods
This 3 page Class Notes was uploaded by Jerry Tan on Friday October 9, 2015. The Class Notes belongs to CS2103 at National University of Singapore taught by Damith C. Rajapakse in Summer 2015. Since its upload, it has received 67 views. For similar materials see Software Engineering in Quantitative Methods at National University of Singapore.
Reviews for Lecture 8 - Improving the Product, Improving Ourselves
Report this Material
What is Karma?
Karma is the currency of StudySoup.
You can buy or earn more Karma at anytime and redeem it for class notes, study guides, flashcards, and more!
Date Created: 10/09/15
National University of Singapore NUS CS2103 Software Engineering AY2015 SEM 1 Lecture 8 Improving the Product Improving Ourselves Friday 9th October 2015 By Jerry Tan Si Kai CS2103 Software Engineering Lecture 8 Improving the product Improving ourselves How to organize and display massive amount of information Two approaches 1 Stacked in time novice user a Github one page shows all the issues for one user over time 2 Adjacent in space advanced user a Hubturbo shows all the issues for all users all in one page Learning from others experience How By documenting it Example Context Multiple occurrences of some abstraction Problem Some data but not all shared among occurences of the same abstraction are repeated across occurences Solution Represent abstraction and occurences as different classes Pattern A highlevel vocabulary to refer to the solution In the above example we can call it the abstractionoccurrence solution Anti pattern A stupid solution to a recurring problem Metamodel Terminology to refer to model of a model Can represent patterns as metamodels Examples of powerful patterns that can help you in your project 1 Abstraction occurrence 2 Singleton a There are cases when you only want one instance of an object eg logic i HOW Make constructor private make a static method getInstanceO which returns the private static variable referring to the class itself ii Why is this better than 00 Testability Allow 3 Facade a Apply a public interface between the external clients and the methods they are calling within your class to reduce dependency 4 Command pattern let a COMMANDTYPE type be an abstract class so that multiple functions can take this type as a parameter EDIT ADD and DISPLAY can extend from the abstract class 5 MVC ModelViewController model represents data objects controller represents logic view represents the GUI that users see 6 Observer celebrity do not want to know the paparazzi paparazzi wants to know when where and what the celebrity is doing Solution is to implement an Observer interface Data addViewObserver notifyUIs Get the UIs to implement the Observer interface On startup register the observers with data by calling addView method and when data changes call notifyUIsO The dependency of data on UI is reversed UI now depends on data Reference Design Patterns elements of reusable ObjectOriented Software Gang of Four Caution Do not force fit patterns onto every problems Only apply if the benefits outweigh the costs Gems of Wisdom Principles of Software Engineering Principle of separation of concerns Concerns in a software should be grouped together into components according to functionality and responsibility similar to cohesion Open closed principle software entities should be open for extension but closed for modification Minesweeper example if I want to make minefield work with a new cell called MagicCell how do I do it such that the Minefield does not need to be modified so as to minimize rise of introducing regressions Solution use the Command pattern Liskov substitutability principle Every subclass should be perfectly substitutable for its base class Single responsibility principle Every class should have a single responsibility The first 90 of the code accounts for the first 90 of the project the last 10 of the project requires another 90 of the timequot
Are you sure you want to buy this material for
You're already Subscribed!
Looks like you've already subscribed to StudySoup, you won't need to purchase another subscription to get this material. To access this material simply click 'View Full Document'