This paper explores approaches and issues of developing practical and useful software agents that will communicate and response to their environment. A Multi-AGent architecture that uses SItuation Calculus (MAGSIC) to produce execution plans is designed from scratch. Based on this architecture, a software agent framework that can be reused by agent development is implemented. At present, this framework does not include all the features that are proposed. The framework is tested on Silicon Graphics Inc.'s IRIX Unix machine and PC Linux machine. To achieve automation, a high level language called Resource Programming Language that includes decision constructs, agent communication using KQML performatives, and other features is invented. MAGSIC has some unique characteristics. It is simple in architecture and small in line of code, yet supports a reasoning unit and scales well. An agent implementation like Java Agent Template only supports agent communication but does not support the scripting and reasoning unit. MAGSIC is founded upon a declarative knowledge representation (situation calculus) and clean semantics, equipped with a simple yet powerful approach to procedural attachments (scriptlet). Procedural attachments are tightly, yet flexibly, integrated with the knowledge representation and the reasoning, taking the form of knowledge metadata that annotates the procedural resource. MAGSIC also supporting moving scriptlet and can support mobile agents as well.