TEE3201 Course Materials 2024
website·Indexed 29 days ago
https://nus-tee3201.github.io/2024/Course documentation and learning materials for TEE3201, covering software engineering (SE) topics, Python programming, and object-oriented programming (OOP). The content includes weekly schedules, programming exercises on flow control and error handling, and adapted textbook chapters on refactoring, revision control, specifying requirements, and code quality.
What's inside TEE3201
- Object-Oriented Programming (OOP) is a programming paradigm that structures solutions by grouping operations and data into modular units called objects. Unlike procedural programming, which separates data (static/immutable) from the functions that operate on it, OOP treats objects and their interactions as the basic elements of design. This allows developers to create a network of interacting objects in memory that can simulate real-world scenarios or software components.
Overview of Software Quality Assurance (QA) techniques
Software Quality Assurance (QA) is the process of ensuring that software meets required quality levels. While testing is the most common QA activity, it is complemented by other techniques: static analysis, code reviews, and formal verification.Overview of Software Quality Assurance (QA) techniques
Software Quality Assurance (QA) is the process of ensuring that software meets required quality levels. While testing is the most common activity, it is complemented by other techniques: code reviews, static analysis, and formal verification.Overview of Software Development Lifecycle (SDLC) Process Models
The Software Development Lifecycle (SDLC) consists of stages including requirements, analysis, design, implementation, and testing. SDLC process models (or software process models) provide a 'roadmap' for developers to manage this effort, defining the aims of each stage, the expected outcomes, and the workflow between stages.Introduction to Revision Control Systems (RCS)
Revision control (also known as Version Control) is the process of managing multiple versions of information over time. Automated Revision Control Software (RCS) or Version Control Software (VCS) replaces manual file versioning to provide the following benefits:
- History Tracking: Maintains a log of who made a change, when it was made, why it was made, and exactly what was changed.
- Collaboration: Facilitates teamwork by helping identify and resolve conflicts when multiple people make incompatible changes simultaneously.
- Error Recovery: Allows users to revert files to previous known-good states and identify exactly when a bug or problem was introduced.
- Parallel Development: Enables managing the drift between multiple simultaneous versions of a project.
Commonly used RCS tools include Git (the most widely used today), Mercurial, Subversion (SVN), Perforce, CVS, Bazaar, TFS, and Clearcase.
Understand software requirement types and project contexts
A software requirement specifies a need to be fulfilled by the software product. Requirements are gathered from stakeholders (individuals or organizations involved in or affected by the project, such as users, sponsors, and developers).
Software projects generally fall into two categories:
- Brownfield project: Developing a product to replace or update an existing software product.
- Greenfield project: Developing a totally new system from scratch.
Understand the Software Development Lifecycle (SDLC) and Process Models
The Software Development Lifecycle (SDLC) consists of several stages: requirements, analysis, design, implementation, and testing. SDLC process models (or software process models) provide a 'roadmap' for developers to manage development efforts, defining the aims of each stage, the expected outcomes (artifacts), and the workflow between stages.Understand Objects as Abstractions in OOP
In Object-Oriented Programming, objects serve as an abstraction mechanism. This allows developers to work with high-granularity entities while ignoring lower-level implementation details, such as specific data formats or the internal algorithms used to derive a value. For example, interacting with aPersonobject to query an age abstracts away the complexity of storing and calculating that age from a date of birth.Use prototyping to discover and specify requirements
A prototype is a mock-up, scaled-down version, or partial system used to:
- Collect user feedback on interactions.
- Validate technical concepts (Proof-of-Concept).
- Compare multiple design alternatives before full commitment.
- Conduct early field-testing under controlled conditions.
UI prototypes (or wireframes) are particularly effective for uncovering interaction requirements and can serve as a formal specification for the final build.
Understand Objects as Abstractions in OOP
In Object-Oriented Programming, objects serve as an abstraction mechanism. This allows developers to work with high-granularity entities while ignoring lower-level implementation details, such as specific data formats or the internal algorithms used to derive a value. For example, interacting with aPersonobject to query an age abstracts away the complexity of storing a date of birth and the logic required to calculate the current age from that date.Understand software requirement types and stakeholders
A software requirement specifies a need to be fulfilled by a software product. Requirements are gathered from stakeholders—individuals or organizations involved in or affected by the project (e.g., users, sponsors, developers, government agencies).
Projects are generally categorized as:
- Brownfield: Replacing or updating an existing software product.
- Greenfield: Developing a totally new system from scratch.
Understand the purpose of Revision Control Systems (RCS)
Revision control (or Version Control) is the process of managing multiple versions of information. Automated Revision Control Software (RCS) provides several key benefits for individual developers and teams:
- History Tracking: Maintains a log of who made a change, why, when, and exactly what was changed.
- Collaboration: Helps multiple people work on the same project by identifying and resolving conflicts when incompatible changes are made simultaneously.
- Error Recovery: Allows users to revert files to a previous known-good state and helps pinpoint when a specific bug or problem was introduced.
- Parallel Development: Enables managing the drift between multiple versions of a project simultaneously.