Design Patterns-The core of Software architecture (Creational Patterns)

January 24, 2010

Presentation by: Shahzad Sarwar
To: Development Team
Topic: Design Patterns-The core of Software architecture (Creational Patterns)

Design Patterns:

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved.

Design patterns reside in the domain of modules and interconnections. At a higher level there are Architectural patterns that are larger in scope, usually describing an overall pattern followed by an entire system.

This is series of presentations covering Design patterns

Creational Patterns Part -1 Abstract Factory , Builder  , Factory Method  , Prototype  , Singleton
Structural Patterns Part-2 ( Later ) Adapter ,  Bridge , Composite , Decorator , Facade , Flyweight  , Proxy
Behavioral Patterns Part-3 ( Later )
Chain of Resp  , Command  , Interpreter , Iterator 
  ,Mediator , Memento , Observer , State , Strategy , 
Template Method , Visitor

AJAX Design Patterns Part-4 (Later)
AJAX Level I , AJAX Level II
AJAX Message Patterns
(Text Message ,  HTML Message , XML Message ,  XSL Message  , JavaScript Msg ,  JSON Message , Custom Message  )

Software AntiPatterns Part-5 (Later)

Software Refactoring Part-6 (Later)

Creational Patterns Part -1
Abstract Factory , Builder , Factory Method , Prototype , Singleton


UML – The Art of Software Modeling

January 21, 2010

Presentation by: Shahzad Sarwar
To: Development Team
Topic: UML – The Art of Software Modeling
Date Time: 25th Jan 2010

What is UML?
Unified Modeling Language (UML) is a standardized general-purpose modeling language in the field of software engineering. The standard is managed, and was created by, the Object Management Group.

UML includes a set of graphical notation techniques to create visual models of software-intensive systems.
UML – language and notation for specification, construction,
visualisation and documentation of models of software systems.
UML is not:
programming language
a CASE tool
method
UML modelling language.
Methods: modelling language + process
Modelling language : Notation that methods use to express design
Process: Steps in doing a design
Associate with UML is Unified Software Development Process.
Object Management Group an industry standards body requested
standard object modelling language (1996).
UML: Developed by Grady Booch, Ivar Jacobson, James Rumbaugh


Software Development-The Agile Way

December 24, 2009

Presentation By: Shahzad Sarwar
To: Development Team
Topic: Software Development – The Agile Way

What is Agile?

Group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.

