For systems analysts, requirements engineers, data modellers, business planners, etc. responsible for understanding and developing requirements for information systems and applications; and for designers, programmers , testers, documentors involved in the information system development process. Many of today's business information systems are notoriously ineffective - due in large part to too many unscientific, haphazard approaches to their development. This book introduces the scientific thought essential to understanding a business and to creating a successful business information system for a particular business. It shows how to make system analysis as disciplined an activity as programming, and how the formal specification of behavior at the right level of abstraction is the desired approach to system analysis. This text shows how the system analyst may use the same concepts of "good thinking" as the programmer - abstraction, precise understanding of behavior, and reuse - to end up with a specification that is understandable and formal.