Don't Forget the Use Case Model
Given the emphasis on architecture, it's not uncommon for some developers to work exclusively on architecture-style work. Other developers focus on end-user features. Increasingly, both types of developer employ use case modeling as an important tool.
Use cases provide a simple format for identifying the major elements and users (actors) in a system. The power of the use case abstraction is that these elements can be recorded without going into design details. The designer is forced to consider the software from an abstract viewpoint, getting a solid idea of the major components along the way.
Use cases describe the behavior of the system as its users interact with it. This approach helps to place the software requirements in the context of a user doing some useful work with the system. In effect, this kind of thinking helps to map software requirements to the relevant end-user business processes, a very powerful concept.
One of the major deliverables from use case modeling is a conceptual model of the system, which helps to provide a shared understanding among the various stakeholders in a development project. In addition to the use case model, the various software features that make up a system become less abstract. When we speak about features, we're beginning to talk about real software.