软件工程实践 软件学院 高海昌 作业提交 hchgao@xidian.edu.cn 课件下载 http://web.xidian.edu.cn/hchgao.

Slides:



Advertisements
Similar presentations
1-1 第八章 創造優質產出:生產與作業管理. 1-2 參考資料 企業管理:全球導向的運作 鄭紹成/著 前程 企業概論 吳淑華 / 編譯 華泰書局 R.J., Ebert and R.W., Griffin, “Business Essentials” , 5th Ed., Prentice-Hall.
Advertisements

第十章 資訊安全管理 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
商务礼仪培训 开场白:一个人的仪表在社会交往过程中是构成第一印象的主要因素,你的仪容仪表会影响别人对你的专业能力和任职资格的判断。
第10章 系統運行與支援.
第 16 章 資訊管理、 系統分析與設計.
方案設計與評估.
第2章 資料庫系統 2-1 資料庫環境的四大組成元件 2-2 ANSI/SPARC的三層資料庫系統架構
倉頡輸入法 主講人:鍾長宏 (花蓮縣國中英語深耕教師) Tel: (03) #306
第四章 電腦軟體 課前指引 實體的電腦裝置,我們稱之為「硬體」(Hardware),至於軟體則是個抽象的概念,軟體是經由人類以各種不同的程式語言撰寫而成,以達到控制硬體、進行各種工作的抽象化(例如文書處理)等動作。有些讀者經常迫不及買了一台新電腦,就以為可以開始使用!事實不然,一部配備齊全的電腦,如果沒有合適的軟體來控制與搭配,絕對也是英雄無用武之地。一般來說,我們將軟體分「系統軟體」(System.
软件质量保证与测试 第2讲 软件测试的基本概念和方法
第一章 系統開發概論 1-1 系統開發概論 1-2 常見的資訊系統 1-3 系統開發生命週期 1-4 系統開發方法論簡介.
第二章 管理資訊系統概論暨資訊系統應用(Introduction to MIS and the Applications of IS)
Concepts Methods Practice Design Implementation
软件体系结构 主讲老师:刘玮
第9章 系統建置.
專案管理 Project Management
吳錦範 國立台東大學圖書館採編組 組長 2008/03/12 圖書館自動化系統介紹 吳錦範 國立台東大學圖書館採編組 組長 2008/03/12.
第二章 UML簡介 課前指引 本章介紹什麼是UML以及利用圖形來塑模資訊系統的好處在哪裡。文中也介紹了何謂「4+1的觀點」、以及簡述各項UML圖形的使用目的。並且,我們從靜態以及動態這兩個觀點來分類、介紹各圖形的使用時機。
欢迎各位 Nice to Meet U.
第 5 章 软件项目需求管理.
大專院校校園e 化 PKI、智慧卡應用與整合.
企業倫理與職業倫理議題 13.1 企業倫理的意涵及其特性 13.2 企業倫理決策 13.3 企業倫理之相關議題 13.4 職業倫理相關議題
資訊管理 第十五章 資訊使用與倫理.
iMIS 集成管理信息系统 深圳市捷为科技有限公司 Shenzhen Jawave Technologies Co., Ltd.
科技定義與演進 科技 vs.學習.
宋卫国 科技部中国科学技术发展战略研究院 科技统计与分析研究所(科技统计分析中心) 北京3814信箱
Courseware Design and Multimedia
软件工程 主讲:饶国政 天 津 大 学.
資訊管理個案 兼任講師 黃志燻.
运营管理(Operations Management)
ISO 9001條文簡介 ( 2000年版) ISO9001訓練教材之二 顧問師 林弘炤.
ACM简介及使用指南.
软件工程 Software Engineering
課程名稱:計算機概論 授課老師:李春雄 博士
軟體原型 (Software Prototyping)
Topic 06 行銷資訊系統的開發方法.
第一章 軟體工程概論.
第四章 系統內部控制設計.
組織理論與管理 Organization Theory and Management 授課簡介
品質管理 (Quality Management)
單元3:軟體設計 3-2 順序圖(Sequence Diagrams)
An Introduction to Computer Science (計算機概論)
「資訊安全國家標準草案之研擬」計畫 之 軟體處理評估分項計畫 主講者:吳林全 先生
The Issue of Information Security Management 資安管理專題
品質管理系統 華南品規課 鴻准精密模具有限公司 2018/12/6.
資策會創新應用服務研究所 計畫主持人:李長脩 博士 03/27/2008
作業系統 (Operating System)
管理篇 第四章 软件风险管理 什么是风险? 风险分析 风险管理.
辅导教师:李晓红 天津大学 计算机科学与技术学院
Connecting Education and Career through Learning
資料結構 Data Structures Fall 2006, 95學年第一學期 Instructor : 陳宗正.
Chap 4 軟體品質保證.
企業導入客戶關係管理(CRM) 執行計劃與效益分析(BSC)
會計資訊系統 大帳省財務庫存管理系統(Beyond) 士林高商(資料來源:啟發出版社) 簡報者:黃瑞萍老師.
軌道運輸系統資產管理 與利用制度之研究 期末簡報
梁文新 办公室:综合楼108 电 话: 软件工程导论 梁文新 办公室:综合楼108 电 话:
南台科技大學 多媒體與電腦娛樂科學系 助理教授 黃信夫
Part5-Chapter 1 餐旅人力資源 管理的內涵 本章研習重點 1. 說明管理的定義。 2. 瞭解人力資源管理的定義。
歸因:解釋社會行為 授課老師:林東龍 授課日期:2005/10/7.
ISO9004 质量管理体系 业绩改进指南 宣贯培训 ——杭州北航企业管理服务有限公司
软件项目的配置管理 2019/5/1.
導 論 教學投影片.
An organizational learning approach to information systems development
設計程序 Design Process 專題設計計劃書編寫 處境 Situation 設計概要 Design Brief
第七章 软件测试 Software Testing
在台創業就業座談會 林英發.
Chap 2 軟體品質管理的基本觀念.
质量管理体系与工具 工程管理学
第十章 : 系統建置與運轉 1. 前言 讓系統順利運轉之三類工作 : a) 轉換設計文件成為軟體 : 程式撰寫、軟體測試 、系統安裝
Presentation transcript:

