Podcast
Questions and Answers
During the implementation phase of software engineering, what are the common challenges encountered when fixing bugs?
During the implementation phase of software engineering, what are the common challenges encountered when fixing bugs?
- Incorrect bug fixes leading to new issues. (correct)
- Fixes breaking other code that relied on the buggy behavior. (correct)
- Implementation teams lacking the necessary testing expertise.
- Fixes altering the intended system behavior. (correct)
- All of the above.
- None of the above.
What is the primary purpose of software maintenance in the software engineering process?
What is the primary purpose of software maintenance in the software engineering process?
- To ensure the software meets initial requirements after deployment.
- To optimize the software for performance and security.
- To rectify defects, enhance performance, or improve other software attributes after deployment. (correct)
- To add new features and functionalities to the existing software.
Which of the following is NOT a key aspect of software engineering's deployment phase?
Which of the following is NOT a key aspect of software engineering's deployment phase?
- Introducing new or updated computer systems.
- Conducting thorough code reviews to identify potential issues. (correct)
- Conducting comprehensive user training programs.
- Providing on-site support to users during the familiarization period.
What is the primary function of Unified Modeling Language (UML) in software engineering?
What is the primary function of Unified Modeling Language (UML) in software engineering?
What is the main difference between Software Engineering (SE) and Computer Engineering (CE)?
What is the main difference between Software Engineering (SE) and Computer Engineering (CE)?
What is the core idea behind software engineering according to Fritz Bauer?
What is the core idea behind software engineering according to Fritz Bauer?
Which of the following is NOT a core skill required for a software engineer?
Which of the following is NOT a core skill required for a software engineer?
What is the main distinction between "software engineering" and "software development"?
What is the main distinction between "software engineering" and "software development"?
Which characteristic(s) distinguish software engineering from other types of engineering?
Which characteristic(s) distinguish software engineering from other types of engineering?
Which category DOES NOT belong to the types of software products?
Which category DOES NOT belong to the types of software products?
Which of the following is a key characteristic of requirements in software engineering?
Which of the following is a key characteristic of requirements in software engineering?
What is the main difference between a software system product and a software product?
What is the main difference between a software system product and a software product?
What is the primary role of "requirements decomposition" in software engineering?
What is the primary role of "requirements decomposition" in software engineering?
Which of the following is NOT a basic task of software engineering?
Which of the following is NOT a basic task of software engineering?
Which of the following examples is NOT a typical application of real-time embedded software?
Which of the following examples is NOT a typical application of real-time embedded software?
What is a requirement in the context of software engineering?
What is a requirement in the context of software engineering?
What is the primary focus of software engineering, according to the IEEE definition?
What is the primary focus of software engineering, according to the IEEE definition?
Which of the following is NOT a stage in the software engineering process as outlined in the provided text?
Which of the following is NOT a stage in the software engineering process as outlined in the provided text?
What is the main difference between high-level design and low-level design in the software engineering process?
What is the main difference between high-level design and low-level design in the software engineering process?
What is the evaluation scheme for the CP317D Software Engineering course?
What is the evaluation scheme for the CP317D Software Engineering course?
What is the purpose of the Think-Pair-Share (TPS) activity mentioned in the provided text?
What is the purpose of the Think-Pair-Share (TPS) activity mentioned in the provided text?
Which of the following is NOT a key difference between engineering and science, as suggested by the provided text?
Which of the following is NOT a key difference between engineering and science, as suggested by the provided text?
In the context of the provided syllabus, what is the focus of week 2?
In the context of the provided syllabus, what is the focus of week 2?
What are two of the key characteristics of software engineering, as implied by the provided text?
What are two of the key characteristics of software engineering, as implied by the provided text?
Flashcards
Software Engineering
Software Engineering
The application of engineering principles to develop software that is reliable and efficient.
Software Product
Software Product
A computer program offered for sale, complete with documentation for installation and use.
Differences in Engineering Types
Differences in Engineering Types
Software engineering products are intangible, have a short history, and lack standard processes unlike other engineering fields.
Computer Engineering (CE)
Computer Engineering (CE)
Signup and view all the flashcards
Types of Software Products
Types of Software Products
Signup and view all the flashcards
Software Engineering Process
Software Engineering Process
Signup and view all the flashcards
Requirement in Software Engineering
Requirement in Software Engineering
Signup and view all the flashcards
High-level Design
High-level Design
Signup and view all the flashcards
Feasibility Research
Feasibility Research
Signup and view all the flashcards
Requirements Changes
Requirements Changes
Signup and view all the flashcards
Software Design Document
Software Design Document
Signup and view all the flashcards
Deployment
Deployment
Signup and view all the flashcards
Software Maintenance
Software Maintenance
Signup and view all the flashcards
Skills for Software Engineers
Skills for Software Engineers
Signup and view all the flashcards
Testing
Testing
Signup and view all the flashcards
Bug Fixing
Bug Fixing
Signup and view all the flashcards
Phases of Software Engineering
Phases of Software Engineering
Signup and view all the flashcards
Requirement Gathering
Requirement Gathering
Signup and view all the flashcards
Low-Level Design
Low-Level Design
Signup and view all the flashcards
Software Testing
Software Testing
Signup and view all the flashcards
Maintenance
Maintenance
Signup and view all the flashcards
Study Notes
Course Information
-
Course name: CP317D: Software Engineering
-
Instructor: Lunshan (Shaun) Gao, Ph.D., P.Eng.
-
Email: [email protected]
-
Textbook (reference): Beginning software engineering by Rod Stephens; Publisher: John Wiley & Sons, 2015, Software Engineering: A Practitioner's Approach by R.S. Pressman, 2010
-
Evaluation: Group project (2x15%): 30% (presentation + project report), Test 2x15%: 30% close book, Final exam: 40% close book
-
Rule 1: Academic plagiarism is prohibited. Project reports and materials for presentation must be delivered to MyLearningSpace.
-
Rule 2: Do not ask for increasing marks. Grades are earned, not given.
Course Schedule
- Week 1: Introduction to software engineering and project management
- Week 2: Requirement gathering
- Week 3: High-level design – architecture design
- Week 4: Low-level design-1
- Week 5: Low-level design-2 - Test 1
- Week 6: Development
- Week 7: Testing and metrics
- Week 8: Deployment and waterfall model - Test 2
- Week 9: Iterative models-1
- Week 10: Iterative models-2 and RAD
- Week 11-12: Project presentation
Introduction to Software Engineering
- Software Engineering Definition 1: The study using scientific principles to design and build software products for computer systems.
- Software Engineering Definition 2: The branch of engineering associated with designing and building software products using scientific principles, methods, and procedures.
- Software engineering yields efficient and reliable software products.
- Software engineering is an engineering branch concerned with real world problems.
Introduction - cont.
- Types of Software Products: Application software, Middle ware, Embedded software, Real-time embedded software.
Relationship to Other Engineering
- Software engineering draws upon other engineering disciplines such as electrical, mechanical, and civil engineering.
The Process of Software Engineering - cont.
- Requirement gathering: Identifying and documenting the needs of a software system.
- High-level Design: Defines the overall architecture of the software system.
- Low level Design: Defines the internal details of the modules.
- Implementation: Coding and debugging the software
- Testing: Verify requirements and standards match the code and functionality, bug fixing
- Deployment: Installing and configuring the software in a production environment.
- Maintenance: Modifying the software to fix bugs, add new features, or adapt to changes in the environment after the delivery.
- Requirements: A requirement is a singular documented physical or functional need that aims to satisfy a design, product, or process. Includes Understanding, Feasibility research, Negotiation, System design, Requirements decomposition, Specification, and Tool selection.
Software Design Document - cont.
- Data flow
- Object-oriented design - UML
The deployment process
- Deployment = resources brought into effective action.
- New or new version computer systems
- User training
- On-site support while the users get familiar with the software system
- Bug fix
Maintenance involves
- Modification after delivery
- Correcting faults
- Improving performance or other attributes,
- Customer support
- Bug fixes
Software Engineer vs. Developer and Programmer
- Software Engineers are licensed professionals.
- Software Engineers have a specific degree and broad knowledge of design systems
- Developers/Analysts are super type programmers who gather requirements, design systems, and implement applications
- Programmers write code and follow specifications.
Skills for Software Engineers
- Computer systems (hardware & software)
- Computer languages
- Object-Oriented Design
- Software testing and debugging
- Problem solving and logical thinking
- Communication skills (written and verbal)
- Team player - Management
Announcements
- 3-4 Students to form a group or the group project.
- 2 Students will focus on project presentation.
- 2 Students will focus on project report.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.