CR: COMP 3004 Learning Objectives: Difference between revisions
No edit summary |
|||
(11 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
=Calendar Description= | =Calendar Description= | ||
Theory and development software systems. This course will discuss computer ethics. Possible topics include: software development processes, requirement specification, class and scenario modeling, state modeling, UML, design patterns, traceability. Students are to complete a team project using a CASE tool. | Theory and development of software systems. This course will discuss computer ethics. Possible topics include: software development processes, requirement specification, class and scenario modeling, state modeling, UML, design patterns, traceability. Students are to complete a team project using a CASE tool. | ||
=Assumed Background= | =Assumed Background= | ||
* Practical experience with rudimentary software design techniques | |||
** able to take an assignment description and identify the objects that are required | |||
** able to apply concepts of encapsulation to organize the required objects | |||
** able to identify opportunities for code reuse and implement them | |||
** able to apply advanced object-oriented programming concepts, including polymorphism and generic programming | |||
* Practical experience in designing, implementing, testing and documenting small to medium size object-oriented programming assignments | |||
=Learning Objectives= | =Learning Objectives= | ||
* Understand the theory of large scale software system development | |||
** recognize the need for using a formal development process | |||
** learn the phases of object-oriented software development life cycle (requirements elicitation, analysis, high-level design, detailed design, implementation, testing) | |||
** learn basics of project management | |||
* Gain the practical experience to: | |||
** analyze a problem description for a large system | |||
** apply each phase of the software development life cycle | |||
** produce quality output for each phase | |||
* Prepare for a career as a software development professional: | |||
** develop tools and strategies for working as a member of a team | |||
** practice formal presentation of work to peers | |||
** produce professional documentation | |||
** understand the Software Engineering Code of Ethics; learn to identify and analyze ethical dilemmas in a systematic fashion | |||
=Topics= | =Topics= | ||
== | == Software Development Life Cycle == | ||
* Requirements elicitation | |||
** able to extract functional and non-functional requirements from a problem description | |||
** able to construct corresponding functional model, with UML use cases and scenarios | |||
** able to incorporate traceability into every work product | |||
* Analysis | |||
** able to identify high level objects and categorize them into entity, boundary and control objects | |||
** able to construct corresponding object model, including associations (inheritance, aggregation), dependencies and multiplicity, with UML class diagrams | |||
** able to construct a dynamic model based on functional requirements, with UML sequence diagrams, state machines and/or activity diagrams | |||
* High-level system design | |||
** understand different types of architectural styles (repository, client/server, peer-to-peer, MVC) | |||
** able to break down analysis object model into subsystems, with UML component diagrams | |||
** able to identify subsystem services and interfaces | |||
* Detailed object design | |||
** understand the need for code reuse | |||
** understand major design patterns | |||
** able to construct detailed object model | |||
* Implementation | |||
** understand strategies for mapping models to code and to persistent storage | |||
* Testing | |||
** unit testing: | |||
*** be able to create test cases for blackbox and whitebox testing | |||
** integration testing: | |||
*** be able to select a testing integration strategy (top-down, bottom-up, sandwich) | |||
*** be able to create test cases using stubs and drivers | |||
** system testing: | |||
*** be able to create test cases based on the functional model | |||
== Software Management== | |||
* understand basic project management issues, including team organization and risk management | |||
* understand the need for software management processes and tools, including: | |||
** configuration management | |||
** version management | |||
** system building | |||
** release management | |||
* understand the different software development life cycle models (waterfall, V-model, spiral, Unified Software Development Process) | |||
== | == Professional Ethics == | ||
* be familiar with the principles of the ACM Software Engineering Code of Ethics | |||
* be able to use a systematic process to analyze ethical dilemmas, determine possible courses of action, and select the most ethical course of action |
Latest revision as of 14:57, 13 April 2011
Calendar Description
Theory and development of software systems. This course will discuss computer ethics. Possible topics include: software development processes, requirement specification, class and scenario modeling, state modeling, UML, design patterns, traceability. Students are to complete a team project using a CASE tool.
Assumed Background
- Practical experience with rudimentary software design techniques
- able to take an assignment description and identify the objects that are required
- able to apply concepts of encapsulation to organize the required objects
- able to identify opportunities for code reuse and implement them
- able to apply advanced object-oriented programming concepts, including polymorphism and generic programming
- Practical experience in designing, implementing, testing and documenting small to medium size object-oriented programming assignments
Learning Objectives
- Understand the theory of large scale software system development
- recognize the need for using a formal development process
- learn the phases of object-oriented software development life cycle (requirements elicitation, analysis, high-level design, detailed design, implementation, testing)
- learn basics of project management
- Gain the practical experience to:
- analyze a problem description for a large system
- apply each phase of the software development life cycle
- produce quality output for each phase
- Prepare for a career as a software development professional:
- develop tools and strategies for working as a member of a team
- practice formal presentation of work to peers
- produce professional documentation
- understand the Software Engineering Code of Ethics; learn to identify and analyze ethical dilemmas in a systematic fashion
Topics
Software Development Life Cycle
- Requirements elicitation
- able to extract functional and non-functional requirements from a problem description
- able to construct corresponding functional model, with UML use cases and scenarios
- able to incorporate traceability into every work product
- Analysis
- able to identify high level objects and categorize them into entity, boundary and control objects
- able to construct corresponding object model, including associations (inheritance, aggregation), dependencies and multiplicity, with UML class diagrams
- able to construct a dynamic model based on functional requirements, with UML sequence diagrams, state machines and/or activity diagrams
- High-level system design
- understand different types of architectural styles (repository, client/server, peer-to-peer, MVC)
- able to break down analysis object model into subsystems, with UML component diagrams
- able to identify subsystem services and interfaces
- Detailed object design
- understand the need for code reuse
- understand major design patterns
- able to construct detailed object model
- Implementation
- understand strategies for mapping models to code and to persistent storage
- Testing
- unit testing:
- be able to create test cases for blackbox and whitebox testing
- integration testing:
- be able to select a testing integration strategy (top-down, bottom-up, sandwich)
- be able to create test cases using stubs and drivers
- system testing:
- be able to create test cases based on the functional model
- unit testing:
Software Management
- understand basic project management issues, including team organization and risk management
- understand the need for software management processes and tools, including:
- configuration management
- version management
- system building
- release management
- understand the different software development life cycle models (waterfall, V-model, spiral, Unified Software Development Process)
Professional Ethics
- be familiar with the principles of the ACM Software Engineering Code of Ethics
- be able to use a systematic process to analyze ethical dilemmas, determine possible courses of action, and select the most ethical course of action