Software safety: why, what, and how
ACM Computing Surveys (CSUR)
An Insider's Evaluation of PAISLey
IEEE Transactions on Software Engineering
Quality software management (Vol. 1): systems thinking
Quality software management (Vol. 1): systems thinking
Decline and fall of the American programmer
Decline and fall of the American programmer
WISR8: 8th annual workshop on software reuse: summary and working group reports
ACM SIGSOFT Software Engineering Notes
The design of a portable scientific tool: a case studying using SnB
Supercomputing '96 Proceedings of the 1996 ACM/IEEE conference on Supercomputing
A policy-based resource instantiation mechanism to automate software process management
SEKE '02 Proceedings of the 14th international conference on Software engineering and knowledge engineering
Automatic Verification of Static Policies on Software Process Models
Annals of Software Engineering
Evolving RPC for active storage
Proceedings of the 10th international conference on Architectural support for programming languages and operating systems
A Defined Process For Project Postmortem Review
IEEE Software
Critical Factors Affecting Personal Software Processes
IEEE Software
Lessons in Agility From Internet-Based Development
IEEE Software
Fundamental principles of software engineering - A journey
Journal of Systems and Software
Quality-Adaptive Testing: A Strategy for Testing with Focusing on Where Bugs Have Been Detected
ECSQ '02 Proceedings of the 7th International Conference on Software Quality
Using a Quality Model Framework to Strengthen the Requirements
ICRE '98 Proceedings of the 3rd International Conference on Requirements Engineering: Putting Requirements Engineering to Practice
Polymetric Views-A Lightweight Visual Approach to Reverse Engineering
IEEE Transactions on Software Engineering
The Class Blueprint: Visually Supporting the Understanding of Classes
IEEE Transactions on Software Engineering
On the Systematic Analysis of Natural Language Requirements with CIRCE
Automated Software Engineering
Recommending method invocation context changes
Proceedings of the 2008 international workshop on Recommendation systems for software engineering
A model for eliciting user requirements specific to South African rural areas
Proceedings of the 2008 annual research conference of the South African Institute of Computer Scientists and Information Technologists on IT research in developing countries: riding the wave of technology
A General Model for Measurement Improvement
IWSM '09 /Mensura '09 Proceedings of the International Conferences on Software Process and Product Measurement
Software engineering principles: a survey and an analysis
Proceedings of the Third C* Conference on Computer Science and Software Engineering
Transforming and tracing reused requirements models to home automation models
Information and Software Technology
Hi-index | 0.00 |
From the PrefaceIf software engineering is really an engineering discipline, itis the intelligent application of proven principles, techniques,languages, and tools to the cost-effective creation and maintenanceof software that satisfies users' needs. This book is the firstcollection of software engineering principles ever written in onevolume. A principle is a basic truth, rule, or assumption aboutsoftware engineering that holds regardless of the technique, tool,or language selected. With few exceptions, the principles publishedhere are not original. They have been extracted from the writingsof many software engineering practitioners and researchers. Theseindividuals have been unselfish enough to share their experiences,ideas, and wisdom with all of us. I make no claim that these 201principles are mutually exclusive. Unlike Boehm's seven "basic"software engineering principles, a combination of some of theseprinciples may imply another. I also make no claim that these 201principles are 100 percent compatible. The adages, "Absence makesthe heart grow fonder" and "Out of sight, out of mind" are eachtrue, and each can be applied to life, but they cannot both be usedto justify the same decision. The principles contained in thisvolume are all valid, and they can all be used to improve softwareengineering, but it may be impossible to apply some combinations ofthem on any one project.Manny Lehman [LEH80] has stated eloquently why principlesunderlying software engineering are inherently different fromprinciples underlying other areas of human exploration. He statesthere is no reason to expect such principles to have the same"precision and predictability of [say] the laws of physics." Thereason for this is that, unlike physics or biology, the process ofsoftware development is "managed and implemented by people; thus inthe long term [its behavior should] be expected to beunpredictable, dependent on the judgments, whims, and actions of[people]." On the other hand, software does seem to exhibit manyregular and predictable traits [LEH80]. These lead to many basicprinciples that can be enumerated and used by inexperienced andexperienced software engineers and managers to enhance the qualityof both the software engineering process and software products.The purpose of this book is to present in one volume theprinciples of software engineering as a reference guide. It isaimed at three classes of readers:1. Software engineers and managers. In this book you can findout what is good and what is not. If you are new at softwareengineering or software management, here is a place to find outwhat you need to know.2. Students of software engineering. For students, there are twoprimary uses of this book. First, here are the basic, nondogmatictenets that every software engineer should know. Second, thereferences in these pages point to some of the best papers andbooks ever written on software engineering. If you do nothing otherthan read the items referenced, this book will have beensuccessful, and you will have been exposed to a wealth ofknowledge.3. Software researchers. Researchers may often find it difficultto find the original source of an idea. I have provided referencesto publications that reflect either the original source or analternative, excellent work that refers to the original source.I sincerely hope that everybody who buys this book attempts toread as many of the referenced works as possible. My briefdescription of the principle is intended to be friendly,easy-to-read, and insightful. But for real appreciation you need toread the referenced works. These works are not necessarily theoriginal source of the idea (although in many cases they are). Noris the given principle necessarily a primary point of thereference. In every case, however, the referenced work contains awealth of helpful background, insight, justification, backup data,or information related to the principle.In summary, this book should be the first place for you to lookup any software engineering idea. However, this is a book ofprinciples, not techniques, languages, or tools. You will not findout how to use any techniques, languages, or tools which theprinciples described here transcend. Furthermore, this book triesto avoid all fads, good or bad! For the most part, fads are popularfor three to ten years, then lose favor. The underlying principlesthat might be behind a fad can be found in this volume, but not thefad itself. Thus, for example, you won't see any reference toobject-orientation per se here, but you will find many referencesto the principles underlying object-orientation, such asencapsulation.The principles are organized into general categories to aid infinding them and to aid in relating similar principles. Thesecategories correspond to primary phases of software development(that is, requirements, design, etc.) and to other critical"support" activities, such as management, product assurance, and soon, as shown in Fig. P-1.REFERENCES[BOE83] Boehm, B., "Seven Basic Principles of SoftwareEngineering," Journal of Systems and Software, 3, 1 (March 1983),pp. 3-24. doi:10.1016/0164-1212(83)90003-1[LEH80] Lehman, M., "On Understanding Laws, Evolution, andConservation in the Large-Program Life Cycle," Journal of Systemsand Software, 1, 3 (July 1980), pp. 213-221. doi:10.1016/0164-1212(79)90022-0[ROY70] Royce, W., "Managing the Development of Large SoftwareSystems," WESCON '70, 1970; reprinted in 9thInternational Conference on Software Engineering, Washington, D.C.:IEEE Computer Society Press, 1987, pp. 328-338.