Interface Analysis

A software developer might have a different “mental image” of the software than the users which may be different than the stakeholders. However, since the user is the one who will be using it, shouldn’t they be the one who has the most consideration for the interface? This doesn’t necessarily mean talking them about what…

Introduction to User Interface Design

The user interface, or UI, is how a user interacts with an application. The application doesn’t matter if it’s a computer application, a mobile phone app, or even your microwave oven. The study of how people interact with computes/apps/etc is called Human Computer Interaction, or HCI. In his book on interface design, Theo Mandel [Man97]…

Component-Based Development

Component-based software engineering (CBSE) is a process that emphasizes the design and construction of computer-based systems using reusable software “components.”  The intent of domain engineering is to identify, construct, catalog, and disseminate a set of software components that have applicability to existing and future software in a particular application domain. Unfortunately, the existence of reusable components does not…

Conducting Component-Level Design

Step 1. Identify all design classes that correspond to the problem domain. Step 2. Identify all design classes that correspond to the infrastructure domain. Step 3. Elaborate all design classes that are not acquired as reusable components. Elaboration requires that all interfaces, attributes, and operations necessary to implement the class be described in detail. Design…

Component Level Design

Component-level design occurs after the first iteration of architectural design has been completed. At this stage, the overall data and program structure of the software has been established. A component is defined in UML as: “a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.” However, different…

Reasons for Software Architecture

Software Architecture is the structure, or structures, of the system that comprise of software components, the externally visible properties of the components, and the relationships among them. Architecture is not operational software, rather it is representative to allow you to see how effective your design is and consider alternatives. It focuses on components. It may…