Pattern-Based Design

A design pattern can be characterized as “a three-part rule which expresses a relation between a certain context, a problem, and a solution” [Ale79] For software design, context allows the reader to understand the environment in which the problem resides and what solution might be appropriate within that environment. A set of requirements, including limitations and constraints, acts as…

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…

Tower of Hanoi

The Tower of Hanoi, sometimes called the Tower of Brahma puzzle, is one of the classic problems to look at if you want to learn recursion. It is good to understand how recursive solutions are arrived at and how parameters for this recursion are implemented. The basics of the problem is that you have a…

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…