Agile methods are a family of development processes, not a single approach to software development. The Agile Manifesto states:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Some of the principles behind the Agile Manifesto are:

  • Customer satisfaction by rapid, continuous delivery of useful software
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Even late changes in requirements are welcomed
  • Close, daily cooperation between business people and developers
  • Face-to-face conversation is the best form of communication (co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances


nHibernate A detailed overview

December 11, 2009


Presentation Agenda on nhibernate

By: Shahzad Sarwar
To: Development Team

Part 1: 1st Aug 2009 3:30 PM
What is OR Mapping. 3
What is nHibernate? 3
XML Configuration File 3
Persistent vs transient Objects 4
Nhibernate Basic 4
Code generation 5
1. Avva Open source Solution 5
2. NConstruct Lite 14
CRUDE Operation Sample 20
Nhibernate Analyiser: 20
1. SQL Server Analyiser 20
2. nhIbernate Analyiser 23

Part 2: Later
• Version 2.1 new features
• Performance tuning
• Proxing
• Cache
• Design pattern for NHibernate
• Case Specific provider

Attachment Below
Agenda-For-OR Mapping-Presentation


A Joke about Software Architect

December 5, 2009

After their death three IT persons arrived in hell. Among them a senior manager, a consultant and a software architect. One of the devils was in charge of taking care of these unfortunates. However, hell population has the same kind of feelings towards IT experts like the rest of mankind. Thus, the devil offered a deal to the newcomers. “There is a chimpanzee around this corner. Each of you you will need to make the chimpanzee first laugh, then cry, and finally make him return back to his cage. If you succeed, we’ll send you back to earth.” First the senior manager approached the chimpanzee. No matter what he said or did, the monkey showed absolutely no reaction. Then the consultant tried his luck. After an hour he also gave up. Finally, it was the turn of the software architect. After a few seconds the chimpanzee started screaming with laughter. After some more seconds he was moved to tears. And as soon as the architect had spoken some additional words, the monkey started panicking, returned immediately to his cage, locked the door and threw away the key. “Ok” the devil said, “I will keep my word, but could you, please, tell me what exactly you said to the chimpanzee?” “Of course!”, the architect responded, “First, I told him what job I have which made him laugh. Then I told him what income I get which made him cry. Finally, I told him that we are still searching for new architects!”

Source: google


WPF Windows Presentation Foundation -A Detailed Overview Version 1.2

November 20, 2009

A new version of WPF presentation is uploaded.


WPF Windows Presentation Foundation -A Detailed Overview Version 1.2

Code Sample

[Note: After downloading sample code file. Rename file with rar extension and then extract the rar file to actual sample code.]

Code sample related to following topics.
XMAL,Basic Elements of WPF,Architecture,Property System / Dependency Property,Routed Events,Binding System,Styling / Templating


A detailed overview of WPF,Windows Presentation Foundation

November 7, 2009

A detailed overview of WPF,Windows Presentation Foundation

Presentation By: Shahzad Sarwar

To: Comsoft,  Development Team

What is WPF? 

  • Next-generation presentation system for building Windows client applications with visually stunning user experiences.
  • Resolution-independent
  • Vector-based rendering engine (advantage of modern graphics hardware)
  • Coverage:

   Extensible Application Markup Language (XAML), controls, data binding, layout, 2-D and 3-D graphics, animation, styles, templates, documents, media, text, and typography.

 What’s covered:

  • XMAL
  • Basic Elements of WPF
  • Architecture
  • Property System / Dependency Property
  • Routed Events
  • Binding System
  • Styling / Templating

 What’s Not covered:

  • Controls Library
  • Graphics / Multi Media
  • Documents

Attachment:

WPF-WindowsPresentationFoundation-ADetailedOverview


Bits and pieces from Book- “97 Things Every Software Architect Should Know”

October 11, 2009
  1. Don’t put your resume ahead of the requirements  by Nitin Borwankar
  2. Simplify essential complexity; diminish accidental complexity  by Neal Ford
  3. Chances are your biggest problem isn’t technical   by Mark Ramm
  4. Communication is King; Clarity and Leadership its humble servants  by Mark Richards
  5. Architecting is about balancing   by Randy Stafford
  6. Seek the value in requested capabilities  by Einar Landre
  7. Stand Up!   by Udi Dahan
  8. Skyscrapers aren’t scalable   by Micheal Nygard
  9. You’re negotiating more often than you think  by Michael Nygard
  10. Quantify  by Keith Braithwaite
  11. One line of working code is worth 500 of specification by Allison Randal
  12. There is no one-size-fits-all solution  by Randy Stafford
  13. It’s never too early to think about performance  by Rebecca Parsons
  14. Application architecture determines application performance  by Randy Stafford
  15. Commit-and-run is a serious crime. Respect your Colleagues   by Niclas Nilsson
  16. There Can be More than One  by Keith Braithwaite
  17. Business Drives   by Dave Muirhead
  18. Simplicity before generality, use before reuse  by Kevlin Henney
  19. Architects must be hands on  by John Davies
  20. Continuously Integrate  by Dave Bartlett
  21. Avoid Scheduling Failures   by Norman Carnovale 
  22. Architectural Tradeoffs  by Mark Richards
  23. Database as a Fortress  by  Dan Chak
  24. Use uncertainty as a driver  by Kevlin Henney
  25. Scope is the enemy of success  by Dave Quick
  26. Reuse is about people and education, not just architecture  by Jeremy Meyer
  27. There is no ‘I’ in architecture   by Dave Quick
  28. Get the 1000ft view  by Erik Doernenburg
  29. Try before choosing  by Erik Doernenburg
  30. Understand The Business Domain  by Mark Richards
  31. Programming is an act of design  by Einar Landre
  32. Time changes everything  by Philip Nelson
  33. Give developers autonomy  by Philip Nelson
  34. Value stewardship over showmanship  by Barry Hawkins
  35. Warning, problems in mirror may be larger than they appear  by Dave Quick
  36. The title of software architect has only lower-case ‘a’s; deal with it  by Barry Hawkins
  37. Software architecture has ethical consequences  by Michael Nygard
  38. Everything will ultimately fail  by Michael Nygard
  39. Context is King  by Edward Garson
  40. It’s all about performance   by  Craig L Russell
  41. Engineer in the white spaces  by Michael Nygard
  42. Talk the Talk by Mark Richards
  43. Heterogeneity Wins  by Edward Garson
  44. Dwarves, Elves, Wizards, and Kings  by Evan Cofsky
  45. Learn from Architects of Buildings  by Keith Braithwaite
  46. Fight repetition by Niclas Nilsson
  47. Welcome to the real world by Gregor Hohpe
  48. Don’t Control, but Observe by Gregor Hohpe
  49. Janus the Architect by Dave Bartlett
  50. Architects focus is on the boundaries and interfaces  by Einar Landre
  51. Challenge assumptions – especially your own by  Timothy High
  52. Record your rationale  by Timothy High
  53. Empower developers  by Timothy High
  54. It is all about the data  by Paul W. Homer
  55. Control the data, not just the code   by Chad LaVigne
  56. Don’t Stretch The Architecture Metaphorsby David Ing
  57. Focus on Application Support and Maintenance   by Mncedisi Kasper
  58. Prepare to pick twoby Bill de hOra
  59. Prefer principles, axioms and analogies to opinion and taste  by Michael Harmer
  60. Start with a Walking Skeleton   by Clint Shank
  61. Share your knowledge and experiencesby Paul W. Homer
  62. Make sure the simple stuff is simple   by Chad LaVigne
  63. If you design it, you should be able to code it  by Mike Brown
  64. The ROI variable by George Malamidis
  65. Your system is legacy, design for it  by Dave Anderson
  66. If there is only one solution, get a second opinion  by  Timothy High
  67. Understand the impact of change  by  Doug Crawford  
  68. You have to understand Hardware too   by  Kamal Wickramanayake
  69. Shortcuts now are paid back with interest later  by  Scot Mcphee
  70. “Perfect” is the Enemy of “Good Enough”   by  Greg Nyberg
  71. Avoid “Good Ideas”   by  Greg Nyberg
  72. Great content creates great systems  by  Zubin Wadia
  73. The Business Vs. The Angry Architect by Chad LaVigne
  74. Stretch key dimensions to see what breaks  by  Stephen Jones
  75. Before anything, an architect is a developer  by  Mike Brown
  76. A rose by any other name will end up as a cabbage   by  Sam Gardiner
  77. Stable problems get high quality solutions  by  Sam Gardiner
  78. It Takes Diligence   by Brian Hart
  79. Take responsibility for your decisions  by  Yi Zhou
  80. Dont Be a Problem Solver  by  Eben Hewitt
  81. Choose your weapons carefully, relinquish them reluctantlyby Chad LaVigne
  82. Your Customer is Not Your Customer  by  Eben Hewitt
  83. It will never look like that  by Peter Gillard-Moss
  84. Choose Frameworks that play well with others  by  Eric Hawthorne
  85. Making a strong business case  by  Yi Zhou
  86. Pattern Pathology  by  Chad LaVigne
  87. Learn a new language by  Burk Hufnagel
  88. Dont Be Clever  by Eben Hewitt
  89. Build Systems to be Zuhanden by Keith Braithwaite
  90. Find and retain passionate problem solvers   by Chad LaVigne
  91. Software doesnt really exist   by  Chad LaVigne
  92. Pay down your technical debt   by  Burk Hufnagel
  93. You can’t future-proof solutions   by Richard Monson-Haefel
  94. The User Acceptance Problem by Norman Carnovale
  95. The Importance of Consommé  by  Eben Hewit
  96. For the end-user, the interface is the system   by Vinayak Hegde
  97. Great software is not built, it is grown    by  Bill de hora

Source : http://97-things.near-time.net


New features of Microsoft Visual studio 2008 and .Net framework 3.5 to Comsoft, UAE

October 11, 2009

A LINQ Presentation to Palmchip / TRG

October 11, 2009