软件工程实践 软件学院 高海昌 作业提交 hchgao@xidian.edu.cn 课件下载 http://web.xidian.edu.cn/hchgao

内容 考核 教材 1. 概述 2. 软件过程和生命周期 3. 项目管理 4. 需求工程 5. 软件设计 6. 软件实现 7. 软件测试 8. 软件交付 考核 闭卷考试(40%)+实践成果(60%) 教材 谭庆平等著《软件工程实践教程》,高等教育出版社,2009年第1版。

内容 参考书目 Roger S Pressman 著《Software Engineering, A Practitioner’s Approach》 4th Edition, 北京:机械工业出版社,1999. Shari Lawrence Pfleeger著《Software Engineering Theory an Practice》3rd Edition,北京:高等教育出版社,2006. 孙家广主编《软件工程-理论、方法与实践》 第一版,北京:高等教育出版社,2005. 刘兵等编《软件工程实践教程》第一版,北京:机械工业出版社,2009. 韩万江编《软件工程案例教程》第一版,北京:机械工业出版社,2009. 3

内容 软件工程基础知识回顾 为后续阶段以项目机制实施作知识准备 项目实施阶段,每个阶段均须形成报告 1. 概述 2. 软件过程模型 3. 软件项目管理 4. 软件需求分析 5. 软件设计 项目实施阶段,每个阶段均须形成报告 6. 软件实现 7. 软件测试 8. 软件交付 4

实施 学生自由分组以形成团队,每组3-6人。 团队合作完成一个实际项目,每个学生完成相应子任务。 组建团队 选择案例 完成案例 汇报总结

实践案例1---课程注册管理系统 为某所高校的教务管理部门开发一个课程注册管理系统。在每学期开学前,教务管理人员可利用该系统输入课程信息,设定课表(每门课的任课教师、上课地点和时间)。开学后,学生可以利用该系统查询课程和课表信息,在第一周内注册课程或撤销对课程的注册。 软件系统负责将学生所选课程的列表通知计费系统以确定学生应缴纳的选课费用。任课教师在学期内可随时查询选修所授课程的学生的信息,学生可随时查询课程信息、课表、本人所选课程列表,教务管理人员可随时查询所有信息。 6

实践案例2---机票预订管理系统 为某家机票预订服务商开发一个机票查询和预订管理系统。该系统中的航班和机票信息由多家航空公司提供,客户可以通过电话或上网方式查询航班时刻表、机票可用信息、折扣信息,可以远程订票、退票、通过银行卡支付票款。客户分三类:金牌客户、银牌客户、普通客户。普通客户通过订票积分至一定的额度可以逐步升级为银牌客户、金牌客户。不同类别的客户所享受的折扣可以不同。该系统还必须按每日、每周、每月给出机票销售的统计分析报表。 7

