软件工程导论 Introduction to Software Engineering 王湖南 edu

Slides:



Advertisements
Similar presentations
Which TV program is the video? 中国达人秀 China’s Got Talent 选秀节目 talent show talent n. 天资;天赋.
Advertisements

allow v. wrong adj. What’s wrong? midnight n. look through guess v. deal n. big deal work out 允许;准许 有毛病;错误的 哪儿不舒服? 午夜;子夜 快速查看;浏览 猜测;估计 协议;交易 重要的事.
考研英语复试 口语准备 考研英语口语复试. 考研英语复试 口语准备 服装 谦虚、微笑、自信 态度积极 乐观沉稳.
Introduction to Software Engineering 软件工程 导论 Prof. Mei Hong 洪玫 College of Computer Science and Software Engineering 四川大学计算机学院(软件学院)
变革中的教师教育 Teacher education in transformation
胸痛中心的时间流程管理 上海胸科医院 方唯一.
2014 年上学期 湖南长郡卫星远程学校 制作 13 Getting news from the Internet.
IFY Parents Meeting 3 December 年12月3日家长会
2007年8月龙星课程 周源源老师课程体会 包云岗 中科院计算所
-CHINESE TIME (中文时间): Free Response idea: 你周末做了什么?
Introduction to Software Engineering 软件工程 导论
软件工程实践 软件学院 高海昌 作业提交 课件下载
专题八 书面表达.
简化 IT,促进创新 — 为现代企业带来新生机
2012 年下学期 湖南长郡卫星远程学校 制作 13 Unit 4 The next step 年下学期 湖南长郡卫星远程学校 制作 13 Discussion Which university do you want to study at? Have you thought carefully.
How can we become good leamers
Java Programming Hygiene - for DIDC
摘要的开头: The passage mainly tells us sth.
59 中 张丽娟 学习目标: 1. 识记并理解运用 6 个单词和 5 个短语。 (source, accessible, network, access, via, create come up with, from the moment on, consist of, go down , at the.
Module 7 Computers 第2课时.
Unit 3 Time for Class.
Homework 4 an innovative design process model TEAM 7
Unit 4 I used to be afraid of the dark.
Been During the Vacation?
Module 5 Shopping 第2课时.
Ⅱ、从方框里选择合适的单词填空,使句子完整通顺。 [ size beef special large yet ]
International Conference ITIE2010: Inspiration from Best Practices
形式语言与网络 计算环境构建 1.
軟體原型 (Software Prototyping)
單元3:軟體設計 3-2 順序圖(Sequence Diagrams)
Special English for Industrial Robot
Logistics 物流 昭安國際物流園區 總經理 曾玉勤.
肢體殘障人士 Physically handicapped
An Introduction to Computer Science (計算機概論)
This Is English 3 双向视频文稿.
Programmable Logic Architecture Verilog HDL FPGA Design
Formal Pivot to both Language and Intelligence in Science
第4章(1) 空间数据库 —数据库理论基础 北京建筑工程学院 王文宇.
工程教育:问题与建议 王沛民 教育部战略研究基地 浙江大学科教发展战略研究中心
Try to write He Mengling Daqu Middle School.
Could you please clean your room?
基于课程标准的校本课程教学研究 乐清中学 赵海霞.
湖南大学-信息科学与工程学院-计算机与科学系
Computing and SE II Chapter 4: Requirements Engineering
Connecting Education and Career through Learning
大学思辨英语教程 精读1:语言与文化 (说课)
Review Final Chinese 2-Chapter 6~10-1
如何增加对欧贸易出口 中国制造展销中心(英国)有限公司 首席执行官 理查德·赛斯
IBM SWG Overall Introduction
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
資料結構 Data Structures Fall 2006, 95學年第一學期 Instructor : 陳宗正.
2 GROUP 身體殘障人士 傷健共融—如何改善肢體殘障人士的生活素質
Unit 8 Our Clothes Topic1 What a nice coat! Section D 赤峰市翁牛特旗梧桐花中学 赵亚平.
BORROWING SUBTRACTION WITHIN 20
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
虚 拟 仪 器 virtual instrument
中央社新聞— <LTTC:台灣學生英語聽說提升 讀寫相對下降>
Cisco Troubleshooting and Maintaining Cisco IP Networks (TSHOOT)
突出语篇语境,夯实词汇语法 一模试卷单选完形分析 及相应的二轮复习对策 永嘉罗浮中学 周晓媚.
关联词 Writing.
Unit 7 Lesson 20 九中分校 刘秀芬.
Chapter 3 What Is Money?.
高考应试作文写作训练 5. 正反观点对比.
2008 教學觀摩會 教學心得報告 資工系 曹孝櫟.
An organizational learning approach to information systems development
Unit 1 How do you study for a test?
創造思考的開發與培養.
Operating System Software School of SCU
Sun-Star第六届全国青少年英语口语大赛 全国总决赛 2015年2月 北京
Climbing a Rock Wall 攀岩 选自《多维阅读第10级》.
Presentation transcript:

软件工程导论 Introduction to Software Engineering 王湖南 wanghunan@scu. edu 软件工程导论 Introduction to Software Engineering 王湖南 wanghunan@scu.edu.cn 四川大学软件学院软件工程系

Instructor Information Email: wanghunan@scu.edu.cn QQ:********** Resume 1992、9-1996、7 电子科技大学 (UESTC) 1996、7-1999、9 中国科学院成都分院计算机应用研究所 1999、9-2002、4 电子科技大学 (UESTC) 2002、4-now 四川大学计算机(软件)学院

Instructor Information (con.) Maxim “机会总是青睐有准备的人”

Teaching assistant Assistant: 王茜 Email: vancyw@foxmail.com

Introduction to SE

Quiz (10 minutes) Did you know or use following concepts? Please give a brief description for each as your opinion. Software Requirements(软件需求) Software modeling and analysis (软件建模与分析) Software Design(软件设计) Software Coding(软件编码) Software Verification and Validation(软件验证与确认) Software Testing(软件测试) Software Operation and Maintenance(软件运行与维护) Software Evolution(软件进化) Software Management(软件管理) Software Process(软件过程)

Questions 为什么要研究软件工程? 什么是软件工程? 软件工程研究的内容是什么? 软件工程的特点是什么? 如何研究软件工程?

实例1: 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。 这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。 据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。 IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。

实例2: 1996年,美国 Washington Post 报导 Dallas, Aug. 23 — 美国航空公司一架直升飞机撞上山崖,造成163人死亡。 原因:飞行目的地代码输入错误。 驾驶Boeing 757的机长认为他输入了目的地Cali的单字符代码,通常在大多数计算机数据库中Cali和Bogota的代码是不同的,而在南美的航空资料中, Cali的单字符代码和Bogota的是一样,所以系统将目的地处理成了Bogota。

Software used, but criticized or dropped Software delivered but 软件开发的问题——软件使用率 Software used, but criticized or dropped 19% Software used after modifications 3% Software paid for but never delivered 29.7% Software delivered and used as is 2% Software delivered but never used 47% GAO: General Accounting Office (http://www.gao.gov) 1982: Nine DOD contracts amounting to $6.8 million (source: GAO, quoted in CMU/SEI-93-EM-8)

软件开发的问题——软件开发的分工 Distribution of the development effort: Common belief Specification Testing Design Encoding

软件开发的问题——软件开发实际 Distribution of the development effort: What actually happens Specification Design Coding Testing Maintenance

硬件和软件的故障率 Failure Rate "Infant Mortality" ”Wear & tear" Change Actual Ideal Time Time FAILURE CURVE FOR HARDWARE FAILURE CURVE FOR SOFTWARE Hardware tends to have a wear-in time during which it has a higher probability of failure. This is generally referred to as infant mortality. Once the initial period is passed, hardware tends to operate without failure until components age enough to cause breakdown. Lesson to be drawn Do not buy extended warranty contracts. Standard warranty is usually long enough to take you through the infant mortality period. Software also shows an early error rate, but updates should remove the most obvious problems which render the software unreliable. Updates for added functionalities often add more problems, as is shown by the spikes on the software failure curve. As updates are made, more latent errors appear in the software making it less and less reliable until it becomes too unreliable for use. The software then undergoes a major redesign and is rewritten. * Software Engineering, Module 1, Richard Conn, University of Cincinnati, May 1993

问题: 如何进行软件开发? 如何保证软件的质量、成本和进度? 方法学问题!!

Familiar Problems ….

什么是软件工程(Software Engineering)? The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. 运用系统的、规范的、可量化的方法开发、运行和维护软件,即将工程化的方法运用到软件开发中。 (IEEE Standard Glossary of Software Engineering, 1990)

软件工程相关活动

软件工程中的角色

什么是软件工程? 软件工程=计算机科学+管理+工程 运用系统的、科学的、可度量的方法开发、运行和维护软件; 研究软件开发、运行和维护的工程化过程、方法和工具; 软件工程是建立在计算机科学和数学的基础上; 软件工程=计算机科学+管理+工程

与软件工程相关的学科 计算机工程 计算机科学 管理 数学 项目管理 质量管理 软件人类工程学 系统工程

软件工程与计算机科学的关系 计算机科学 软件工程 是一门科学,研究信息和计算的理论基础,以及在计算机系统应用中的具体实现技术 是一门工程学科,它要求以系统化、可控制和有效的工程化方法创建高质量的软件。 涉及到相关的数学和计算理论,包括描述和变换信息的算法、有效地自动化等。 涉及到相关的质量、规划、经济、知识、应用等方面的原理和方法。 知识领域:计算理论、算法和数据结构、编程方法和语言、计算机组成和体系结构、通信和网络、安全、数据库、计算机图形、科学计算、人工智能、人机交互等。 知识领域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量等。 涉及数学、计算学科。 涉及计算机科学、管理、工程等学科。

软件维护是一个持续开发的过程或改进的过程 软件工程与传统工程的关系 软件工程 传统工程 基础是计算机科学 基础是自然科学 数学基础是离散数学 数学基础是连续数学 研究的对象是抽象和逻辑实体 研究的对象是具体的物理对象 软件没有制造过程 大多有生产、构造过程 软件维护是一个持续开发的过程或改进的过程 有比较明确的完成结点 软件不能被用尽 可以被用尽

软件工程学科

软件工程学科

软件工程教育

软件工程师的理想素质 决策能力 定量分析能力 团队协作能力 多重角色的承担 工具运用能力 社会交流能力 成果的重用能力

软件工程专业学生的基本要求 掌握软件工程的知识,技能和专业问题; 能够独立或作为团队成员开发和提交高质量的软件产品; 能综合考虑成本、实践、知识、现有系统和组织关系等因素解决项目中的问题; 用软件工程方法在一个或多个应用领域设计适当的解决方案,涉及道德,社会,法律和经济相关的问题; 理解现有的问题识别和分析,软件设计,开发,实现,验证和文档编写的理论,方法和技术,并能够应用。 理解和正确评价在一个典型的软件开发环境谈判,有效工作习惯,领导能力和良好客户沟通能力的重要性。 学习新的模型和技术。

Introduction to the Course

Question: Why do I need to learn software engineering? To be a software engineer or a IT engineer……

The Relationship with Other Courses

Job in Software Engineering 应用软件开发: 分析、设计和实现 软件开发服务和管理: 系统集成和测试、系统维护、技术支持、市场营销、软件项目管理等 软件应用领域服务; 软件工程领域学术研究、教育、咨询; 其它

2013 Top 10 Best Jobs in U.S.A. 1 精算师 ( Actuary) 2 生物医药工程师 2 生物医药工程师 3 软件工程师(Software Engineer) 4 听觉学专家 (Audiologist) 5 财务计划师(Financial Planner) 6 牙科保健员(Dental Hygienist) 7 职业治疗师 (Occupational Therapist) 8 验光师 9 物理治疗员 10 计算机系统分析师(Computer Systems Analyst) -美国就业网站“CareerCast”

2012 Top 10 Best Jobs in China 软件工程师 设计师 机械工程师 销售总监 教师 采购经理 理财/投资顾问 网络市场营销 店长/楼面经理 财务经理 -前程无忧

Top 10 Things Every Software Engineer Should Know Fundamentals of Emotional Intelligence(情感智能) Understand the Business of your Customer Minimum One Programming Language for each Mainstream Development Paradigm(主流开发模式) Know your Tools Standard Data Structures, Algorithms and Big-O-Notation Don’t Trust Code without Adequate Test Basics of Project Management, Lean Management and Agile Concepts Key Metrics of Software Development The Root Cause of the Last Defect Understand the Infrastructure By Markus Sprunck

Question: What should I learn from this course? In brief , you will learn how to develop software. You will know what’s difference between programming and development. Further, you will learn how to think and to solve problem.

Course Content Unit 1 Introduction Unit 2 Process Models Unit 3 Requirements Engineering Unit 4 Building the Analysis Modeling & UML Unit 5 Design Concepts and Principles Unit 6 Architectural Design Unit 7 Component-level Design Unit 8 User Interface Design Unit 9 Software Testing Strategies and Techniques Unit 10 Introduction to Web Engineering

about textbook Textbook:《software Engineering A Practitioner’s Approach》7th Edition, Roger S. Pressman, 2011, China Machine Press

About resource 《Software Engineering》9th Edition, Ian Somerville, 2009, China Machine Press 《Object-Oriented and Classical Software Engineering》8th Edition, Stephen R. Schach, 2010 China Machine Press http://www.mhhe.com/engcs/compsci/pressman http://www.acm.org http://ieeexplore.ieee.org http://www.umlchina.com http://www.sei.cmu.edu http://www.csai.cn http://research.microsoft.com http://www.51cmm.com

About Grading Course(80%) Experiment (20%) Midterm (20%) Final exam (40%) Class Participation (10%) Assignments (20%) Experiment (20%) Lab1 ( 25%) (week 7) Lab2( 25%) (week 11) Lab3( 25%) (week 13) Lab4 ( 25%) (week 15)

Class Participation 课前阅读、准备; 课堂出勤(课堂签到,缺勤30%以上不得参加期末考试); 做笔记(教材、讲义、笔记本、纸、笔); 课堂讨论、交流、回答问题; 课堂小测验; 课堂报告; 课程网站互动参与; 其它; To be active!

assignments 文档命名:学号-姓名-章节号; 文档格式:.DOC 或 .PDF; 提交时间:每周周一之前,提交网站: http://cc.scu.edu.cn/ 提醒: 杜绝作业抄袭,一旦发现,平时成绩一律按照0分处理; 按时提交作业,无特殊情况不得补交作业;

About course website 四川大学课程中心:http://cc.scu.edu.cn/ 课程: 软件工程导论(王湖南)  课程: 软件工程导论(王湖南) 教材学习网站: http://www.mhhe.com/pressman/ 要求本周内在课程网站内注册!

课程参考文献 全球最有影响力的软件工程期刊: • Transactions on Software Engineering ( IEEE ) •  Software ( IEEE ) •  Software Engineering Notes ( ACM Special Interest Group ) •  Transactions on Software Engineering and Methodology ( ACM ) •  The Journal of Systems and Software ( Elsevier ) •  Proceedings of the International Conference on Software Engineering ( ACM / IEEE ) •  Proceedings of the International Conference on Software Maintenance ( IEEE ) •  Software Maintenance: Research and Practice ( Wiley )

Chapter 1 Introduction to Software Engineering Software Engineering: A Practitioner’s Approach, 7th edition by Roger S. Pressman

The Law of Unintended Consequence(非故意结果) Computer software can have profound and unexpected effects on: Science Business Engineering Commercial People, and Culture None could have foreseen!

Where is Software? Transportation Medical Telecommunications Military Industrial Entertainment Office Machines Education etc. 软件已运用到政府、银行和金融、教育、交通、娱乐、医疗、农业和法律等方面: 以网络为中心的系统 信息系统和数据处理 金融和电子商务系统 生物医学系统 多媒体、游戏和娱乐系统 嵌入式和实时系统 容错和免疫系统 。。。。。。 有没有或不能用软件的地方吗?

Key Point Ideas and technological discoveries are the driving engines of economic growth. ------ The Wall Street Journal

Outline The Evolving Role of Software Software The Changing Nature of Software Legacy Software Software Myths

Software’s Dual Role(双重作用) Software is a product Transforms information - produces, manages, acquires, modifies, displays, or transmits information Delivers computing potential of hardware and networks Software is a vehicle(载体) for delivering a product Controls other programs (operating system) Effects communications (networking software) Helps build other software (software tools & environments) Information transformer - function behavior Computing potential - non-functional behavior Example of functional behavior? Type characters into keyboard => word processor displays them on screen Input program file => compiler translates to byte code Example of non-functional behavior? Type character in instant messenger => appears on friend’s screen Compile large program within a few seconds Performance - time and space Vehicle for product delivery Examples of SW controllers (other than OS) Examples of communication SW Examples of development tools

Outline The Evolving Role of Software Software The Changing Nature of Software Legacy Software Software Myths

The Definition of Software Software is: Instructions that when executed provide desired features, functions, and performance; Data structures that enable the programs to adequately manipulate information; and Documents that describe the operation and use of the programs Services that support users to apply software

The Definition of Software 作为软件工程的研究对象,软件是: The collection of computer programs, procedures, rules, and associated documentation and data。 (IEEE) 软件是一种逻辑,用计算机语言表达,是可在计算机硬件上执行的指令集合。

Hardware vs. Software Hardware Software Manufactured Wears out Built using components Relatively simple Developed/Engineered Deteriorates(退化) Custom built Complex

Characteristics of Software Software is engineered, not manufactured. Software doesn’t “wear out”, but it does deteriorate. Most software continues to be custom built.

Manufacturing vs. Development Once a hardware product has been manufactured, it is difficult or impossible to modify. In contrast, software products are routinely modified and upgraded. In hardware, hiring more people allows you to accomplish more work, but the same does not necessarily hold true in software engineering. Unlike hardware, software costs are concentrated in design rather than production.

Wear Out (用尽)vs. Deterioration(退化) Hardware wears out over time

Wear Out (用尽)vs. Deterioration(退化) Software deteriorates over time

Component-Based vs. Custom Built Hardware products typically employ many standardized design components. Most software continues to be custom built. The software industry does seem to be moving (slowly) toward component-based construction.

Outline The Evolving Role of Software Software The Changing Nature of Software Legacy Software Software Myths

Software Applications system software application software engineering/scientific software embedded software product-line software web applications Artificial Intelligence software Ubiquitous(普适) computing Netsourcing(Outsourcing外包) Open source Please visit: http://shareware.cnet.com/ http://sourceforge.net/

Software Complexity I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity(逼真) of the representation. If this is true, building software will always be hard. There is inherently no silver bullet. - Fred Brooks, “No Silver Bullet” http://www.computer.org/computer/homepage/misc/Brooks/

Outline The Evolving Role of Software Software The Changing Nature of Software Legacy Software Software Myths

Legacy Software Why must it change? It must be fixed to eliminate errors. It must be enhanced to implement new functional and non-functional requirements

Legacy Software What types of changes? Be adapted to meet the needs of new computing environments. Be enhanced to implement new business requirements. Be extended to make it interoperable with other systems. Be re-architected to make it viable(可实施的) within a network environment.

E-Type Systems Software that has been implemented in a real-world computing context and will therefore evolve over time

Outline The Evolving Role of Software Software The Changing Nature of Software Legacy Software Software Myths

Software Myths but … therefore … Affect managers, customers (and other non-technical stakeholders) and practitioners Are believable because they often have elements of truth, but … Invariably lead to bad decisions, therefore … Insist on reality as you navigate your way through software engineering

Software Myths If we get behind schedule, we can add more programmers and catch up. A general statement about objectives is sufficient to begin building programs. Change in project requirements can be easily accommodated because software is flexible.

Software Myths Once we write a working program, we’re done. Until I get the program running, I have no way of assessing its quality. The only deliverable work product for a successful project is the working program. Software engineering will make us create too much documentation and will slow us down.

Management Myths “We already have a book of standards and procedures for building software. It does provide my people with everything they need to know …” “If my project is behind the schedule, I always can add more programmers to it and catch up …” (a.k.a. “The Mongolian Horde concept”) “If I decide to outsource the software project to a third party, I can just relax: Let them build it, and I will just pocket my profits …”

Customer Myths “A general statement of objectives is sufficient to begin writing programs - we can fill in the details later …” “Project requirements continually change but this change can easily be accommodated because software is flexible …”

Practitioner’s Myths “Let’s start coding ASAP, because once we write the program and get it to work, our job is done …” “Until I get the program running, I have no way of assessing its quality …” “The only deliverable work product for a successful project is the working program …” “Software engineering is baloney. It makes us create tons of paperwork, only to slow us down …”

Summary The Evolving Role of Software Software The Changing Nature of Software Legacy Software Software Myths