ICS 121: Design Specialties
Overview
- Security design concerns
- Reuse design concerns
- Scalability design concerns
- UI design concerns
- Persistence design concerns
Security design concerns
- What specific misuses are you trying to prevent?
- Prevent misuse at every access layer:
- Physical access to the machines and backup tapes
- Network addresses, routers, and wiring
- Operating system accounts and services
- Application code
- Authentication: how do you know that the user is the person that they claim to be?
- Authorization: what is this user allowed to do?
- Encryption: can anyone else intercept communications?
- Auditabiliy: Can you review how the system was used and detect
any misuse? Can you recover from misuse?
Reuse design concerns
- There are many kinds of reuse: any differnt artifact can be
reused, including requirements documents, design documents, and code.
- It takes more work to make a component more broardly reusable:
better documentation, support for more use cases, better error
handling.
- Reuse saves time and effort in the long-run: more work, but
shared among more projects that use the component over time.
- Reuse is most successful when there is a community of users that
can support each other and make modifications over time.
- Reuse can be opportunistic or planned.
- Opportunistic reuse happens by chance: you create a reusable
component and hope that someone will reuse it someday.
- Planned reuse happens within the context of a product line
within a company. You have some idea of who will
reuse the code and when, and what specific capabilities they will
need.
Scalability design concerns
- Scalability is the ablity of your product to handle more
difficult inputs. E.g., process longer input files, or handle
input from more users at the same time.
- Before you can talk about scalability, you must define the input
parameter that is being scaled. E.g., number of concurrent
users. E.g., number of bytes in the input file.
- One way to improve scalability is to use more efficient
datastructures and algorithms. E.g., no Bubblesort.
- Another way to improve scalability is to deploy components
across multiple machines and load-balance between them. E.g.,
Yahoo.com has many many web server machines.
UI design concerns
- UI design is a complex topic that requires study and practice to
do well.
- One good piece of advice for non-experts is to simply make their
new products imitate other products that have been used by the
target audience. E.g., if you are designing a new spreadsheet, make
the UI similar to MS Excel, because your customers probably know
Excel.
- When designing a user interface:
- Start by understanding the tasks that the user must
accomplish. Use use cases and low-fidelity mockups
- Address screen layout, widget choice, and presentation last
- UI consistency
- The most important type of consistency is a good match between
the user's task and the use cases supported by the
product.
- Your product should be consistent with published UI guidelines
and the UIs of other popular products.
- Your product should be internally consistent: e.g., use
the same label for the same button even if it appears in more
that one dialog box.
- Evaluate your use cases and use UI design checklists. Have a
few users try the product and give you feedback. Do not try to
conduct a large-scale user study unless you are trained to do
that.
Persistence design concerns
- "Persistence" means the storage of data to persistent media,
such as a file on a harddisk. Persistence also includes
database design.
- Can your database or file accurately represent everything that
needs to be stored? Enough flexibility? Enough capacity?
- Is your database or file format easy and efficient to access and
update? Even when it holds a large amount of data?
- What access controls should be placed on the files or
database?
- For any new file formats, try using XML before considering any other
approach.
-
sample use case templateexample test plan templateProject plan template