实践任务 1、根据第二章(过程模型及生命期)所学内容,撰写所开发项目的开发过程模型。 2、根据第三章(项目管理)所学内容,编制所开发项目的项目进度计划,以GANTT图方法呈现。 3、根据第四章(需求分析)所学内容,撰写所开发的项目的需求规格说明书。需求文档分两部分,第一部分(Definition),第二部分(Specification)。 4、根据第五章(软件设计)所学内容,撰写所开发的项目的设计说明书。包括:界面设计、体系结构设计、数据库设计三大类,可集中于一个文档。 5、编码实现需要同学们到机房根据任务分工,各自实现分工模块,并完成集成测试。 6、对开发的系统进行最终实地验收,并作项目总结。 8

结果 任务1、2、3、4以电子文档的形式提交; 任务5实地验收; 任务6由各组长以PPT方式讲解汇报。 电子文档提交地址:hchgao@xidian.edu.cn 9

概述 IEEE给软件下的定义:软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。 2000年中国软件产业收入达590亿; … 2009年中国软件产业收入达9513亿,同比增长25.6% ;软件出口185亿美元,同比增长14% 。 2010年中国软件产业收入达1.33万亿,同比增长31% ,占电子信息产业比重上升至18%。 2011年中国软件产业收入达1.84万亿,同比增长32.4% 10

什么是软件? 软件历史 第一台计算机 晶体管计算机 集成电路计算机 ENIAC, 46 IBM 7090, 58 Software was free addition to hardware 集成电路计算机 IBM 360, 64 Software was first priced, 69 首先来看什么是软件?软件的历史最早可以追溯到46年第一台计算机的出现-电子数字积分计算机;其次是58年的晶体管计算机-IBM的7090。在当时的计算机当中,软件是作为免费赠送的,一般是硬件产品的附属品。64年出现了集成电路计算机-IBM360。而软件作为一个产品,也就是有自己的价格,则是从69年开始的。

什么是软件? 软件系统的体积 Software Size (LOC) Telephone Terminal (Cell Phone) 1989 1999 1996 1.5 M 700 K 4 bit 8 16 Software Size (LOC) 500 1 2 2.2 Development Period (year) 0.5 Telephone Terminal (Cell Phone) 随着软件的发展,软件的开发周期要求是越来越短,而软件的体积则在不停的增加。最明显的例子就是微软的产品。从最早的MS-Dos->Windows->Windows NT等,体积越来越大。甚至现在微软的集成开发环境Visual Studio 2005甚至达到了1.8G,对硬件的要求也越来越高。在计算机界有一总说法是Win-Tel联盟,指的是微软和Intel的联盟。 图中以手机中的软件为例,给大家做了软件发展的说明。

什么是软件? 软件是一个集合,包含有: 例子 (1)指令(也可以说程序),执行后会提供想要的功能和性能, (2)数据,使得程序能够更加便利和充分的操作信息 (3)文档,描述程序的操作和使用. 例子 源码、对象程序、涉及文档、测试数据等等…… 下面我们看看软件的定义是什么? 软件是一个集合,包含有: 1、指令(也可以说程序),执行后会提供想要的功能和性能; 2、数据,使得程序能够更加便利和充分的操作信息; 3、文档,描述程序的操作和使用 例子:源码、对象程序、涉及文档、测试数据等等。

什么是软件? 软件的特性 不可见性 逻辑性 灵活性 软件产品很难去触摸、感觉或识别或者鉴定,是一种不真实存在于物理环境中的虚拟实体 软件产品的功能一般很难由人类来单独完成,或者说人类完成的效率非常低下。例如邮件、文件系统、数据库、操作系统等 灵活性 软件产品很容易被改变和修改。保持其一致性是一件非常重要的工作,但这种特性也为软件的重用提供了很好的支持,可以根据需求的变化而变化。 软件的特性是什么?为什么需要了解软件的特性?因为软件产品和以前的工业产品的差异非常之大,有很多自己的特性。这也是在出现软件危机之后,人们认真思考的一个问题。只有在了解了软件自身的特性之后,才可以设计出更好的开发流程、开发工具以及各种的评价工具等,才能得到更好的软件产品。 软件自身特性包括: 1、不可见性:软件产品很难去触摸、感觉或识别或者鉴定,是一种不真实存在于物理环境中的虚拟实体; 2、逻辑性:软件产品的功能一般很难由人类来单独完成,或者说人类完成的效率非常低下。例如邮件、文件系统、数据库、操作系统等; 3、灵活性:软件产品很容易被改变和修改。软件的指令、数据和文档都非常容易修改,保持其一致性是一件非常重要的工作,但这种特性也为软件的重用提供了很好的支持(和硬件产品、工业产品相比较而言),可以根据需求的变化而变化。

