Software Engineering and Management (3 credits)
Text: Object-Oriented and Classical Software Engineering, 8th edition by S. Schach, McGraw-Hill, 2011
Course Information:This course introduces the software development life cycle and key concepts related to software engineering. Topics include software process models, software project management, software requirements engineering, formal and informal modeling, software architecture, software design, coding and implementation, software testing and quality assurance, software deployment, and software evolution. Additional topics such as software metrics and measures, application domains, software engineering standards, and software configuration management will also be presented. This is a project-driven course.
Students should be capable of:
- Discussing various models of the software development life cycle (SDLC) and summarizing deliverables for each phase of the SDLC
- Preparing a project management plan for developing a software product
- Describing the objectives of each phase of the SDLC and designing, implementing, and deploying a computer-based system
- Using a modeling notation such as UML to model some aspect of a software system
- Evaluating an implementation and discussing system delivery, deployment, and training
- Defining software application version control and configuration management
A. An ability to apply knowledge of computing and mathematics appropriate to the program’s student outcomes and to the discipline.
C. An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
J. An ability to use and apply current technical concepts and practices in the core information technologies.
N. An ability to assist in the creation of an effective project plan.
- Software development lifecycle
- Application domains
- Software process models (waterfall, incremental, iterative, agile, the Unified model)
- Software project management (planning, scheduling, cost estimation, resource allocation, team organization, risk management)
- Software requirements engineering (requirements identification, requirements modeling, requirements documentation, requirements review, requirement validation), formal and informal modeling (e.g., dataflow diagrams, finite state diagrams, Z)
- Software architecture (architectural analysis, architectural patterns, trade off analysis); software design and design concepts (information hiding, modular cohesion and coupling)
- Software implementation (coding, documentation, standards)
- Software quality assurance (reviews, code inspection, static and dynamic testing)
- Software testing strategies (unit testing, integration testing, requirement testing, system testing), software test case generation techniques (black box testing and white box testing techniques)
- Software delivery (deployment and deployment testing, user and operator training, creation and distribution of user and operator manuals)
- Software metrics and measurement
- Software version control management
- Software evolution
- Software configuration management