版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Web应用分析与实践,武汉科技大学城市学院信科系 伍永豪 ,课程章节简介,1.兴和达企业网站 2.云山市教育局办公自动化系统 3.winarray项目管理门户 4.云开大学BOOKSHOP,项目构架,1.项目介绍 2.构架与设计 3.网站设计 4.网站安全 5.系统集成测试,课程需要补习知识,1.软件工程 2.viso等设计工具的使用 3.工作流引擎 4.vs下的软件测试方式,这门课程你能够学习到的,1.软件开发的一般过程 2.软件设计的一般方法 3.软件设计工具的使用 4.软件测试的一般方法, 为什么需要软件工程? 什么是软件工程?, 为什么需要软件工程? 什么是软件工程?,软件工程导论(第
2、5版),普通高校本科计算机专业特色教材精选,张海藩 编著,第一章 软件工程学概论,1.1 软件危机,软件 Software = Program + Data + Document 软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分, 它包括程序(program)、 相关数据(data)及其 说明文档(document)。,软件的发展,早期 面向批处理 有限的分布 自定义软件,第二阶段 多用户 实时 数据库 软件产品,第三阶段 分布式系统 嵌入“智能” 低成本硬件 消费者的影响,第四阶段 强大的桌面系统 面向对象技术 专家系统 人工神经网络 并行计算 网路计算机,
3、1950,1960,1970,1980,1990,2000,软件特征,软件是一种逻辑实体,而不是具体的物理实体 软件的生产与硬件不同 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,软件的成本相当昂贵,软件特征,软件是一种逻辑实体,具有抽象性 软件没有明显的制造过程 软件在使用过程中,没有磨损、老化的问题 软件对硬件和环境有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工作坊式 的开发方式,生产效率低 软件是复杂的,而且以后会更加复杂 软件的成本相当昂贵 大多数软件是自定的,而不是通过已有的 构件组装而来的 软件工作牵涉到很多社会因素
4、,2、软件危机,过去几十年的大型软件系统的开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。,拉布雷阿的焦油坑(Mural of La Brea Tar Pits),软件危机包含两方面问题:,-如何开发软件,以满足不断增长,日趋复杂的需求; -如何维护数量不断膨胀的软件产品。 鉴于软件危机的长期性和症状不明显的特点,近年 来有人建议将软件危机更名为: Software depression (软件萧条) Software affliction (软件困扰) “慢性的苦恼”,软件危机主要有以下表现:,对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延
5、的现象并不罕见。 用户对“已完成”系统不满意的现象经常发生。 软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。 软件的可维护程度非常之低。 软件通常没有适当的文档资料。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。,软件危机的原因, 一方面是与软件本身的特点有关 另一方面是由软件开发和维护的方法不正确有关,软件开发工作量分配比例,40% 50%,10% 20%,引入同一变化付出的代价随时间变化的趋势,费用分配比例,55%70%,例: Windows95有1000万行代码 Windows2000有5000万行代码, 3000多个工程师,几百个小团队。
6、 Exchange2000和Windows2000开发人员结构,3、消除软件危机的途径,对计算机软件有一个正确的认识 (软件程序) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 推广使用在实践中总结出来的开发软件的成功技术和方法。 开发和使用更好的软件工具。,1.2 软件工程,工程,工程是对技术(或社会)实体的分析、 设计、建造、验证和管理。,水利工程,建筑工程,机械工程, ,软件工程,传统工程,新兴工程,气象工程,生物工程,软件工程,- Software Engineering,于1968年 NATO 组织在 德国召
7、开的一次会议上提出,是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。,围棋与软件工程的感想,围棋 围棋棋谱拿过来的时候,大师问“后面应该走哪里?” 十个初级爱好者选择的落点散布在棋盘各处 十个职业棋手说的落子点都差不多,甚至包括后面的几步 这就是高手和低手的差别,软件工程 当一个小程序拿过来的时候,项目经理让大家编写 十个中国软件工程师写出来的程序各有“特色”、千差万别,十个印度软件工程师写出来的程序差不多,以至于怀疑是“抄袭”。 项目经理也不清楚中国软件业和印度软件业的差距是多少年 只是觉得差了好远好远,2、软件工程定义(1),The establi
8、shment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines.(1968- Fritz Bauer) 软件工程就是为了经济地获得可 靠的且能在实际机器上高效运行 的软件,而建立和使用完善的工 程原理。,软件工程定义(2),Software engineering. (1) The application of a systematic, disciplined, quanti
9、fiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).(IEEE Std 610-1990.) 软件工程是:(1)把系统的、规范的、 可度量的途径应用于软件开发、运行和 维护过程,也就是把工程应用于软件; (2)研究(1)中提到的途径。,Software engineering (3),SEI software eng
10、ineering definition from 1990 SEI Report on Undergraduate Software Engineering Education (CMU/SEI-90-TR-003): Engineering is the systematic application of scientific knowledge in creating and building cost-effective solutions to practical problems in the service of mankind. Software engineering is t
11、hat form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.,总之: 软件工程是应用计算机科学、 数学及管理科学等原理开发软 件的工程。它借鉴传统工程的 原则、方法,以提高质量,降 低成本为目的。,软件工程是一门交叉学科,软件工程的主要研究内容 软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境 软件工程管理:软件管理学 软件经济学 软件心理学,软
12、件工程: 一种层次化技术,软件工程三个要素:方法、工具、过程,Software engineering layers,软件工程是一种层次化的技术,以有组织的质量保证为基础。全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。支持软件工程的根基就在于对质量的关注。 软件工程的基层是过程层。软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。过程定义了一组关键过程区域框架,构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、李成本的建
13、立、质量的保证及变化的适当管理。 软件工程的方法层提供里建造软件在技术上需要“如何做?”。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。 软件工程方法依赖于一组基本原则,这些原则控制了每一技术区域,且包含建模活动和其他描述技术。 软件工程的工具层对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了分析、设计、编程和测试的重要信息)。,软件工程框架,可,用,性,性,性,确,正,合,算,选取适宜的开发
14、模型,采用合适的设计方法,提供高质量的工程支持,重视软件工程的管理,基本过程,原则,目标,过,程,支 持 过 程,组 织 过 程,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品 软件的功能依赖于硬件和软件的运行环境以及人们对它的操作 软件设计的复杂性 软件特征: 功能的多样性 实现的多样性 能见度低 软件结构合理性差 智力密集及知识产权保护,软件工程知识体系指南(2004 版) Guide to the Software Engineering Body of Knowledge 2004 Version IEEE计算机学会(IEEE Computer Society),SWEBOK
15、的10个知识域(Knowledge Areas,KA), 软件需求 Software Requirements 软件设计 Software Design 软件构造 Software Construction 软件测试 Software Testing 软件维护 Software Maintenance 软件配置管理 Software Configuration Management 软件工程管理 Software Engineering Management 软件工程过程 Software Engineering Process 软件工程工具和方法 Software Engineering T
16、ools and Methods 软件质量 Software Quality,2004软件工程知识体系指南,软件工程相关学科,计算机工程 Computer Engineering 计算机科学 Computer Science 管理 Management 数学 Mathematics 项目管理 Project Management 质量管理 Quality Management 软件人类工程学 Software Ergonomics 系统工程 Systems Engineering,软件工程 本质特征,软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常
17、重要 和谐地合作是开发软件的关键 软件必须有效地支持它的用户 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品,软件工程的基本原理,用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性,软件工程技术的两个明显特点:,强调规范化 强调文档化,软件产品的标准化,软件开发过程的标准化,“软件工程”课程 与其它软件专业课的区别,(1) 立足于系统的整体。 (2) 讲授系统分析、系统设计、 测试及维护的理论和方法。 (3) 构筑一个软件系统,实践 软件开发全过程。
18、,“软件工程”课程教学与实践的目标,转变对软件开发的认识: 上升 程序 系统 转变思维定式: 上升 程序员 系统工程师 (系统分析员) 工程化训练,系统分析员的地位,用户,分析员,程序员,职业素质 Professional Practice,Communication skills Honesty/Integrity Teamwork skills Interpersonal skills Motivation/Initiative Strong work ethic,3、软件工程方法学,把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。 (Methodology or Parad
19、igm) 软件工程方法学包含3个要素:方法、工具和过程 方法 完成软件开发的各项任务的技 术方法,回答“怎样做”的问题; 工具 为运用方法而提供的自动的或 半自动的软件工程支撑环境; 过程 为了获得高质量的软件所需要 完成的一系列任务的框架,它规定了完 成各项任务的工作步骤。,软件工程方法学分类:,传统方法学 面向对象的方法学,传统方法学(生命周期方法学),仍然是使用十分广泛的软件工程方法学。 采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。 从上而下,顺序地完成软件开发的各阶段任务。,面向对象的方法学,出发点和基本原则是尽量模拟人类习惯的思维
20、方式,使开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。,面向对象的方法学的特点,把对象作为融合了数据及在数据上的操作行为的统一软件构件; 把所有对象都划分成类; 按照父类与子类的关系,把若干个相关类组成一个层次结构的系统; 对象彼此间仅能通过发送消息互相联系。,1.3 软件生命周期,问题定义 软件定义 可行性研究 需求分析 总体设计 详细设计 软件生命周期 软件开发 编码 单元测试 综合测试 运行维护 持续满足用户需求,1.4 软件过程,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务
21、的工作步骤。,工作任务,里程碑、交付物,SQA点,过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。,公共过程框架,辅助活动,框架活动,任务集合,软件开发模型,软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。 软件开发模型也常称为: 软件过程模型 软件生存周期模型 软件工程范型,1.瀑布模型 (Waterfall Model), 传统的瀑布模型,需求分析,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,定义时期,开发时期,
22、维护时期,传统瀑布模型开发软件的特点,1.阶段间具有顺序性和依赖性。 2.推迟实现的观点。 3.每个阶段必须完成规定的文档; 每个阶段结束前完成文档审查, 及早改正错误。,传统瀑布模型存在什么问题?,传统的瀑布模型过于理想化。事实上,人在工作过程中不可能不犯错误。 在设计阶段可能发生规格说明文档中的错误。 而设计上的缺陷或错误可能在实现过程中显现出来。 在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。, 实际的瀑布模型, 瀑布模型的优缺点,瀑布模型有许多优点:可强迫开发人员采用规范的方法(例如,结构化技术); 严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量
23、保证小组的仔细验证。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。 “瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。 实际项目很少按照该模型给出的顺序进行; 用户常常难以清楚地给出所有需求; 用户必须有耐心,等到系统开发完成; 开发者常常被不必要地耽搁。,2. 原型模型 -快速原型模型 (Rapid Prototype Model) 快速建立起来的可以在计算机上 运行的程序,他所能完成的功能 往往是最终产品能完成的功能的 一个子集。,快速原型模型工作过程,原型模型从需求收集开始。 开发者和用户在一起定义软件的总体目标,标识出已知的需求,并规划出进一步定义的区域。 然后是
24、“快速设计”,快速设计集中于软件那些对用户可见部分的表示。“快速设计”导致原型的建造。 原型由用户评估,并进一步精化待开发软件的需求,逐步调整原型使其满足客户的要求。同时开发者对将要做的事情有更好的理解, 这个过程是迭代的。 按线性模型构建软件系统,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,原型模型 适用情况,用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求; 开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式; 原型模型可能是最好的选择,原型模型存在的问题,用户似乎看到的是软件的工作版本,其实
25、开发者常常需要实现上的折衷,以使原型能够尽快工作。,3. 增量模型(渐增模型) (Incremental Model) 先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。 系统的总体设计在初始子集设计阶段就应作出设想。,增量模型,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,交付,交付,交付,交付,增量模型的优点,在较短时间内向用户提交可完成部分工作的产品
26、,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。 整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。 采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。,使用增量模型的困难,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必
27、须是开放的。 开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。 多个构件并行开发,具有无法集成的风险。,4.螺旋模型 (Spiral Model),产品交付给用户后用户可能不满意; 到了预定的交付日期软件可能还未开发出来; 实际的开发成本可能超过预算; 产品完成前一些关键的开发人员 “跳槽”了; 产品投入市场之前竞争对手发布 了一个功能相近、价格更低的软 件等。,软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。例如:,螺旋模型的基本思想,使用原型及其他方法来尽量降低风险。,快速原型,验证,规格说明,验证,设计,验证,编码,测试
28、,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,可看作在每个阶段之前都增加了风险分析过程的快速原型模型。,简化的螺旋模型,图1.8 完整的螺旋模型,螺旋模型,风险 分析,工程 实施,用户通信,用户 评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,螺旋模型,优点 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标; 减少了过多测试或测试不足; 维护和开发之间并没有本质区别。 特点 风险驱动 主要适用于内部开发的大规模软件项目 要有具有丰富风险评估专门知识的开发人员,否则风险
29、更大。,5. 面向对象模型,喷泉模型 (Fountain Model) 可重用部件组装模型 (构件集成模型) (Component Integration Model),5. 面向对象模型,喷泉模型(Fountain Model) 可重用部件组装模型 (构件集成模型) (Component Integration Model),喷泉模型,分析,设计,实现,测试,集成,演化,喷泉模型特点,主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征,可重用部件组装模型(构件集成模型),使用重用技术的软件工程模型 构件(components):可重用的软件成份 可复用性(Reusabili
30、ty) 集成化软件开发环境(ISEE),可重用部件组装模型,用户 通信,计划,产品开发及发布,用户 评估,风险 分析,标志候 选构件,查找 构件,若存在则 提取构件,若不存在则 构造构件,进行下 一次迭代,将新构件 存入库中,基于构件的软件工程(CBSE)过程模型,构 件 开 发 分析 设计 编程 测试,领域分析,系统 测试,构件提交,领域专家经验,现有系统资料,领域构 件需求,构件/构架库,领域构架,领 域 构 件,系统 开发,系统专用构件,应用 系统,构件生产线,领域构架,领域构件,问题域,用户需求,系统生产线,系 统 组 装 分析 设计 编程,构架细化,专 用 构 件 开 发 分析 设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 178红色书籍背景的《围城》读书分享会下载
- 综采队机电工安全生产责任制培训课件
- 铸造分厂产品分级细则培训课件
- 电厂安全生产事故隐患排查治理制度培训课件
- 2025年食品安全联合执法工作制度培训
- 无公害农产品质量控制措施培训
- 20201109初三数学(人教版)数学活动:用坐标表示旋转-3任务单
- 2026年山西省大同市单招职业适应性考试题库带答案详解(突破训练)
- 2026年广州体育职业技术学院单招职业技能测试题库带答案详解(培优)
- 2026年广州城建职业学院单招职业倾向性测试题库及答案详解(历年真题)
- 法拍培训教学课件
- 绿电直连政策及新能源就近消纳项目电价机制分析
- 2026年常州工程职业技术学院单招综合素质考试模拟测试卷新版
- 腹膜透析室规范制度
- 《中国养老金精算报告2025-2050》原文
- 宫颈癌根治性放疗指南2026
- 2026年春节后复工复产安全培训试题(附答案)
- 未来五年卫星通信地面站上下变频器行业跨境出海战略分析研究报告
- 2025年西南财经大学天府学院辅导员考试笔试题库附答案
- 通信工程师在电信公司的绩效评定表
- 塞来昔布课件
评论
0/150
提交评论