Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Design 17.1 Aside: ethics of software l What is intellectual property, why is it important?  what about FSF, GPL, copy-left, open source, … 

Similar presentations


Presentation on theme: "Software Design 17.1 Aside: ethics of software l What is intellectual property, why is it important?  what about FSF, GPL, copy-left, open source, … "— Presentation transcript:

1 Software Design 17.1 Aside: ethics of software l What is intellectual property, why is it important?  what about FSF, GPL, copy-left, open source, …  what about money  what about monopolies l 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? l The future belongs to software developers/entrepreneurs  what can we do to ensure the world’s a good place to be?

2 Software Design 17.2 Licensing and Copyright l 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.orgwww.creativecommons.org  See www.opensource.org/licenses/www.opensource.org/licenses/ l 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?

3 Software Design 17.3 Towards being a hacker l 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. l 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 competence You may not work to get reputation, but the reputation is a real payment with consequences if you do the job well.

4 Software Design 17.4 Software Design See Alan Cooper, The Essentials of User Interface Design l who designs the software? l 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 model user’s model worse better

5 Software Design 17.5 The Future of Software l Privacy concerns  commerce, security, cryptography, www.digicash.com  Google, GMAIL? l 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? l Software design methodologies  XP, Agile, Formal, SEI/CMM Level 5, whatever

6 Software Design 17.6 What is a pattern? l “… 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 us how 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,... l more a recipe than a plan, micro-architecture, frameworks, language idioms made abstract, less than a principle but more than a heuristic l patterns capture important practice in a form that makes the practice accessible

7 Software Design 17.7 Patterns are discovered, not invented l 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 patterns l Patterns transcend programming languages, but not (always) programming paradigms  OO folk started the patterns movement  language idioms, programming templates, programming patterns, case studies


Download ppt "Software Design 17.1 Aside: ethics of software l What is intellectual property, why is it important?  what about FSF, GPL, copy-left, open source, … "

Similar presentations


Ads by Google