Download presentation
Presentation is loading. Please wait.
Published byJeremy Carr Modified over 8 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.