读书笔记(软件工程)
《软件工程:实践者的研究方法》第八版读书笔记
贰叁!
这个作者很懒,什么都没留下…
展开
-
软件质量——《软件工程:实践者的研究方法》第八版
高质量的软件是一个重要目标,即使最疲倦的软件开发人员也会同意这一点。但是,如何定义软件质量呢?在最一般的意义上,软件质量可以这样定义:在一定程度上应用有效的软件过程,创造有用的产品,为生产者和使用者提供明显的价值。 毫无疑问,对上述定义可以进行修改、扩展以及无休止的讨论。针对本书的论题来说,该定义强调了以下三个重要的方面:1.有效的软件过程为生产高质量的软件产品奠定了基础。过程的管理方面所做的工作是检验和平衡,以避免项目混乱(低质量的关键因素)。软件工程实践允许开发人员...原创 2022-04-25 11:54:48 · 570 阅读 · 0 评论 -
WebApp 的体系结构设计——《软件工程:实践者的研究方法》第八版
WebApp 是典型的使用多层次体系结构来构造的客户端-服务器应用软件,包括用户界面或表现层、一个基于一组业务规则来指导与客户端浏览器进行信息交互的控制器,以及可以包含 WebApp 的业务规则的内容层或模型层。 WebApp 的用户界面是围绕着运行在客户端(通常为个人计算机或移动设备)上的浏览器的特性来设计的。数据层位于服务器。业务规则既可以使用基于服务器的脚本语言(如PHP)实现,也可以使用基于客户端的脚本语言(如 Javascript)来实现。体系结构设计师应根据...原创 2022-04-11 14:41:11 · 947 阅读 · 0 评论 -
系统环境的表示——《软件工程:实践者的研究方法》第八版
在体系结构设计层,软件体系结构设计师用体系结构环境图(Architectural Context Diagram,ACD)对软件与其外围实体的交互方式进行建模。与目标系统(为该系统所开发的体系结构设计)交互的系统可以表示为:•上级系统——这些系统把目标系统作为某些高层处理方案的一部分。•下级系统——这些系统被目标系统使用,并为完成目标系统的功能提供必要的数据和处理。•同级系统——这些系统在对等的基础上相互作用(即信息或者由同级系统和目标系统产生,或者被目标系统和同级系统使用...原创 2022-04-08 11:54:29 · 443 阅读 · 0 评论 -
体系结构考虑要素——《软件工程:实践者的研究方法》第八版
Buschmann 和 Henny 提出了几个考虑要素,指导软件工程师在体系结构设计时做出决策。•经济性——许多软件体系结构深受不必要的复杂性所害,它们充斥着不必要的产品特色或无用的需求(如无目的的可重用性)。最好的软件应该是整洁的并依赖抽象化以减少无用的细节。•易见性——设计模型建立后,对于那些随后将验证这些模型的软件工程师而言,体系结构的决策及其依据应该是显而易见的。如果重要的设计和专业领域概念与随后的设计和开发人员没有进行有效沟通,所产生的设计模型往往是晦涩难懂的。•隔离性...原创 2022-04-07 16:26:35 · 466 阅读 · 0 评论 -
体系结构风格——《软件工程:实践者的研究方法》第八版
基于计算机系统构造的软件也展示了众多体系结构风格中的一种。每种风格描述一种系统类别,包括:(1)完成系统需要的某种功能的一组构件(例如,数据库、计算模块);(2)能使构件间实现“通信、合作和协调”的一组连接件;(3)定义构件如何集成为系统的约束;(4)语义模型,能使设计者通过分析系统组成成分的已知属性来理解系统的整体性质。 体系结构风格就是施加在整个系统设计上的一种变换,目的是为系统的所有构件建立一个结构。在对已有体系结构再工程时,体系结构风格的强制采用会导致软件结构的根本...原创 2022-04-06 16:45:53 · 538 阅读 · 0 评论 -
体系结构类型——《软件工程:实践者的研究方法》第八版
尽管体系结构设计的基本原则适用于所有类型的体系结构,但对于需要构建的结构,体系结构类型(genre)经常会规定特定的体系结构方法。在体系结构设计环境中,类型隐含了在整个软件领域中的一个特定类别。在每种类别中,会有很多的子类别。例如,在建筑物类型中,会有以下几种通用风格:住宅房、单元楼、公寓、办公楼、工厂厂房、仓库等。在每一种通用风格中,也会运用更多的具体风格。每种风格有一个结构,可以用一组可预测模式进行描述。Grady Booch 在他的《软件体系结构手册》[Boo08]的改进版本中,提出了以...原创 2022-04-05 13:58:39 · 4091 阅读 · 0 评论 -
体系结构为什么重要——《软件工程:实践者的研究方法》第八版
在一本关于软件体系结构的书中,Bass 和他的同事[Bas03]给出了软件体系结构之所以重要的三个关键原因:•软件体系结构提供了一种表示,有助于对计算机系统开发感兴趣的所有利益相关者开展交流。•体系结构突出了早期的设计决策,这些决策对随后所有的软件工程工作有深远的影响。•体系结构“构建了一个相对小的、易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作”[Bas03]。•体系结构设计模型和包含在其中的体系结构模式都是可以传递的,也就是说,体系结构的类型、风格和模式可以应用于其他系统原创 2022-04-04 14:35:23 · 944 阅读 · 0 评论 -
什么是体系结构——《软件工程:实践者的研究方法》第八版
什么是软件体系结构呢? Bass、Clements 和 Kazman[Bas03]对于这个难懂的概念给出了如下定义。程序或计算系统的软件体系结构是指系统的一个或者多个结构,它包括软件构件、构件的外部可见属性以及它们之间的相互关系。 体系结构并非可运行的软件。确切地说,它是一种表达,使你能够:(1)对设计在满足既定需求方面的有效性进行分析;(2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案;(3)降低与软件构建相关的风险。 该定义强调了“软件构件”在...原创 2022-04-03 21:01:07 · 257 阅读 · 0 评论 -
软件体系结构——《软件工程:实践者的研究方法》第八版
Shaw 和 Garlan[Sha96]在他们划时代的著作中以如下方式讨论了软件的体系结构:从第一个程序被划分成模块开始,软件系统就有了体系结构。同时,程序员已经开始负责模块间的交互和模块装配的全局属性。从历史的观点看,体系结构隐含了不同的内容——实现的偶然事件或先前的遗留系统。优秀的软件开发人员经常采用一个或者多个体系结构模式作为系统组织策略,但是他们只是非正式地使用这些模式,并且在最终系统中没有将这些模式清楚地体现出来。 如今,有效的软件体系结构及其明确的表示和设计已经...原创 2022-04-02 22:58:40 · 292 阅读 · 0 评论 -
接口设计元素——《软件工程:实践者的研究方法》第八版
软件的接口设计相当于一组房屋的门、窗和外部设施的详细绘图门、窗、外部设施的详细图纸作为平面图的一部分,大体上告诉我们:事件和信息如何流人和流出住宅以及如何在平面图的房间内流动。软件接口设计元素描述了信息如何流人和流出系统,以及被定义为体系结构一部分的构件之间是如何通信的。接口设计有三个重要的元素:(1)用户界面(User Interface, UI);(2)和其他系统、设备、网络、信息生成者或使用者的外部接口;(3)各种设计构件之间的内部接口。这些接口设计元素能够使软件进行外部通信...原创 2022-04-01 16:23:50 · 911 阅读 · 0 评论 -
设计类——《软件工程:实践者的研究方法》第八版
当设计模型发生演化时,必须定义一组设计类,它们可以:(1)通过提供设计细节对分析类进行求精,而这些设计细节将促成类的实现;(2)实现支持业务解决方案的软件基础设施。 以下给出了五种不同类型的设计类[Amb01],每一种都表示了设计体系结构的一个不同层次:(1)用户接口类,定义人机交互(Human-Computer InteractiHCI)所必需的所有抽象,并且经常在隐喻的环境中实施 HCI;(2)业务域类,识别实现些业务域元素所必需的属性和服务(方法),通过一个或更多的分析类进行定义;(...原创 2022-03-31 16:32:01 · 522 阅读 · 0 评论 -
软件质量指导原则和属性——《软件工程:实践者的研究方法》第八版
在整个设计过程中,我们使用一系列技术评审来评估设计演化的质量。McGlaughlin[McG91]提出了可以指导良好设计演化的三个特征:•设计应当实现所有包含在需求模型中的明确需求,而且必须满足利益相关者期望的所有隐含需求。•对于那些编码者和测试者以及随后的软件维护者而言,设计应当是可读的、可理解的指南。•设计应当提供软件的全貌,从实现的角度对数据域、功能域和行为域进行说明。 以上每一个特征实际上都是设计过程的目标,但是如何达到这些目标呢? 质...原创 2022-03-30 15:11:05 · 882 阅读 · 0 评论 -
需求建模:行为和模式——《软件工程:实践者的研究方法》第八版
Konrad和Cheng[Kon02]建议将需求模式命名为执行器一传感器,它为SafeHome软件这项需求的建模提供有用的指导。执行器-传感器模式的简约版本最初是为如下的汽车应用开发的。 模式名:执行器-传感器。 目的:详细说明在嵌人系统中的各种传感器和执行器。 动机:嵌人系统包含各种传感器和执行器,这些传感器和执行器都直接或间接连接到一个控制单元。虽然许多传感器和执行器看上去完全不同,但它们的行为是相似的,足以构成一个模式。这种模式显示了...原创 2022-03-29 20:58:47 · 717 阅读 · 0 评论 -
类-职责-协作作者建模——《软件工程:实践者的研究方法》第八版
类。在本章前面已经说明了识别类和对象的基本原则。类的分类可以通过如下分类方式进行扩展: •实体类,也称作模型或业务类,是从问题说明中直接提取出来的例如 FloorPlan 和 Sensor)。这些类一般代表保存在数据库中和贯穿在应用程序中(除非被明确删除)的事物。 •边界类用于创建用户可见的和在使用软件时交互的接口(如交互屏幕或打印的报表)。实体类包含对用户来说很重要的信息,但是并不显示这些信息。边界类的职责是管理实体对象呈现给用户的方式。例如,Cam...原创 2022-03-28 15:02:00 · 463 阅读 · 0 评论 -
定义操作——《软件工程:实践者的研究方法》第八版
操作定义了某个对象的行为。尽管存在很多不同类型的操作,但通常可以粗略地划分为4种类型:(1)以某种方式操作数据(例如添加、删除、重新格式化、选择);(2)执行计算的操作;(3)请求某个对象的状态的操作;(4)监视某个对象发生某个控制事件的操作。这些功能通过在属性或相关属性上的操作来实现。因此,操作必须“理解”类的属性和相关属性的性质。 在第一次迭代要导出一组分析类的操作时,可以再次研究处理说明(或用例)并合理地选择属于该类的操作。为了实现这个目标,可以再次研究语法解析并...原创 2022-03-27 22:42:19 · 277 阅读 · 0 评论 -
分析的经验原则——《软件工程:实践者的研究方法》第八版
Arlow和Neustadt[Ar102]提出了大量有价值的经验原则,在创建分析模型时应该遵循这些经验原则:•模型应关注在问题域或业务域内可见的需求,抽象的级别应该相对高一些。“不要陷人细节”[Ar102],即不要试图解释系统将如何工作。需求模型的每个元素都应能增加对软件需求的整体理解,并提供对信息域、功能和系统行为的深入理解。关于基础结构和其他非功能的模型应推延到设计阶段再考虑。例如,可能需要一个数据库,但是只有在已经完成问题域分析之后才应考虑实现数据库所必需的类、访问数据库所需的功能...原创 2022-03-26 15:17:47 · 896 阅读 · 0 评论 -
需求工程——《软件工程:实践者的研究方法》第八版
需求工程(Requirement Engineering,RE)是指致力于不断理解需求的大量任务和技术。从软件过程的角度来看,需求工程是一个软件工程动作,开始于沟通并持续到建模活动。它必须适用于过程、项目、产品和人员的需要。 需求工程在设计和构建之间建立起联系的桥梁。需求工程包括七项明确的任务:起始,获取,细化,协商,规格说明,确认和管理。起始。如何开始一个软件项目?有没有一个独立的事件能够成为新的基于计算机的系统或产品的催化剂?需求会随时间的流逝而发展吗?这些问题...原创 2022-03-25 11:53:52 · 530 阅读 · 0 评论 -
团队结构——《软件工程:实践者的研究方法》第八版
“最佳”团队结构取决于组织的管理风格、团队组成人员的数量以及他们的技术水平,还有整体的问题难度。Mantei[Man81]提出了一些在策划软件工程团队结构时应考虑的项目因素:(1)需解决问题的难度;(2)基于代码行或功能点°的结果程序的“规模”;(3)团队成员合作的时间(团队寿命);(4)问题可模块化的程度;(5)所建系统的质量和可靠性;(6)交付日期要求的严格程度;(7)项目所需的社会化(交流)程度。 Constantine[Con93]针对软...原创 2022-03-24 17:03:44 · 515 阅读 · 0 评论 -
软件工程师的特质——《软件工程:实践者的研究方法》第八版
Erdogmus[Erd09]指出软件工程师个人要想展现“非常专业的”行为,应具备七种特质: 一个卓有成效的软件工程师有个人责任感。这会让软件工程师去努力实现对同伴、其他利益相关者和管理者的承诺。为获得成功的结果,他会在需要的时候不遗余力地做他需要做的事情。 一个卓有成效的软件工程师对一些人的需求有敏锐的意识,这些人包括同团队的成员、对现存问题的软件解决方法有需求的利益相关者、掌控整个项目并能找到解决方法的管理者。他会观察人们工作的环境,并根据环境和...原创 2022-03-24 16:55:00 · 331 阅读 · 0 评论 -
普适性活动——《软件工程:实践者的研究方法》第八版
软件工程过程框架活动由很多普适性活动来补充实现。通常,这些普适性活动贯穿软件项目始终,以帮助软件团队管理和控制项目进度、质量、变更和风险。典型的普适性活动包括如下活动。软件项目跟踪和控制——项目组根据计划来评估项目进度,并且采取必要的措施保证项目按进度计划进行。风险管理——对可能影响项目成果或者产品质量的风险进行评估。软件质量保证——确定和执行保证软件质量的活动。技术评审——评估软件工程产品,尽量在错误传播到下一个活动之前发现并清除错误。测量——定义和收集过程、项目以及产品的度量,以帮助团队在...原创 2022-03-23 22:50:35 · 922 阅读 · 0 评论 -
过程框架——《软件工程:实践者的研究方法》
一个通用的软件工程过程框架通常包含以下5个活动。沟通。在技术工作开始之前,和客户(及其他利益相关者)的沟通与协作是极其重要的,其目的是理解利益相关者的项目目标,并收集需求以定义软件特性和功能。如果有地图,任何复杂的旅程都可以变得简单。软件项目好比是一个复杂的旅程,策划活动就是创建一个“地图”,以指导团队的项目旅程,这个地图称为软件项目计划,它定义和描述了软件工程工作,包括需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。建模。无论你是庭园设计师、桥梁建造者、航空工程师、木匠还是建筑师,你..原创 2022-03-22 14:17:28 · 395 阅读 · 0 评论 -
定义软件工程学科——《软件工程:实践者的研究方法》第八版
对于软件工程,美国电气与电子工程师学会(IEEE)[IEE93a]给出了如下定义:软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)对(1)中所述方法的研究。然而,对于某个软件开发队伍来说可能是“系统化的、规范的、可量化的”方法,对于另外一个团队却可能是负担。因此,我们需要规范,也需要可适应性和灵活性。软件工程是一种层次化的技术,任何工程方法(包括软件工程)必须构建在质量承诺的基础之上。支持软件工程的根基在于质量关注点(qual...原创 2022-03-16 23:01:41 · 360 阅读 · 0 评论 -
软件的定义——《软件工程:实践者的研究方法》
来自教科书的关于软件的定义也许是:软件是:(1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特性、功能和性能需求;(2)数据结构,使得程序可以合理利用信息;(3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。当然,还有更完整的解释。但是一个更加正式的定义可能并不能显著改善其可理解性。为了更好地理解“软件”的含义,有必要将软件和其他人工产品的特点加以区分。软件是逻辑的而非物理的系统元素。因此,软件和硬件具有完全不同的特性:软件不会“磨损”。而且软件不会被引起软件磨损的环原创 2022-03-09 14:51:25 · 787 阅读 · 0 评论 -
遗留软件的演化原因——《软件工程:实践者的研究方法》
注:遗留软件是一些旧的系统•软件需要进行适应性调整,从而可以满足新的计算环境或者技术的需求。•软件必须升级以实现新的商业需求。•软件必须扩展以使之具有与更多新的系统和数据库的互操作能力。•软件架构必须进行改建以使之能适应不断演化的计算环境。...原创 2022-03-07 11:35:42 · 525 阅读 · 0 评论 -
软件工程的应用领域——《软件工程:实践者的研究方法》
软件应用领域计算机软件可分为七个大类。1.系统软件———整套服务于其他程序的程序。某些系统软件(例如编译器、编辑器、文件管理软件)处理复杂但确定的°信息结构,另一些系统应用程序(例如操作系统构件、驱动程序、网络软件、远程通信处理器)主要处理的是不确定的数据。2.应用软件——解决特定业务需要的独立应用程序。这类应用软件处理商务或技术数据,以协助业务操作或协助做出管理或技术决策。3.工程/科学软件——“数值计算”(number crunching)类程序涵盖了广泛的应用领域,从天文学到火山学,从原创 2022-03-07 11:26:46 · 2417 阅读 · 0 评论