Architect Bootcamp Johannes Brodwall, Chief scientist Exilesoft Global.

81
Architect Bootcamp Johannes Brodwall, Chief scientist Exilesoft Global

Transcript of Architect Bootcamp Johannes Brodwall, Chief scientist Exilesoft Global.

Architect BootcampJohannes Brodwall, Chief scientist

Exilesoft Global

Agenda

What’s an architect?How to “do” architecture

One architect toolchest• Practice

What is an architect?

(Hands on)

Types of architects

Problems for Solution architects

Skill for Solution architects

A solution architect is someone who understands the customer’s problem

(including contraints, context, domain knowledge) and uncovers (though a

team effort) and communicates (with credibility) a feasible solution (primarily,

but not exclusively technical)

How to «do» architecture?

Project initiation

Communicating vision

Maintaining the architecture

Toolchest

Example«Smidig» conference application

Vision

Stakeholders

Usage flow

Context

Domain model

Implementation

Deployment

Example vision statement

For Agile practitioners

Who need to expand on their experience and network

The Smidig conference

Is a networking event

Which connects you with other Agile practitioners.

Unlike traditional conferences

This presents the experience of many people through lightning talks.

For Conference organizers

Who want to organize a good conference

The Smidig conference app

Is a web application

Which eliminates unnecessary work.

Unlike commercial conference apps

This is optimized for the large number of talks we have and allows us to make changes fast.

Example stakeholders

Speaker

Description• Experienced• New speaker• Passionate

Duties• Register talk• Upload slide• Give talkValues• Constructive feedback

on talk• Easy CfP• Fast answer

Attendee

Description• Knows about agile• Works in project• Norwegian

Duties• Pay for conference• Get approval to go

Values• Easy registration

Organizer

Description• Volunteer• Works in evenings• Has network

Duties• Select talks• Follow up

paymentsValues• Easy selection process• Good information overview• Never lose a participant• Financial transparency

Sponsor

Description• Busy• Manager• Not very interested

Duties• Provide logo• Pay sponsorship

Values• Informal

communication• Easy evaluation

Example usage flow

Attendance

1. Agile project practitioner wants to learn

2. Attendee goes to Smidig website

3. Attendee registers

4. Attendee pays

5. Attendee receives confirmation mail

6. Organizer can see the registration

7. Organizer sends reminder email to attendee to come

8. Organizer prints badges for attendees

9. Attendee shows up at Smidig and has an excellent time

Speaker

1. Agile experts wants to share knowledge

2. Potential speaker goes to Smidig website

3. Potential speaker registers personal info

4. Potential speaker registers talk

5. Potential speaker receives registration confirmation email

6. Organizer sees registered talk and can market speaking opportunities

7. Organizer accepts talk for confence

8. Speaker receives acceptance email– Alternative: Speaker withdraws talk – organizer updates the talk

and selects another

9. Organizer prints badges for speakers

10. Speaker shows up at Smidig and gives talk

Example context model

Smidig2011.no

Participant Speaker

Organizer

Printing company

Paypal

Example domain model

User• Name• Email• Company• Phone• Password• Accepts email?

Registration• Ticket type• Price• Paid amount• Paypal ref• Payment date• Invoice address [optional]

Talk• Title• Description• Tags[]• Slide file• Status : {pending, accept,

reject}• Email_sent• Position

Speaker*

*

Comment• Title• Text• Created date

*

*

Period• Stage• Title• Time of day• Day

Example implementation

diagram

Router

Controller

1. Find controller

2. Dispatch action

Model class3. Find model

Model4. Manipulate model

5.? Save model

Database

View template View template

6. Render model with view template

Router

/app/controllers

UsersController

1. Find UserController

2. update(id)

/app/models

User class3. find(id)

app/models

User

5. update_attr(params)

6. save

Database

8. Redirect /users/<id>

POST /users/<id>

4. SELECT … FROM users

7. UPDATE users SET …

Router

/app/controllers

UsersController

1. Find UsersController

2. show(id)

/app/models

User class3. find(id)

UserDatabase

/app/views/users

show.html.erb

5. Render

GET /users/<id>

4. SELECT … FROM users

6. Get attributes

Alternative

Browser Smidig2012.no Paypal.com

1. POST /users

2. Redirect to paypalwith return_url and notify_url

3. Perform payment

4. POST /payment_notifications

5. Redirect to return_url

5. GET /user/<id>

Update user info

Show user info

Save user info

Example deployment model

Heroku

Smtp.dreamhost.com

Paypal

PostgreSQL

Smidig-conference

(Rails)

Web user

Developer

smidigdb

git.herokugithub

git pushgit pushgit pull

html/http

http

smtp

Your turn

Practice example

For some stakeholder

Who has a problem

The architect bootcamp

Is a type of activity

Which gives a capability.

Unlike most relevant alternative

