110 likes | 205 Views
GE 393 Software Design. Design Patterns: Elements of Reusable Object Oriented Software By Gamma, Helm, Johnson and Vlissides. The practice of Programming , By Brian W. Kernighan. Software Creativity, By Robert L. Glass. Serious Creativity By
E N D
GE 393Software Design Design Patterns: Elements of Reusable Object Oriented Software By Gamma, Helm, Johnson and Vlissides The practice of Programming , By Brian W. Kernighan Software Creativity, By Robert L. Glass Serious Creativity By Edward de Bono Presented By Agnita Pandian
What is Software Design?? • The hardest part in software generation • It’s a problem-solving activity • the world of technology and the world of human purposes---bring the two together
Cont… • “Beauty is in the eye of the beholder” • Software design means different things to different people • Is performance important? Is it ease of maintenance? ease of use? security? Modularity?
Creativity generates truly great software • Human Imagination is the only limit e.g. Lotus • Good software comes when you take time to explore the design space of possibilities e.g. Windows • So they say, Generating Software is one of the most creative activity by humans e.g. Compilers
Software Engineering model • Reduces our ability to be creative • Methodologies entails repeatable results • Reuse of the software • Ship dates • Simple Example:
Why do you need Creativity?? • As Edward de Bono argues, "...unless your job involved creativity, you are (eventually) replaceable by a computer." • The right design style for the right product gives structure for future • Innovation • Ease our lifestyles • e.g. Put together different modules to make a PC
The real concern is……. • To design modules that cut development time • To design software that runs more efficiently using minimum resources • Ultimately, you want to reduce costs…
Object Oriented Software • Smarter coding • Objects • Class • Inheritance • Polymorphism • Overloading • Encapsulation
Creativity • Sorting • Hash Tables • Data Structures • Internet • Interfacing w/Hardware • Testing
Learn to be creative • Specify completely the user's whole experience • Balance your goals and constraints • Know the programming language well
References • Robert L. Glass, Software Creativity; Prentice Hall 1995 • Serious Creativity by Edward de Bono • Programming Pearls by Jon Bentley • Bringing Design to Software Edited by Terry Winograd