Line

Introduction to Software Engineering
(Aerospace 440)

Line

Spring 2009
1:25 - 2:15 PM
Mon., Wed., and Fri.
160 Willard Building

Dr. Lyle N. Long
Distinguished Professor of Aerospace Engineering, Bioengineering, and Mathematics
The Pennsylvania State University
Certified Software Development Professional (IEEE Computer Society)
Fellow of APS and AIAA
http://www.personal.psu.edu/lnl

Course Description:

This course is an introduction to software engineering. Software engineering includes all aspects of professional software production, and is especially important for safety-critical and mission-critical software. It is also crucial for very large complicated software projects. It includes documentation, management, processes, requirements, design models, computer programs, validation, verification, cost estimation, management, and other aspects of the development process. Aerospace systems, including aircraft, spacecraft, onboard avionics, ground-based systems, flight simulators, and air transportation systems, rely heavily on software. Software is a major cost of all aerospace systems. For example, the Boeing 777 has more than 1000 onboard processors and more than 4 million lines of software, which is primarily written in Ada. The F/A-22 fighter has more than 2 million lines of software onboard, and much of this is Ada also. The AirBus 380 has 500 kilometers (311 miles) of wire. Aerospace systems also demand a level of reliability far beyond most other systems, which means the software must be designed using rigorous mission-critical and safety-critical procedures, which makes the software quite unique compared to most other software. The FAA and DOD are both involved in certifying aircraft software, for example through the DO-178B and DOD-2168 standards.

The students will learn the fundamental components of software engineering, and how complex software systems are developed so as to minimize errors and maximize the usefulness of the software. They will also learn the terminology, accepted practices, and procedures used in software engineering.

There will also be a software engineering project in the course, and the students will work in teams on this.

Objectives: Students who successfully complete this course will be able to:

  1. Explain the importance of safety-, mission-, business-, and security-critical systems;
  2. Demonstrate knowledge of the importance of good software engineering practices for critical systems;
  3. Describe and explain the terminology, accepted practices, and procedures used in software engineering;
  4. Explain the differences among software engineering, computer science and systems engineering;
  5. Decide which computer languages are well suited to modern critical systems (and explain why);
  6. Explain a variety of life-cycle models;
  7. Read and demonstrate an understanding of the software engineering literature; and
  8. Demonstrate a basic understanding of the existing standards (e.g. FAA and IEEE) applicable to software systems

Brief Description: Software engineering for safety- and mission-critical systems, including requirements, management, processes, designs, programming, validation/verification, and other aspects of software development. 3 Credits. Prerequisite CmpSc 201C (and/or AERSP 424)

Detailed course notes:

Required Textbook:

    "Software Engineering," 8th Edition, by Ian Sommerville

Additional Recommended Books and Papers

Interesting Video Clips

Course Outline:

  1. Introduction
  2. Mission- and Safety-Critical Systems
  3. Requirements Engineering
  4. Software Design (Object oriented, real-time, ...)
  5. Computer Languages (Ada, C++, and Java)
  6. Software Development, ReUse, and Evolution
  7. Verification, Validation, and Testing
  8. Project Management
  9. Software Cost Estimation
  10. Software Standards
  11. Emerging Technologies

Grading (tentative):

    The students will be evaluated using a combination of homework assignments, team projects, and exams. There will be no final exam. The weight given to each will be roughly:
    • 30% homework
    • 35% team project
    • 35% exams
    The instructor will use a standard technology-based classroom. There may also be team-based assignments, and team presentations. The course will be offered every year.

    Teaching Assistant: Oranuj Janrathitikarn (Email: ozj100)

    Students auditing the course for credit will be required to take the exams, and get a C or better. Also, I don't allow people to simply sit in on the course.

  • You will need to read and study all webpage notes also check the homework webpage regularly.

  • I might use Angel, so please go there and upload a picture of yourself: cms.psu.edu.

  • We gratefully acknowledge the Leonhard Center for funding to help develop this course.

  • Notes:

  • Prerequisites:
      You must have taken a course in computer programming (e.g. CS 201), but it would be very valuable to have a more advanced course as well (e.g. AERSP 424 ).

    Line
    from: http://www.personal.psu.edu/lnl/440pub
    You are the 4719th visitor since Sept. 30, 2006.
    Last modified: Wednesday, 21-Oct-2009 21:35:00 EDT
    Line