什么是软件? 软件的特点 软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有明显的制造过程 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题 软件的特点: 软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有明显的制造过程 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题

什么是软件? 软件的特点 软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式 软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性 软件成本相当昂贵,涉及到社会因素 软件的特点: 软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性,尤其是在大型的软件应用当中。 软件的开发至今尚未完全摆脱手工艺的开发方式,无法实现工业界流水线的生产方式,必须依赖于程序员的大脑。 软件本身是复杂的 实际问题的复杂性,各种的业务需求、功能需求、性能需求等等; 程序逻辑结构的复杂性,现实问题必须转换为软件设计问题,存在业务需求到软件需求的转变,存在非功能性需求等等 软件成本相当昂贵,涉及到社会因素。这一点和中国国内的实际情况不同。国外的软件非常昂贵,国内的软件,尤其是应用软件很便宜(相对而言)为什么?

概念 大中型软件项目的成功有赖于系统化的软件开发方法学和有纪律的软件工程。 软件质量要素不仅包含正确性、可靠性、有效性和可用性,也包含可理解性、可扩展性、可维护性。 用户优先 合理权衡 放眼全局 化繁为简 17

?! 什么是“好的软件” ? 质量术语 Error错误:人为的错误;例如出现了输入错误、操作失误的现象 Fault故障:错误的结果,在开发和维护中明显出现的。例如误操作删除了系统文件,导致了操作系统的崩溃。 Failure失败:违背了需要的系统行为。例如由于开发中的错误,导致出现了系统表现出的行为与需求不一致。 ?! human error fault failure can lead to 首先给大家介绍软件的度量问题。大家都知道用户需要好的软件,需要质量可靠的软件,如何来衡量一个软件的好坏。 在介绍软件度量之前,先介绍一个概念,可以帮助大家更好的理解。 1、错误:人为的错误;例如出现了输入错误、操作失误的现象;例如误操作删除了系统文件 2、故障:错误的结果,在开发和维护中明显出现的。例如误操作删除了系统文件,导致了操作系统的崩溃。 3、失败:明显违背了需要的系统行为。例如由于开发中的错误,导致出现了系统表现出的行为与需求不一致。

什么是“好的软件”? 好的软件工程一般都必须包含一个产生质量可靠的软件产品的策略 什么是“质量”? 产品的质量。软件产品本身的质量,例如产品的性能、功能、可靠、安全等角度 过程质量。指的是开发软件产品的过程是否有质量。例如开发团队的质量、人际沟通的效率、规程的规范性等等。CMM就是衡量过程的质量。 产品在商业环境中的质量。更多的是其使用过程中用户的评价,投资回报等等。 好的软件工程一般都必须包含一个产生质量可靠的软件产品的策略。 那么质量到底是什么?质量实际上是一个很广泛的词,只说质量好没有用。必须将质量落实的具体的内容。例如说一个人很好,可能是脾气好、人品好、工作态度好、生活习惯好、长的漂亮、身材好等等?必须制定具体的内容,说明衡量的具体指标。 我们在说软件产品的质量时,是从三个方面来衡量: 1、产品的质量。软件产品本身的质量,例如产品的性能、功能、可靠、安全等角度; 2、过程质量。指的是开发软件产品的过程是否有质量。例如开发团队的质量、人际沟通的效率、规程的规范性等等。CMM就是衡量过程的质量。 3、产品在商业环境中的质量。更多的是其使用过程中用户的评价,投资回报等等。

什么是“好的软件”? 产品本身的质量 用户的观点:人机界面友好的程度,易用性和是否是以用户为中心的设计、产品的正确性等 开发者的观点:采用的技术是否成熟可靠?性能、可维护性、文档是否齐全、是否可测试等等 和产品质量标准相关的外部质量因素 首先来看产品本身的质量: 1、用户的观点:人机界面友好的程度,易用性和是否是以用户为中心的设计、产品的正确性等 2、开发者的观点:采用的技术是否成熟可靠?性能、可维护性、文档是否齐全、是否可测试等等 3、和产品质量标准相关的外部质量因素:

Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability Completeness Traceability Consistency Accuracy Error tolerance Execution efficiency Storage efficiency Access control Access audit Operability Training Communicativeness Simplicity Conciseness Instrumentation Self-descriptiveness Expandability Generality Modularity Software independence Machine independence Communications commonality Data commonality 这里列出了一些软件产品质量衡量的指标: 正确性:可追踪、完整、一致; 可靠性:精确、容错 有效性:有效执行和存储 完整性:访问控制和访问审计 可用性:操作性、训练等 可维护性:简单、简明、可描述和模块化 可测试性:简单、模块化、对工具的支持 可扩展性:扩展性、通用、模块化 可重用性:简单、模块化、软件独立和机器独立 互操作性:模块化、公共数据、公共通信

