| Although software engineers have been developing production software for more than three decades, many projects are still plagued with late deliveries, overrun budgets, unsatisfied requirements, and poor quality. There are several reasons for these problems. Three of the reasons are associated with the early tasks of the software development process and are the primary subjects of this research: the tasks are poorly understood; the languages, methodologies, and software tools (technology) being used are inadequate; and the available improved technology is seldom used. This research focused on the following early tasks: (1) allocating functionality to the system components of people, manual devices, custom electronics, computer equipment, and software; (2) establishing the connectivity among these components and external systems; and (3) determining the software components and their connectivity. The research approach is also threefold: An evaluation and extraction of the significant features of the related research was made. In addition, empirical studies of software engineers performing the early tasks of software development were conducted. Finally as a result of these two research tasks, an empirical model, a technology-transfer approach, and a software-development methodology were formulated. The results were first used to identify a cognitive mismatch as a major reason for the problem of transferring software engineering technology to users in industry. Second, the results were applied to develop the shadowing approach for transferring technology. Finally, they were used to formulate the pyramid methodology for improving the software-development process. The Ada language and underlying concepts of user-defined types, abstract data types, and abstract state machines were used to illustrate the pyramid methodology and the shadowing approach.;These results have significance for software engineering research and practice. The empirical model increases the understanding of the critical processes in software engineering and can serve as guidance for the development of software engineering technology. The shadowing approach transfers to users improved technology which is the major source for improving software engineering productivity and software product quality. The pyramid methodology, by focusing on the development of a connectivity model, improves the early tasks of software development, thus improving the overall software development process. |