CP317D: Software Engineering Overview

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • 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?

<p>To facilitate communication and understanding between developers and stakeholders. (B)</p> Signup and view all the answers

What is the main difference between Software Engineering (SE) and Computer Engineering (CE)?

<p>CE focuses on designing and developing computer systems whereas SE focuses on the development and operation of only software systems. (C)</p> Signup and view all the answers

What is the core idea behind software engineering according to Fritz Bauer?

<p>Harnessing engineering principles to create software that is affordable, reliable, and works well on actual computers. (C)</p> Signup and view all the answers

Which of the following is NOT a core skill required for a software engineer?

<p>Expertise in financial management and investment strategies. (A)</p> Signup and view all the answers

What is the main distinction between "software engineering" and "software development"?

<p>Software engineering emphasizes a structured, disciplined approach, while software development focuses on coding. (D)</p> Signup and view all the answers

Which characteristic(s) distinguish software engineering from other types of engineering?

<p>The product is non-physical, has a short history, and lacks standardized procedures. (C)</p> Signup and view all the answers

Which category DOES NOT belong to the types of software products?

<p>Systems Software (B)</p> Signup and view all the answers

Which of the following is a key characteristic of requirements in software engineering?

<p>They are subject to change, even after the development process begins. (D)</p> Signup and view all the answers

What is the main difference between a software system product and a software product?

<p>A software system product includes hardware and software, while a software product only contains software. (C)</p> Signup and view all the answers

What is the primary role of "requirements decomposition" in software engineering?

<p>Breaking down complex requirements into smaller, manageable components. (D)</p> Signup and view all the answers

Which of the following is NOT a basic task of software engineering?

<p>Quality Assurance (C)</p> Signup and view all the answers

Which of the following examples is NOT a typical application of real-time embedded software?

<p>Desktop operating systems (D)</p> Signup and view all the answers

What is a requirement in the context of software engineering?

<p>A specific feature or capability that is required by the user to satisfy a need or goal. (C)</p> Signup and view all the answers

What is the primary focus of software engineering, according to the IEEE definition?

<p>Developing, operating, and maintaining software in a systematic and quantifiable way. (D)</p> Signup and view all the answers

Which of the following is NOT a stage in the software engineering process as outlined in the provided text?

<p>Code optimization (D)</p> Signup and view all the answers

What is the main difference between high-level design and low-level design in the software engineering process?

<p>High-level design deals with the overall architecture and structure of the software, while low-level design focuses on implementation details. (D)</p> Signup and view all the answers

What is the evaluation scheme for the CP317D Software Engineering course?

<p>30% for group project, 30% for tests, and 40% for a final exam. (A)</p> Signup and view all the answers

What is the purpose of the Think-Pair-Share (TPS) activity mentioned in the provided text?

<p>To encourage group discussions and collaborative problem-solving. (D)</p> Signup and view all the answers

Which of the following is NOT a key difference between engineering and science, as suggested by the provided text?

<p>Engineering is primarily concerned with the creation of new technologies, while science focuses on advancing theoretical knowledge. (B)</p> Signup and view all the answers

In the context of the provided syllabus, what is the focus of week 2?

<p>Requirement gathering and analysis. (C)</p> Signup and view all the answers

What are two of the key characteristics of software engineering, as implied by the provided text?

<p>Systematic approach and quantifiable rigor. (A), Collaboration and communication skills. (D)</p> Signup and view all the answers

Flashcards

Software Engineering

The application of engineering principles to develop software that is reliable and efficient.

Software Product

A computer program offered for sale, complete with documentation for installation and use.

Differences in Engineering Types

Software engineering products are intangible, have a short history, and lack standard processes unlike other engineering fields.

Computer Engineering (CE)

Discipline focused on designing, developing, and operating computer systems, emphasizing hardware and software interfaces.

Signup and view all the flashcards

Types of Software Products

Categories include application software, middleware, embedded software, and real-time embedded software.

Signup and view all the flashcards

Software Engineering Process

Includes requirements gathering, design, coding, testing, deployment, and maintenance.

Signup and view all the flashcards

Requirement in Software Engineering

A documented need that a product aims to satisfy, either physical or functional.

Signup and view all the flashcards

High-level Design

This stage outlines the software's architecture and components before detailed coding begins.

Signup and view all the flashcards

Feasibility Research

Assessment of practicality and viability of a project.

Signup and view all the flashcards

Requirements Changes

Inevitability of modifying project specifications during development.

Signup and view all the flashcards

Software Design Document

A detailed description of how the software should be built.

Signup and view all the flashcards

Deployment

The action of making software operational for users.

Signup and view all the flashcards

Software Maintenance

Modifications of software after delivery for improvements or fault corrections.

Signup and view all the flashcards

Skills for Software Engineers

Necessary abilities including coding, problem-solving, and communication.

Signup and view all the flashcards

Testing

Verifying that software meets specifications and requirements.

Signup and view all the flashcards

Bug Fixing

Correcting errors in software, which can inadvertently create new issues.

Signup and view all the flashcards

Phases of Software Engineering

Steps including requirement gathering, design, coding, testing, deployment, and maintenance.

Signup and view all the flashcards

Requirement Gathering

The process of collecting and defining user needs for the software.

Signup and view all the flashcards

Low-Level Design

Detailed design that translates high-level design into specifications for coding.

Signup and view all the flashcards

Software Testing

The process of evaluating software to identify and fix defects.

Signup and view all the flashcards

Maintenance

The ongoing support and enhancement of the software after deployment.

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.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser