When I was at JavaOne, I met an editor from Brazil that exposed me to a term called Information Architecture. Information architecture is about defining the structure, organization, navigation, labeling and indexing of information.
For the most part, I have focused on user tasks and interaction techniques to help determine the flow of an application. However, modern web-based applications have complicated usage and data patterns. The inclusion of large amounts of data into application usage, has forced us to think in terms of not only task-oriented, but also information-oriented.
We have all experienced horrible information architecture. My most recent horror story is with VisualStudio's help system. At one time, Microsoft's Developer Network (MSDN) was a salvation for developers. Over time the great experience disappeared as the amount of data became overwhelming. With the inclusion of multiple languages into the class help, class definitions split into separate non-connected sections, and the lack of context sensitivity to the IDE, MSDN has become of little use.
JavaDoc demonstrates the use of information architecture with a language. For many years, the JavaDoc was my browser home page. The ability to see packages, the classes associated with a package, and the entire class description, is an important information tool in software development. IDE's have become information rich making it unnecessary to access JavaDoc directly via the browser. Intel-sense now provides a great deal of data at our fingertips, which not only displays a list of possible methods on a class, but the method description and usage examples. Some see the intel-sense feature as an essential feature in learning a new language.
It is difficult to create a user experience that blends both navigational and functional elements. Most literature either focuses on the software interface or the hypertext system. To make matters worse, many developers are unaware of user interface techniques.