DOC PREVIEW
Duke CPS 108 - Lecture

This preview shows page 1-2 out of 7 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Software Design17.1Aside: ethics of softwarez What is intellectual property, why is it important?¾ what about FSF, GPL, copy-left, open source, …¾ what about money¾ what about monopoliesz What does it mean to act ethically and responsibly?¾ What is the Unix philosophy? What about protection? What about copying? What about stealing? What about borrowing?¾ No harm, no foul? Is this a legitimate philosophy?z The future belongs to software developers/entrepreneurs¾ what can we do to ensure the world’s a good place to be?Software Design17.2Licensing and Copyrightz If you write original code, it's copyrighted¾ If you borrow code you must attribute the source¾ You should license all your code¾ See www.creativecommons.org¾ See www.opensource.org/licenses/z You must choose a license for your OOGA code¾ All source code must include the license or a pointer¾ What's the best way to do this?Software Design17.3Towards being a hackerz See the hacker-faq (cps 108 web page)¾ Hackers solve problems and build things, and they believe in freedom and voluntary mutual help. To be accepted as a hacker, you have to behave as though you have this kind of attitude yourself. And to behave as though you have the attitude, you have to really believe the attitude. z The world is full of fascinating problems¾ no one should have to solve the same problem twice¾ boredom and drudgery are evil¾ freedom is good¾ attitude is no substitute for competenceYou may not work to get reputation, but the reputation is a realpayment with consequences if you do the job well.Software Design17.4Software DesignSee Alan Cooper, The Essentials of User Interface Designz who designs the software?z Implementation is view of software developer, user’s view is mental model, software designer has to bridge this gap¾ Example: copy/move files in a Windows/Mac environment, what’s the difference in dragging a file/folder between two folders on the same device and dragging between devices, e.g., c: to a:? Is this a problem? To whom?Implementation modeluser’s modelworsebetterSoftware Design17.5The Future of Softwarez Privacy concerns¾ commerce, security, cryptography, www.digicash.com¾ Google, GMAIL?z Why is the best software designed in the US, will this continue to be the case?¾ 1992, The Decline and Fall of the American Programmer¾ 1996, The Rise & Resurrection of the American Programmer¾ Today, Bangalore?z Software design methodologies¾ XP, Agile, Formal, SEI/CMM Level 5, whateverSoftware Design17.6What is a pattern?z “… a three part rule, which expresses a relation between a certain context, a problem, and a solution. The pattern is, in short, at the same time a thing, … , and the rule which tells ushow to create that thing, and when we must create it.”Christopher Alexander¾ name factory, aka virtual constructor¾ problem delegate creation responsibility: Hyperwag¾ solution createFoo() method returns aFoo, bFoo,...¾ consequences potentially lots of subclassing, ...z more a recipe than a plan, micro-architecture, frameworks, language idioms made abstract, less than a principle but more than a heuristicz patterns capture important practice in a form that makes the practice accessibleSoftware Design17.7Patterns are discovered, not inventedz You encounter the same “pattern” in developing solutions to programming or design problems¾ develop the pattern into an appropriate form that makes it accessible to others¾ fit the pattern into a language of other, related patternsz Patterns transcend programming languages, but not (always) programming paradigms¾ OO folk started the patterns movement¾ language idioms, programming templates, programming patterns, case


View Full Document

Duke CPS 108 - Lecture

Download Lecture
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?