2021-2022年收藏的精品资料软件工程基本原理.doc
《2021-2022年收藏的精品资料软件工程基本原理.doc》由会员分享,可在线阅读,更多相关《2021-2022年收藏的精品资料软件工程基本原理.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程基本原理1.1软件的生命周期一个软件产品从构想到不再使用,期间会经历若干阶段,我们称其为软件的生命周期(life cycle)。生命周期中的3个主要阶段是:开发阶段(development),使用阶段(use)和维护阶段(maintenance)。通常情况是:客户提出需要解决的问题,软件开发者就构思并开发相应的软件,并藉此获得酬劳。新的软件是在开发阶段建立的。软件开发完毕之后就交付用户使用。用户在使用过程中,通常都会发现各种问题(错误)及提出各种修改建议。这些信息都会反馈给开发者,这就进入了维护阶段.在软件维护阶段中,软件中的错误被修改(标识),功能被增强。如果需要进行较大的修改,通常
2、会开发一个新版本的软件并发布和使用。当一个软件的维护费用过于昂贵时,开发者就考虑不再使用该软件,也不再发布新的版本。软件开发阶段是生命周期中的第一个阶段,也是最重要的阶段。如果一个软件开发得好,后续的维护将十分容易,相应的也就节约维护成本。1.2软件开发阶段软件工程师通常将软件的开发阶段分为下面4个子阶段: 分析阶段 设计阶段 实现阶段 测试和调试阶段1.2.1分析阶段分析问题是第一步也是最为重要的一部。在这一步中。您需要做以下事情: 全面理解所要解决的问题 进行需求分析(requirement analysis):理解问题需求,包括程序是否需要和用户进行交互,是否操纵数据,是否有输出结果以及
3、输出结果的格式等等。举一个列子,如果您需要编写一个自动取款机(ATM)的程序。在分析阶段,您要给出该机可以进行的操作,如:取款,存款,转账及余额查询等等。您会和使用该机的客户进行讨论,理解他们的需求,增加必要的操作,以便是您的程序是用户友好的。 如果程序需要对数据进行操作,开发人员必须了解数据类型及它们的表示方法。这时候可能会接触一些样本数据。如果程序有输出信息,必须确定它们所生成的结果及输出格式等。 如果需要解决的问题过于复杂,可以把它分解为多个子问题,在对每个子问题做相应的需求分析。1.2.2设计阶段当您仔细分析完问题后,就需要设计相应的算法去解决问题。如果已经将问题分解为若干子问题,那么
4、对每个子问题都需要设计相应的算法。算法(algorithm):在有限时间内获得问题解决方案的逐步求解过程。结构化设计方法将一个问题分解为若干个子问题的方法叫做结构化设计方法(structured design)。结构化设计方法又叫做自顶向下的设计方法(top-down design)、逐步求精方法(stepwise refinement)和模块化程序设计方法(modular programming)。在结构化设计方法中,问题被分解为若干子问题,然后分别对每个子问题进行分析和求解。所有子问题的解合并起来就是原始问题的解。使用结构化设计方法进行编程就叫做结构化程序设计(structure prog
5、ramming)。面向对象设计方法在面向对象设计方法(object-oriented,OOD)中,求解问题的首要步骤是识别称为“对象”(object)的组件(它是运用该方法求解问题的基础)和确定对象之间如何进行交互。比如,我们要为一家录像出租店编写一个可以使其业务自动化的程序。在这个问题中,我们可以确定两个主要对象,即:录像带对象和客户对象。明确系统中的对象之后,下一步就是为每个对象确定有关数据和数据上进行的相关操作。对于录像带对象而言,数据可能包括影片名称,演员名单,制片人,出版公司,库存副本数等等。在录像带对象可以进行的相关操作包括查询影片名,每租出一盘录像带就将库存副本数减一,客户每归还
6、一盘录像带就将库存数加一。由上文可知:对象包括数据和在数据上执行的操作。对象可以看作数据和其上操作的统一体。使用面向对象方法编程,最终的程序是交互对象的集合。实现面向对象设计方法的编程语言叫做面向对象程序设计(object-oriented programming,OOP)语言。面向对象设计方法的3个基本原则: 封装性(encapsulation):将数据和操作集成在一个单元(对象)中的能力。 继承性(inheritance):从已有数据类型中派生新数据类型的能力。 多态性(polymorphism):使用相同表达形式来实现不同操作的能力。在C+中,封装性是通过叫做类(class)的数据类型实
7、现的。在面向对象的设计方法中,我们要确定需要哪些类,它们的数据成员和成员方法。我们还需要描述个各类之间如何进行交互。1.2.3实现阶段在实现阶段,您将编写和编译程序代码,以实现在设计阶段分析得到的类和函数。最终的程序通常由几个函数组成,它们分别完成不同的任务。有些函数是主程序的一部分,其他的则是在对象上完成的操作。显然函数之间存在交互关系,从而能够利用彼此的函数功能。要使用一个函数,用户只需要知道该函数的功能和用法即可,而不必关心该函数的实现的具体细节。下面的例子说明了这个观点。假设您要编写一个将计量单位英寸转换为厘米的函数。转换公式是:英寸。下面的函数用来实现这个功能。double inch
8、esToCentimeters (double inches) if (inches0) cerr”The given measurement must be nonnegative” endl;return -1.0; else return 2.54*inches;注意:对象cerr对应于无缓冲的标准错误流。对象cout的输出首先进入缓冲区不同的是,cerr的输出结果直接送往标准错误流通常是用户屏幕。如果您仔细查看函数体就会发现,如果输入的英寸值小于0(即为负数),那么返回值将为-1.0。如果输入的值非负,那么返回对应的厘米值。使用该函数无需了解它使用什么算法将英寸转换为厘米。但是用户必须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2021 2022 收藏 精品 资料软件 工程 基本原理
限制150内