什么是“好的软件”? 过程质量 软件产品的生产过程和其它工业界的产品的生产过程也是类似的。生产过程被分为了很多个活动,一系列的活动组成了整个生产过程。生产过程中的活动均可能影响到最终的产品质量。可能存在的问题是. 在何时何地可能找到特别的一类故障? 如何在开发的早期找到故障?最好是在产品出厂前。 如何建立一种容错机制,使得在故障变成失败之前使其发生的可能最小化?例如工业界的质量管理制度,质量员的存在等; 有没有一种活动可以在保障质量方面使得开发过程更加有效?质量保障活动。 过程的质量:软件产品的生产过程和其它工业界的产品的生产过程也是类似的。生产过程被分为了很多个活动,一系列的活动组成了整个生产过程。生产过程中的活动均可能影响到最终的产品质量。例如生产电视和手机等,都是严格的流水线,一旦某个环节或活动出问题,都会导致最终产品的失败。向卓别林主演的《摩登时代》中拧螺丝的工作。可能存在的问题是: 1、在何时何地可能找到特别的一类故障? 2、如何在开发的早期找到故障?最好是在产品出厂前。 3、如何建立一种容错机制,使得在故障变成失败之前使其发生的可能最小化?例如工业界的质量管理制度,质量员的存在等; 4、有没有一种活动可以在保障质量方面使得开发过程更加有效?质量保障活动。

什么是“好的软件”? 过程质量 软件工程中的过程建模和过程改进活动 能力成熟度模型(CMM)—实际上也是一种过程指导方针. 软件过程改进和能力测定模型(SPICE) ISO9001 模型 统一过程模型(RUP) 过程质量:因此在软件工程(软件开发过程)中,很多人开始研究以便来保障过程的质量,主要是过程建模和过程改进活动。过程建模就是利用数学知识对过程建立模型,从理论上来研究;过程改进则更多的是从以前的生产活动中总结经验教训,来不断的改进过程,称之为过程改进。 主要的模型有: 1、能力成熟度模型(CMM)实际上也是一种过程指导方针; 2、软件过程改进和能力测定模型; 3、ISO9001模型 4、统一过程模型,Rational是一个公司名称,UP模型最早是该公司提出的,所以最早称之为RUP,现在讨论时更多的称之为UP模型。

什么是“好的软件”? 商业环境中的质量 投资回报率(ROI) 通过调查,一般情况下,投资回报率的计算包括以下内容: 培训 时间进度 风险 生产力 过程 用户 成本 买卖成本等 商业环境中的质量:主要是投资回报率。也就是投入资金、人力去开发一个软件产品,计算其回报。计算公式如下。 通过调查,一般情况下,投资回报率的计算包括以下内容: 培训、时间进度、风险、质量、生产力、过程、用户、成本、买卖成本等。

什么是“好的软件”? 各种因素对商业环境下质量的影响比例 Software process group Quality group Process Internal R&D Assessments Materials Hardware costs Facilities 0% 10% 20% 30% 40% 50% 60% 70% General Documentation SCE costs Software costs Effort Percent of interviewees Dollars 下面的图是各种因素对商业环境下质量的影响比例:通过调查总结出来的数据。 SCE--Software Capability Evaluation (软件能力评鉴) R&D--Research and Development (研发)

如何获得“好的软件” 系统方法 工程方法 上面我们谈论了什么是软件,并对软件质量的度量指标进行了讨论,知道了如何来衡量一个软件产品的好坏。但是根本的问题没有解决,就是如何才能得到一个在上述标准下,可以称之为“好”的软件?下面来开始讨论这个问题。 软件危机之后,人们通过研究并总结了其它工业领域的成功经验,总结出了两种可能的方法。为什么说可能?因为采用了该方法,可以有效的降低复杂度和进行有效的过程管理,有可能得到好的软件,但并不是一定得到。 两种方法是:1、系统方法;2、工程化方法。

系统方法 项目在开发过程并不是处于一个真空当中. 指导自己开发的软件的边界是很重要的. 硬件 别的软件任务 已经存在的数据库 另外的计算机系统 指导自己开发的软件的边界是很重要的. 项目包含的内容是什么? 什么是系统不包含的内容?需要很明确的确定下来 系统方法: 项目在开发过程并不是处于一个真空当中,项目需要涉及到很多其它的内容,包括: 硬件、别的软件任务、已经存在的数据库、另外的计算机系统。自动取款机的例子(后台的银行帐务系统) 指导自己开发的软件的边界是很重要的。主要是: 项目包含的内容是什么?什么是系统不包含的内容?需要很明确的确定下来。

