%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Forum for Academic Software Engineering % % (The Electronic Version) % % % % Volume 2, Number 8, July 27, 1992 (FASE No. 9) % % % % _____________________________________________________________________ % % % % 1 Teaching Software Engineering Without A Text: Have Students Read % % Original Sources % % % % 2 Test Coverage Tool For SE Classes % % % % 3 East-West Conference On Emerging Computer Technologies In % % Education % % % % 4 Information Needed For Software Tools Supporting System % % Development % % % % _____________________________________________________________________ % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1====================================1====================================1 From: Keith Pierce Subject: Teaching Software Engineering Without A Text: Have Students Read Original Sources Do you either teach or plan to teach a course in software engineering? Are you less than ecstatic with the current crop of textbooks? If you answered "yes", please read on. Surely you have noticed that the authors of popular introductory texts (Pressman, Sommerville, to name two) churn out ever fatter, but not necessarily deeper, editions. This phenomenon is probably inevitable --- the authors' goals are clearly to create a standard reference to all aspects of the field (we instructors encourage it when we demand that favorite subject X be included). However, this phenomenon poses for me, the text chooser, a dilemma: students must either wade through six or seven hundred pages of text or follow a disjointed, educationally less-than-coherent path of hops and skips through selected sections. I am considering an alternative: don't assign a text, but have students read original sources. Some have tried this approach with success. Bernd Bruegge, John Cheng and Mary Shaw describe a course at CMU whose assigned readings include 24 articles, one book --- Brooks's Mythical Man Month --- but no academic text. They reason that ... Carnegie Mellon seniors (like most other senior computer science majors) should be able to read papers from IEEE Software and similar journals (IEEE Software is specifically intended to be accessible to practicing software developers) [1]. I include at the end of this article their list of lectures and associated papers. This idea is worth serious consideration. Such an approach exposes students to the literature and may encourage them to continue reading after graduation (a radical thought!). With this approach you must work harder to prepare the course: finding sources, arranging for copying, obtaining copyright permission. If the students get a better course, it may be worth the effort. CMU's list contains some excellent papers, but many of them are a decade old, and some topics that you may feel important to cover are missing. I would appreciate your suggestions for other papers that might be included, either that are more current or cover topics you feel are important in an introductory course. Please email to me your thoughts. Either reactions to the entire approach, reactions to CMU's choice of papers, or suggestions for additional papers (and justification for your selection). I will summarize and post the results. [1] Bernd Bruegge, John Chen, and Mary Shaw. A Software Engineering Project Course with a Real Client. Carnegie Mellon University Educational Material Series CMU/SEI-91-EM-4, July 1991. Keith Pierce University of Minnesota, Duluth kpierce@d.umn.edu -------------------- LECTURES AND ASSOCIATED READINGS --- CMU 15-413, Fall 1989 In this 14-week course, lectures meet twice weekly for 80 minutes each. The parenthesized figure is the total number of 80-minute sessions devoted to each topic. Introduction (0.5) Overview (0.5) Brooks75 ch 1 Software Life Cycle and Documentation (3) Requirements (1) Brooks75 ch 6 Davis82 Life cycle (1) Brooks75 ch 13 Davis88 Documentation (1) Brooks ch 10, 15 Tools and Standards (1.5) Standards (0.5) Poston84-85 Configuration Management and Version Control (1) Feldman79 Tichy82 Management (5) Project Planning (2) Fairley86 Brooks75 ch 2, 3, 14 Davenport89 Estimation and Tracking (2) Brooks75 ch 7, 8, 9 Myers89 AdaIC89 Myers78 Verification and Validation (1) Wallace89 Software Design (5) Abstraction (1) Shaw84 System Design (2) Brooks75 ch 4, 5 Lampson84 Bergland81 Software Structures (1) Shaw89 Software Reuse (1) Prieto87 Back End (3) Programming Environments (1) Brooks75 Kernighan81 Dart87 Testing (1) Howden85 Maintenance (1) Brooks75 ch 11 Schneidewind87 The Software Engineering Profession (4) The Work Force and the Job Market (1) Intellectual Property Issues (1) Legal84 Gemignani85 The Engineering Component of Software Engineering (1) Status of Profession (1) Musa85 Project-Specific Lectures, Presentations, Discussions (6) ---------------------- READINGS Each reference is annotated with the corresponding lecture. The annotation "(SR)" indicates that the paper is reprinted in the required course text, Selected Reprints in Software, Third Edition, M. V. Zelkowitz (ed), IEEE Computer Society Press, 1987. AdaIC89 Ada IC Staff. "Test case study: estimating the cost of Ada software development." Ada Information Clearinghouse Newsletter, March, 1989, 4-6. Estimation and Tracking: how well estimation works Bergland81 G. D. Bergland. "A guided tour of program design methodologies." IEEE Computer, Oct 81, 13-37 (SR). System Design: survey of design methodologies. Brooks75 Frederick P. Brooks, Jr. The Mythical Man-Month. Addison-Wesley 1975, reprinted 1982. Overview: chapter 1 --- system versus product Requirements: chapter 6 --- specifications Life Cycle: chapter 13 --- elements of the life cycle Documentation: chapter 10, 15 --- documentation (specifications, user documents) Project Planning: chapters 2, 3, 14 --- schedules, team organization Estimation and Tracking: chapters 7, 8, 9 --- communication, estimation, resource control Programming Environments: chapter 12 --- developers' tools System Design: chapters 4, 5 --- conceptual integrity, learning from experience Maintenance: chapter 11 --- System Evolution Dart87 Susan A. Dart et al. "Software Development Environments." IEEE Computer, November 1987, 18-28. Programming Environments: survey of software development environments Davenport89 Thomas H. Davenport. "The case of the soft software proposal." Harvard Business Review, May-June 1989, 12-24. Project Planning: justifying a software project Davis82 A. M. Davis. "The design of a family of application-oriented requirements languages." IEEE Computer, May 82, 21-28 (SR). Requirements: Purpose of requirements; survey of languages Davis88 A. M. Davis et al. "A strategy for comparing alternative software development life cycle models." IEEE Trans. Soft. Eng., Oct 88, 1453-1461. Life cycle: Comparison of life cycle models Fairley86 Richard E. Fairley. "A guide for preparing software project management plans." Tutorial: Software Project Management. Richard Thayer, ed. IEEE Computer Society, 1988, 257-264. Project Planning: plans Feldman79 S. I. Feldman. "Make: A program for maintaining computer programs." Software Practice and Experience, April 79, 255-265. Configuration Management and version control: make Gemignani85 M. C. Gemignani." Who owns what software produces?" IEEE Software, Sep 85, 48-52 (SR). Intellectual Property Issues: kinds of protection available Howden85 W. E. Howden. "The theory and practice of functional testing." IEEE Software, Sep 85, 6-17 (SR). Testing: functional testing IEEE87 Standard for software project management plans, IEEE Std. 1058.1-1987, IEEE, april, 1991. Project Planning: standards for plans Kernighan81 B. W. Kernighan et al. "The UNIX programming environment." IEEE Computer, Apr 81, 12-22 (SR). Programming Environments: UNIX Lampson84 B. W. Lampson. "Hints for computer system design." IEEE Software, Jan 84, 11-28. System Design: reflections of an expert designer Legal84 Task Force on Legal Aspects of Computer-Based Technology, "Protection of computer ideawork---today and tomorrow." IEEE Software, Apr 84, 74-82 (SR). Intellectual Property Issues: kinds of protections available Musa85 J. D. Musa. "Software engineering: the future of a profession."" IEEE Software, Jan 85, 55-62 (SR). The Status of the Profession: view of a workshop of professional society leaders. Myers78 W. Myers. "A statistical approach to scheduling software development." IEEE Computer, Dec 78, 23-35 (SR). Estimation and tracking: estimation techniques Myers89 W. Myers. "Allow plenty of time for large-scale software." IEEE Software, july 89, 92-99. Estimation and tracking: life cycle curves Poston84-85 Robert M. Poston. "Software standards." Three columns on software standards from IEEE Software, Jan 84, May 85, Sept 85. Standards: standards for software Prieto87 R. Prieto-Diaz et al. "Classifying software for reusability." IEEE Software, Jan 87, 6-16 (SR). Software Reuse: classification for indexing and retrieval Schneidewind87 N. F. Schneidewind. "The state of software maintenance." IEEE TOSE, March 87, 303-310. Maintenance: survey Shaw84 M. Shaw. "Abstraction techniques in modern programming languages." IEEE Software, Oct 84, 10-26 (SR). Abstraction: growth of abstraction size as index of growth Shaw89 M. Shaw. "Larger-scale systems require higher-level abstractions." Proceedings of the fifth international workshop on software specification and design, May 89, 143-146. Software Structures: comparison of typical architectures Tichy82 W. F. Tichy. "Design, implementation, and evaluation of a revision control system." Proceedings of the 6th international conference on software engineering, 1982, 58-67. Configuration management and version control: RCS Wallace89 D. R. Wallace et al. "Software verification and validation: an overview." IEEE Software, May 1989, 10-17. Verification and validation: survey 2====================================2====================================2 From: Brian Marick Subject: Test Coverage Tool for SE classes The following test coverage tool may be of interest to those teaching software engineering. It's free, runs on UNIX for C, and comes with a lot of documentation, including a tutorial. I've used it in two graduate/undergraduate courses in software testing (as well as in my own product development). --- GCT is a freely-distributable coverage tool for C programs, based on the GNU C compiler. Coverage tools measure how thoroughly a test suite exercises a program. I tested without a coverage tool for years, but I've used GCT and its predecessor for about three years now. I'll never go back to testing without coverage. GCT provides coverage measures of interest to both practitioners and testing researchers: (1) branch coverage. Do the tests force every branch in both directions? Has every case in a switch been taken? (2) multiple-condition coverage. In a statement like if (A || B) has A been both true and false? Has B? Multiple-condition coverage is stronger than branch coverage. (3) loop coverage. Has every loop been skipped? Has every loop been iterated exactly once? More than once? Tests to satisfy loop coverage can force the detection of some bugs that branch coverage might miss. (4) relational operator coverage. Do tests probe for off-by-one errors? (5) routine and call coverage. Has every routine been entered? Has every function call in a routine been exercised? These two measures are weaker than the above, but they are useful for getting a general picture of the coverage of system testing. (6) race coverage. This special-purpose measure is useful for evaluating stress tests of multi-threaded systems, tests designed to find locking and concurrency problems. (7) weak mutation coverage. This is a type of coverage of most interest to researchers. GCT has been used in large C development projects. It is "industrial-strength". Platforms GCT runs on many versions of UNIX; porting it to new ones is usually simple. An earlier version ran on HP/Apollo's Aegis, so the current version should be easy to port. Mechanism GCT takes C source code and adds instrumentation. This new C source is then compiled as usual. This allows you to use your favorite C compiler. GCT is designed to work with existing makefiles (or other system build mechanisms). For example, instrumenting the entire System V Release 4 UNIX kernel requires changes to only the top-level makefile. As the compiled program runs, it updates an internal log. The log is written on exit (or, in the case of an unending program like the UNIX kernel, extracted from the running program). Other tools produce coverage reports (detailed or summary) from the log. Instrumentation is time-efficient, a few instructions per instrumentation point. Retrieving GCT GCT is available via anonymous FTP from cs.uiuc.edu. Log in as user "anonymous", and give your email address as the password. The file /pub/testing/GCT.README describes the GCT distribution. GCT and its documentation are also available on 8mm and QIC tapes for $150. After retrieving and installing GCT, be sure to run the tutorial. See the document 'A Tutorial Introduction to GCT'. Support and Training While GCT is free, the services you expect for a commercial product are available for a price. Contact me for information about support and training, or for information about other services I offer. Informal GCT support is available through the GCT mailing list; send mail to gct-request@ernie.cs.uiuc.edu to join it. Brian Marick Testing Foundations 809 Balboa, Champaign, IL 61820 (217) 351-7228 marick@cs.uiuc.edu 3====================================3====================================3 From: eastwest@plb.icsti.su (East-West Conference OC) Subject: East-West Conference on Emerging Computer Technologies in Education **************************************************** * PROCEEDINGS and ABSTRACTS of * * * * East-West Conference * * on Emerging Computer Technologies in Education * * * * April 6-9, 1992, Moscow, Russia * **************************************************** East-West Conference on Emerging Computer Technologies in Education was held in Moscow April 6 to 9, 1992. About 400 attendees participated. The conference covered the following subfields of advanced research in the field of computers and education: - Artificial Intelligence and Education - Educational Multi-Media and Hyper-Media - Learning Environments, Microworlds and Simulation - Networks in Education - New Technologies for Language Learning - New Technologies for Learning Programming International Centre for Scientific and Technical Information, the Organiser of the Conference is pleased to suggest you the following conference materials: - the Selected Proceedings (English, 345 pages), - the Complete Book of Abstracts (English edition, 183 pages) - the Complete Book of Abstracts (Russian edition, 215 pages) For more information please contact (preferably by E-mail): *-----------------------------------------------------------------------* | East-West Conference on Emerging Computer Technologies in Education | | International Centre for Scientific and Technical Information (ICSTI) | | Kuusinen str. 21b, Moscow 125252, USSR | | E-mail: eastwest@plb.icsti.su or eastwest%plb.icsti.su@ussr.eu.net | | Telex: 411925 MCNTI FAX: +7 095 943 0089 | *-----------------------------------------------------------------------* 4================================ ===4====================================4 From: Subject: Information Needed for Software Tools Supporting System Development We, at Azusa Pacific University, are expanding our course offerings in Software Engineering. I would like to provide students with more hands-on exposure to software tools supporting system development. I am particularly interested in MS-DOS implementations of project management aids (COCOMO, etc.), CASE tools, source code analyzers (C and Pascal) and testing tools. Because of a very limited budget, I am trying to find as many public domain tools as possible. Has anyone had good experience with any such tools? End=================================End=================================End %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Managing Editor: Pen-Nan Lee % % fase@cs.uh.edu % % % % % % % % % % % % % % Organizing Committee % % % % Keith Pierce % % University of Minnesota, Duluth % % Currently on leave at the Software Engineering Institute % % Carnegie Mellon University % % Pittsburgh, PA 15213-3890 % % Telephone: (412)268-8145 % % Fax: (412)268-5758 % % Email: krp@sei.cmu.edu % % % % % % Laurie Werth % % Dept. of Computer Science % % Taylor Hall 2.124 % % University of Texas at Austin % % Austin, Texas 78712 % % Telephone: (512) 471-9535 % % Fax: (512)471-8885 % % Email: lwerth@cs.utexas.edu % % % % % % Pen-Nan Lee % % Dept. of Computer Science % % University of Houston % % Houston, TX 77204-3475 % % Telephone: (713)743-3342, 743-3350 % % Fax: (713)743-3335 % % Email: pnlee@cs.uh.edu % % Email: fase@cs.uh.edu % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%