Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 561 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
561
Dung lượng
38,55 MB
Nội dung
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����������������������������������������������������� ■■Chapter 1: Introduction to Software Engineering��������������������������� ■■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 softwareengineering 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 — Introduction to SoftwareEngineering • Chapter — The Role of the Software Engineer www.it-ebooks.info Chapter Introduction to SoftwareEngineering Welcome and congratulations on your entry to this course in softwareengineering 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 softwareengineering 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 • SoftwareEngineering 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 not exist in a vacuum; rather they are typically www.it-ebooks.info Chapter ■ Introduction to SoftwareEngineering 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 SoftwareSoftware 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 SoftwareEngineeringSoftwareengineering 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 www.it-ebooks.info Chapter ■ Introduction to SoftwareEngineering 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: Define the problem 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) Identify alternate solutions Examine alternate solutions Choose the best alternative Pursue the chosen alternative 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 www.it-ebooks.info Chapter ■ Introduction to SoftwareEngineering 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 www.it-ebooks.info Chapter ■ Introduction to SoftwareEngineering 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 www.it-ebooks.info ■ Contents 17.5 Change Over ������������������������������������������������������������������������������� 295 17.5.1 Direct Change Over ����������������������������������������������������������������������������������� 296 17.5.2 Parallel Conversion ����������������������������������������������������������������������������������� 296 17.5.3 Phased Conversion ����������������������������������������������������������������������������������� 296 17.5.4 Distributed Conversion ����������������������������������������������������������������������������� 296 17.6 Training���������������������������������������������������������������������������������������� 297 17.7 Marketing of the Software���������������������������������������������������������� 297 17.8 Summary and Concluding Remarks�������������������������������������������� 298 17.9 Review Questions������������������������������������������������������������������������ 299 17.10 Recommended Readings���������������������������������������������������������� 300 ■■Chapter 18: Software Management�������������������������������������������� 301 18.1 Introduction��������������������������������������������������������������������������������� 301 18.2 Software Maintenance���������������������������������������������������������������� 302 18.2.1 Software Modifications ����������������������������������������������������������������������������� 302 18.2.2 Software Upgrades and Patches �������������������������������������������������������������� 304 18.2.3 Maintenance Cost ������������������������������������������������������������������������������������� 305 18.3 Legacy Systems�������������������������������������������������������������������������� 306 18.4 Software Integration�������������������������������������������������������������������� 307 18.5 Software Re-engineering������������������������������������������������������������ 308 18.6 Summary and Concluding Remarks�������������������������������������������� 308 18.7 Review Questions������������������������������������������������������������������������ 309 18.8 References and/or Recommended Readings������������������������������ 310 ■■Chapter 19: Organizing for Effective Management��������������������� 311 19.1 Introduction �������������������������������������������������������������������������������� 312 19.2 Functional Organization�������������������������������������������������������������� 312 19.3 Parallel Organization������������������������������������������������������������������� 314 19.4 Hybrid (Matrix) Organization������������������������������������������������������� 316 xix www.it-ebooks.info ■ Contents 19.5 Organization of SoftwareEngineering Firms������������������������������� 317 19.6 Summary and Concluding Remarks�������������������������������������������� 321 19.7 Review Questions������������������������������������������������������������������������ 322 19.8 References and/or Recommended Readings������������������������������ 322 ■■Part F: Final Preparations������������������������������������������� 323 ■■Chapter 20: Sample Exercises and Examination Questions������� 325 20.1 Introduction��������������������������������������������������������������������������������� 325 20.2 Assignment 1A���������������������������������������������������������������������������� 326 20.3 Assignment ������������������������������������������������������������������������������ 327 20.4 Assignment 3A ��������������������������������������������������������������������������� 330 20.5 Assignment 4A ��������������������������������������������������������������������������� 332 20.6 Assignment 5A���������������������������������������������������������������������������� 333 20.7 Assignment 6A���������������������������������������������������������������������������� 335 20.8 Assignment 7A���������������������������������������������������������������������������� 336 20.9 Assignment 8A���������������������������������������������������������������������������� 337 20.10 Sample Interim Examination 1A������������������������������������������������ 338 20.11 Sample Interim Examination 2B������������������������������������������������ 340 20.12 Sample Final Examination A������������������������������������������������������ 342 20.13 Sample Final Examination B ����������������������������������������������������� 346 ■■Part G: Appendices����������������������������������������������������� 353 ■■Appendix 1: Introduction to Object Oriented Methodologies������ 355 A1.1 Software Revolution and Rationale for Object-Oriented Techniques������������������������������������������������������������������������������������������ 355 A1.2 Information Engineering and the Object-Oriented Approach������ 356 A1.3 Integrating Hi-tech Technologies������������������������������������������������ 358 xx www.it-ebooks.info ■ Contents A1.4 Characteristics of Object-Oriented Methodologies��������������������� 359 A1.5 Benefits of Object-Oriented Methodologies�������������������������������� 359 A1.6 Summary and Concluding Remarks�������������������������������������������� 360 A1.7 Recommended Readings������������������������������������������������������������ 360 ■■Appendix 2: Basic Concepts of Object-Oriented Methodologies���������������������������������������������������������������������������� 361 A2.1 Objects and Object Types������������������������������������������������������������ 361 A2.2 Operations����������������������������������������������������������������������������������� 363 A2.3 Methods�������������������������������������������������������������������������������������� 363 A2.4 Encapsulation and Classes��������������������������������������������������������� 364 A2.4.1 Encapsulation�������������������������������������������������������������������������������������������� 364 A2.4.2 Class���������������������������������������������������������������������������������������������������������� 365 A2.5 Inheritance and Amalgamation��������������������������������������������������� 365 A2.5.1 Inheritance������������������������������������������������������������������������������������������������ 365 A2.5.2 Amalgamation������������������������������������������������������������������������������������������� 366 A2.6 Requests������������������������������������������������������������������������������������� 366 A2.7 Polymorphism and Reusability���������������������������������������������������� 366 A2.8 Interfaces������������������������������������������������������������������������������������ 367 A2.9 Late Binding�������������������������������������������������������������������������������� 368 A2.10 Multithreading��������������������������������������������������������������������������� 368 A2.11 Perception versus Reality��������������������������������������������������������� 368 A2.12 Overview of the Object-Oriented SoftwareEngineering Process���������������������������������������������������������������������������� 369 A2.13 Summary and Concluding Remarks������������������������������������������ 370 A2.14 Recommended Readings���������������������������������������������������������� 371 xxi www.it-ebooks.info ■ Contents ■■Appendix 3: Object-Oriented Information Engineering��������������� 373 A3.1 Introduction��������������������������������������������������������������������������������� 373 A3.2 Engineering the Infrastructure���������������������������������������������������� 374 A3.3 Diagramming Techniques ����������������������������������������������������������� 375 A3.4 Enterprise Planning��������������������������������������������������������������������� 376 A3.5 Business Area Analysis��������������������������������������������������������������� 380 A3.6 System Design���������������������������������������������������������������������������� 384 A3.7 System Construction������������������������������������������������������������������� 385 A3.8 Summary and Concluding Remarks�������������������������������������������� 386 A3.9 References and/or Recommended Reading�������������������������������� 387 ■■Appendix 4: Basic Guidelines for Object-Oriented Methodologies���������������������������������������������������������������������������� 389 A4.1 Object Identification�������������������������������������������������������������������� 389 A4.1.1 Using Things to be Modeled���������������������������������������������������������������������� 390 A4.1.2 Using the Definitions of Objects, Categories and Interfaces��������������������� 391 A4.1.3 Using Decomposition��������������������������������������������������������������������������������� 391 A4.1.4 Using Generalizations and Subclasses������������������������������������������������������ 391 A4.1.5 Using OO Domain Analysis or Application Framework������������������������������ 392 A4.1.6 Reusing Hierarchies, Individual Objects and Classes�������������������������������� 392 A4.1.7 Using Personal Experience������������������������������������������������������������������������ 393 A4.1.8 Using the Descriptive Narrative Approach������������������������������������������������� 393 A4.1.9 Using the Class-Responsibility-Collaboration Method������������������������������ 394 A4.1.10 Using the Rule-of-Thumb Method����������������������������������������������������������� 395 A4.2 End User Involvement����������������������������������������������������������������� 396 A4.3 OO Diagramming������������������������������������������������������������������������� 397 A4.4 Enterprise-wide Design��������������������������������������������������������������� 398 A4.5 Emphasis on OO-CASE Tools versus OO-Programming Language��������������������������������������������������������������������������������������������� 399 xxii www.it-ebooks.info ■ Contents A4.6 OO Modeling�������������������������������������������������������������������������������� 399 A4.7 Summary and Concluding Remarks�������������������������������������������� 401 A4.8 References and/or Recommended Reading�������������������������������� 401 ■■Appendix 5: Categorizing Objects���������������������������������������������� 403 A5.1 Identifying Object Relationships�������������������������������������������������� 403 A5.2 Fern Diagram������������������������������������������������������������������������������ 404 A5.3 Information Topology Chart��������������������������������������������������������� 406 A5.4 Object Relationship Diagrams����������������������������������������������������� 407 A5.5 Representing Details about Object Types������������������������������������ 408 A5.5.1 Object Structure Diagram ������������������������������������������������������������������������� 408 A5.5.2 CRC Card��������������������������������������������������������������������������������������������������� 410 A5.6 Avoiding Multiple Inheritance Relationships������������������������������� 411 A5.6.1 Delegation Using Aggregation ������������������������������������������������������������������ 412 A5.6.2 Delegation and Inheritance ���������������������������������������������������������������������� 413 A5.6.3 Nested generalization�������������������������������������������������������������������������������� 413 A5.7 Top-Down versus Bottom-Up ����������������������������������������������������� 414 A5.7.1 Top-Down Approach���������������������������������������������������������������������������������� 414 A5.7.2 Bottom-Up Approach��������������������������������������������������������������������������������� 415 A5.8 Summary and Concluding Remarks�������������������������������������������� 415 A5.9 References and/or Recommended Reading�������������������������������� 416 ■■Appendix 6: Specifying Object Behavior������������������������������������� 417 A6.1 Use-cases����������������������������������������������������������������������������������� 417 A6.1.1 Symbols Used in Use-case ����������������������������������������������������������������������� 418 A6.1.2 Types of Use-cases������������������������������������������������������������������������������������ 419 A6.1.3 Information Conveyed by a Use-case�������������������������������������������������������� 420 A6.1.4 Bundling Use-cases and Putting Them to Use������������������������������������������ 421 xxiii www.it-ebooks.info ■ Contents A6.2 States and State Transition��������������������������������������������������������� 422 A6.3 Finite State Machines����������������������������������������������������������������� 423 A6.4 Event Diagrams��������������������������������������������������������������������������� 424 A6.5 Triggers��������������������������������������������������������������������������������������� 427 A6.6 Activity Diagrams������������������������������������������������������������������������ 428 A6.7 Sequence Diagrams and Collaboration Diagrams����������������������� 431 A6.8 Object Flow Diagrams����������������������������������������������������������������� 431 A6.9 Summary and Concluding Remarks�������������������������������������������� 433 A6.10 References and/or Recommended Reading������������������������������ 434 ■■Appendix 7: Tools for Object-Oriented Methodologies��������������� 435 A7.1 Introduction��������������������������������������������������������������������������������� 435 A7.2 Categories of CASE Tools������������������������������������������������������������ 436 A7.3 Universal Database Management Systems��������������������������������� 438 A7.4 Benefits of OO-CASE Tools and UDBMS Suites��������������������������� 439 A7.5 Object Oriented Programming Languages���������������������������������� 439 A7.6 Modeling and Code Generation��������������������������������������������������� 440 A7.6.1 Instant CASE���������������������������������������������������������������������������������������������� 441 A7.6.2 Repository������������������������������������������������������������������������������������������������� 441 A7.7 Standards for OOM���������������������������������������������������������������������� 442 A7.7.1 CORBA������������������������������������������������������������������������������������������������������� 442 A7.7.2 COM����������������������������������������������������������������������������������������������������������� 443 A7.7.3 The NET Boom������������������������������������������������������������������������������������������ 443 A7.8 Summary and Concluding Remarks�������������������������������������������� 443 A7.9 References and/or Recommended Readings������������������������������ 444 xxiv www.it-ebooks.info ■ Contents ■■Appendix 8: Project Proposal for a Generic Inventory Management System������������������������������������������������������������������ 445 A8.1 Problem Definition���������������������������������������������������������������������� 446 A8.2 Proposed Solution����������������������������������������������������������������������� 446 A8.3 Scope of the System������������������������������������������������������������������� 446 A8.4 System Objectives����������������������������������������������������������������������� 447 A8.5 Expected Benefits����������������������������������������������������������������������� 447 A8.6 Overview of Storage Requirements�������������������������������������������� 448 A8.7 Anticipated Outputs��������������������������������������������������������������������� 449 A8.8 Feasibility Analysis Report���������������������������������������������������������� 449 A8.8.1 Feasibility of Alternative A������������������������������������������������������������������������� 450 A8.8.2 Feasibility of Alternative B������������������������������������������������������������������������� 450 A8.8.3 Feasibility of Alternative C������������������������������������������������������������������������� 451 A8.8.4 Feasibility of Alternative D������������������������������������������������������������������������� 452 A8.8.5 Evaluation of Alternatives�������������������������������������������������������������������������� 452 A8.9 Initial Project Schedule��������������������������������������������������������������� 454 ■■Appendix 9: Requirements Specification for a Generic Inventory Management System�������������������������������������������������� 455 A9.1 System Overview������������������������������������������������������������������������ 455 A9.1.1 Problem Definition������������������������������������������������������������������������������������� 455 A9.1.2 Proposed Solution������������������������������������������������������������������������������������� 455 A9.1.3 System Architecture���������������������������������������������������������������������������������� 456 A9.2 Storage Requirements���������������������������������������������������������������� 457 A9.2.1 Acquisitions Management Subsystem������������������������������������������������������ 458 A9.2.2 Financial Management Subsystem����������������������������������������������������������� 463 xxv www.it-ebooks.info ■ Contents A9.3 Operational Requirements���������������������������������������������������������� 467 A9.4 Business Rules���������������������������������������������������������������������������� 471 A9.4.1 Overview��������������������������������������������������������������������������������������������������� 471 A9.4.2 Derivation and Procedural Rules��������������������������������������������������������������� 472 A9.5 Summary and Concluding Remarks�������������������������������������������� 474 ■■Appendix 10: Design Specification for a Generic Inventory Management System������������������������������������������������������������������ 475 A10.1 System Overview���������������������������������������������������������������������� 475 A10.1.1 Problem Definition����������������������������������������������������������������������������������� 475 A10.1.2 Proposed Solution����������������������������������������������������������������������������������� 475 A10.1.3 System Architecture�������������������������������������������������������������������������������� 476 A10.2 Database Specification������������������������������������������������������������� 478 A10.2.1 Introduction��������������������������������������������������������������������������������������������� 478 A10.2.2 Acquisitions Management Subsystem���������������������������������������������������� 480 A10.2.3 Financial Management Subsystem��������������������������������������������������������� 490 A10.2.4 Systems Control Subsystem�������������������������������������������������������������������� 497 A10.3 Operations Specification����������������������������������������������������������� 500 A10.3.1 Generic Pseudo-codes���������������������������������������������������������������������������� 500 A10.3.2 Acquisitions Management Subsystem���������������������������������������������������� 502 A10.3.3 Financial Management Subsystem��������������������������������������������������������� 505 A10.3.4 System Controls Subsystem�������������������������������������������������������������������� 508 A10.4 User Interface Specification������������������������������������������������������ 522 A10.5 Message and Help Specifications��������������������������������������������� 535 A10.5.1 Message Specification���������������������������������������������������������������������������� 535 A10.5.2 Help Specification����������������������������������������������������������������������������������� 535 A10.6 Summary and Concluding Remarks������������������������������������������ 536 Index���������������������������������������������������������������������������������������������� 537 xxvi www.it-ebooks.info About the Author Elvis C Foster is Associate Professor of Computer Science at Keene State College, New Hampshire He holds a Bachelor of Science (BS.) in Computer Science and Electronics, as well as a Doctor of Philosophy (PhD) in Computer Science (specializing in strategic information systems and database systems) from University of the West Indies, Mona Jamaica Dr Foster has over 25 years of combined experience as a software engineer, information technology executive and consultant, and computer science educator He has had the favorable experience of being involved with the design and/or development of software systems for various medium-sized and large organizations, including the central bank of his own country He has lectured at the tertiary level in three different countries, including the United States, and has produced many outstanding computer science and information technology professionals Many of them have excelled at graduate school, and are doing well in leading softwareengineering enterprises around the world This text draws from that experience xxvii www.it-ebooks.info Acknowledgments My profound gratitude is owed to my wife, Jacqueline, and children Chris-Ann and Rhoden, for putting up with me during the periods of preparation of this text Also, I must recognize several of my past and current students (from four different institutions and several countries) who at various stages have encouraged me to publish my notes, and have helped to make it happen In this regard, I would like to make special mention of Dionne Jackson, Kerron Hislop, Brigid Winter, Sheldon Kennedy, Ruth Del Rosario, Brian Yap, and Rossyl Lashley I offer a big thank you to Dr Han Reichgelt at Southern Polytechnic State University, who in many ways has been my professional mentor As on previous occasions, I have relied on him for critical evaluations and advice Speaking of critical evaluations, the contribution of my relatively new friend and colleague, Dr Jared Bruckner at Southern Adventist University was also significant In the same way that Dr Han Reichgelt has mentored me during the advanced stages of my career as a computer science professional, Dr Ezra Mugissa deserves mention for the early formative years of my professional journey In many respects, my methodical approach to softwareengineering is owed to him The editorial and production teams at Xlibris Corporation deserve mention for their work in facilitating initial publication of the volume An equally significant level of gratitude is extended to the editorial team at Apress Publishing for recognizing the work’s value and for investing the time and effort in the project Thanks to everyone involved Finally, I should also make mention of reviewers Jared Bruckner, Marlon Moncrieffe, Jacob Mangal, Abrams O’Buyonge, and Han Reichgelt, each a practicing software engineer, information technology consult, or computer science professor who has taken time to review the manuscript and provide useful feedback Thanks, gentlemen —Elvis C Foster, PhD Keene State College Keene, New Hampshire, USA xxix www.it-ebooks.info Preface This book has been compiled with three target groups in mind: The book is best suited for undergraduate students who are pursuing a course in softwareengineering Graduate students who are pursuing an introductory course in the subject will also find it useful Finally, practicing software engineers who need a quick reference on various softwareengineering methodologies, may also find it useful The motivation that drove this work was a desire to provide a concise but comprehensive guide to the discipline of softwareengineering Having worked in the information technology (IT) industry for several years, before making a career switch to academia, and having myself witnessed the struggles of many new entrants to the discipline of software engineering, I have upheld the view for some time that a concise but comprehensive reference in softwareengineering would be useful to students as well as practitioners in the industry These notes have been compiled and tested over several years with outstanding results They draw on personal experiences gained in industry over the years, as well as the suggestions of various professionals and students The chapters are organized in a manner that reflects my own approach in lecturing the course, but each chapter may be read on its own merit The text has been prepared specifically to meet three objectives: comprehensive coverage, brevity, and relevance Comprehensive coverage and brevity often operate as competing goals In order to achieve both, I have adopted a methodical and pragmatic approach that gets straight to the critical issues for each topic, and avoids unnecessary fluff, while using the question of relevance as the balancing force Additionally, readers should find the following features quite convenient and reader friendly: • Short paragraphs that express the salient aspects of the subject matter being discussed • Bullet points or numbers to itemize important things to be remembered • Diagrams and illustrations to enhance the reader’s understanding • Overview and summary of each chapter • Introduction of a number of original softwareengineering methodologies xxxi www.it-ebooks.info ■ Preface • Discussion of solutions to generic softwareengineering problems in a step-by-step manner • A chapter with sample examination questions (for the student) and case studies (for the student as well as the inexperienced software engineer) Also, my introduction of original methodologies for treating certain softwareengineering problems should make a useful contribution to already existing literature on the subject These new methodologies include (but are not confined to) the following: information topology chart (ITC) and user interface topology chart (UITC) in chapters and 11, object/entity specification grid (O/ESG) in chapter 10, extended operation specification (EOS) in chapter 12, and a generic object-naming convention for any softwareengineering project in chapter and appendix 10 Organization of the Text The text is organized in nineteen chapters plus a twentieth chapter consisting of sample examination questions and case studies The chapters are placed into six divisions There is also a seventh division that includes appendices in several topics of interest The chapters and related divisions follow: Part A: Introductory Topics Chapter 1, Introduction to Software Engineering: This chapter introduces you to the discipline of softwareengineering It defines software engineering, and discusses its importance in the context of a business organization, and as a dominant field of computer science Chapter 2, The Role of the Software Engineer: This chapter discusses the role, responsibilities, and tools used by the software engineer Part B: Software Investigation and Analysis Chapter 3, Project Selection and Initial System Requirement: Here, the preliminary activities and the first deliverable of a softwareengineering project are discussed Chapter 4, The Requirements Specification: This chapter discusses the second deliverable of a softwareengineering project Chapter 5, Information Gathering: Various techniques for obtaining useful information about the requirements of a software system are discussed in this chapter Chapter 6, Communication via Diagrams: This chapter discusses various diagramming techniques that are available to the software engineer Chapter 7, Decision Models for System Logic: This continues the discussion of diagramming techniques by focusing on methodologies for representing system logic Chapter 8, Project Management Aids: Here, the focus is on PERT, CPM, Gant Chart, and project management software systems xxxii www.it-ebooks.info ■ Preface Part C: Software Design Chapter 9, Overview of Software Design: This chapter briefly clarifies the various aspects of software design, and shows how they converge into a significant deliverable of a softwareengineering project —the design specification Chapter 10, Database Design: This chapter discusses database design as an important component of software design It summarizes the salient aspects of database design, but emphasizes that further study of this topic is absolutely necessary Chapter 11, User Interface Design: Here, the user interface is presented as an essential window through which end-users access and interact with the software system The fundamentals of user interface design are discussed Chapter 12, Operations Design: Various methodologies for operations design are discussed in this chapter The focus is primarily on informal methods Chapter 13, Other Design Considerations: This chapter addresses other design issues not covered in the previous four Part D: Software Development Chapter 14, Software Development Issues: This chapter introduces software development as an exciting experience, if and when it follows careful software planning and design It identifies various issues to be addressed during software development Chapter 15, Human Resource Management: Here, effective human resource management (HRM) is discussed as an essential aspect of good softwareengineering Chapter 16, Software Economics: In this chapter, focus is placed on techniques employed in the determination of the cost, price, and value of software systems Part E: Software Implementation and Management Chapter 17, Software Implementation Issues: This chapter discusses various approaches to software implementation Chapter 18, Software Management: In this chapter, various aspects related to the management of software systems are discussed Chapter 19, Organizing for Effective Management: This chapter provides various options for organizing a softwareengineering enterprise Part F: Final Preparations Chapter 20, Sample Exercises and Examination Questions xxxiii www.it-ebooks.info ■ Preface Part G: Appendices The appendices provide additional discussions and illustrations for your usage Appendices – provide discussions and additional insights on the object-oriented approach to softwareengineering Appendices – 10 provide excerpts from the specification and design of a generic inventory management system These documents illustrate how some of the principles covered in the course are applied in a real project The topics of the appendices are as follows: • Appendix 1: Introduction to Object-Oriented Methodologies • Appendix 2: Basic Concepts of Object-Oriented Methodologies • Appendix 3: Object-Oriented Information Engineering • Appendix 4: Basic Guidelines of Object-Oriented Methodologies • Appendix 5: Categorizing Objects • Appendix 6: Specifying Object Behavior • Appendix 7: Tools for Object-Oriented Methodologies • Appendix 8: Excerpts from the Project Proposal of the Inventory Management System • Appendix 9: Excerpts from the Requirements Specification of the Inventory Management System • Appendix 10: Excerpts from the Design Specification of the Inventory Management System Text Usage The text could be used as a one-semester or two-semester course in software engineering, augmented with an appropriate CASE or RAD tool Below are two suggested schedules for using the text One assumes a one-semester course; the other assumes a two-semester course The schedule for a one-semester course is a very aggressive one that assumes adequate preparation on the part of the participants The schedule for a two-semester course gives the participants more time to absorb the material, and gain mastery in the various methodologies discussed by engaging in a meaningful project This obviously, is the preferred scenario xxxiv www.it-ebooks.info ■ Preface Approach Throughout the text, I have adopted a practical, methodical approach to software engineering, avoiding an overkill of theoretical calculations where possible (these can be obtained elsewhere) The primary objective is to help the reader to gain a good grasp of the activities in the software development life cycle (SDLC) At the end of the course, the participant should feel confident about taking on a new softwareengineering project Feedback and Support It is hoped that you will have as much fun using this book as I had preparing it Additional support information can be obtained from the Web site http://www.elcfos.com or http://www.elcfos.net Also, your comments will be appreciated xxxv www.it-ebooks.info ... system • Computer software • Software engineering Explain how software engineering relates to the management of an organization 18 www.it-ebooks.info Chapter ■ Introduction to Software Engineering. .. term in software engineering It refers to the rapid development of software via the use of sophisticated software development tools, typically found in CASE (computer aided software engineering) ... 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