June 1995 - Vol. 38 No. 6
Features
Process cost and value analysis
After years of pursuing fragments of a solution to the challenges of software engineering, including the development of methods, tools, and the like, the software engineering community has come to realize that over-emphasizing any one of these areas to the exclusion of others is incorrect. The community now recognizes that well-defined and well-supported processes are the critical issue for producing high-quality software systems on-time and within budget.
In school or out: technology, equity, and the future of our kids
In January, Newt Gingrich proposed a tax credit for the poorest Americans to purchase laptop computers, forgetting for the moment that the poorest Americans do not pay taxes and thus a credit does them no good. In this case, his heart may be in the right place, even if he later called the idea “nutty.”
Cognition and software development
Not long ago, programmers controlled computers by arranging wires on a control panel built into the side of a large floor-standing machine. Today palm-sized pointing devices are used to drag and drop visual images on machines smaller than a notebook. Dramatic differences like these make it easy to forget that software development still revolves around the needs of the computer at the expense of the needs of developers and end users.
Why looking isn’t always seeing: readership skills and graphical programming
Many believe that visual programming techniques are quite close to developers. This article reports on some fascinating research focusing on understanding how textual and visual representations for software differ in effectiveness. Among other things, it is determined that the differences lie not so much in the textual-visual distinction as in the degree to which specific representations support the conventions experts expect.
Discovering the way programmers think about new programming environments
An interesting usability study of a prototype development environment for the Dylan programming language is presented here. This study's purpose is to determine just how close the prototype is to developers. New approaches to source code organization and to the relationship between the environment and the application being developed are introduced. An asessment of how effectively the prototype conveys these innovations to Dylan developers is also given, followed by some proposed improvements.
Cognitive bias in software engineering
Developer's thought processes are a fundamental area of concern. Cognitive scientist have discovered that people's intiative inferences and probality judgments do not strictly conform to the laws of logic or mathematics, and that people are willing to provide plausible explanations for random events. This article examines the role these phenomena might have in software development, ultimately concluding that what are cast as one-sided software development guidelines often can be recast beneficially as two-sided trade-offs.
From programming environments to environments for designing
Though there have been advances in end-user programming, complex applications still need professional developers. This inspired look at the future of creating complex software explores the shift from programming environments to design environments, discussing environments that help developers satisfy end-users' cognitive needs and help deal with contextual issues such as the aesthetic, practical, and social properties of the application and the users. A strong case is made that design environments will need to provide robust support for communication between developers and end users.
Sixteen questions about software reuse
Software reuse is the use of existing software knowledge or artifacts to build new software artifacts. Reuse is sometimes confused with porting. The two are distinguished as follows: Reuse is using an asset in different systems; porting is moving a system across environments or platforms. For example, in Figure 1 a component in System A is shown used again in System B; this is an example of reuse. System A, developed for Environment 1, is shown moved into Environment 2; this is an example of porting.
Auction allocation of computing resources
Standard methods for allocating computing resources normally employ schedulers and either queue or priority schemes. Alternative methods utilizing marketlike processes are being investigated, with direct applicability to evolving distributed systems. In this article, we present results of simulations of an auction allocation is which computing tasks are provided sufficient intelligence to acquire resources by offering, bidding, and exchanging them for funds.
Comparing data modeling formalisms
Accurate specification and validation of information requirements is critical to the development of organizational information systems. Semantic data models were developed to provide a precise and unambiguous representation of organizational information requirements [9, 17]. They serve as a communication vehicle between analysts and users. After analyzing 11 semantic data models, Biller and Neuhold [3] conclude that there are essentially only two types of data modeling formalisms: entity-attribute-relationship (EAR) models and object-relationship (OR) models. Proponents of each claim their model yields “better” representations [7] than the other. There is, however, little empirical evidence to substantiate these claims.
Recently, the College Entrance Examination Board (CEEB) has decided to redesign the Advanced Placement (AP) examination in computer science (CS) so that AP courses will be forced to switch from Pascal to C++ starting around 1998.
Computer vulnerabilities: exploitation or avoidance
The online Risks Forum has long been a hotbed for discussions of the relative merits of openness relating to the dissemination of knowledge about security vulnerabilities. The debate has now been rekindled, and is summarized here.