Generated on Tue Oct 25 10:19:18 2022
CS 371: Software Development (JSON)
Catalog description: Software specification, design, testing, maintenance, documentation; informal proof methods; team implementation of a large project.
Prerequisites: At least a C- in CS 271 and CS 272 (Catalog Link)
Credits: 4 (3+2P)
Coordinator: Jonathan Cook
Textbook: Software Engineering, Pfleeger and Atlee, 4th Edition
(also: course handouts)
BS degree role: required
Course Learning Objectives
- Understand and explain the activites and structure of different styles of software development processes, including waterfall, (spiral,) iterative, and agile methodologies
- Apply requirements knowledge and techniques to create functional and non-functional requirements for a software system
- Apply high and low level design ideas to create an object-oriented design of a software system
- Use good design and programming ideas to implement individual and team software systems in compiled OOP languages
- Apply white and black box testing techniques and tools to individual and team software development
- Use UML class diagrams (and sequence diagrams) to capture aspects of system design and/or requirements (domain)
- Use practical software development tools, including version control systems, automated build tools, and testing tools
Course Practicum Requirements
- Some individual programming, in Java
- Project software development in Java or other compiled, non-scripting OO language
- Usage of a version control system (Subversion or Git) for at least the project
- Usage of automated build tools (make, Ant, or other) for individual and project software
- Usage of a unit testing tool (JUnit or other) in at least one assignment
- Usage of a code coverage tool (Jacoco or other) in at least one assignment
- Usage of a UML tool to create class diagrams in at least project work
Course Topics
- Overall software development lifecycle; software process and process models; agile methods; project and team management
- Requirements: system specification; functional and non-functional requirements; problem domain modeling in UML
- Design: design principles; architecture and levels of design; object-oriented design; design modeling in UML; cohesion and coupling; design patterns
- Programming: programming styles; code documentation; good programming practices
- Testing: validation and verification; errors, faults, and failures; black box vs. white box testing; equivalence partitioning; control flow graphs; coverage testing; reliability, availability, other -ilities; opt: formal methods
- Deployment and Maintenance: version management; documentation; types of maintenance
- Ethics: professional ethics and responsibilities; codes of ethics; opt: certification
Course Improvement Decisions
(Course improvement decisions or recommendations from past assessments)
- 15 April 2018: Regression testing should be covered better
ABET Outcome Coverage
(Provide Mapping to ABET Student Outcomes)
- (a) An ability to apply knowledge of computing and mathematics appropriate to the discipline (Knowledge Application)
- (b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution (Problem Analysis)
- (c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs (Design & Implementation)
- (d) An ability to function effectively on teams to accomplish a common goal (Teamwork)
- (e) An understanding of professional, ethical, legal, security and social issues and responsibilities (Professional Responsibility)
- (f) An ability to communicate effectively with a range of audiences (Communication)
- (h) Recognition of the need for and an ability to engage in continuing professional development (Professional Development)
- (i) An ability to use current techniques, skills, and tools necessary for computing practice (Techniques & Tools)
- (k) An ability to apply design and development principles in the construction of software systems of varying complexity (Complexity & Scale)
Other Notes
(Any important notes or issues to consider)
- none