architect bootcamp
DESCRIPTION
Architect Bootcamp. Johannes 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. - PowerPoint PPT PresentationTRANSCRIPT
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
VisionStakeholders
Usage flowContext
Domain modelImplementation
Deployment
Example vision statement
For Agile practitionersWho need to expand on their experience and
networkThe Smidig conference
Is a networking eventWhich connects you with other Agile practitioners.
Unlike traditional conferencesThis presents the experience of many people
through lightning talks.
For Conference organizersWho want to organize a good conference
The Smidig conference appIs a web application
Which eliminates unnecessary work.
Unlike commercial conference appsThis is optimized for the large number of talks we have and allows us to make changes fast.
Example stakeholders
Speaker
Description• Experienced• New speaker• PassionateDuties• Register talk• Upload slide• Give talkValues• Constructive feedback
on talk• Easy CfP• Fast answer
AttendeeDescription• Knows about agile• Works in project• NorwegianDuties• Pay for conference• Get approval to go
Values• Easy registration
OrganizerDescription• Volunteer• Works in evenings• Has networkDuties• 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 learn2. Attendee goes to Smidig website3. Attendee registers4. Attendee pays5. Attendee receives confirmation mail6. Organizer can see the registration7. Organizer sends reminder email to attendee to come8. Organizer prints badges for attendees9. Attendee shows up at Smidig and has an excellent
time
Speaker
1. Agile experts wants to share knowledge2. Potential speaker goes to Smidig website3. Potential speaker registers personal info4. Potential speaker registers talk5. Potential speaker receives registration confirmation email6. Organizer sees registered talk and can market speaking
opportunities7. Organizer accepts talk for confence8. Speaker receives acceptance email
– Alternative: Speaker withdraws talk – organizer updates the talk and selects another
9. Organizer prints badges for speakers10. 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/controllersUsersController
1. Find UserController
2. update(id)
/app/modelsUser class
3. find(id)
app/modelsUser
5. update_attr(params)
6. save
Database
8. Redirect /users/<id>
POST /users/<id>
4. SELECT … FROM users
7. UPDATE users SET …
Router
/app/controllersUsersController
1. Find UsersController
2. show(id)
/app/modelsUser class
3. find(id)
UserDatabase
/app/views/usersshow.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
HerokuSmtp.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 stakeholderWho has a problem
The architect bootcampIs a type of activity
Which gives a capability.
Unlike most relevant alternativeThis has a distinguishing attribute.
For Exile DevelopersWho need to make architectural decisions and
designThe architect bootcamp
Is an interactive workshopWhich gives a set of tools.
Unlike spending the time in projectsThis gives a chance for reflective learning.
1. Groups of three2. Presentation of group visions3. 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
attendValues• 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 scopeValues• «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 PMOWho should start up Pocket Mobile in
Sweden 21st NovemberThe CRM task system
Is a workflow systemWhich 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 DirectorWho needs to gather prospective customers into a room
The CRM marketing moduleIs a mass marketing tool
Which identifies, emails and follow-up potential systems using.
Unlike Excel and YMLPThis 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 seminar2. First time: Someone imports contact info and do-not-mail list from spreadsheets and
Highrise3. Campaign manager creates a receipent list
1. Include by geography (include unknown)2. Exclude by financial parameters3. Exclude by e.g. @hotmail.com4. Exclude do-not-send-list5. Make filter reusable in the future
4. Graphics guys make email5. Campaign manager exports recipient list into YMLP6. Campaign manager verifies mail and sends7. YMLP tracks when users open, forward or delete emails8. CRM fetches email events from YMLP9. Receipient find more info and signs-up for event (in CRM??)10. Campaign manager finds out who should receive reminders11. 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
consumption2. 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 production4. Grid operator lists the available reserves per power plant
1. Alternative: Operator filters the list by area5. Grid operator selects a capacity to compensate for spike6. Grid operator enters power usage on the capacity
1. Alternative: The system verifies that capacity is valid7. Balance is restored8. 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 system11. 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 break15:45
Implementation:Time series
Q&A
Your systems
Example vision statement
For some stakeholderWho has a problem
The systemIs a type of system
Which gives a capability.
Unlike most relevant alternativeThis 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 world2. The event is communicated to the system3. The system does something4. Someone does something with the system5. …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!