Abstract: Much of software engineering-design, programming, debugging, testing and code reviews-requires collaboration among multiple users, possibly geographically dispersed. However, traditional software engineering environments provide limited support for collaboration, offering tools that interact with only one user at a time. As a result, software engineers are often forced to interact through costly and inefficient meetings, unnecessarily wait for other users to finish work, and manually notify each other of their activities. We have developed FLECSE, a new multimedia software engineering environment for overcoming these problems. FLECSE offers several multi-user software engineering tools including a program editor, a command interpreter, a makefile editor, a version-control tool, a debugger, a testing tool, and a document inspector; thereby enhancing concurrent software engineering in all phases of the life cycle. These tools are collaboration-aware and have been built almost-automatically using the Suite infrastructure for generating multi-user, multimedia programs. All of the tools benefit from the Suite infrastructure, which makes it possible to offer an editing interface to compose transactions; flexible, fine-grained concurrency control; synchronous and asynchronous collaboration; caching of user-interface state at local workstations; coupling of user-interface states of different collaborators; and audio-based collaboration. In addition, the collaboration-aware design of these tools uses command transactions, user-controlled serialization of transactions, and audio annotations and teleconferencing. These tools use facilities of existing single-user software engineering tools to various degrees. Some reuse only the functionality of the single-user tools, others also reuse the output produced by these tools, while still others also reuse the interactive commands provided by these tools. In this paper, we motivate and describe the design of FLECSE, illustrate how it can be used to promote concurrent software engineering, outline its implementation, compare it with related work, and give conclusions and directions for future work.