This paper addresses issues associated with requirements for personalized learning systems and their software architecture. These systems aim to provide unique learning experiences through adapting to a variable set of learners' characteristics at different levels of sophistication in many various contexts using a broad range of technologies. The diversity in personalized learning systems makes it difficult to represent user requirements in a way that software designers are able to use directly. Identifying a process to implement effectively personalized learning software systems remains a serious challenge. We propose a software architecture that simplifies the creation of early design models from requirements and facilitates effective communication between technical designers and stakeholders. First, we define general concepts of personalized learning software systems, and then elaborate a reusable software architecture for personalized learning software systems that can be used in different contexts. Finally, we map various personalized learning software systems from different contexts to the proposed architecture.