CS 411 Final
Fitt's Law
"The time to acquire a target is a function of the distance to and size of the target."
parkinsons law
"Work expands so as to fill the time available for its completion" A corollary: If you wait until the last minute, the task only takes a minute to do
Direct Costs
Costs that are clearly chargeable to a specific work package. Labor, materials, equipment, and other
Structural patterns:
Deal with decoupling interface and implementation of classes and objects Design Patterns that ease the design by identifying a simple way to realize relationships between entities.
what are some micro (bottom-up approaches to budgeting?
Template method Parametric Procedures Applied to Specific Tasks Detailed Estimates for the WBS Work Packages Phase Estimating: A Hybrid
Bottom-up (micro) estimates:
Project is broken down into work packages Low level managers price out each work package Overhead and profits are added to develop the budget
list some design issues
Response time Help facilities Error handling Menu and command labeling Application accessibility Internationalization
Hofstadter's law
"It always takes longer than you expect, even when you take into account Hofstadter's Law." From his classic book Escher, Goedel Bach; An Eternal Golden Braid
Learnability-design principle
A Web or Mobile App interface should be designed to minimize learning time, and once learned, to minimize relearning required when the App is revisited.
Anticipation
A Web or Mobile App should be designed so that it anticipates the use's next move.
Time-Phased Budgets
A cost estimate is not a budget unless it is time-phased. Time phasing begins with the time estimate for a project. Time-phased budgets mirror how the project's cash needs (costs) will occur or when cash flows from the project can be expected. Budget variances occur when actual and forecast events do not coincide.
what is a pattern
A pattern is a recurring solution to a standard problem, in a context. Patterns support reuse of software architecture and design
what is budgeting, what does it imply?
A plan for the costs of project resources A budget implies constraints Thus, it implies that managers will not get everything they want or need
Human interface objects
A vast library of reusable human interface objects has been developed for Web or Mobile Apps.
how can you maintain backwards compatibility?
A very simple way to handle this is with an adapter pattern that provides legacy interfaces on one side and translates the calls to the new platform
Visible navigation
A well-designed Web or Mobile App interface provides "the illusion that users are in the same place, with the work brought to them."
Maintain work product integrity
A work product (e.g., a form completed by the user, a user specified list) must be automatically saved so that it will not be lost if an error occurs.
name some creational patterns
Abstract Factory: Factory for building related objects Builder: Factory for building complex objects incrementally Factory Method: Method in a derived class creates associates Prototype: Factory for cloning new instances from a prototype Singleton: Factory for a singular (sole) instance Ensure that a class has only one instance and provide a global point of access to it
structural patterns
Adapter: Translator adapts a server interface for a client Bridge: Abstraction for binding one of many implementations Composite: Structure for building recursive aggregations Decorator: Decorator extends an object transparently Facade: Simplifies the interface for a subsystem Flyweight: Many fine-grained objects shared efficiently. Proxy: One object approximates another
Give an example of using a design language on a web page
Bold text might mean a waring, yellow boxes might be tips, etc
what are some behavior patterns
Chain of Responsibility: Request delegated to the responsible service provider Command: Request or Action is first-class object, hence re-storable Iterator: Aggregate and access elements sequentially Interpreter: Language interpreter for a small grammar Mediator: Coordinates interactions between its associates Memento: Snapshot captures and restores object states privately Observer: Dependents update automatically when subject changes State: Object whose behavior depends on its state Strategy: Abstraction for selecting one of many algorithms Template Method: Algorithm with some steps supplied by a derived class Visitor: Operations applied to elements of a heterogeneous object structure
name some macro (top down) approaches to budgeting
Consensus methods Ratio methods Apportion method Function point methods for software and system projects Learning curves
What is meant by a contextual UI?
Contextual UIs hide options when they are not needed. For example, no need to show graphics options when working on strictly text
Direct (Project) Overhead Costs
Costs incurred that are directly tied to an identifiable project deliverable or work package. Salary, rents, supplies, specialized machinery
what are the 3 types of patterns?
Creational patterns: Structural patterns: Behavioral patterns:
what are design patterns not
Data structures that can be encoded in classes and reused as is (i.e., linked lists, hash tables) Complex domain-specific designs (for an entire application or subsystem) If they are not familiar data structures or complex domain-specific subsystems, what are they? They are: "Descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context."
Behavioral patterns:
Deal with dynamic interactions among societies of classes and objects How they distribute responsibility These design patterns are specifically concerned with communication between objects. design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication. command - queue commands so you can undo them redo etc
Creational patterns:
Deal with initializing and configuring classes and objects Abstract Factory: Factory for building related objects Singleton: Factory for a singular (sole) instance
what are the benefits of design patterns?
Design patterns enable large-scale reuse of software architectures and also help document systems Patterns explicitly capture expert knowledge and design tradeoffs and make it more widely available Patterns help improve developer communication Pattern names form a common vocabulary
what is the formula for calculating the estimated time for a software engineering process?
Estimated Time = (Toptimistic + 4Tlikely + Tpessimistic) / 6
why is it important to estimate time and cost?
Estimates are needed to support good decisions. Estimates are needed to schedule work. Estimates are needed to determine how long the project should take and its cost. Estimates are needed to determine whether the project is worth doing. Estimates are needed to develop cash flow needs. Estimates are needed to determine how well the project is progressing. Estimates are needed to develop time-phased budgets and establish the project baseline.
explain the migration strategy - modify
If the gap is small, and the infrastructure can support the end state, it might make sense to use this approach Incremental upgrades carry relatively low risk, and it's easy to back out if something goes wrong A downside - you are usually stuck with whatever the existing technologies are There might be opportunities to improve existing functionality as part of the upgrade
how can you improve the process of cost estimating?
Inputs from a lot of areas are required to estimate a project May have a professional cost estimator to do the job Project manager will work closely with cost estimator when planning a project We are primarily interested in estimating direct costs Indirect costs are not a major concern
observer pattern
Intent: Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically Used in Model-View-Controller framework Model is problem domain View is windowing system Controller is mouse/keyboard control
proxy pattern
Proxy-structural pattern Proxy: acts as convenient surrogate or placeholder for another object. Remote Proxy: local representative for object in a different address space Virtual Proxy: represent large object that should be loaded on demand Protected Proxy: protect access to the original object
what are reasons for why you need to adjust estimates?
Reasons for Adjusting Estimates Interaction costs are hidden in estimates. Normal conditions do not apply. Things go wrong on projects. Changes in project scope and plans.
explain the wrap migration strategy pros and cons
The third approach is to leave the existing system in place and running, and add a layer that provides additional capabilities This is becoming more popular, since the sunk cost is preserved and the additional functionality can be provided in just about any technology For one thing, you've just dug a hole and planted your legacy application firmly in it by building things on top of it Basically you are gaining in the short term by deploying a simpler solution, but in the long run it might cost significantly more (maintenance, replacement cost, etc) Performance might suffer either here or downstream...you are asking a system to do more work than perhaps it has been designed for
Consistency
The use of navigation controls, menus, icons, and aesthetics (e.g., color, shape, layout)
upstream and downstream testing
There will be processes upstream from the new system providing inputs, and processes downstream taking its outputs Testing the new system requires testing both upstream and downstream processes in addition to the new system
what are the 4 interface design steps:
Using information developed during interface analysis, define interface objects and actions (operations). Define events (user actions) that will cause the state of the user interface to change. Model this behavior. Depict each interface state as it will actually look to the end-user. Indicate how the user interprets the state of the system from information provided through the interface.
what is ETL?
extract, transform, load
QWAN
good UI has it Quality without a name
what are the four phases of RUP?
inception, elaboration, construction, transition
estimating the budget is difficult because
lots of people have input on the budget, there may not be historical info about similar costs, even with similar projects there can be significant differences
the more standardize the project and components, the more experienced the cost estimator, the ______ the uncertainty for the budget estimate
lower
what are some motivations for migration?
market pressure, our system is slow/not flexible/end-of-life, someone offers us a deal on a new system,
what is the formula for estimating project budgets:
material + labor + equipment + capital + overhead + profits = bid aka resources + profits = bid
what are the three approaches to migration
modify, wrap, scrap
migration involves _______
moving from something that we have to something that we want/need
planning fallacy
people tend to underestimate the time of work necessary to complete a task, but not if the estimates are submitted anonymously (Kahneman and Tversky)
what is the design evaluation cycle?
preliminary design -> build prototype interface -> user evaluates interface -> evaluation is studied by designer -> design modifications are made -> build prototype # n interfaceuser evaluates interface -> evaluation is studied by designer -> modifications are made or design is complete
what are dependencies
programs are dependent on others and any changes in platform or application might introduce a nightmarish tangle of dependencies
what are some factors that estimate the quality of the estimates?
project duration, people, padding estimates, project structure and organization
there are two types of errors
random and bias - need to eliminate systematic errors
patterns support ___ of software architecture and design
reuse - its cheaper
multiple paths, good or bad?
the temptation is to provide lots of ways to accomplish a task but don't do that, pick one and be consistent; figure out what users expect that path to be with focus groups; don't be afraid to change UI based on user feedback
learning curve calculations
the total time = Time for first unit * the sum from n=1 to n of the number of units raised to (log decimal rate/ log 2)
what is the future state?
this is the next step after gap analysis, you must describe as closely as possible what the future state should be
how should you test the green field/new system?
Typically the old system is kept running and work is routed to both the old and new systems For example, a trading application would feed trading floor data to both systems, operating in parallel, and at the end of the day they should produce identical results Another approach is to generate data on the old system and feed it to the new system
What are the four steps of Polya's problem-solving approach?
Understand the problem Plan a solution Carry out the plan Examine the result for accuracy
According to the heat maps we looked at, what area does the user's eye spend the most time looking at?
Upper left quadrant
skip
higher
some guidelines for good UI:
-Keep it simple i.e. Steve Jobs remotes -keep it consistent: users learn a page so menus etc should appear in the same place -no surprises- it should just work without much thought and without unexpected results
what are the guidelines for estimating time, cost, resources
Have people familiar with the tasks make the estimate. Use several people to make estimates. Base estimates on normal conditions, efficient methods, and a normal level of resources. Use consistent time units in estimating task times. Treat each task as independent, don't aggregate. Don't make allowances for contingencies. Adding a risk assessment helps avoid surprises to stakeholders.
Focus
The Web or Mobile App interface (and the content it presents) should stay focused on the user task(s) at hand.
Readability
All information presented through the interface should be readable by young and old.
what is an anti-pattern?
An anti-pattern is an architecture that you should not implement it is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive. Busy waiting Inner platform God object Big pile o' poop
whats the point of contingency funds and time buffers
Are created independently to offset uncertainty. Reduce the likelihood of cost and completion time overruns for a project. Can be added to the overall project or to specific activities or work packages. Can be determined from previous similar projects.
some tips for aesthetic design
Don't be afraid of white space. Emphasize content. Organize layout elements from top-left to bottom right. Group navigation, content, and function geographically within the page. Don't extend your real estate with the scrolling bar. Consider resolution and browser window size when designing layout.
what does the ETL tool do?
ETL tools Extract data from a database, apply rules to Transform the data into another format or schema, and finally Load the data into a new database
according to Bruce Tognozzi effective interfaces are
Effective interfaces are visually apparent and forgiving Effective interfaces do not concern the user with the inner workings of the system. Effective applications and services perform a maximum of work, while requiring a minimum of information from users.
what did the GoF do?
Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides (Addison-Wesley, 1995) Design Patterns book catalogs 23 different patterns as solutions to different classes of problems, in C++ & Smalltalk The problems and solutions are broadly applicable, used by many people over many years GOF presents each pattern in a structured format
describe the iterative budgeting process- negotiation in action
Most projects use some combination of top-down and bottom-up budgeting Both are prepared and compared once you calculate the expected time for each task create a preliminary schedule, you do a forward pass and a backward pass the forward pass finds out the earliest times the activity can start and finish the backward pass says how late the activity can start and finish follow early start to the early finish, then do it from late finish to late start
General and Administrative Overhead Costs
Organization costs indirectly linked to a specific package that are apportioned to the projectFront office and sales salaries, wages, and commissions Office supplies Outside legal and audit fees Administration and sales office lease Administration and sales utilities Administration and sales telephones Administration and sales travel and entertainment
develop a design language:
Part of being consistent is to create a language for your app based in design For example Bold text might always mean a tip or hint A yellow box in the upper right might mean caution Carry the language elements throughout not only the app, but its packaging, marketing and so on
what are the 4 essential elements of design patterns?
Pattern name: increases vocabulary of designers Problem: intent, context, when to apply Solution: UML-like structure, abstract code Consequences: results and tradeoffs
what are some reasons why a company may not have a good handle on the type of systems they have:
Systems grow organically over a period of time Staff comes and goes The company might have lots of stovepiped apps
Latency reduction
The Web or Mobile App should use multi-tasking in a way that lets the user proceed with work as if the operation has been completed.
Why is it important to keep menu items in the same place on each page?
The consistency helps train the user on how to use the application
Efficiency
The design of the Web or Mobile App and its interface should optimize the user's work efficiency, not the efficiency of the software engineer who designs and builds it or the client-server environment that executes it.
Communication
The interface should communicate the status of any activity initiated by the user
Controlled autonomy
The interface should facilitate user movement throughout the Web or Mobile App, but it should do so in a manner that enforces navigation conventions that have been established for the application.
what is estimating?
The process of forecasting or approximating the time and cost of completing project deliverables. The task of balancing the expectations of stakeholders and the need for control while the project is implemented
gap analysis:
The real work is to answer the question, "how do we get from here to there?" That's the gap analysis What you want to produce is a strategy, a series of steps, that will move you toward the desired end state in a timely manner The gap analysis becomes a project plan for the migration
Top-down (macro) estimates:
Top managers estimate/decide on the overall budget for the project These trickle down through the organization where the estimates are broken down into greater detail at each lower level The process continues to the bottom level
Track state
When appropriate, the state of the user interaction should be tracked and stored so that a user can logoff and return later to pick up where she left off.
the interface should let the user know what three things:
Where am I? The interface should provide an indication of the Web or Mobie App that has been accessed inform the user of her location in the content hierarchy. What can I do now? The interface should always help the user understand his current options what functions are available? what links are live? what content is relevant? Where have I been, where am I going? The interface must facilitate navigation. Provide a "map" (implemented in a way that is easy to understand) of where the user has been and what paths may be taken to move elsewhere within the Web or Mobile App.
explain the scrap migration strategy
You might have no choice...sunsetting hardware, end-of-life software, or the gap is so large that it makes sense to start over This approach usually has the most constraints...you typically need to preserve the functionality of the old system while you are at the same time dropping it off a cliff Even though constrained, there's significant opportunity to future-proof the system by using newer methods and technologies For green field projects there's a lot of up-front analysis to do When modifying, you usually can get away with slacking off on the as-built analysis of existing functionality, since it isn't going away For green field designs each piece of functionality must be recreated exactly and so must be exhaustively documented
who was Christopher Alexander?
a professor of architecture he figured out how patterns can be helpful
apportion method
top down method Overall project budgets can be set/controlled very accurately A few elements may have significant error Management has more control over budgets Small tasks need not be identified More difficult to get buy in Leads to low level competition for larger shares of budget ed individually
name the 3 types of estimates
top down(macro), bottom up(micro), negotiated
testing UI should involve _____ users
untouched
where should important information and functionality go?
upper left hand corner or web based apps
creativity in the UI is constrained by
usability
what does UX stand for
user experience
what does UI stand for
user interface
what is the present state?
when you must establish a baseline for where your system is now; The first step, then, is to do a thorough inventory of all of the physical components Once that's in place we must do the same for the business processes and flows The goal is to be able to document fairly precisely the current situation
student syndrome
you don't focus on the task until the task is due for completion
what is function of point count method?
you figure out the number of inputs, outputs, inquiries, how many of them there are and figure out a total for the complexity factor More likely to catch unusual expenses People tend to overstate their budget requirements Management tends to cut the budget
contextual UI
your app should understand or learn what features are used when and use that knowledge to simplify the interface
