软件系统开发的工程化思想全解课件.ppt

上传人:小飞机 文档编号:1848203 上传时间:2022-12-21 格式:PPT 页数:26 大小:526KB
返回 下载 相关 举报
软件系统开发的工程化思想全解课件.ppt_第1页
第1页 / 共26页
软件系统开发的工程化思想全解课件.ppt_第2页
第2页 / 共26页
软件系统开发的工程化思想全解课件.ppt_第3页
第3页 / 共26页
软件系统开发的工程化思想全解课件.ppt_第4页
第4页 / 共26页
软件系统开发的工程化思想全解课件.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《软件系统开发的工程化思想全解课件.ppt》由会员分享,可在线阅读,更多相关《软件系统开发的工程化思想全解课件.ppt(26页珍藏版)》请在三一办公上搜索。

1、软件系统开发的工程化思想,江苏大学工商管理学院陈永泰,主要内容,软件危机软件工程瀑布模型原型法面向对象方法学,软件系统开发的工程化思想(一),软件危机In the early days: “Software” = “Place a sequence of instructions together to get the computer to do something useful”.User ComputerLate 1950s: Computer became cheaper and more common High level languages were inventedEarly 1

2、960s: Very few large software projects were done by some experts.,软件系统开发的工程化思想(二),Middle to late 1960s: Truly large software systems were attempted.例: 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。. 这个项目的负责人F. D. Brooks

3、事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,Software Crisis !,软件系统开发的工程化思想(二),问题出在哪里?,项目没有被很好地理解 计划不周,最终导致进度拖延 没有充分的文档资料 软件可靠性缺少度量的标准,质量无法保证 软件难以维护、不易升级,软件系统开发的工程化思想(三),解决问题的想法 Better ma

4、nagement Different team organizations Better languages & tools Uniform coding conventions 必须意识到:“软件” 编程,它有自己的生命周期。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。“软件工程”(Software Engineering)NATO Conference , Garmisch , Germany , 1968.,软件系统开发的工程化思想(四),结构化开发-瀑布模型,软件系统开发的工程化思想(五),瀑布模型的特点顺序性、依赖性推迟程序的物理实现质量保证的观点 阶

5、段文档与评审的要求,利于尽早发现错误,软件系统开发的工程化思想(六),快速原型法适用于用户驱动的系统(即需求模糊或随时间变化的系统),Prototype,Feedback,Modification,软件系统开发的工程化思想(七),抛弃原型法(throw - away prototype) Brooks (1975) : “Do it twice.”Version 1 : a trial to verify requirements , and to get enough feedback.Version 2 : produced following a waterfall model.,软件系

6、统开发的工程化思想(八),演化原型法(evolutionary prototype)螺旋模型(the spiral model) : Boehm (1988)渐增模型(the incremental model) : Gilb (1988) The waterfall model is still followed , but for each separate increment .注:演化原型法与传统方法最大的不同,在于它是一种高度迭代的动态方法,系统的初始版本很早就交付用户试用。,Risk analy-sis,Prototype 1,Simulations, models, benchm

7、arks,Requirements plan, life-cycle plan,Concept of operation,Prototype 2,Risk analysis,Software requirements,Requirements validation,Develop-ment plan,Risk analysis,Prototype 3,Software product design,Design validation and verification,Integration and test plan,Risk analysis,Operational prototype,De

8、tailed design,Unit test,Code,Integration and test,Acceptance test,Implementation,Plan next phases,Develop, verify next-level product,Determine objectives, alternatives, constrains,Evaluate alternatives, identify, resolve risks,Cumulative cost,Progress through steps,The spiral model,杭 州,北 京,Message,S

9、end by method,Object,Attributes: location; employee; ,Methods: send; sell; ,我想把邮局搬到我家门口,多加几个邮递员,24小时都开门,对不起,本邮局不提供此类服务,唉,那就先送束花吧 Post_office.Send (request, payment),软件系统开发的工程化思想(九) -面向对象方法学(OOM),软件系统开发的工程化思想(十),面向对象方法的几个概念,对象Object,= 数据Attribute,+ 操作Method,注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应

10、的服务method时,用户才能通过发送message来提请它执行。,软件系统开发的工程化思想(十一),OOM的特点尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体 对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,软件系统开发的工程化思想(十二),OOM的四要素:对象(object):世界由对象组成。类 (class) :对象可划分为类;单个对象可视为某一类的实例 (instance)。继承(inheritance) :类可分层,下层子类与上层父类有相同特征,称为继承。消

11、息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,软件系统开发的工程化思想(十三),例: class Post_office private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; ; main ( ) Post_office My_PO ; req_type

12、My_request ; money_type My_payment ; My_PO.Send ( My_request, My_payment) ; ,软件系统开发的工程化思想(十四),OOM的主体思想以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction),软件系统开发的工程化思想(十五),OOM的主体思想以object模拟实体,需求变化不会引起结构的

13、整体变化,因为实体相对稳定,故系统也相应稳定一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。稳定性好:软件功能需求的变化不牵动全局,只需局部修改;Class 独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;容易理解、容易测试、调试。,软件系统开发的工程化思想(十六),OOM的基本概念Object : = ID + Method + Attribute + Mes

14、sage 以数据为中心,不设与数据无关的操作; Object主动处理而不 被动地等待被处理,外部只能通过message请求操作; 具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法; 具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信; 模块独立性好:内聚强、耦合松,软件系统开发的工程化思想(十七),OOM的基本概念Class:具有相同数据和相同操作的一组对象;Instance:某个class描述的具体对象;Message: = object_ID. method_ID (parameter(s);Method: object能做的操作,

15、亦称为service 、responsibility, 在 class 中须定义相应的代码;Attribute :object 的固有数据;Inheritance:子类自动共享父类的attributes 和methods ,而不必重复定义。,软件系统开发的工程化思想(十八),例,软件系统开发的工程化思想(十九),若杭州人的 methods中有与中国人的同名,则李士执行该 method 时以杭州人为准,不执行中国人中定义的同名 method。传递性(transitivity):AB、BC AC 一个 class 继承了上层全部 classes 的一切性质。一个子类只 有 一 个父类称为单 继 承

16、 (single inheritance), 一个子类可有多个父类称为多重继承(multiple inheritance). 修改与扩充可以很容易地通过派生子类来完成。,讲官话,这叫做“低层性质override高层性质”讲土话,这叫做“县官不如现管”,注意:multiple inheritance 在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。,例:,CardDeck,GraphicalObject,GraphicalDeck,Method:Draw := take a card from a deck,Method:Draw := displaya graphical object,Method:Draw := ?,例:,软件系统开发的工程化思想(二十),OOM的基本概念Polymorphism:不同层次的 classes 可共享一个method名,但按各自的方式来实现这种 method。OverloadingFunction (or parameter) overloading :不同函数共用一个名字,而调用参数的特征不同。Operator overloading : 同一运算符 (operator)作用于不同类型的操作数 (operand) 上面。,讨论,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号