Imagine cup- Architecture/Design talk
-
Upload
mohamed-samy -
Category
Technology
-
view
1.108 -
download
0
description
Transcript of Imagine cup- Architecture/Design talk
Designing your solution Mohamed R. Samy
3 April 2010
About the Speaker• Snr. Application Architect Right Solutions• Solutions Architect MVP 2008- 2009• MCP, MCSD Since 2001• Aiming for 2 communities
– ALM– Dynamics AX
• http://developmentmaster.spaces.live.com
• @msamy
Your Mission• Together you can make a difference. Create
inventive software and service solutions that unleash the power of technology to benefit your community, country or region… or … the entire planet.
Agenda• Problem domain• Solution domain– Conceptual view– Logical view– Physical view
• Elements of a SOLID design
Problem domain• So what is your problem?
U.N. millennium goals
• Reduce child mortality
• Eradicate extreme hunger and poverty
• Promote gender equality and empower women
• Achieve universal primary education
•
U.N. millennium goals• Improve maternal health
• Combat HIV/AIDS, malaria and other diseases
• Ensure environmental sustainability
• Develop a global partnership for development
Problem definition• What is the problem? • Who has the problem or who is the client/customer?
This should explain who needs the solution and who will decide the problem has been solved.
• What form can the resolution be? What is the scope and limitations (in time, money, resources, technologies) that can be used to solve the problem?
Solution domain• Define your architecture• “Software application architecture is the
process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability.”
Define your architecture goals
Architeture goals• Start with use cases and usage scenarios or
“user stories”• Have a scenario for each feature in your
system• How will your system be part of the scenario?
Architecture principles• Build to change not to last• Model and analyze to reduce risk• Use the model as a collab. Tool• Identify key engineering decisions
Build to change not to last
Model to analyze and reduce risk
Ya salam law nedeeha shewayet inheritance!
Use models as a comm. & collab. tool
Identify key engineering decisions
Evaluating your architecture• What assumptions have I made in this architecture?• What explicit or implied requirements is this
architecture meeting?• What are the key risks with this architectural
approach?• What countermeasures are in place to mitigate key
risks?
Design principles• Separation of concerns• Single responsibility• Don’t repeat yourself (Dry)• Minimize BDUF
Single responsibility
Separation of concerns
Don’t repeat yourself
Don’t BDUF/YAGNI
Yagni balash big design up front !
So what do I do then?• There are some things you need to determine.
What type of application is it?• Web, desktop, cloud service?
How will it be deployed?• Mobile app, specialized hardware? Web
inerface?
• Don’t forget the physics!! Bandwidth, network latency, processor speeds?
Choosing the appropriate technology• Shouldn’t we just use the buzzwords?
Determine quality attributes• How good? How fast? How much is enough?• “Quality is not a goal, it’s a lifestyle.” Dubai
one• Happy scenarios vs exceptions.
Determine crosscutting concerns• Loggging• Exception handling• Caching• Security• Profile management … etc
Architecture styles• Layered• Service bus• DDD• Client/Server• SOA• Which is better?
Arch Styles
So can I see a sample design document?
• Use a wiki, or office live.• Forget templates, build your own.
How can we support you?• Me evil idea… • How else may we help?
Make us proud
Q&A