系统方法 系统中的元素: 活动和对象 对象和活动之间的关联,和系统边界 相关的系统 一般情况下,系统中的元素有以下三种: 1、活动和对象。活动是在系统中发生的事情;而活动中包含的元素是对象和实体,一般情况下,这些对象之间有一些关联。系统中登记雇员记录是一个活动,而雇员记录则包含很多的对象或实体,例如邮编、名字、ID、地址等等。 2、在系统中需要确定对象和活动之间的关联,例如雇员记录和登记活动之间的关系,雇员记录中各种对象之间的关系等。而系统边界,则是确定我们需要考虑的问题具体是什么。下面我们用一个例子来说明。 3、相关的系统,则是指系统边界之外的系统。例如ATM的例子。

系统方法 确定活动和对象 确定活动 从活动中确定各种对象或者实体 系统 并确定对象之间的关系 确定系统的边界 一般的过程就是: 1、确定活动(主要是从用户需求中来,例如电视的功能是播放、选台、调声音、色彩等等); 2、根据活动的定义,从活动中确定各种对象或者实体,例如电视中播放的时候,山东台、陕西台、中央台(对应的频率、默认的色彩、声音等等);并确定对象之间的关系,例如电视台和频道、频率的对应等等; 3、系统,确定系统的边界。设计电视时和外部的天线、电视台、有线电视电缆等没有关系;

系统方法 系统的例子 Boundary 呼吸系统中的实体: 颗粒物质 氧气 二氧化碳 水 氮气 鼻子 嘴 气管 支气管等 呼吸系统中的活动: 吸气 过滤 将空气和血液进行交换 呼气 人体呼吸系统的例子: 呼吸系统中的活动有:吸气、过滤、将空气和血液进行交换;呼气; 呼吸系统中的实体有:颗粒物质、氧气、二氧化碳、水、氮气、鼻子、嘴、气管、支气管等。

系统方法 相关系统 边界 一般情况下,没有系统是单独存在的. 相关系统:在确定边界后,然后需要确定与之相关联的外部系统。一般情况下,没有系统是单独存在的。例如呼吸系统和血管之间的关系,往往与相关系统之间总是存在一定的关联关系和接口。

系统方法 Computer Mail room Pay information Pay checks Date Printing System boundary Computer Mail room Date validation Calculation Pay information Pay checks Printing 这里在举一个系统方法的例子:工资发放系统。 计算机系统进行计算来确认每个人的工资;会计人员在时间确认的情况下,对每个人的工资进行计算核实,然后打印,并通过邮寄系统发送出去; 工资发放系统的例子

系统方法 数据报表系统 数据管理系统 从远程节点到中心节点的通信系统 针对远程数据的计算系统 远程数据 收集系统 这里是一个互相关联系统的例子:从里到外一次类推: 1、远程数据收集系统; 2、针对远程数据的计算系统; 3、从远程节点到中心节点的通信系统; 4、数据管理系统; 5、数据报表系统;

工程方法 构造 搭建房子 搭建软件 工程化方法,实际是在软件开发过程中碰到了各种问题之后,出现了软件危机后,人们开始考虑将工业界中成功经验和过程管理标准引入到软件开发过程来。因此工程化的方法和工业界的生产方法是很类似的。所以在下面的介绍中,我们采用类比的方式来进行讲解。用建造房子和开发软件进行类比。

工程方法 建造房子 vs. 软件 决定和分析房子的各种需求 产生并记录形成各种设计文档 细节描述 确定和设计单独房间的各种构件 建造各种构件 测试构件 集成构件 最后的修改 持续的维护 需求分析和定义 系统设计 程序设计 编写代码 单元测试 集成测试 系统测试 系统提交 维护 首先看建筑房子的过程:注意这里举例是指的国外的木头房子 决定和分析房子的各种需求;产生并记录形成各种设计文档,例如平面图、三维模型等;细节描述,比如卫生间、卧室、厅的详细设计等;确定和设计单独房间的各种构件;建造各种构件;测试构件;集成构件;做最后的修改(是否指装修等);持续的维护,比如下水道堵塞、房屋掉墙皮等等; 下面再看看软件开发过程: 需求分析和定义,形成需求文档;系统设计;程序设计;编写代码;单元测试;集成测试;系统测试;系统提交;维护; 讲解时应在最后说明两者之间的相似性。

