Electrical grids are highly complex and dynamic systems that can be unreliable, insecure, and inefficient in serving end consumers. The promise of Smart Grids lies in the architecting and developing of intelligent distributed and networked systems for automated monitoring and controlling of the grid to improve performance. We have designed an agent-oriented architecture for a simulation which can help in understanding Smart Grid issues and in identifying ways to improve the electrical grid. We focus primarily on the self-healing problem, which concerns methodologies for activating control solutions to take preventative actions or to handle problems after they occur. We present software design issues that must be considered in producing a system that is flexible, adaptable and scalable. Agent-based systems provide a paradigm for conceptualizing, designing, and implementing software systems. Agents are sophisticated computer programs that can act autonomously and communicate with each other across open and distributed environments. We present design issues that are appropriate in developing a Multi-agent System (MAS) for the grid. Our MAS is implemented in the Java Agent Development Framework (JADE). Our Smart Grid Simulation uses many types of agents to acquire and monitor data, support decision making, and represent devices, controls, alternative power sources, the environment, management functions, and user interfaces.