The document discusses aspect-oriented software development. It covers the separation of concerns principle and how concerns can cross-cut a system. An aspect encapsulates cross-cutting functionality and defines where it should be included in a program through pointcuts and advice. Aspect-oriented development supports modeling core functionality and secondary concerns through extensions. It also discusses modeling stakeholder concerns through viewpoints in requirements engineering to identify cross-cutting concerns.