Издательство Springer, 2008, -830 pp.
As we move toward the 21st century, the techniques, tools, technologies, and subject matter of applications development are changing radically. Globalization of the work place is impacting IS development as well, by pressuring organizations to strive for competitive advantage through automation, among other methods. Strategic IS, reusable designs, downsizing, right-sizing, multimedia databases, and reusable code are all discussed in the same breath. Methodologies are being successfully coupled to computer-aided software engineering environments (CASE); yet object-oriented methodologies, which are being touted as the panacea for all problems, have not yet been fully automated . or even fully articulated. Few if any tools, methods or techniques address the needs of artificial intelligence and expert system development, which are currently driven by the program language being used for development. New technologies for true distribution of processing are maturing, and integration across hardware and software platforms is the major IS conce in multiple industries [Computerworld, 10/15/90].
IS professionals must be jacks-of-all-trades as never before, but there is also increased demand for domain experts who are intimately familiar with all aspects of a particular business area, such as money transfer in banking. It is difficult for anyone person to be both expert and generalist. But there are many systems developers-I call them software engineers- who do possess these attributes. Today's ideal software engineer is familiar with the alteatives, trade-offs and pitfalls of methodologies (notice the plural form), technologies, domains, project life cycles, techniques, tools, CASE environments, hardware, operating systems, databases, data architectures, methods for user involvement in application development, software, design trade-offs for the problem domain, and project personnel skills. Few professionals acquire all these skills without years of experience including both continuing education and variations in project assignments, company type, and problem type. This book attempts to discuss much of what should be the ideal software engineer's projectrelated knowledge and theoretical background in order to facilitate and speed the process by which
novices become experts.
The goal of this book, then, is to discuss project planning, project life cycles, methodologies, technologies, techniques, tools, languages, testing, ancillary technologies (e.g., database), and computer- aided software engineering (CASE). For each topic, alteatives, benefits and disadvantages are discussed.
For methodologies, one major problem is that most writing on methods of development concentrates on what the analyst does. It is up to the individual instructor and/or student to develop the how knowledge. Yet, the what knowledge is easy and takes very little time to lea. If I say, "The first step in object-oriented methodology is to make a list of objects," that sounds like a simple step. I may understand what I'm to do, but not how to do it. This book is intended to shed some light on the how information. One technique used to facilitate the leaing process is to develop the same case problem in each methodology, highlighting the similarities, differences, conceptual activities, decision processes, and physical representations. Another technique is to provide cases in the appendix that can be used throughout the text for many assignments, thus allowing the student to develop a detailed-problem understanding and an understanding of how the problem is expressed in different methodologies and using different techniques.
A related problem in software engineering texts is that little information is available on current research and future directions. Information systems development is a 30-year old activity that is beginning to show some signs of maturity, but is also constantly changing because the type of systems we automate is constantly changing. Research in every area of software development, from enterprise analysis through reengineering 20-year-old systems, is taking place at an unprecedented rate. Moreover, the landscape of system development will change radically in the next 20 years based on the research taking place today. This text attempts to highlight and synthesize current research to identify future directions.
Many software engineering texts never discuss problems attendant with methodologies. This text attempts to discuss methodologies in the context of their development and how they have evolved to keep pace with new knowledge about system development. Both useful and not-so-useful representation techniques will be identified. The book may be controversial in this regard, but at least the knowledge that there are problems with methods should remove some of the prevailing attitudes that there are right and wrong ways to complete everything. Unfortunately, no methodology is complete enough to guarantee the same results from two different analysts working independently, so interpretations differ. I try to identify my interpretations and generalizations throughout the text.
The book is case-oriented in several ways. First, a sample project is described, designed, and implemented using each of the techniques discussed. Second, cases for in-class development are provided. Third, cases for homework assignments are also provided. Research on leaing has revealed that we lea best through practice, analysis of examples, and more practice. For each topic, an example of both acceptable and unacceptable deliverables is provided, with discussion of the relative merits and demerits of each. Through repeated use of different cases, students will lea both the IS topics and something about problem domains that will carry over into their professional lives.
Finally, this text has a bias toward planning, analysis, and design activities even though the entire life cycle is discussed. This bias is partly due to practical and space limitations; however, it is also because of the realities of changing software engineering work. CASE promises to remove much of the programming from business application development by automating the code generation process. Although languages are discussed, the discussion focuses on how to choose the correct language for an application based on language characteristics, rather than on how to program in the language.
The audience for this text includes business, computer information systems, and computer science students. The courses for which this text is appropriate include software engineering, advanced system analysis, advanced topics in information systems, and IS project development. Computer software engineering is moving away from a concentration on developing the perfect program to a realization that even perfect programs never work in isolation. Program connections are significantly more important than individual program code. Thus, even computer scientists are recognizing a need for methodologies, techniques for system representation, and language selection.
The text was originally planned to accommodate either quarter or semester classes. I have taught this material in both. While the written material is longer than anticipated, I believe the book can be covered in one quarter because there are usually more contact hours with students. One of my goals was a book that did not require much additional outside material to supplement the text; I hope this goal was met. Much of the bulk is explaining the how processes in Chapters 7-12, and these should be covered in class to discuss alteatives, possible flaws in my thinking, and so on. If programming is also included in the course, I suggest development of a two-quarter (or semester) sequence that includes software engineering through system design in the first course and the remaining subjects in the second course.
Every school seems to offer courses on "Advanced Topics in Systems Development" or Advanced Systems Analysis" or "IS Development Project" that frequently use no book because nothing covers all the desired topics. This book attempts to provide for these courses. Advanced systems analysis and development courses all tend to concentrate on alteatives during the design process from which decisions must be made. The typical systems analysis course might discuss one technique for each major topic area: enterprise modeling, data modeling, process modeling, program design. That alteatives are available is certainly mentioned, but there is simply not enough time to teach all topics, nor are students able to assimilate much information about alteatives without becoming hopelessly confused. Advanced courses try to broaden the knowledge base of students with discussions of alteatives in each area. Even in these courses, without a hands-on orientation and concrete examples to use for reference, the number of topics and alteatives is necessarily limited. The use of a single case throughout the text, together with cases for home/school work practice, should broaden the number of topic areas that can be covered adequately in a one-semester course.
Overview of Software Engineering
Part I Preparation for Software Engineering
Leaing Application Development
Project Management
Data Gathering for Application Development
Part II Project Initiation
Organizational Reengineering and Enterprise Planning
Application Feasibility Analysis and Planning
Part III Analysis and Design
Process-Oriented Analysis
Process-Oriented Design
Data-Oriented Analysis
Data-Oriented Design
Object-Oriented Analysis
Object-Oriented Design
Summary and Future of Systems Analysis, Design, and Methodologies
Forgotten Activities
Part IV Implementation and Maintenance
Choosing an Implementation Language
Purchasing Hardware and Software
Testing andQuality Assurance
Change Management
Software Engineering as a Career
Cases for Assignments
As we move toward the 21st century, the techniques, tools, technologies, and subject matter of applications development are changing radically. Globalization of the work place is impacting IS development as well, by pressuring organizations to strive for competitive advantage through automation, among other methods. Strategic IS, reusable designs, downsizing, right-sizing, multimedia databases, and reusable code are all discussed in the same breath. Methodologies are being successfully coupled to computer-aided software engineering environments (CASE); yet object-oriented methodologies, which are being touted as the panacea for all problems, have not yet been fully automated . or even fully articulated. Few if any tools, methods or techniques address the needs of artificial intelligence and expert system development, which are currently driven by the program language being used for development. New technologies for true distribution of processing are maturing, and integration across hardware and software platforms is the major IS conce in multiple industries [Computerworld, 10/15/90].
IS professionals must be jacks-of-all-trades as never before, but there is also increased demand for domain experts who are intimately familiar with all aspects of a particular business area, such as money transfer in banking. It is difficult for anyone person to be both expert and generalist. But there are many systems developers-I call them software engineers- who do possess these attributes. Today's ideal software engineer is familiar with the alteatives, trade-offs and pitfalls of methodologies (notice the plural form), technologies, domains, project life cycles, techniques, tools, CASE environments, hardware, operating systems, databases, data architectures, methods for user involvement in application development, software, design trade-offs for the problem domain, and project personnel skills. Few professionals acquire all these skills without years of experience including both continuing education and variations in project assignments, company type, and problem type. This book attempts to discuss much of what should be the ideal software engineer's projectrelated knowledge and theoretical background in order to facilitate and speed the process by which
novices become experts.
The goal of this book, then, is to discuss project planning, project life cycles, methodologies, technologies, techniques, tools, languages, testing, ancillary technologies (e.g., database), and computer- aided software engineering (CASE). For each topic, alteatives, benefits and disadvantages are discussed.
For methodologies, one major problem is that most writing on methods of development concentrates on what the analyst does. It is up to the individual instructor and/or student to develop the how knowledge. Yet, the what knowledge is easy and takes very little time to lea. If I say, "The first step in object-oriented methodology is to make a list of objects," that sounds like a simple step. I may understand what I'm to do, but not how to do it. This book is intended to shed some light on the how information. One technique used to facilitate the leaing process is to develop the same case problem in each methodology, highlighting the similarities, differences, conceptual activities, decision processes, and physical representations. Another technique is to provide cases in the appendix that can be used throughout the text for many assignments, thus allowing the student to develop a detailed-problem understanding and an understanding of how the problem is expressed in different methodologies and using different techniques.
A related problem in software engineering texts is that little information is available on current research and future directions. Information systems development is a 30-year old activity that is beginning to show some signs of maturity, but is also constantly changing because the type of systems we automate is constantly changing. Research in every area of software development, from enterprise analysis through reengineering 20-year-old systems, is taking place at an unprecedented rate. Moreover, the landscape of system development will change radically in the next 20 years based on the research taking place today. This text attempts to highlight and synthesize current research to identify future directions.
Many software engineering texts never discuss problems attendant with methodologies. This text attempts to discuss methodologies in the context of their development and how they have evolved to keep pace with new knowledge about system development. Both useful and not-so-useful representation techniques will be identified. The book may be controversial in this regard, but at least the knowledge that there are problems with methods should remove some of the prevailing attitudes that there are right and wrong ways to complete everything. Unfortunately, no methodology is complete enough to guarantee the same results from two different analysts working independently, so interpretations differ. I try to identify my interpretations and generalizations throughout the text.
The book is case-oriented in several ways. First, a sample project is described, designed, and implemented using each of the techniques discussed. Second, cases for in-class development are provided. Third, cases for homework assignments are also provided. Research on leaing has revealed that we lea best through practice, analysis of examples, and more practice. For each topic, an example of both acceptable and unacceptable deliverables is provided, with discussion of the relative merits and demerits of each. Through repeated use of different cases, students will lea both the IS topics and something about problem domains that will carry over into their professional lives.
Finally, this text has a bias toward planning, analysis, and design activities even though the entire life cycle is discussed. This bias is partly due to practical and space limitations; however, it is also because of the realities of changing software engineering work. CASE promises to remove much of the programming from business application development by automating the code generation process. Although languages are discussed, the discussion focuses on how to choose the correct language for an application based on language characteristics, rather than on how to program in the language.
The audience for this text includes business, computer information systems, and computer science students. The courses for which this text is appropriate include software engineering, advanced system analysis, advanced topics in information systems, and IS project development. Computer software engineering is moving away from a concentration on developing the perfect program to a realization that even perfect programs never work in isolation. Program connections are significantly more important than individual program code. Thus, even computer scientists are recognizing a need for methodologies, techniques for system representation, and language selection.
The text was originally planned to accommodate either quarter or semester classes. I have taught this material in both. While the written material is longer than anticipated, I believe the book can be covered in one quarter because there are usually more contact hours with students. One of my goals was a book that did not require much additional outside material to supplement the text; I hope this goal was met. Much of the bulk is explaining the how processes in Chapters 7-12, and these should be covered in class to discuss alteatives, possible flaws in my thinking, and so on. If programming is also included in the course, I suggest development of a two-quarter (or semester) sequence that includes software engineering through system design in the first course and the remaining subjects in the second course.
Every school seems to offer courses on "Advanced Topics in Systems Development" or Advanced Systems Analysis" or "IS Development Project" that frequently use no book because nothing covers all the desired topics. This book attempts to provide for these courses. Advanced systems analysis and development courses all tend to concentrate on alteatives during the design process from which decisions must be made. The typical systems analysis course might discuss one technique for each major topic area: enterprise modeling, data modeling, process modeling, program design. That alteatives are available is certainly mentioned, but there is simply not enough time to teach all topics, nor are students able to assimilate much information about alteatives without becoming hopelessly confused. Advanced courses try to broaden the knowledge base of students with discussions of alteatives in each area. Even in these courses, without a hands-on orientation and concrete examples to use for reference, the number of topics and alteatives is necessarily limited. The use of a single case throughout the text, together with cases for home/school work practice, should broaden the number of topic areas that can be covered adequately in a one-semester course.
Overview of Software Engineering
Part I Preparation for Software Engineering
Leaing Application Development
Project Management
Data Gathering for Application Development
Part II Project Initiation
Organizational Reengineering and Enterprise Planning
Application Feasibility Analysis and Planning
Part III Analysis and Design
Process-Oriented Analysis
Process-Oriented Design
Data-Oriented Analysis
Data-Oriented Design
Object-Oriented Analysis
Object-Oriented Design
Summary and Future of Systems Analysis, Design, and Methodologies
Forgotten Activities
Part IV Implementation and Maintenance
Choosing an Implementation Language
Purchasing Hardware and Software
Testing andQuality Assurance
Change Management
Software Engineering as a Career
Cases for Assignments