® BOOKS FOR PROFESSIONALS BY PROFESSIONALS F o s te r Software Engineering RELATED Software Engineering: A Methodical Approach provides a comprehensive, but concise introduction to software engineering. It adopts a methodical approach to solving software engineering problems proven over several years of teaching with outstanding results. The book covers concepts, principles, design, construction, implementation, and management issues of software systems. Each chapter is organized systematically into brief, reader-friendly sections, with a summary list of the important points to be remembered. Diagrams and illustrations sum up the salient points to reinforce learning. Additionally, the book includes a number of the author’s original methodologies that add clarity and creativity to the software engineering experience while making a novel contribution to the discipline. Upholding his aim for brevity, comprehensive coverage, and relevance, Foster’s practical and methodical discussion style gets straight to the salient issues, and avoids unnecessary fluff as well as an overkill of theoretical calculations. In this book, you’ll learn: • The main activities of the software development life cycle (SDLC) • How to conceptualize, research, design, construct, implement, and manage top quality software systems • How to evaluate the impact of software systems on organizations • The nature, importance, and scope of software engineering as opposed to programming This book is best suited for students who are pursuing a course in software engineering. Practicing software engineers who need a quick reference on various aspects of the field will also find this text useful. Shelve in Software Engineering/ ISBN 978-1-4842-0848-9 Object-Oriented Programming 56999 User level: Intermediate SOURCE CODE ONLINE 9781484208489 www.apress.com www.it-ebooks.info For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. www.it-ebooks.info Contents at a Glance About the Author ��������������������������������������������������������������������������xxvii Acknowledgments �������������������������������������������������������������������������xxix Preface ������������������������������������������������������������������������������������������xxxi ■ Part A: Fundamentals ����������������������������������������������������� 1 ■ Chapter 1: Introduction to Software Engineering ���������������������������3 ■ Chapter 2: The Role of the Software Engineer ������������������������������21 ■ Part B: Software Investigation and Analysis ���������������� 41 ■ Chapter 3: Project Selection and the Initial System Requirements ����������������������������������������������������������������������43 ■ Chapter 4: The Requirements Specification ���������������������������������61 ■ Chapter 5: Information Gathering �������������������������������������������������69 ■ Chapter 6: Communicating Via Diagrams �������������������������������������87 ■ Chapter 7: Decision Models for System Logic ����������������������������115 ■ Chapter 8: Project Management Aids �����������������������������������������131 ■ Part C: Software Design ���������������������������������������������� 143 ■ Chapter 9: Overview of Software Design ����������������������������������������145 ■ Chapter 10: Database Design �����������������������������������������������������167 ■ Chapter 11: User Interface Design ����������������������������������������������187 ■ Chapter 12: Operations Design ���������������������������������������������������207 ■ Chapter 13: Other Design Considerations �����������������������������������227 v www.it-ebooks.info ■ Contents at a GlanCe ■ Part D: Software Development ������������������������������������ 241 ■ Chapter 14: Sof tware Development Issues ���������������������������������������243 ■ Chapter 15: Human Resource Management �������������������������������253 ■ Chapter 16: Software Economics �����������������������������������������������271 ■ Part E: Software Implementation and Management ��� 289 ■ Chapter 17: Software Implementation Issues ����������������������������291 ■ Chapter 18: Software Management ��������������������������������������������301 ■ Chapter 19: Organizing for Effective Management ���������������������311 ■ Part F: Final Preparations ������������������������������������������� 323 ■ Chapter 20: Sample Exercises and Examination Questions �������325 ■ Part G: Appendices ����������������������������������������������������� 353 ■ Appendix 1: Introduction to Object Oriented Methodologies ������355 ■ Appendix 2: Basic Concepts of Object-Oriented Methodologies �����361 ■ Appendix 3: Object-Oriented Information Engineering ���������������373 ■ Appendix 4: Basic Guidelines for Object-Oriented Methodologies ����������������������������������������������������������������������������389 ■ Appendix 5: Categorizing Objects ����������������������������������������������403 ■ Appendix 6: Specifying Object Behavior �������������������������������������417 ■ Appendix 7: Tools for Object-Oriented Methodologies ���������������435 ■ Appendix 8: Project Proposal for a Generic Inventory Management System ������������������������������������������������������������������445 ■ Appendix 9: Requirements Specification for a Generic Inventory Management System ��������������������������������������������������455 ■ Appendix 10: Design Specification for a Generic Inventory Management System ������������������������������������������������������������������475 Index ����������������������������������������������������������������������������������������������537 vi www.it-ebooks.info Part a Fundamentals This preliminary division of the course is designed to cover some fundamentals. The objectives are as follows: • To define and provide a rationale for software engineering as a discipline • To provide you with a wide perspective of computer software and its varied usefulness and applications • To discuss different approaches to software acquisition • To define the job of the software engineer in the organization • To discuss various tools used by the software engineer The division consists of two chapters: • Chapter 1 — Introduction to Software Engineering • Chapter 2 — The Role of the Software Engineer www.it-ebooks.info Chapter 1 Introduction to Software Engineering Welcome and congratulations on your entry to this course in software engineering. The fact that you are in this course means that you have covered several fundamental topics in programming, data structures, and perhaps user interface. You have been writing computer programs to solve basic and intermediate-level problems. Now you want to take your learning experience to another level: you want to learn how to design, develop and manage complex software systems (small, medium sized and large), which may consist of tens or hundreds of programs all seamlessly integrated into a coherent whole. You will learn all of these and more in this course, but first, we must start at the beginning. This chapter introduces you to the discipline of software engineering. Topics covered include the following: • Definitions and Concepts • The Organization as a System • Information Levels in the Organization • Software Life Cycle • Categories of Software • Alternate Software Acquisition Approaches • Software Engineering Paradigms • Desirable Features of Computer Software • Summary and Concluding Remarks 1.1 Definitions and Concepts Computer software affects almost all aspects of human life. A study of the process of software construction and management is therefore integral to any degree in computer science, computer information systems, multimedia technology, or any other related field. Software systems are not created, and do not exist in a vacuum; rather they are typically 3 www.it-ebooks.info Chapter 1 ■ IntroduCtIon to Software engIneerIng created by individuals and/or organizations, for use by individuals and/or organizations. We will therefore start by defining a system, defining software, identifying the relationship between the two, and then showing how they both relate to the organization. 1.1.1 System A system is a set of interacting, interrelated, interdependent components that function as a whole to achieve specific objectives. An effective system must be synergistic. The system usually operates in an environment external to itself. A system may also be defined as the combination of personnel, materials, facilities and equipment working together to convert input into meaningful and needed outputs. Following are some fundamental principles about systems: • The components of a system are interrelated and interdependent. • The system is usually viewed as a whole. • Every system has specific goals. • There must be some type of inputs and outputs. • Processes prescribe the transformation of inputs to outputs. • Systems exhibit entropy, i.e., tendency to become disorganized. • Systems must be regulated (planning, feedback and control). • Every system has subsystems. • Systems exhibit a tendency to a final state. As a personal exercise, you are encouraged to identify examples of systems in areas with which you are familiar. A good place to start is the human body. 1.1.2 Software Software is the combination of program(s), database(s) and documentation in a systemic suite, and with the sole purpose of solving specific system problems and meeting predetermined objectives. Software adds value to the hardware components of a computer system. In fact, without software, a computer is reduced to nothing more than an electronic box of no specific use to most human beings. Also, it should not surprise you that computer software is a special kind of system. This course will teach you how to design, construct and manage such systems. Software Engineering Software engineering is the process by which software systems are investigated, planned, modeled, developed, implemented and managed. It also includes the re-engineering of existing systems with a view to improving their role, function, and performance. The ultimate objective is the provision or improvement of desirable conveniences and the enhancement of productivity within the related problem domain. 4 www.it-ebooks.info Chapter 1 ■ IntroduCtIon to Software engIneerIng System transformation may take various paths, some of which may be: • Improving the internal workings of the system • Modifying inputs and outputs • Modifying the goals and objectives of the system • Redesigning the system • Designing and developing a new system based on existing problems Steps in the Analysis Process Before embarking on any major work in software engineering, a process of research and analysis takes place. This process may be summarized in the following steps: 1. Define the problem. 2. Understand the problem (system) — the interrelationships and interdependencies; have a picture of the variables at work within the system; define the extent of the system (problem). 3. Identify alternate solutions. 4. Examine alternate solutions. 5. Choose the best alternative. 6. Pursue the chosen alternative. 7. Evaluate the impact of the (new/modified) system. 1.2 The Organization as a System Traditionally, many software systems were created by organizations for use in organizations. To a large extent, this scenario still holds true. For the moment, let us therefore take a look at the organization, in the context of this approach. An organization is a collection of individuals that employ available facilities, resources and equipment to work in pursuit of a predetermined set of objectives. The organization qualifies as a system since it has all the ingredients in the definition of a system: people, facilities, equipment, materials and methods of work. Every organization has certain functional areas (called divisions, departments, sections, etc.). Typical areas include finance and planning, human resource management (HRM), marketing, production and operations (or the equivalent), technical/ manufacturing (or the equivalent). These are usually further divided into departments, units and sub-units. Traditionally, a data processing department/unit would be enlisted as a sub-unit of finance. However, more enlightened organizations are now enlisting information technology (IT) as a functional area at the senior management level, servicing all other areas. 5 www.it-ebooks.info Chapter 1 ■ IntroduCtIon to Software engIneerIng Figure 1-1 shows what a highly summarized organizational chart for a modern organization might look like. In tiny or small organizations, each unit that appears under the president or chief executive officer (CEO) may be a department. In medium-sized and large organizations, each unit under the president or CEO is typically a division, consisting of several departments and/or sections. It should also be noted that you are unlikely to find IT (or the equivalent) at the senior level in many traditional organizations, as managers still struggle with appreciating the scope and role of IT in the organization. However, in more progressive and forward-thinking organizations, you will find that IT is correctly and appropriately positioned at the senior level of the management hierarchy. Figure 1-1. Typical Organizational Chart 6 www.it-ebooks.info Chapter 1 ■ IntroduCtIon to Software engIneerIng 1.2.1 Discussion Why should IT (or its equivalent) be positioned at the senior level in the organization? If the answer to this question is not immediately obvious to you, it will be by the time you complete this course. 1.3 Information Levels in the Organization Figure 1-2 shows the information levels in an organization. Information flows vertically as well as horizontally. Vertically, channels are very important. The chart also summarizes the characteristics and activities at each level. Let us examine these a bit closer: Figure 1-2. Information levels in the organization 1.3.1 Top Management Activities are strategic and may include: • Goal setting • Long term planning 7 www.it-ebooks.info
Description: