This document provides an overview of the CP317-Software Engineering course. It discusses key topics like the definition of software engineering, the basic tasks in the software engineering process including requirements gathering, design, coding, testing, and maintenance. It also distinguishes software engineering from related fields like computer engineering and the roles of developers and programmers. Finally, it outlines the skills required of software engineers and announces the group project for the course.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
45 views20 pages
Software Engineering-week1-1-Introduction
This document provides an overview of the CP317-Software Engineering course. It discusses key topics like the definition of software engineering, the basic tasks in the software engineering process including requirements gathering, design, coding, testing, and maintenance. It also distinguishes software engineering from related fields like computer engineering and the roles of developers and programmers. Finally, it outlines the skills required of software engineers and announces the group project for the course.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20
CP317-Software Engineering
Introduction to software engineering – week 1 -1
Shaun Gao, Ph.D., P.Eng. Agenda • Overview of the course • Software engineering • Concept • The process of software engineering • Requirement gathering • System design – high-level design • Software requirement specification – low-level design • Development – programming/coding • Testing • Deployment • Maintenance • Summary Overview of the course • Course Name: CP317B: Software Engineering • Instructor: Lunshan (Shaun) Gao, Ph.D., P.Eng. • Email: [email protected] • Textbook (reference): • Software Engineering: A Practitioner’s Approach by R.S. Pressman, 2010 • Beginning software engineering by Rod Stephens; Publisher: John Wiley & Sons, 2015 • 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: don’t ask for increasing marks. Grade is earned not given. Overview of the course • Week1: introduction to software engineering and project management • Week2: Requirement gathering • Week3: High-level design – architecture design • Week4: Low-level design-1 • Week5: Low-level design-2 ------ test 1 • Week6: Development • Week7: Testing and metrics • Week8: Deployment and waterfall model • Week9: Iterative models-1 ------- test2 • Week10: Iterative models-2 and RAD • Week11-12: Project presentation Introduction • Software engineering • Engineering Introduction – cont. • Engineering • Definition 1: Engineering is the study using scientific principles to design and build machines, structures, and other things, including bridges, roads, vehicles, and buildings: civil/electrical/mechanical engineering
• Definition 2: Engineering is the branch of science and technology concerned
with the design, building, and use of engines, machines, and structures.
• Question – Think-Pair-Share (TPS):
• Engineering vs. Science Introduction – cont. • Software engineering • IEEE definition of software engineering: • The study of approaches as in the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. • Fritz Bauer, a German computer scientist, defines software engineering as: • “Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machines.” • Definition 1: Software engineering is the study using scientific principles to design and build software products for computer systems. • Definition 2: Software engineering is an engineering branch associated with designing and building software products using scientific principles, methods, and procedures. The outcome of software engineering is an efficient and reliable software product. Introduction – cont. • Differences between software engineering and other types of engineering • The final products are intangible • Short history • No standard process
• SE vs. Computer engineering (CE)
• CE deals with designing, developing, and operating computer systems. In contrast to SE, it emphasizes solving problems in digital hardware and at the hardware-software interface. Introduction – cont. • Software products • Definition 1: A software product is merchandise consisting of a computer program that is offered for sale. • Definition 2: A software product is a software system delivered to the customer with the documentation that describes how to install and use the system. In certain cases, software products may be part of system products where hardware, as well as software, is delivered to a customer. Introduction – cont. • Types of Software products
• Application software – web application, user
interface software • Middle ware – database, relational database management system • Embedded software – software that works in routers, smartphones • Real time embedded software – software that works in airplanes, rail train control systems, etc. Introduction – cont. • Relationship between software engineering and other engineering The process of software engineering • Basic tasks of software engineering • Requirement gathering • High-level design • Low-level design • Coding • Testing • Deployment • Maintenance The process of software engineering –cont. • Requirements: A requirement is a singular documented physical or functional need that a particular design, product or process aims to satisfy. • Understanding • Feasibility research • Negotiation • Requirements changes always happen • System design • Requirements decomposition • Specification • Tools selection The process of software engineering –cont. • Software design document • Data flow • Object-oriented design • UML (Unified Modeling Language) • Implementation • Coding • Bug fixing • Fixing one bug often create a new bug: (a) the bug fix is incorrect; (b) the fix breaks other code that depends on the original buggy behavior; (c) the fix may change system behavior • Testing • Foundation is requirements • Specification The process of software engineering –cont. • Deployment: • Deployment is the action of bringing resources into effective action. • It involves the following: • New or new version computer system • User training • On-site support while the users get familiar with the system • Bug fix • Maintenance • Software maintenance is the modification of a software product after delivery to correct faults, to improve performance or other attributes. • It involves the following: • Customer support • Bug fix SE vs. Developer and Programmer SE vs. Developer and Programmer Skills required for software engineers • Computer systems (hardware and software) • Computer languages • Object-oriented design • Software testing and debugging (familiar with tools) • Problem solving and logical thinking • Communication skills (both written and verbal) • Team player • Management Summary • The concept of software engineering • Relationship between software engineering and engineering • Basic tasks of software engineering • Requirement gathering • High-level design • Low-level design • Coding • Testing • Deployment • Maintenance • Skills required for software engineers • Question: different and relationship between science and engineering Announcement • 4-5 students become a group for the group project • 2 students focus on project presentation • 2 students focus on project report • Please email me your group members by end of January