System Design
System Design
Sequence Diagram:
Sequence diagrams describe interactions among classes in terms of an exchange of
messages over time.
Collaboration Diagram:
A collaboration diagram describes interactions among objects in terms of sequenced
messages. Collaboration diagrams represent a combination of information taken from class,
sequence, and use case diagrams describing both the static structure and dynamic behavior of a
system
Activity Diagram:
An activity diagram illustrates the dynamic nature of a system by modeling the flow of
control from activity to activity. An activity represents an operation on some class in the system
that results in a change in the state of the system. Typically, activity diagrams are used to model
workflow or business processes and internal operation. Because an activity diagram is a special
kind of state chart diagram, it uses some of the same modeling conventions.
. Component Diagram:
A component diagram in the Unified Modeling Language, depicts how component are
wired together to form larger components and/or software systems. Components are wired
together by using an assembly connector to connect the required interface of one component with
the provided interface of another component. The illustrates the service consumer-service
provider relationship between the components.
An assembly connector is a “connector between two components that defines that one
component provides the services that another component requires. An assembly connector is a
connector that is defined from a required interface or port to a provided interface or port”. When
using a component diagram to show the internal structure of a component the provided and
required interfaces of the encompassing component can delegate to the corresponding interfaces
of the contained components.
Deployment Diagrams:
Deployment diagrams depict the physical resources in a system including nodes,
components, and connections.
Good user interface design facilitates finishing the task at hand without drawing
unnecessary attention to it. Graphic design may be utilized to support its usability. The design
process must balance technical functionality and visual elements (e.g., mental model) to create a
system that is not only operational but also usable and adaptable to changing user needs.
Interface design is involved in a wide range of projects from computer systems, to cars, to
commercial planes; all of these projects involve much of the same basic human interactions yet
also require some unique skills and knowledge.
I believe the most important thing you can possibly do is ensure your user interface
works consistently. If you can double-click on items in one list and have something happen, then
you should be able to double-click on items in any other list and have the same sort of thing
happen. Put your buttons in consistent places on all your windows, use the same wording in
labels and messages, and use a consistent color scheme throughout. Consistency in your user
interface enables your users to build an accurate mental model of the way it works, and accurate
mental models lead to lower training and support costs.
The only way you can ensure consistency within your application is to set user interface
design standards, and then stick to them. You should follow Agile Modeling (AM)’s Apply
Modeling Standards practice in all aspects of software development, including user interface
design.
When you are developing the user interface for your system you will discover that your
stakeholders often have some unusual ideas as to how the user interface should be developed.
You should definitely listen to these ideas but you also need to make your stakeholders aware of
your corporate UI standards and the need to conform to them.
Your users need to know how to work with the application you built for them. When an
application works consistently, it means you only have to explain the rules once. This is a lot
easier than explaining in detail exactly how to use each feature in an application step-by-step.
If it is difficult to get from one screen to another, then your users will quickly become
frustrated and give up. When the flow between screens matches the flow of the work the user is
trying to accomplish, then your application will make sense to your users. Because different
users work in different ways, your system needs to be flexible enough to support their various
approaches. User interface-flow diagrams should optionally be developed to further your
understanding of the flow of your user interface.
In Western societies, people read left to right and top to bottom. Because people are used
to this, should you design screens that are also organized left to right and top to bottom when
designing a user interface for people from this culture? You want to organize navigation between
widgets on your screen in a manner users will find familiar to them.
Unless you know another application has been verified to follow the user interface-standards and
guidelines of your organization, don’t assume the application is doing things right. Although
looking at the work of others to get ideas is always a good idea, until you know how to
distinguish between good user interface design and bad user interface design, you must be
careful. Too many developers make the mistake of imitating the user interface of poorly
designed software.
Color should be used sparingly in your applications and, if you do use it, you must also
use a secondary indicator. The problem is that some of your users may be color blind and if you
are using color to highlight something on a screen, then you need to do something else to make it
stand out if you want these people to notice it. You also want to use colors in your application
consistently, so you have a common look and feel throughout your application.
If you are going to use color in your application, you need to ensure that your screens are
still readable. The best way to do this is to follow the contrast rule: Use dark text on light
backgrounds and light text on dark backgrounds. Reading blue text on a white background is
easy, but reading blue text on a red background is difficult. The problem is not enough contrast
exists between blue and red to make it easy to read, whereas there is a lot of contrast between
blue and white.
When a screen has more than one editing field, you want to organize the fields in a way
that is both visually appealing and efficient. I have always found the best way to do so is to left-
justify edit fields: in other words, make the left-hand side of each edit field line up in a straight
line, one over the other. The corresponding labels should be right-justified and placed
immediately beside the field. This is a clean and efficient way to organize the fields on a screen.
12. Expect your users to make mistakes:
How many times have you accidentally deleted some text in one of your files or deleted
the file itself? Were you able to recover from these mistakes or were you forced to redo hours, or
even days, of work? The reality is that to err is human, so you should design your user interface
to recover from mistakes made by your users.
For columns of data, common practice is to right-justify integers, decimal align floating-point
numbers, and to left-justify strings.
In other words, if your users don’t know how to use your software, they should be able to
determine how to use it by making educated guesses. Even when the guesses are wrong, your
system should provide reasonable results from which your users can readily understand and
ideally learn.