Title: Software Architecture
1Software Architecture
2Software Architecture
- RulesHow many pico seconds does it take to
execute my application - ConstraintsProgram can only be run on a 32 bit
computer under mod-perl 2.0.2 - ComponentsThe www_readMyMind function in WebGUI
- ConnectorsPutting funcreadMyMind in your URL to
call the function
3Ancient Philosophy
The software architecture of a system describes
the components of a system and how those
components interact at a high level
4The Facts
- Hardware is Cheaper and Faster
- Vast Libraries of Tools and Components Exist
- People have Evolved
5The Dotcom Bust
Riches to Rags 2001 - 2002
6Internet Usage Today
7(No Transcript)
8The Internet(By Al Gore)
- Provides a familiar working environment
- Facilitates Communication
9Gathering the REAL Requirements
10(No Transcript)
11Deciphering Toddler Talk
12Software Design Axiom 1
Clients know what they want but it's up to us to
tell them what it is
13Project Activity Organizer
- Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity. It would let a visitor search for
activities in his area, and if none exist, he
could sign up to organize his own.The tool
needs to do the following - Allow our staff to create new activities and
enter basic information about the activity - Visitors would be able to register to host the
activity in their area. They would need to enter
their name, location, time of the event, etc. - Other visitors would be able to visit the page
and search for activities in their area. They
could do so by searching through a list of all
activities that have been entered. Entering
their zip code and seeing a list of activities
happening nearby. Viewing a map with the
locations of all the activities marked. - If the visitor finds an activity in their area
and wants to join it, they would be able to
register for it. Theyd need to enter their name
and info. This info should be stored and
forwarded to the person who registered that
event. - Our staff should be able to log into the site
and access a list of all events and volunteers
who have signed up - Thats the basic summary. Let me know if you
have any follow up questions.
14Project Activity Organizer
Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity.
Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity.
Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity. It would let a visitor search for
activities in his area, and if none exist, he
could sign up to organize his own.
- Visitors to the site are to be presented
activities local to them - Content Profiling?
- Nothing to do with users relative location to
the web server - Project involves coordinating the same activity
in multiple locations - Project is 3 dimensional (date, time, and
location) - Strong possibility that dimensions are variable
What the hell are local users!?
15Key Step
- Identify missing pieces based on the existing
requirements - Validate without insulting
Mr. Jones, what the hell do you mean by local
users, you idiot
Mr. Jones, which profile field should be used to
identify activities in the users area
- Leading Questions
- Clarifies what the user wants
- Confirms our assumptions
- Proposes and idea that the client may not have
thought of - Filtering activities based on profile information
ReadingBetweenTheLines
16Project Activity Organizer
Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity. It would let a visitor search for
activities in his area, and if none exist, he
could sign up to organize his own.
- The tool needs to do the following
- Allow our staff to create new activities and
enter basic information about the activity
What, exactly, is basic information!?
17Key Step
- Clients assume you will identify their data
- They dont think its your job, they dont think
about it at all! - Force the client to slow down and think about
details that are crucial to the project - What if we are collecting secure data?
- What if a document needs to be versioned?
Holding Hands and Talking Slowly
18Project Activity Organizer
Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity. It would let a visitor search for
activities in his area, and if none exist, he
could sign up to organize his own.
- The tool needs to do the following
- Allow our staff to create new activities and
enter basic information about the activity
- Visitors would be able to register to host the
activity in their area. They would need to enter
their name, location, time of the event, etc.
- Other visitors would be able to visit the page
and search for activities in their area. They
could do so by searching through a list of all
activities that have been entered. Entering
their zip code and seeing a list of activities
happening nearby. Viewing a map with the
locations of all the activities marked.
19Key Step
- Advanced functionality does not come cheaply
- Suggest a different approach to solve the problem
Clients repeat what they hear, even if they
don't understand the meaning
20Project Activity Organizer
Description This is a tool we'd use to let
local users sign up to participate in an upcoming
activity. It would let a visitor search for
activities in his area, and if none exist, he
could sign up to organize his own.
- The tool needs to do the following
- Allow our staff to create new activities and
enter basic information about the activity
- Visitors would be able to register to host the
activity in their area. They would need to enter
their name, location, time of the event, etc.
- Other visitors would be able to visit the page
and search for activities in their area. They
could do so by searching through a list of all
activities that have been entered. Entering
their zip code and seeing a list of activities
happening nearby. Viewing a map with the
locations of all the activities marked.
- If the visitor finds an activity in their area
and wants to join it, they would be able to
register for it. Theyd need to enter their name
and info. This info should be stored and
forwarded to the person who registered that event.
- Our staff should be able to log into the site
and access a list of all events and volunteers
who have signed up
Thats the basic summary. Let me know if you
have any follow up questions.
21Key Step
There are a hundred questions we need to ask,
with each answer spawning a new line of
questioning What do we really know?
Clients know what they want but it's up to us to
tell them what it is
Client assume you know what they are talking
about
22Jumping Forward
- Assume we have finished gathering requirements
- How do we build software geared for your every
day average person? - Take off your logical running shoes and take a
stroll in the loafers of mediocrity
23A Stroll Down Everyday Lane
24Users are not morons
My software is so freaking great that people are
gonna just have to figure it out!
25(No Transcript)
26Design software for morons
Lowering the bar dramatically increases the
number of people who are able to use your
software, which translates into more customers
A sharp drop-off occurs each time you introduce
something that makes your software more difficult
to use
27Thinking like the user
- What the user expects typically doesnt make
sense to the logical mind - ID10T jokes are good examples of the differences
between how the end user and developer think
28Software Design Axiom 2
Users dont have the manual, and if they did,
they wouldnt read it
29User Expectations
- Users dont approach new software with a
completely clean slate. - Users assume your software works like similar
software theyve used in the past - Users will have some preconceptions about how
your software should work, and will make guesses
based on them.
30The User Model
The users mental understanding of what your
program is doing
31Avoid Violating the User Model
- The fastest, most reliable, time saving Internet
applications go unused because they are difficult
to use - Slower, unreliable, buggy software is used
everywhere because users dont need to read the
manual to figure it out.
Users dont have the manual, and if they did,
they wouldnt read it
32Identifying the User Model
- Who is this software intended for?
- Invent some imaginary users
Keep it simple, stupid
33Joe Johnson
- Investment Banker
- Works on Wall Street
- Lives in NYC
- Uses the internet to do his job
- Typically uses the same financial sites
- Single
- No computer or internet connection at home
- Spends his free time watching TV or going out to
local bars and clubs
34Sue Smith
- Stay at home mom
- Lives in Jefferson City, Missouri
- Husband is a network admin at a local bank
- Home has multiple networked computers
- Handles all the finances in the home
- Spends a good deal of time online while her kids
are in school - Enjoys general surfing, online shopping, and
perusing auction sites - She regularly buys things on Ebay
35So what do your users expect?
- Joe is used to entering symbols into text boxes,
being presented with current data, and being able
to drill down to find out more details. - Sue is a power user and expects to be able to
enter phrases and/or logical symbols to help
refine her search
36Real People
I dont understand
How am I supposed to search?
financial
financial
- This is a web page that allows you to find free
financial seminars in your area and register for
them - There is a text box on the screen which allows
you to search, what would you first type into
that text box to find a list of seminars?
- Perhaps you need a key word search as well as a
zip code search - You might need an entirely different user model
37User Model Rule 1
- Same principal applies to software
- The more little inconveniences your software
has, the grumpier your users will become - Well designed software behaves exactly how the
user expects it to.
Broken Coffee Maker
Flat Tire
_________________
Grumpy You
Users like to be in control of their environment
38User Model Rule 2
- Your software should behave in the same way that
more popular software similar to yours behaves - Someone else spent a lot of time and money
identifying the user model, dont waste your
own. - Dont try to go against convention just to be
different. Use words and icons your users will
be familiar with.
People like the wheel the way it is
39User Model Rule 3
- People use software to accomplish tasks
- Register for an activity on the Internet
- Download photos from their digital camera
- Build a website with popular content
- management software
- People care about the task, so dont give them
choices that are unnecessary or unrelated. It
leads to frustration
Users dont want to make decisions they dont
care about
40Gratuitous Microsoft Bashing Example
- MS Office lets you drag the menu bar anywhere on
the screen. - Grabbing a little too far to the left when trying
to pull down the file menu places the menu in the
last place you could want it to be.
41- Every time you provide an option, youre asking
the user to make a decision - Try to ensure the decisions you present your user
is a decision that they care about.
42What Next?
With requirements nailed down and user model
defined, we need to determine how the software is
actually going to work.
43Reality Bites
- The reality is, its not always possible to give
users everything they want - The software itself has a model encoded into
bits and faithfully executed by the CPU - The Program Model is the LAW!
44User Model vs Program Model
Example Its fairly common when building an
asset in WebGUI to want to choose an individual
user from a list of all users in the system What
does the user model suggest? A problem occurs
when the user base gets very large. A select box
with thousands of users takes a long time to
load. We have an unhappy marriage of user and
program model
Making the Program Model match the User Model
45Change the User Model
Change the form field to a text box and make the
user type in the name of the person they would
like to select.
46Change the Program Model
Force administrators to choose the users that are
available using groups, limiting the number
displayed to a maximum capacity.
47User Model Program Model
- As a general rule, you should change the program
model to match the user model - If you have to change the user model, try to use
another accepted user model. - In our example, we can use a pop up search and
retrieve model. - When the program model corresponds to the user
model, its time to get organized!
48Organizing your Software
- Many people do it the old-fashioned way
- Write a functional outline detailing the
requirements - Attempt to piece together requirements in a
sensible manner - You usually wind up with software containing the
right functionality, but with a flow that doesnt
make sense. - Youve most likely violated the user model!
- Lets try a more intuitive approach
49Leading the Sheep
- Focus on the activities the user will be doing,
making it easy for them to be accomplished - Provides for better flowing software
- Streamlines your application, eliminating
unnecessary features - Lead your users to the desired result rather
than making them figure out how to get there
themselves.
50Software Design Axiom 3
Users have better things to do with their lives
than use your software.
51Activities Based Planning
- Make it simple for users to accomplish tasks
- Best illustrated with an example
- Lets implement our Activates Organizer
52Traditional Approach
- Create new activities
- Search for activity by zip code or text string
- Return activity results
- Allow user to add results to registration pool
- Decide if user is registering or hosting for
each activity - Collect user information
- Register user for event
- Send notifications
- For lack of a better way of thinking about the
problem, we create something resembling a
shopping cart. - User searches for activities
- Selects desired activities and adds them to a
pool - User goes through a checkout process
TOO MANY DECISIONS!
There are bound to be support calls!
53Activities Based Approach
- Create activities (for administrators)
- What conclusions do you come to?
- Starting with a text box search may not be
intuitive - Perhaps a menu of options would be more clear.
54A Better Solution
What would you like to do?
- Search and register for activities in your area
- Host an activity in your area
Much Easier!
55Some New Features
- What conclusions do you come to?
- Starting with a text box search may not be
intuitive - Perhaps a menu of options would be more clear.
56No Pain, No Gain
57Software Design Axiom 4
People dont read, and if they did they wouldnt
want to read what youve written anyway
58The Functional Specification
59The Technical Specification
- Relational Database Models
- Choice of Programming Language
60Imperfection is the Norm
61Consistency is the Key
62QA