SWE 6843: Embedded Systems Construction and Testing

Instructor: Dr. Andy Ju An Wang
School of Computing and Software Engineering
Southern Polytechnic State University


Course Description

Catalog Description:
This project-oriented course focuses on the use of current software building technology, testing, reliability analysis, and benchmarking. Topics include component-based development (CBD), implementation technologies, and real-time operating systems (RTOS), with emphasis on the use of measurement tools, and domain libraries. The course also covers issues in hardware software co-design.

Additional Description:
Fundamental principles and techniques for embedded software engineering are discussed. Major topics include: Stand-alone embedded systems (SES) and networked embedded systems (NES), Enabling technologies, Self-configuration and adaptive coordination, Building trustworthy NES, Models of NES computation, Common software architectures, Component-based construction and testing, Dependability of NES, and embedded software development tools. C/C++/Java will be used as major programming languages for this course.

Course Objectives

The course covers a wide range of embedded software development skills, from analyzing a problem to implementing a solution. Emphasis will be on the later stages of development, such as testing, integration, performance tuning, reliability analysis, etc. On completion of the course, students should be able to
  1. Appreciate embedded software engineering as a discipline;
  2. Master fundamental principles and methodologies of embedded software development;
  3. Appreciate engineering issues in the development of embedded software, such as the importance of addressing the user’s concerns, working with limited resources, maintainability, dependability, and division of labor.
  4. Analyze a software development problem and express its essence succinctly and precisely;
  5. Design a module structure to solve a problem, and evaluate alternatives;
  6. Implement a module so that it executes efficiently and correctly;
  7. Learn systematic approaches for embedded system testing and integration;
  8. Conduct performance tuning, reliability analysis, and security enhancement;
  9. Construct networked embedded systems with component-based approach;
  10. Work in a small team, cooperating on these aspects of software development, and exchanging ideas in a constructive and organized fashion;
  11. Utilize effectively the computing environment including operating systems, CASE tools, languages, etc.
  12. Master the basic knowledge about software requirements, software design, software construction, software management, and software quality.
  13. Understand the scope, roles, uses, and development trends of the most widely used embedded software engineering standards.

Course Outline

  1. Introduction to Embedded Systems Analysis and Design
    • Complex systems and microprocessors
    • Characteristics of embedded computing applications
    • Challenges in embedded computing system design
    • The embedded system design process
      • Requirements
      • Specification
      • Architecture design
      • Designing hardware and software components
      • System integration
    • Formalisms for system design
      • Structural description
      • Behavioral description
      • Semi-formal languages versus formal languages
    • Analysis and design examples
  2. Overview of Embedded Systems Construction and Testing
    • Differences between embedded systems and generic computing systems
    • Difficulties in embedded systems construction and testing
    • From hardware and software co-design to co-testing
    • Ad hoc approaches: microprossor-based and platform dependent
    • Object-orientation in embedded programming and testing
    • Component-orientation in embedded programming and testing
    • Product-line approaches in embedded system development
    • Performance analysis
    • Reliability analysis
    • Quality of services in embedded systems
  3. Networked Embedded Systems (NES) Overview
    • Understanding NES
    • How NES differ from traditional systems
    • Why NES are important
    • Why NES are difficult
    • SES and other NES
    • Enabling technologies
    • Real-time and performance-critical aspects of embedded operating systems
    • MEMS (microelectromechnical systems)
    • Self-configuration and adaptive coordination
    • Challenges for configuration and adaptive coordination
  4. Building Trustworthy Networked Embedded Systems
    • Reliability
    • Safety
    • Security
    • Privacy
    • Usability
    • System and software dependability
    • Probabilistic program analysis
    • Domain analysis
    • Component-based approach to NES dependability
  5. Models of NES Computation
    • What are models of computation?
    • Distributed computing models: current practice
    • New models for NES
      • Models with resource constraints
      • Models dealing with failures
      • New data models
      • Models of trust
      • Models for concurrency
      • Models of location
    • Advanced topics on models and abstractions
  6. Component-Oriented Programming for Embedded Systems
    • Devices, device drivers, and device beans
    • Component infrastructure for DeviceBeans
    • DeviceBeans component development
    • Connection model for DeviceBeans
    • Deployment model for DeviceBeans
    • Device access
    • Permission-based security and administration
    • User administration and configuration management
  7. Validation and Verification of Networked Embedded Systems
    • Defect testing
    • Integration testing
    • Object-oriented testing
    • Component-oriented testing
    • Testing workbenches
    • Verification and software inspection
    • Automated static analysis
    • Formal methods and NES
    • Reliability validation
    • Safety assurance
    • Security assessment
  8. Case Studies in Networked Embedded Systems
    • Smart Card Applications in NES
    • Smart Sensor Networks
    • OSGi-based Residential Networks
    • FleetNet for Vehicle Networks
    • Windows Embeded Case Studies
    • Java Embedded Case Studies
    • Interactive Digital TV Applications
    • Mobile Device Applications
    • Xlets and MIDlets
    • RFID and Smart Dusts
Note:   Each semester will probably emphasize a specific technology while go through others briefly.

Student Comments

At the end of each semester, students were asked to provide their feedbacks on this course by answering the question "What do you like most and what do you dislike most about this course?" Below is a list of some comments from students.

Projects and Demos

Some projects and demos related to this course can be found here.

Course Web Site

The web URL for this course is: http://webct.usg.edu. Please log into your course web site following these directions exactly:
  1. Go to http://webct.usg.edu.
  2. Click on the "Log in to myWebCT" link (DO NOT CLICK ON CREATE myWEBCT).
  3. When asked, put in your user name and passwd following the format below:
    • username: Firstname_Lastname_last4digits of SSN
      (Example: John_Doe_1234)
    • password: SSN (no dashes or spaces)
      Or if you are a previous user with this ID, the password that you have been using.
    Please note that these are case sensitive.

Note for Students:


[Course Description] | [Course Objectives] | [Course Outline] | [Student Comments] | [Projects and Demos] | [Course Web Site]
© 2004 Andy J Wang
Last modified: Tuesday August 3, 2004