This has a distinguishing attribute.

For Exile Developers

Who need to make architectural decisions and design

The architect bootcamp

Is an interactive workshop

Which gives a set of tools.

Unlike spending the time in projects

This gives a chance for reflective learning.

1. Groups of three

2. Presentation of group visions

3. Lets’s make a shared vision!

Break until 13:30

Participants

Description• Developer• Nominated• In a project• Likes to learn

Duties• Share knowledge• Participate actively• Get permission to

attend

Values• Becoming productive• Continue to learn after course• Analytical skills• Get to know people with

ideas

Customer

Description• Not here• Pays for the time

Duties• Evaluate request

to attend

Values• Productivity• Domain understanding• Skilled consultants• Want your time!

Exile mgmtDescription• PMO, Finn• Some are present

Duties• Arrange coach• Talk to customers• Nominate participants

Values• Credible Exile

«architects»

Coach

Description• Experienced architect• Experience from real

projects• Reputation• Can talk to customer

Duties• «Sell» the workshop• Prepare• Define scope

Values• «Adventure»• Get to know participants for

future cooperation• Learn about different different

projects• Grow the Exilesoft brand

Real world example:

CRM

14:30 Finn and Johannes discuss CRM vision live

For Exilesoft PMO

Who should start up Pocket Mobile in Sweden 21st November

The CRM task system

Is a workflow system

Which help organize all the practical details towards a goal.

Unlike Outlook This gives a total picture for everyone involved.

Vision: Pocket Mobile kickoff

For Exilesoft Sweden Sales Director

Who needs to gather prospective customers into a room

The CRM marketing module

Is a mass marketing tool

Which identifies, emails and follow-up potential systems using.

Unlike Excel and YMLP

This Identified receipients and let the whole sales team see the followup.

Vision: Stockholm breakfast seminar

For ________________

Who ________________

The ________________

Is a _________________

Which ________________.

Unlike ______________________

This _______________________.

Vision: Customer conference

Usage flow – breakfast seminar1. Exilesoft decides to have breakfast seminar

2. First time: Someone imports contact info and do-not-mail list from spreadsheets and Highrise

3. Campaign manager creates a receipent list1. Include by geography (include unknown)

2. Exclude by financial parameters

3. Exclude by e.g. @hotmail.com

4. Exclude do-not-send-list

5. Make filter reusable in the future

4. Graphics guys make email

5. Campaign manager exports recipient list into YMLP

6. Campaign manager verifies mail and sends

7. YMLP tracks when users open, forward or delete emails

8. CRM fetches email events from YMLP

9. Receipient find more info and signs-up for event (in CRM??)

10. Campaign manager finds out who should receive reminders

11. Campaign manager gets participant list

1. Optional: Participant list includes pictures from Linkedin

Real world example

Statnett electricity reserves1. Grid operator want to maintain balance of electric production and

consumption

2. Power producer sends unused capacity per hour for each power plant to Statnett using EDIFACT

– Detail: The capacity “line” has a price– Detail: Each plant may have several capacities at different prices– Detail: Capacity may be to increase or to decrease production

3. A spike occurs in the consumption or production

4. Grid operator lists the available reserves per power plant1. Alternative: Operator filters the list by area

5. Grid operator selects a capacity to compensate for spike

6. Grid operator enters power usage on the capacity1. Alternative: The system verifies that capacity is valid

7. Balance is restored

8. At end of hour, system sends usage to pricing system (XML/http)

9. Some time later, pricing system sends price for usage (XML/http)

10. System sends price capacity usage to accounting system

11. Accounting system pays producer for usage

How would you break it down?

Context model• What parties are involved?

• How do they communicate?

Domain model• What concepts are

involved?• How do they relate?

Start after lunch:

13:30

Resume after break

15:45

Implementation:

Time series

Q&A

Your systems

Example vision statement

For some stakeholder

Who has a problem

The system

Is a type of system

Which gives a capability.

Unlike most relevant alternative

This has a distinguishing attribute.

Example stakeholders

UserWho are they• …

What do they do?• …

What do they value?• …

UserWho are they• …

What do they do?• …

What do they value?• …

UserWho are they• …

What do they do?• …

What do they value?• …

UserWho are they• …

What do they do?• …

What do they value?• …

Example usage flow

….

1. Something happens in the real world

2. The event is communicated to the system

3. The system does something

4. Someone does something with the system

5. …

6. …

7. …

8. …

9. …

10. Some goal is achieved

Example context model

What actors did you mention in scenario?

Example domain model

What concepts did you mention in

scenario?

Example implementation

diagram

How does the code work?

Example deployment model

Which servers are involved in

production?

Conclusion:

Tomorrow: Make your system shine!

Thank [email protected]

http://johannesbrodwall.com

http://exilesoft.com

http://twitter.com/jhannes