Agent Oriented Software-Engineering (AOSE) proposes the design of distributed software systems as collections of autonomous and pro-active actors, so-called agents. Since software applications results from agent interplay in Multi-Agent Systems (MAS), this design approach facilitates the construction of software applications that exhibit self-organizing and emergent dynamics. In this chapter, we examine the relation between self-organizing MAS and Complex Adaptive Systems (CAS), highlighting the resulting challenges for engineering approaches. We argue that AOSE developers need to be aware of the possible causes of complex system dynamics, which result from underlying feedback loops. In this respect current approaches to develop SO-MAS are analyzed, leading to a novel classification scheme of typically applied computational techniques. To relieve development efforts and bridge the gap between top-down engineering and bottom-up emerging phenomena, we discuss how multi-level analysis, so-called mesoscopic modeling, can be used to comprehend MAS dynamics and guide agent design, respectively iterative redesign.