CS 383
CS 838: Software Engineering
Catalog Description: Current topics in development of software systems; software life cycle model, requirements definition, design, verification and validation, and project management techniques.
Type: Required for all CS majors.
Total Credits: 3
Contact Hours: 3 lecture hours per week
Course Coordinator: Clinton Jeffery
URL: http://www2.cs.uidaho.edu/~jeffery/courses/383/
Prereq: Have passed all required CS 2XX level course with C or better.
Textbook: Software Engineering, 10th ed by Ian Sommerville, Pearson, 2015. Or equivalent text.
Textbook URL: http://iansommerville.com/software-engineering-book/
Prerequisites by Topic:
- Proficient programming skills in a high level language such as C++ or Java (CS 121)
- Understanding of basic concepts of programming languages and the benefits and limitations associated with them (CS 210)
- Ability to use basic software development tools (CS 270)
- Understand fundamental concepts of computer organization, computer architecture, operating systems and their relationship to application programs (CS 150, CS 240)
Major Topics Covered
- Software development life cycle: waterfall, spiral, and agile (k)
- Software project management, estimation, revision control (b)
- Product definition, requirements elicitation, use cases (b)
- Architectural design and design composition (c)
- System modeling with UML (j)
- Modularity and component design (k)
- Object-oriented methods for composition, modeling and component design (j)
- Professional, ethical, legal, security and social issues (e)
- Testing and verification (c)
- Design tools (i)
- User interfaces (k)
Course Outcomes
Note: The primary Student Outcomes for this course are (b) (Emphasized), (d), (f) and (g) (Reinforced) and (k) is Emphasized.
- Define and compare several development models (k)
- Construct a project plan and schedule (b)
- Write a software specification containing product definition and requirements (b)
- Design a system architecture including components and their relationships (c)
- Develop UML use case descriptions and use cases (b)
- Define inheritance, aggregation and user-defined associations/responsibilities between classes (j)
- Describe the professional, ethical, legal, security and social issues involved in a software product (e)
- Design modules and components, using object-oriented methods (k)
- Develop a test plan to test and verify a software product (c)
- Use software design tools to design and test a system to meet requirements (i)
- Design effective user interfaces (k)