软件系统开发的工程化思想_第1页
软件系统开发的工程化思想_第2页
软件系统开发的工程化思想_第3页
软件系统开发的工程化思想_第4页
软件系统开发的工程化思想_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件系统开发(kāifā)的工程化思想江苏大学(dàxué)工商管理学院陈永泰共二十七页主要(zhǔyào)内容软件危机(wēijī)软件工程瀑布模型原型法面向对象方法学共二十七页软件系统开发(kāifā)的工程化思想(一)软件(ruǎnjiàn)危机Intheearlydays:

“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.User

ComputerLate1950’s:ComputerbecamecheaperandmorecommonHighlevellanguageswereinventedEarly1960s:

Veryfewlargesoftwareprojectsweredonebysomeexperts.ProgrammerUser

Computer

easier共二十七页软件系统开发(kāifā)的工程化思想(二)

Middletolate1960s:Trulylargesoftwaresystemswereattempted.例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境(kùnjìng)......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。SoftwareCrisis!共二十七页软件系统开发(kāifā)的工程化思想(二)问题(wèntí)出在哪里?

项目没有被很好地理解

计划不周,最终导致进度拖延没有充分的文档资料软件可靠性缺少度量的标准,质量无法保证软件难以维护、不易升级共二十七页软件系统开发(kāifā)的工程化思想(三)解决问题的想法

Bettermanagement

Differentteamorganizations

Betterlanguages&tools

Uniformcodingconventions

必须意识到:“软件(ruǎnjiàn)”编程,它有自己的生命周期。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。“软件工程”(SoftwareEngineering)NATOConference,Garmisch,Germany,1968.共二十七页软件系统开发(kāifā)的工程化思想(四)结构化开发(kāifā)--瀑布模型维护开发定义DefinitionFeasibilityStudyRequirementsAnalysisProgramDesignCoding&ModuleTestingIntegration&SystemTestingDelivery&MaintenanceSystemDesign共二十七页软件系统开发(kāifā)的工程化思想(五)瀑布模型的特点顺序性、依赖性推迟程序的物理(wùlǐ)实现质量保证的观点——阶段文档与评审的要求,利于尽早发现错误共二十七页软件系统开发(kāifā)的工程化思想(六)快速(kuàisù)原型法适用于用户驱动的系统(即需求模糊或随时间变化的系统)PrototypeFeedbackModification共二十七页软件系统开发(kāifā)的工程化思想(七)抛弃(pāoqì)原型法(throw-awayprototype)Brooks(1975):“Doittwice.”Version1:atrialtoverifyrequirements,andtogetenoughfeedback.Version2:producedfollowingawaterfallmodel.共二十七页软件系统开发(kāifā)的工程化思想(八)演化原型法(evolutionaryprototype)螺旋模型(thespiralmodel):Boehm(1988)渐增模型(theincrementalmodel):Gilb(1988)Thewaterfallmodelisstillfollowed,butforeachseparateincrement.注:演化原型法与传统方法最大的不同(bùtónɡ),在于它是一种高度迭代的动态方法,系统的初始版本很早就交付用户试用。共二十七页ReviewCommitmentPartitionRiskanaly-sisPrototype1Simulations,models,benchmarksRequirementsplan,life-cycleplanConceptofoperationPrototype2RiskanalysisSoftwarerequirementsRequirementsvalidationDevelop-mentplanRiskanalysisPrototype3SoftwareproductdesignDesignvalidationandverificationIntegrationandtestplanRiskanalysisOperationalprototypeDetaileddesignUnittestCodeIntegrationandtestAcceptancetestImplementationPlannextphasesDevelop,verifynext-levelproductDetermineobjectives,alternatives,constrainsEvaluatealternatives,identify,resolverisksCumulativecostProgressthroughstepsThespiralmodel共二十七页杭州北京Post-officeMessageSendbymethodObjectAttributes:location;employee;……Methods:send;sell;……我想把邮局(yóujú)搬到我家门口,多加几个邮递员,24小时都开门……对不起,本邮局不提供(tígōng)此类服务唉,那就先送束花吧——

Post_office.Send(request,payment)软件系统开发的工程化思想(九)

---面向对象方法学(OOM)共二十七页软件系统开发(kāifā)的工程化思想(十)面向对象方法的几个(jǐɡè)概念对象Object=数据Attribute+操作Method注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。共二十七页软件系统开发的工程化思想(sīxiǎng)(十一)OOM的特点尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体——对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此(bǐcǐ)独立的对象的集合。共二十七页软件系统开发的工程化思想(sīxiǎng)(十二)OOM的四要素:对象(object):世界由对象组成。类(class):对象可划分为类;单个对象可视为某一类(yīlèi)的实例(instance)。继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。共二十七页软件系统开发(kāifā)的工程化思想(十三)例:classPost_office{private:loc_typelocation;emp_typeemployee;……public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);……};

main(){Post_officeMy_PO;req_typeMy_request;money_typeMy_payment;……My_PO.Send(My_request,My_payment);……}共二十七页软件系统开发(kāifā)的工程化思想(十四)OOM的主体思想以object为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式(fāngshì)建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。

Class:由特殊到一般的归纳(induction)

Inheritance:由一般到特殊的演绎(deduction)共二十七页软件系统开发(kāifā)的工程化思想(十五)OOM的主体思想以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定一个class所有的instances都可重用它的代码;由inheritance派生出的新的class可重用其父类的代码,并且可以修改、扩充而不影响(yǐngxiǎng)其父类的使用。稳定性好:软件功能需求的变化不牵动全局,只需局部修改;Class独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;容易理解、容易测试、调试。共二十七页软件系统开发(kāifā)的工程化思想(十六)OOM的基本概念Object:=ID+Method+Attribute+Message

以数据为中心,不设与数据无关的操作;

Object主动处理而不被动地等待被处理,外部只能通过message请求操作;

具有(jùyǒu)黑盒性:外部操作时,无须知道该object内部的数据结构及算法;

具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;

模块独立性好:内聚强、耦合松共二十七页软件系统开发(kāifā)的工程化思想(十七)OOM的基本概念Class:具有相同数据和相同操作的一组对象;Instance:某个class描述的具体对象;Message:=object_ID.method_ID(parameter(s));Method:object能做的操作,亦称为service、responsibility,在

class中须定义相应的代码;Attribute:object

的固有数据;Inheritance:子类自动(zìdòng)共享父类的attributes和methods,而不必重复定义。共二十七页软件系统开发(kāifā)的工程化思想(十八)Class中国人中国人Attributes中国人Methods张山(instance)

Class中国人张山的AttributesClass杭州人

(子类)杭州人Attributes杭州人Methods

Class中国人李士(instance)中国人李士的Attributes杭州人李士的Attributes

Class杭州人例共二十七页软件系统开发(kāifā)的工程化思想(十九)若杭州人的methods中有与中国人的同名,则李士执行该method时以杭州人为准,不执行中国人中定义的同名method。传递性(transitivity):AB、BCAC

一个class继承了上层全部classes的一切性质(xìngzhì)。一个子类只有一个父类称为单继承(singleinheritance),一个子类可有多个父类称为多重继承(multipleinheritance).修改与扩充可以很容易地通过派生子类来完成。

讲官话,这叫做“低层性质override高层性质”讲土话,这叫做“县官不如现管”共二十七页FemaleChineseScholarI注意:multipleinherit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论