Course Title:
| Software Engineering Principles and Techniques | |
Course Materials:
| Pfleeger, S. L., & Attlee, J. M. (2006). Software engineering: Theory and practice (3rd ed.). Upper Saddle River, NJ: Prentice Hall, Inc. | |
Course Description:
| CMIS 330 Software Engineering Principles and Techniques (3) Prerequisite: CMIS 141, CMIS 141A, CMIS 315, or CMIS 340. A study of the process of software engineering from initial concept through design, development testing, and maintenance to retirement of the product. Development life-cycle models are presented. Topics include issues in configuration management, integration and testing, software quality, quality assurance, security, fault tolerance, project economics, operations, human factors, and organizational structures. Students may receive credit for only one of the following courses: CMIS 330 or CMIS 388A. | |
Course Goals/Objectives:
|
After completing this course, you should be able to:
- Identify the standard components of the software life cycle
- Identify methods for planning and managing a software project
- Describe how to effectively capture requirements
- Describe several design methodologies, listing advantages and disadvantages of each
- Identify the characteristics of a problem that lend themselves to object-oriented solutions
- Compare and contrast structured design with object-oriented design of software
- Identify issues involved in implementing the design to produce high-quality code
- Describe the testing progress, including unit testing, integration testing and system testing
- Identify issues involved in system maintenance
- Evaluate products, processes and resources
- Summarize software engineering methods and techniques in practice today
| |
Course Introduction:
This course introduces students to the discipline of software engineering. Although it is a relatively new engineering discipline, software engineering's impact on our personal and professional lives will increase proportionally with the role of software and computer systems in our lives.
The development of software for large computer systems is the focus of the course. Software development spans the life cycle of software from problem definition to product testing. The requirements for large computer systems have grown to the extent today that they are beyond the capability of one developer or even of several developers. Teams of developers are required to develop large complex computer systems over several years. In addition, the developer no longer can be simply a computer programmer, but must be a professional with skills including problem analysis, system and software design, test planning and test case design, and maintenance.
We will study the discipline of software engineering by examining contemporary and short-term software development methodologies, processes, procedures, techniques, and tools. We will learn that standardizing an organization's software development practice is not a bureaucratic goal, but a necessary step for that organization to produce software with predictable and repeatable productivity and quality.
Finally, it's important to remember that software doesn't exist in a vacuum but is a critical component of computer systems. Therefore, the software engineer, although highly skilled in the art of software development, must defer to the larger picture of computer system development, where the need for additional engineering disciplines may be required to develop large, complex systems with computer systems. | |
Grading Information and Criteria:
Assignments Review questions, problems, class participation 20% Group programming assignment 20% Mid-term Exam 25% Final Exam 35%
Grading Scale: Letter grades will be assigned as follows: 90 - 100% = A 80 - 89% = B 70 - 79% = C 60 - 69% = D Less than 60% = F(a) | |
Other Information:
Late Examinations or Assignments.
It is expected all examinations and assignments will be turned in on time. I recognize there may be circumstances that prevent you from finishing programs or homework on time. If such circumstances arise, it is YOUR responsibility to coordinate with me PRIOR to missing a deadline. Unless you have made agreeable arrangements with me prior to the due date, grades on the weekly assignments submitted after the due date will be reduced by 25% for each week or portion of a week that the assignment is late. Grades on a programming assignment submitted after the due date will be reduced by 50%. Programming assignments submitted more than 1 week late will not be accepted for credit. | |
Project Descriptions:
|
Academic Policies:
Cases of plagiarism are handled consistent with current UMUC guidelines. See the UMUC policies at the following URL: http://www.umuc.edu/policy/ | |
Course Schedule:
Homework will be assigned by the instructor from exercises in the text.
All reading assignments are from the course text.
1. Introduction to Course Procedures 2. Why Software Engineering? Chapter 1 3. Modeling the Process and Life Cycle Chapter 2 4. Planning and Managing the Project Chapter 3 5. Capturing Requirements Chapter 4 6. Designing the System Chapter 5 7. Designing the System (cont.) 8. MIDTERM EXAM, 9. Object Oriented Design Chapter 6 10. Object-Oriented Design (cont). 11. Writing & Testing Programs Chapters 7& 8 12. System Testing Chapter 9 13. Delivery and Maintenance Chapters 10 & 11 14. Products, Processes and Resources Chapters 12 & 13 15. Open Issues Chapter 14 16. FINAL EXAM, Group Programming Assignment | |