ESOF 322

Software Engineering

3 Cr. (Hrs.:3 Lec.)

Studies the process of engineering software applications and systems. Concentrates on the techniques and processes needed to engineer highly reliable small program module development assignments. Overview of software engineering is presented. In addition to individual homework assignments, students will do in class assignments individually, in pairs, triads, and quads. Prerequisites: CSCI 332 & Junior standing or Consent of Instructor. (1st)

Course generally offered fall (1st) semester.


E1. Students have a basic understanding of object-oriented programming and can create multi-class programs in C++. (CSCI 232)

E2. Students know basic error-handling, and debugging techniques. (CSCI 135, 136, 232)

Course Outcomes:

At the conclusion of this course those students who receive at least a grade of C- will:

R1. Understand what it means to “engineer” software. (CAC-a, b,c, i; EAC- a, c, e, k, 1)

R2. Understand standard life-cycle process models such as the Waterfall, Incremental, Spiral and Agile models. Know the properties of these models, and given a development environment and project goals can select an appropriate development process model.(CAC-h,i, k; EAC-a, c, e,i, k)

R3. Understand security and social issues and responsibilities and be able to analyze the local and global impact of computing on individuals, organizations, and society. (CAC-g,h; EAC-h,i)

R4. Understand quality issues such as usability, reliability, availability, maintainability, portability, and performance,and how these must be considered throughout the life cycle. (CAC-a, h,i, k; EAC-a, c, e, i, k, 1)

R5. When given the description of a small program, be able to write a consistent and complete set of concise and verifiable requirements for that program that conforms to a small program standard. (CAC-b, c, f, k; EAC-a, c, e, g, k, 1)

R6. When a given set of requirements for a small program that conforms to the requirements satisfying R5, be able to write a design for that program that conforms to a design standard. (CAC-c, f, k; EAC-a, c, e, g, k, 1)

R7. When given the requirements and design for a small module, be able to specify test conditions and test files/scenarios and scripts that provide a complete functional test of the program. For C++ programs students can obtain and explain the test coverage measures for these tests.(CAC-a, c, f, k; EAC-a, c, e, g, k, )

R8. When given the requirements and design for a small module be able to write a random test file generator. (CAC-a,c,i, k; EAC-a, c, e, g, k, 1, 2)

R9. Appreciate the need for and can adhere to a coding standard. (CAC-c, k; EAC-a,c,e, 1)

R10. When given the requirements and design, be able to write low-defect (by inspection) correctness arguments for the design algorithm that conform to a module development standard. (CAC-f, k; EAC-a, c, e, g, k, 1)

R11. When given code that conforms to a source file standard and is documented by proceeding sections of its standard, construct an argument that the code correctly implements the algorithm statements. (CAC-f, k; EAC-a, c, e, g, k, 1)

R12. Understand the importance of software inspections throughout the life cycle, and will have performed several such reviews and inspections according to the documented procedures for such reviews and inspections. (CAC-c, k; EAC-a, c, k, 1)

R13. Understand the difference between ethics and morals and the purpose of ethical codes. Students are familiar with the joint ACM/IEEE Software Engineering Code of Ethics and can use it to analyze the impact of computing and engineering solutions on individuals, organizations, and society. (CAC e, g, EAC-f, h)