- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件工程基本原理
1.1软件的生命周期
一个软件产品从构想到不再使用,期间会经历若干阶段,我们称其为软件的生命周期(life cycle)。生命周期中的3个主要阶段是:开发阶段(development),使用阶段(use)和维护阶段(maintenance)。通常情况是:客户提出需要解决的问题,软件开发者就构思并开发相应的软件,并藉此获得酬劳。新的软件是在开发阶段建立的。
软件开发完毕之后就交付用户使用。用户在使用过程中,通常都会发现各种问题(错误)及提出各种修改建议。这些信息都会反馈给开发者,这就进入了维护阶段.
在软件维护阶段中,软件中的错误被修改(标识),功能被增强。如果需要进行较大的修改,通常会开发一个新版本的软件并发布和使用。
当一个软件的维护费用过于昂贵时,开发者就考虑不再使用该软件,也不再发布新的版本。
软件开发阶段是生命周期中的第一个阶段,也是最重要的阶段。如果一个软件开发得好,后续的维护将十分容易,相应的也就节约维护成本。
1.2软件开发阶段
软件工程师通常将软件的开发阶段分为下面4个子阶段:
分析阶段
设计阶段
实现阶段
测试和调试阶段
1.2.1分析阶段
分析问题是第一步也是最为重要的一部。在这一步中。您需要做以下事情:
全面理解所要解决的问题
进行需求分析(requirement analysis):理解问题需求,包括程序是否需要和用户进行交互,是否操纵数据,是否有输出结果以及输出结果的格式等等。举一个列子,如果您需要编写一个自动取款机(ATM)的程序。在分析阶段,您要给出该ATM机可以进行的操作,如:取款,存款,转账及余额查询等等。您会和使用该ATM机的客户进行讨论,理解他们的需求,增加必要的操作,以便是您的程序是用户友好的。
如果程序需要对数据进行操作,开发人员必须了解数据类型及它们的表示方法。这时候可能会接触一些样本数据。如果程序有输出信息,必须确定它们所生成的结果及输出格式等。
如果需要解决的问题过于复杂,可以把它分解为多个子问题,在对每个子问题做相应的需求分析。
1.2.2设计阶段
当您仔细分析完问题后,就需要设计相应的算法去解决问题。如果已经将问题分解为若干子问题,那么对每个子问题都需要设计相应的算法。
算法(algorithm):在有限时间内获得问题解决方案的逐步求解过程。
结构化设计方法
将一个问题分解为若干个子问题的方法叫做结构化设计方法(structured design)。结构化设计方法又叫做自顶向下的设计方法(top-down design)、逐步求精方法(stepwise refinement)和模块化程序设计方法(modular programming)。在结构化设计方法中,问题被分解为若干子问题,然后分别对每个子问题进行分析和求解。所有子问题的解合并起来就是原始问题的解。使用结构化设计方法进行编程就叫做结构化程序设计(structure programming)。
面向对象设计方法
在面向对象设计方法(object-oriented,OOD)中,求解问题的首要步骤是识别称为“对象”(object)的组件(它是运用该方法求解问题的基础)和确定对象之间如何进行交互。比如,我们要为一家录像出租店编写一个可以使其业务自动化的程序。在这个问题中,我们可以确定两个主要对象,即:录像带对象和客户对象。
明确系统中的对象之后,下一步就是为每个对象确定有关数据和数据上进行的相关操作。对于录像带对象而言,数据可能包括影片名称,演员名单,制片人,出版公司,库存副本数等等。在录像带对象可以进行的相关操作包括查询影片名,每租出一盘录像带就将库存副本数减一,客户每归还一盘录像带就将库存数加一。
由上文可知:对象包括数据和在数据上执行的操作。对象可以看作数据和其上操作的统一体。使用面向对象方法编程,最终的程序是交互对象的集合。实现面向对象设计方法的编程语言叫做面向对象程序设计(object-oriented programming,OOP)语言。
面向对象设计方法的3个基本原则:
封装性(encapsulation):将数据和操作集成在一个单元(对象)中的能力。
继承性(inheritance):从已有数据类型中派生新数据类型的能力。
多态性(polymorphism):使用相同表达形式来实现不同操作的能力。
在C++中,封装性是通过叫做类(class)的数据类型实现的。
在面向对象的设计方法中,我们要确定需要哪些类,它们的数据成员和成员方法。我们还需要描述个各类之间如何进行交互。
1.2.3实现阶段
在实现阶段,您将编写和编译程序代码,以实现在设计阶段分析得到的类和函数。
最终的程序通常由几个函数组成,它们分别完成不同的任务。有些函数是主程序的一部分,其他的则是在对象上完成的操作。显然函数之间存在交互
文档评论(0)