软件危机 软件危机主要表现在以下几个方面: 如何解决软件危机?软件工程! (1) 软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜。 (2) 软件存在着错误多、性能低、不可靠、不安全等质量问题。 (3) 软件维护极其困难,而且很难适应不断变化的用户需求和使用环境。 如何解决软件危机?软件工程! 36

软件工程 1968年在北大西洋公约组织(NATO)举行软件可靠性的学术会议上正式提出“软件工程(Software Engineering)”的概念。软件工程是建立和使用一套合理的工程原则,以便获得经济的软件,这种软件是可靠的,可以在实际机器上高效的运行。 (Fritz Bauer, at the First NATO Conference on Software Engineering) 软件工程是一门交叉性的工程学科,重点研究如何以系统的、可控的、高效的方式开发和维护高质量软件的问题。 37

什么是软件工程? 定义: 软件工程是涉及软件产品的系统化生产和维护的技术性和管理性规则,软件产品应该在成本估计的范围内,准时的被开发和修改. (Fairley, R., Software Engineering Concepts. New York: McGraw-Hill, 1985. ) 软件工程是: (1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件. (2) (1)中所述方法的研究. (IEEE Std 610-1990 ) 软件工程是涉及软件产品的系统化生产和维护的技术性和管理性规则,软件产品应该在成本估计的范围内,准时的被开发和修改。 软件工程是:(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。(2)在(1)中所述方法的研究。 IEEE给出的一个更全面的定义。

软件工程 软件工程以关注软件质量为目标,包括过程、方法和工具等三个要素。其中,软件过程涉及开发软件产品的一组活动及其结果;软件工程方法为软件开发过程提供“如何做”的技术;CASE工具为软件开发方法提供自动的或半自动的软件支撑环境,辅助软件开发任务的完成。 软件工程人员不应该只关心技术,应当对整个社会承担重要的责任,应当遵循本行业的职业道德规范,否则无法在这个行业中长久立足。 39

软件工程 总结:软件工程是涉及到软件产品所有方面的工程化规则. 软件工程师应该采用系统化和有组织的方法,使用合适的工具和技术来解决具体的问题,并考虑到开发的限制和可用的资源. 总结后我们可以说:软件工程是涉及到软件产品所有方面的工程化规则;软件工程师应该采用系统化和有组织的方法,使用合适的工具和技术来解决具体的问题,并考虑到开发的限制和可用的资源。

软件工程 PROBLEM 问题的分析与合成 Subproblem 1 Subproblem 2 Subproblem 4 在软件工程中存在两个概念:问题的分析与合成。分析如图所示,将大问题分解成小的问题来解决,从而有效的降低问题的复杂性。

软件工程 SOLUTION 问题的分析与合成 Solution 1 Solution 2 Solution 4 Solution 3 而合成则是与问题的分析相对应。在分析之后,利用合成技术最后形成一个完整的解决方案。

软件工程 我们要解决问题,需要 方法或者技术:主要是产生结果的过程 工具:完成工作的工具和自动化系统,类似流水线的东西,降低生产的难度 过程:如何解决工具和技术组合的方法? 范例:做事情的类型,也就是总结生产软件的过程模型 我们要解决问题,需要: 1、方法或者技术:主要是产生结果的过程; 2、工具:完成工作的工具和自动化系统,类似流水线的东西,降低生产的难度; 3、过程:如何解决工具和技术组合的方法? 4、范例:做事情的类型,也就是总结生产软件的过程模型。

软件工程 软件工程所处的位置? COMPUTER SCIENCE CUSTOMER Computer Functions Problem SOFTWARE ENGINEERING CUSTOMER Theories Tools and Techniques to Solve Problem Problem Computer Functions 那么软件工程所处的位置在哪呢?下面图中则表现了具体的说明。软件工程则是利用计算机科学中的理论和计算机功能或职责,来解决用户具体的问题。最后总结出软件工程领域内解决问题的工具和技术。

软件工程 计算机科学和软件工程之间有何不同? 计算机科学关心的是理论和基础性的知识;软件工程关心的则是开发和提交有用软件的实践活动. 计算机科学家解决的是计算机本身的问题,而软件工程师则是将计算机作为工具以生产有质量的软件. 计算机科学和软件工程之间有何不同? 1、计算机科学关心的是理论和基础性的知识;软件工程关心的则是开发和提交有用软件的实践活动; 2、计算机科学见解决的是计算机本身的问题,而软件工程师则是将计算机作为工具以生产有质量的软件。 比如汽车产业,工程师关心的是如何高效的生产高质量的产品,而科学家关心的则是发动机的技术理论等等。

软件工程 计算机科学和软件工程之间有何不同? 系统工程师关心的是基于计算机系统开发的所有方面,包括硬件、软件、和过程。软件工程则只是其中的一个部分,系统工程师关心的是开发软件基础、控制、应用和系统中的数据库. 系统工程师关心的是系统说明、体系结构涉及、集成和开发. 3、系统工程师关心的是基于计算机系统开发的所有方面,包括硬件、软件、和过程。软件工程则只是其中的一个部分,系统工程师关心的是开发软件基础、控制、应用和系统中的数据库; 4、系统工程师关心的是系统说明、体系结构涉及、集成和开发。

软件工程 软件工程涉及到的人员: 客户: 开发者: 用户: 公司、组织、和为软件付费的人. 公司、组织和为客户创建软件的人(包括管理者和测试者). 用户: 真正使用该系统的人. 关键工程涉及到的人员有: 1、客户:公司、组织、和为软件付费的人; 2、开发者:公司、组织和为客户创建软件的人(包括管理者和测试者) 3、用户:真正使用该系统的人;

软件工程 软件工程涉及到的人员 CUSTOMER Sponsors system development USER Uses system DEVELOPER Builds Contractual obligation $$$, needs Software system Needs 图例说明。

软件工程 开发团队的成员 每个工程师一般只是擅长开发中的一个方面. 需求分析员 程序员 测试人员 培训师 维护团队 配置管理团队 开发团队中的成员:每个工程师一般只是擅长开发中的一个方面。包括需求分析员、程序员、测试人员、培训师、维护团队和配置管理团队。

软件工程的目标 软件工程的目标 : (1) 支付较低的开发成本; (2) 达到要求的软件功能; (3) 获取较好的软件性能; (4) 开发的软件易于移植; (5) 需要较低的维护费用; (6) 能按时完成开发任务,及时交付使用; (7) 开发的软件可靠性高。 50

软件工程的发展 软件工程的发展主要经历了四个阶段 : 第一阶段:控制机器(1956-1967); 第二阶段:控制过程(1968-1982) 第三阶段:控制复杂性(1983-1995) 第四阶段:开放式的软件工程(1996-至今) 51

软件工程的发展 52

软件工程的发展 53

软件工程的发展 54

软件工程的发展 55

软件工程知识体系 IEEE的软件工程知识体系指南(SWEBOK)中界定了软件工程的11个知识领域: 软件需求 Software requirement 软件设计 Software design 软件构件 Software construction 软件测试 Software testing 软件维护 Software maintenance 软件配置管理 Software configuration management 56

软件工程知识体系 IEEE的软件工程知识体系指南(SWEBOK)中界定了软件工程的11个知识领域: 软件工程管理 Software engineering management 软件工程过程 Software engineering process 软件工程工具和方法 Software engineering tools and methods 软件质量 Software quality 相关学科知识领域件 Knowledge areas of the related disciplines 57

软件工程知识体系1 软件需求知识域包括7个子领域: 软件需求的基本原则 需求过程 需求获取 需求分析 需求规格 需求确认 实践注意事项 58

软件工程知识体系2 软件设计知识域包括6个子领域: 软件设计的基本原则 软件设计的关键元素 软件结构和架构 软件设计质量分析和评估 软件设计的表达 软件设计策略和方法 59

软件工程知识体系3 软件构建包括3个子领域: 软件构建的基本原则 管理构建过程 构建注意事项 60

软件工程知识体系4 软件测试包括5个子领域: 软件测试的基本原则 测试级别 测试技术 测试相关的度量 测试过程 61

软件工程知识体系5 软件维护包括4个子领域: 软件维护的基本原则 软件维护中的关键问题 维护过程 维护技术 62

软件工程知识体系6 软件配置管理包括6个子领域: 配置管理过程管理 软件配置标识 软件配置控制 软件配置状态统计 软件配置审计 软件版本管理和提交 63

软件工程知识体系7 软件工程管理包括6个子领域: 初始和范围定义 软件项目规划 软件项目执行 评审和评估 项目结束 软件工程度量 64

软件工程知识体系8 软件工程过程包括4个子领域: 过程实施和变更 过程定义 过程评估 过程和产品度量 65

软件工程知识体系9 软件工程工具和方法包括2个子领域: 软件工程工具 软件工程方法 66

软件工程知识体系10 软件质量包括3个子领域: 软件质量基本规则 软件质量管理过程 实践注意事项 67

软件工程知识体系11 相关学科知识领域包括8个子领域: 计算机工程 计算机科学 管理 数学 项目管理 质量管理 软件人类工程学 系统工程 68