Book Organization What is Software Engineering?

Ivan Marsic • Rutgers University 6 identifying and organizing the many tasks comprising a project, allocating resources to complete those tasks, and tracking actual against expectedanticipated resource utilization. Successful software projects convey a blend of careful objective evaluation, adequate preparation, continuous observation and assessment of the environment and progress, and adjusting tactics. It is interesting to compare the issues considered by Brooks [1975] and compare those of the recent agile methods movement—both put emphasis on communication of the development team members. My important goal here is, therefore, to present the tools that facilitate communication among the developers. The key such tools are: • Modular design: Breaking up the system in modules helps to cope with complexity; however, the modularization can be done in many ways with varying quality of the results. • Symbolic language: The Unified Modeling Language UML is used similar to how the symbols such as ∞, ∫, ∂, and ∩, are used in mathematics. They help to abbreviate the exposition of the material and facilitate the reader’s understanding of the material. • Design heuristics: Also known as patterns, they convey the best practices that were proven in many contexts and projects. Partitioning a problem into simpler ones, so called divide-and-conquer approach, is common when dealing with complex problems. In software development it is embodied in modularity: The source code for a module can be written and maintained independently of the source code for other modules. As with any activity, the value of a structured approach to software development becomes apparent only when complex tasks are tackled. It appears to me that agile methods, such as extreme programming, change the process management aspect, but make no difference in technology.

1.2.1 Symbol Language

As part of a design process, it is essential to communicate your ideas. When describing a process of accomplishing a certain goal, person actually thinks in terms of the abbreviations and symbols as they describe the “details” of what she is doing, and could not proceed intelligently if she were not to do so. George Miller found in the 1950s that human short-term memory can store about seven items at a time [Miller, 1957]. The short-term memory is what we use, for instance, to remember a telephone number just long enough to look away from the paper on which it is written to dial the number. It is also known as working memory since in it information is assumed to be processed when first perceived. It has been likened to the RAM random access memory of a computer. Recall how many times you had to look back in the middle of dialing, particularly if you are not familiar with the area code, which makes the number a difficult 10 digits It turns out that the Miller’s hypothesis is valid for any seven “items,” which could be anything, such as numbers, faces, people, or communities—as we organize information on higher levels of abstraction, we can still remember seven of whatever it is. This is called chunking. Symbols can be easier chunked into patterns, which are represented by new symbols. Using symbols and hierarchical abstraction makes it easier for people to think about complex systems.