1、软件工程导论,南昌工程学院余振华E-mail :,教学资源,网站: 1、http:/ 2、http:/ 4、http:/ 5、http:/ 6、http:/ 学一门课前的3个思考,什么是(what)? 为什么学(why)? 怎样学(how)?,1. 软件工程的概念 (什么是?),1.1. 概念l 软件工程:(1)将系统化、规范化、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)对(1)中所述方法的研究。IEEEIEE93l软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得
2、到的最好的技术方法结合起来,这就是软件工程。,1.2. 概念理解,工程化、管理、技术。 融合了多个学科的知识。 人:软件工程项目中最重要、也是最活跃的资源因素。组织的原则和模式、角色定义和分工、人员的配备、绩效的评定等等。,“ SoSo”主义,“精细管理”;“粗放管理”;“信任管理”; 软件工程中的管理模式也大抵超不出以上三种或其组合。 英文中有个词叫“So-So”平常的,不好不坏的,福建方言中有个词发音类似“Sho Sho”的词,意思都是“马马虎虎”,即“tigertigerhorsehorse”。中国人有四种:新加坡人、香港人、台湾人、大陆人,大陆人大都喜欢“马马虎虎”,或者说许多时候都只
3、能马马虎虎、难得糊涂,或者说大都是“SoSo”主义者。 软件工程却希望做到像上文所述第一种的“精细管理”,这时就会与大陆人的“SoSo”主义冲突,故大陆软件公司搞软件工程成功很困难。,2. 软件工程的重要性 (为什么学?),2.1.历史角度发展的必然软件危机 l 六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,即出现软件危机。 l 软件工程正是为克服软件危机而提出的一种概念,并在实践中不断地探索它的原理,技术和方法。在此过程中,人们研究和借鉴了工程学的某些原理和方法,并
4、形成了一门新的学科软件工程学。,2.2.社会角度团队协作的时代个人英雄主义时代的终结,l中国的软件英雄:吴晓军(2.13)、史玉柱(巨人汉卡)、鲍岳桥(UCDOS)、周志农(自然码)、朱崇君(CCED)、求伯君(WPS)、刘旭(瑞星)、王江民(KV)、王文京(用友)、张小龙(Foxmail)、丁磊(163邮局)、洪以容(netants) 越来越少,影响也越来越小。这些英雄如今不是销声匿迹,就是组成了自己的团队。我们需要英雄,但是,如果只有英雄,那么就只有软件、而没有软件业了。能够支撑起民族软件业的只能是靠工程化思想武装起来的团队、还要有几只超级规模的团队! l在个人英雄主义时代,对一般软件从业
5、者来讲,会两句DBASE,能写个工资程序、打打报表就能生存,那个时代已经一去不复返了。,2.2.社会角度团队协作的时代个人英雄主义时代的终结,l我国的软件开发水平,单从编码来看,我们拥有众多的高水平程序员,绝不逊色于任何国家,但软件开发管理水平与发达国家有很大差距,这也就是我们不能开发出像Office、操作系统之类软件的原因。我们从单个程序员来说,能够编写出一流的代码,漂亮的界面。但是却去不能协调众多程序员去开发一个项目(工程)软件。在这一方面说我们中国程序员一个人是一条龙,十个人是一条虫并不为过。l例:首都机场。印度人写的一个模块200多行,我们程序员只用不到50行,但人家的模块同样正确、而
6、且坚固、文档清晰易懂。技术技巧固然重要,但软件开发中最大的问题已不是技术问题,而是管理问题!,2.3.个人角度专业人员必备的个人素质,1) 基础理论:训练分析解决问题的能力,深层研究的工具。 数学分析 训练严密的逻辑思维。普通物理和西方哲学史等教会你很多思维方式,比如:假说大胆假设、认真求证。2) 专业理论:数据库理论、网络基础、编译原理等。 3) 专业技术:程序设计语言等。4) 工程技术:软件工程,本、研教育中唯一涉及工程规范与管理的课程,它象粘合剂,技术经过它的粘合才能形成软件产品!5) 外语。多门语言多条路。6) 表达与交流能力:团队内部、与客户通讯的基本素质 7) 法律常识与职业道德:
7、知识产权保护、行业特点的职业道德,2.3.个人角度专业人员必备的个人素质,l程序员是一个吃青春饭的行当,也是英雄出少年的行当,就象运动员一样。一个程序员,10年以后很少再只写代码。软件工程是你从程序员到高级程序员、系统分析员,或项目经理、部门经理、CTO一步步迈进必备的知识,积累起来的经验也是你超越年轻人坐在更高职位的资本。l软件行业分工越来越细、一个团队内也有各种角色。软件工程的知识可以使你结合自己的特点准确定位自己的发展方向。,3.软件工程的内容结构 (怎样学?),3.1. 三个层次 l过程:做什么 模型、流程、标准对应管理要素。关键过程域KPA,定义了方法使用的顺序、要求交付的文档资料、
8、为保证质量和协调变更所需要的管理、里程碑、项目管理、人员组织等。 l方法:如何做 往往采用某种特殊的语言或图形表达方法及一套质量保证标准对应技术要素。项目计划与估算、需求分析、总体设计、详细设计、编码、测试及维护的具体做法和基本原则。l工具:对方法的支撑,自动或半自动的软件开发支撑环境。CASE。又可分为: l 开发技术:侧重方法, 程序员 系统分析员, 本科侧重 l 开发管理:侧重过程, 项目经理 CTO, 工程硕士、实践,学习方法,企业学习与校园学习的差别 企业更多讲授的是经验,学校更多关注理论软件工程是一门什么样的课程 以实践经验为基础,以理论为工作指导 如何开发软件,如何做好一个程序员
9、 如何管理开发软件,如何做好一个软件开发主管软件工程包含: 结构化软件工程 专科重点 面向对象软件工程 本科重点 软件工程管理学 研究生重点 个人软件工程(PSP) 工作组软件工程(TSP) 学习方法 强记、实践、体会(讨论)、再学习,(1) 立足于系统的整体。 (2) 讲授系统分析、系统设计、 测试及维护的理论和方法。 (3) 构筑一个软件系统,实践软件开发 全过程。,“软件工程”课程与其它软件专业课的区别,“软件工程”课程教学与实践的目标,转变对软件的认识:上升程序 系统转变思维定式:上升程序员 系统工程师(系统分析员)工程化训练,03/8/29: 18岁美国青年杰弗里李帕森被FBI正式逮
10、捕。,“冲击波”电脑蠕虫自8月11日下午在因特网上开始传播以来,已在全球范围内感染了大约50万台电脑,造成大批电脑瘫痪和网络连接速度减慢。 新华社/路透,Softwares impact on our society and culture continues to be profound,负面影响:,未来的游戏产业主要还是以电视游戏(TV game)、电脑游戏(PC game,包括网络游戏)与手机游戏(Phone game)三大方向为主。其中规模最大的会是电视游戏产业,产值可能超过200亿美金;位居第二的是手机游戏产业,产值可能高达97亿美金;电脑游戏(包括网络游戏)将产生53亿美金的产值。
11、(英国Juniper Research公司最新调查),对产业的影响:,单位:亿元$ 1994831995-1291996-1801997-3641999850200060020015872002-528,对个人的影响:,How about software industry in China ?,中印软件业出口值比较(亿$)印度 中国1999 39 2.52000 62 42001 77.8 7.22002 95 152003 96.5 ?,印度软件业,全球软件外包市场规模已达到1000亿美元。全球软件外包的发包市场主要集中在北美、西欧和日本等国家,其中美国占40%,日本占10%。美国市场被印
12、度垄断,印度软件业80%的收入依赖软件外包业务,印度已经成为软件外包的第一大国 中国海关的统计,2003年中国外包及软件出口业务总额约为10亿美元,只相当于全球外包总量的1%,大约相当于印度10多年前的水平,且60%以上的业务来自日本。 现在软件公司年收入增长率为25%-45%,而在互联网鼎盛时期则到达了100%。 纳斯达克上市的印度人创办的软件公司至少有25家.,印度其他现状,印度全国四车道的高等级公路只有500公里 (01) 2000年印度国内计算机的社会拥有量为500万台,仅为我国同期的15 ;目前印度个人电脑拥有量为 350-400 万台 ,每千人约拥有 3 台计算机。(02)印度有1
13、5的人口不会读和写 印度每年培养1万多名计算机专业毕业生,中国每年计算机专业毕业的高校生达3.5万人以上,从人才储备上看,中国比印度更具有人才优势 (01),国内现有软件从业人员近万人,其中专业人才约有万人,其中高级人才万人,中级人才万人,初级人才万人。人才结构呈两头小中间大的橄榄型结构,既缺乏一大批能从事基础性工作的“软件蓝领”,更缺乏既懂技术又懂管理的软件高级人才,即“软件金领”。根据国际经验,合理的软件人才市场应该是软件蓝领、软件工程师、软件架构与分析师并存的金字塔形状人才基数由大到小形成梯次,他们之间的比例应该是。按照合理的人才结构比例进行测算,到年,我国需要软件高级人才万人,中级软件
14、人才万人,初级软件人才万人。教育部关于紧缺人才的报告,印度大的软件公司,其软件项目按合同完成率高达96%以上(而全球平均16%) ,对时间、质量、成本的控制能力非常强。除去大学计算机教育,印度的7万家私人计算机培训学校,每年可培训100万人;印度还积极与跨国公司合作培养人才,3年半以前印度获得微软认证工程师的技术人员一共只有2000名,而现在每年通过培训获得微软认证的印度工程师就有10万之众。 (01),人才质量胜于数量,处在十字路口的中国软件产业,主权大国必须建立基于自主技术的、完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%“印度模式”还是“中国模式”软件人才结构不合理,缺乏
15、中高级软件人才 , 软件人员缺乏软件工程化的概念。,第一章 软件工程基本概念,1.1 软件,什么是软件? 软件一般认为由两部分组成:,文档:描述程序研制过程、方法及使用的文档,程序:在运行时,能提供所希望的功能和性能的指令集。,软件的特点 - 软件是一种逻辑实体,而不是具体的物理实体,具有高度的抽象性; - 软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题; - 软件的生产方式与硬件明显不同;产品的质量控制在设计和制造阶段的不同; -产品的生产方式不同;设计和制造阶段的资金和人力投入、 技术复杂度不同; - 软件的运行和维护阶段,没有传统意义上的机械磨损、老化问题。 - 软
16、件与硬件有关,对软件有可移植性的要求。 - 软件工作涉及许多社会因素。,1.2 软件危机,什么是软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是两个问题: 1. 如何开发软件满足对软件的日益增长的需求。 2. 如何维护数量不断膨胀的已有软件,1.2 软件危机,1.2.2 软件危机的主要表现1.对软件开发成本和进度的估计常常很不准确。软件开发很难按预定计划实现,投入了资金,能否出结果,出怎样的结果,事先难以预料。2.用户对“已完成”的软件系统不满意的现象经常发生。3.软件产品的质量往往不可靠。软件可靠性和质量保证的定量概念刚刚出现不久。1962年6月,美国飞向金
17、星的第一个空间探测号(水手1号),因其飞舱中的计算机导航程序之一的一个语句的语义出错,总是偏离航线无法取得成功。1965年1970年,美国范登堡基地因程序有错误造成发射火箭多次失败。,1995年,美国曾对全国范围内的8000个软件项目进行跟踪调查,结果表明:有1/3的项目没能完成;在完成的项目中,有1/2没有成功实施;失败原因与需求过程有关的占了45%。我们国家的问题更加严重。,Case1: 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。据统计,这个操作系统每次发行的新版本都是
18、从前一版本中找出1000个程序错误而修正的结果。这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。程序设计工作正像这样一个泥潭,一批批程序员被迫在泥潭中拼命挣扎,谁也没有料到问题竟会陷入这样的困境”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,4.软件常常是不可维护的。通常软件维护的费用占总费用的55%-70%。错误具有累积和放大效应。在后期发现的错误改正的成本和难度将是巨大的(比早期进行修正所付出的代价高2-3个数量级),甚至是不可能改正的。,
19、改正一个问题需付出的代价,需 求 分 析,结构设计,详细设计,编码,集成测试,系统测试,现场,改正一个问题的估计费用,改正一个问题估计的工作量,20,200,2000,1000,5.0,2.5,0.05,0.5,(美元),(人天),5.软件通常没有适当的文档资料,给软件开发和维护带来极大困难。文档的作用:管理人员:评价软件开发进度。开发人员:通讯工具。维护人员:维护的依据。 6.软件成本在计算机系统总成本中所占的比例逐年上升。(见下页图) 7.软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。,1.2 软件危机,产生软件危机的原因 1. 与软件本身的特点有关 软件不同于硬件,它是
20、计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。,2. 项目没有被很好地理解;计划不周,最终导致进度拖延。,Myth: If we get behind schedule, we can add more programmers and catch up. Reality: Software development is not a mechanistic process like manufacturing. In the words of Brooks, “adding p
21、eople to a late software project makes it later.”,3. 没有充分的文档资料(documentation) Myth: The only deliverable for a successful project is the working program. Reality: A working program is only one part of a software configuration that includes programs, documents, and data. Documentation forms the found
22、ation for successful development and, more important, provides guidance for the software maintenance task.,4.软件可靠性(reliability)缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题,特别对于规模庞大的软件。 5.软件难以维护(maintainability) 不易升级(evolvability)Myth: Once we write the program and get it to work, our job is done. Reality:
23、Someone once said that “the sooner you begin writing code, the longer itll take you to get done.” Industry data indicate that between 60 and 80 percent of all effort expended on a program will be expended after it is delivered to the customer for the first time.,1.2 软件危机,解决软件危机的途径 1. 技术措施 使用更好的软件开发方
24、法和开发工具 2. 组织管理措施 软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。,1.3 软件工程,一、什么是软件工程 软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 软件工程是一门涉及软件计划、需求分析、设计、编码、测试和维护的原理、方法及工具的研究和应用的学科。,1.3 软件工程,二、软件工程的基本原理 1968年在联邦德国召开的国际会议上正式“软件工程”术语。 目前有100多条关于软件工程的准则,其中最出
25、名的是著名软件工程专家B.W.Boehm在1983年提出的7条基本原理。,1.3 软件工程,1. 用分阶段的生命周期计划严格管理 经统计表明,不成功的软件项目中有一半左右是由于计划不周造成的。 Boehm认为,在软件的整个生命周期中应制定并严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。,1.3 软件工程,2. 坚持进行阶段评审 大部分错误是在编码之前造成的 错误发现与改正得越晚,所需付出的代价越高。 因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程的错误,1.3 软件工程,3. 实行严格的产品控制 在软件开发过程中不要随意改变需求,
26、因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。 目前主要实行基准配置管理:基准配置是指经过阶段评审后的软件配置成分,如各个阶段产生的文档或程序代码。 对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。,1.3 软件工程,4. 采用现代程序设计技术 实践表明:采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。 80年代及之前:结构化分析、设计技术 90年代:面向对象分析、设计技术,1.3 软件工程,5. 结果应能清楚地审查 软件产品是看不见、摸不着的逻辑产品,开发过程难以评价和管理。 根据软件开发项目的总目标及完
27、成期限,规定开发组织的责任和产品标准,使所得的结果能够清楚地审查,1.3 软件工程,6. 开发小组的人员应该少而精 开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。 开发小组人员数目的增加,使相互交流复杂、费用增加。,1.3 软件工程,7. 承认不断改进软件工程实践的必要性 遵循前6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但不能保证赶上时代前进的步伐。 积极主动采纳新的软件技术,且不断总结经验。,1.3 软件工程,三、软件工程方法学 软件工程的传统方法是“生命周期法”,强调“结构化分析、结构化设计”。 1. “生命周期法”的起源人类解决复杂问题时普遍采用
28、的一个策略是“各个击破”,也就是对问题进行分解,然后再分别解决各个子问题的策略。软件工程采用的“生命周期法”,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务。,1.3 软件工程,2. 生命周期划分的原则 各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。 3. 生命周期的划分 软件生命周期一般分为:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测
29、试)、软件维护等三个时期。,生命周期法各阶段的工作小结,生命周期法各阶段的工作小结,1.3 软件工程,4. “生命周期法”的特点 阶段具有顺序性和依赖性 推迟实现的观点 质量保证的观点 每个阶段都必须完成规定的文档 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。,1.4 软件开发过程模型,一、瀑布模型,1.4 软件开发过程模型,瀑布模型的特征 阶段间具有顺序性和依赖性。 推迟实现的观点。 质量保证的观点。,1.4 软件开发过程模型,软件维护往往经历软件生存期的各个阶段,从而构成生存期循环。,1.4 软件开发过程模型,具有维护循环的软件生存期的瀑布模型,1.4 软件开发过
30、程模型,瀑布模型的缺点: 从认识论角度看,人的认识是一个多次反复循环的过程,不可能一次完成。但瀑布模型中划分的几个阶段,没有反映出这种认识过程的反复性。 瀑布模型是由文档驱动的。,二、原型模型,1. 基本思想 在获取一组基本的需求定义后,利用高级软件工具的可开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。经过这样一个反复补充和修改的过程,应用系统的“最初版本”就逐步演变为系统的“最终版本”。,1.4 软件开发过程模型,原型:一个具体的可执行模型,它实现了系统的若干功能。 原型法:不断地运
31、行系统“原型”来进行启发、揭示和判断的系统开发方法。,1.4 软件开发过程模型,2. 原型模型,1.4 软件开发过程模型,在“需求分析”、“原型设计”两个阶段中,开发者和用户一起为想象中的系统的某些主要部分定义需求和规格说明,该原型可用来帮助分析和设计工作,而不是一个软件产品。 在这期间,用户和开发者都不要为程序算法或设计技巧等枝节问题分心,主要是确定开发者是否理解了用户的意思,同时试验实现它们的若干方法。,1.4 软件开发过程模型,3. 原型特征 软件原型是以最少的费用、最短的时间开发出的、可以反映最后软件的主要特征的系统。它具有以下特征: (1)它是一个可实际运行的系统。,1.4 软件开发
32、过程模型,(2)它没有固定的生存期一种极端是扔掉原型;另一种极端是最 终产品的一部分即增量原型,1.4 软件开发过程模型,(3)从需求分析到最终产品都可作原型,即可为不同目标作原型。 (4)它必须快速、廉价。 (5)它是迭代过程的集成部分,即每次经用户评价后修改、运行,不断重复双方认可。,1.4 软件开发过程模型,4. 原型法的评价 优点 1.原型法可处理模糊需求,开发者和用户可充分通信。 2.原型系统可作为培训环境,有利于用户培训和开发同步,开发过程也是学习过程。 3.原型给用户以机会更改心中原先设想的、不尽合理的最终系统。 4.原型可低风险开发柔性较大的计算机系统。 5.原型增加使系统更易
33、维护、对用户更友好的机会。 6.原型使总的开发费用降低,时间缩短。,1.4 软件开发过程模型,缺点 1.“模型效应”或“管中窥豹”。对于开发者不熟悉的领域把次要部分当作主要框架,做出不切题的原型。 2.原型迭代不收敛于开发者预先的目标。 3.原型过快收敛于需求集合,而忽略了一些基本点。 4.资源规划和管理较为困难,随时更新文档也带来麻烦。 5.长期在原型环境上开发,只注意得到满意的原型,容易“遗忘”用户环境和原型环境的差异。,三、螺旋模型,螺旋模型的基本思想: 使用原型及其它方法来尽量减低风险。 可以理解成在每个阶段之前都增加了风险分析过程的快速原型模型。,螺旋模型分析 在螺旋模型结构中,维护
34、只是螺旋模型的另一个周期,在维护和开发之间本质上并没有区别,从而解决了做太多测试或未作足够测试所带来的风险。 适用条件 内部的大规模软件的开发。 一般只适用于大规模软件的开发,1.5 小结,软件工程的基本概念 软件开发方法 软件开发过程模型,1.下列活动不属于软件开发阶段的是().A.需求分析 B.概要设计 C.详细设计 D.测试2.以下对软件开发基本原理的描述,不正确的是()A用分阶段的生命周期计划严格管理B采用现代程序设计技术C开发小组人员应该足够多D承认不断改进软件工程实践的必要性3.在以下软件开发模型中,在软件需求难以完全明确的情况下最常用的是()。A瀑布模型 B 原型模型 C 螺旋模
35、型 D 变换模型,一、选择题,A,C,B,4.对于喷泉模型的软件开发模型,下列说法错误的是()A是一种面向对象的软件开发过程B具有迭代性C具有无间隙性D各阶段之间具有顺序性和依赖性5.下列说法正确的是()。A使用迭代方法开发的系统若不能收敛到需求目标范围内,则项目可能夭折.B原型模型的建造需要额外花费一些成本,因而系统的总成本提高了.C第四代编程语言是一种面向对象而非面向过程的语言D基于四代技术模型多用于开发大型的应用软件6.在软件的开发阶段,面向数据结构开发的方法是()AJackson方法 B结构化方法 CVDM方法 D面向对象的方法,D,A,A,7.为了实现软件开发各阶段的自动化,在软件开
36、发时可以采用的工具是()。A软件工具 B工具箱C软件开发环境 DCASE,D,1、软件是计算机中与硬件互相依存的部分,它包括、及的完整集合。 2、软件工程的原则包括、。 3、软件生命周期中,软件定义阶段的工作包括、。,二、填空题,1. 程序 文档 数据,抽象 模块化 信息隐蔽 局部化 一致性 完备性 可验证性,3. 问题定义 可行性研究 需求分析,4、瀑布模型又称为,它的主要特点是各阶段之间具有、。 5、螺旋模型包括如下四方面的活动,他们是、。 6、软件的结构化方法是、和构成。它是一种面向的开发方法,其指导思想是,其基本原则是。,4. 软件生命周期模型 顺序性与依赖性 推迟实现 质量保证,5. 制定计划 风险分析 实施工程 客户评价,结构化分析 结构化设计 结构化实现 数据流 自顶向下,逐步求精 功能的分解与抽象,1、软件产品的特点是什么?与硬件产品主要有什么不同? 2、什么是软件危机?软件危机的主要表现是什么? 3、什么是软件生命周期?软件生命周期应划分为那些阶段?每个阶段解决什么问题? 4、快速原型模型有几种?分别有什么特点?,三、思考题(作业),