Sunday, November 29, 2015

Human Computer Interface (HCI)

HCI refers to the way how humans interact with computer systems. It is the User Interface that hides all complexities and processes in the computer and back-end system programmings and give user an easy way to interact with computers. HCI is most of the time graphical but there are command prompt HCI as well such as in Linux and DOS systems. But we are here talking about graphical user interfaces.

Guidelines to consider when designing a human computer interface (HCI)


  • End User - Always give prominent to the end user (user experience, education, knowledge, taste). Because the end user will be the final human who will use the system for a long time daily.
  • Environment - this refers to many things from operating system to physical environment. You need to consider what kind of environment the end user will be working on with the system. It could be either office environment or factory environment and user could be using a keyboard or touch screens. User could be working standing or sitting.
  • Standards and Practices - Always follow industry standards and common practices. Some times even there are no standards for some designs but always there will be common practices. Learn and follow them,
  • Graphics and Colors - use adequate amount of graphics and colors only. Consistance throughout the system should be maintained.
  • Navigation - always use easy to use and understand navigation system. Use common everyday wordings rather than technical wordings.
  • Help - always include a help facility
Graphical User Interface (GUI)

GUI is a type of HCI that uses windows, icons, menus and pointers (WIMP) and desktop area to organize and manage works in a more realistic environment. Main advantages of GUI are;
  1. Easy to understand
  2. Easy to learn
  3. No need to remember system commands
  4. More interactive
  5. GUI is the most user friendly HCI
Common GUI Elements

UML Diagrams

Unified Modeling Language is a graphical language used in system design. UML offers standard way to write system blue prints. UML can presents system's functions, processes, relationships and all other activities related such as database schemas (design), message flows, user interactions, etc.

UML is not an industry standard for writing system blue prints but is wide accepted and practices by system designers. It makes other stake holders to clearly understand the system and interact with each other. This is not a programming language but the start point for programmers to developed the system using UML diagrams.

UML diagram is a graphical presentation of set of elements, most often rendered as a connected graphs of vertices (things) and arches (relationships). There are many diagrams in UML and we are mainly talking about following diagrams.

Class Diagram: A class diagram shows a set of classes, interfaces, and collaborations and their relationships. An object diagram shows a set of objects and their relationships. A Use of Case Diagram shows a set of use cases and actors and their relationships.

Both sequence diagrams and collaboration diagrams are kind of interaction diagrams. A state-chart diagram shows states of objects, transitions, events and activities. State-chart diagram shows dynamics of a system. Activity diagram is a special kind of state-chart diagram that shows the flow from activity within a system.

Component diagram show the organization and dependencies among a set of components. deployment diagram shows the configuration of runtime processes of a system.

Even though there are lots of diagrams specified above, the real use of UML is more personal than standard. The real understanding on UML comes with the practice of real world system design.

an example UML diagram

The Object Oriented Concept

Object Oriented System Design is another concept in system design. We are talking about system analysis and design here so it is connected with programing in a later part. OOP is the latest trend in programing and when we design a system it is important to understand about object oriented concept. There are six basic things we need to understand clearly in order to proceed with the object oriented concept.

  1. Objects
  2. Classes
  3. Messages
  4. Encapsulation
  5. Inheritance
  6. Polymorphism


Now let’s discuss about these things one by one;

Objects (attributes / behaviors / methods)

An object is a representation of real world thing. For an example “A Car” is an object. Objects have attributes and behaviors. Behaviors are initiated by methods in programing language.  Attributes are unique characteristics which identify the object from other obejcts. In a car attributes are model, make, chassis number, engine number, vehicle number, etc. Also an object can have behaviors. Behaviors of a car can described as engine start, engine off, lights on, lights off, running, stooped, etc.

Classes (group of objects)

Class is a group of similar objects that shares same attributes and behaviors. In our car example we can define a class “Vehicle” with attributes of vehicle registration number, engine number, chassis number, make, model, etc. because every vehicle has these common attributes and behaviors such as engine start, engine stopped, lights on, lights off, etc.
In programing objects are created from classes. For an example “Car” object can be created from “vehicle” class.

Messages

Messages are instructions or information sent between objects. For an example a message “Start Engine” can be sent by an object called “Driver” in the class “Operators” to the object “Car” in “Vehicle” class. These instructions on how, when and where to send messages need to be define in programing.

Encapsulation

Encapsulation is the ability to hide internal working, data and behavior of an object. In OOP (Object Oriented Programing) objects are standalone things that they communicated with other objects using methods (getters and setters). For an example when we called a method in Car object named start_engine(), we do not worry about its internal functionality – we all care about is it’s status changes from stopped to start of the engine.

Inheritance

Inheritance is the mechanism of implementing classes with similar attributes and behaviors. There are two kinds of inheritance implementations called generalization and specialization. Also here we need to understand the concept of super class and sub class. Generalization is the process of creating super classes – super class is a class with more common characteristics. For an example generalization of “Parrot, Crow, and Chicken” is the creating of super class called “Birds”. Parrot is a sub class of birds with all its characteristics and having at least one attribute that is unique to parrot and it is called specialization of the class.

Aggregation

Aggregation is the process of building objects using other objects in similar classes. For an example the object “Car” is built using “Engine and Body” objects. Simply you need to understand that aggregation is composing of similar objects of different classes to create another object.

Dependency

This is the relationship between two objects / classes. If changes of one object affects the other is called there is a dependency relationship between two objects.  If changes in object A affect to the behavior of object B then the B is called the dependent object.

Association

Association described the relationship between two objects.

Polymorphism


Polymorphism is the way that the object orientation allows methods of same name to have predictable and meaningful results in related instances performing the operations differently to achieve similar results. For an example Play_Game() method will execute playing of different games such as play_cricket(), play_tennis(), play_soccer(), etc.

Important Notice!

Dear students and friends. When you commenting please do not mention your email address. Because your email address will be publicly available and visible to all. Soon, it will start sending tons of spams because email crawlers can extract your email from feed text.

To contact me directly regarding any inquiry you may send an email to info@bcslectures.website and I will reply accordingly.