imagine cup- architecture/design talk

Post on 17-May-2015

1.105 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

A presentation I did to support the Egyptian Imagine cup team, but anyone is welcome to use/download/comment

TRANSCRIPT

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

Thank You

m_raafat_samy@hotmail.com@msamy

Q&A

top related