软件体系结构作业
第一章:软件体系结构概论
1、基于构件的软件开发方法能够有效提高开发效率,简述在实际的项目中有哪些方式获得构件、如何管理以及重用构件?
    答:构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
    在实际项目中获取构件的方式有:(1)从现有的构件中获取符合条件的构件,直接使用或做适应性修改,得到可重用的构建。(2)通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件。(3)从市场上购买现成的构件,既COTS构件;(4)开发新的符合条件的构件。
    管理构件的方法有:构件分类方法,关键字分类法,刻面分类法,超文本组织法,人员及权限管理。其中关键字分类法和刻面分类法都是以数据库系统作为实现背景。
构件开发的目的是重用,为了让构件在新的软件项目中发挥作用,库的使用者必须完成以下工作:检索与提取构件,理解与评价构件,修改构件,构件组装。其中检索与提取构件的方法有:基于关键字的检索,刻面检索法,超文本检索法,其他检索方法。
2、软件体系结构定义众多,你是如何理解软件体系结构的?软件体系结构在软件系统中有何作用?
    答:软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。
    软件体系结构研究内容涉及软件体系结构的描述、风格、评估和形式化方法等,根本目的是解决好软件的重用、质量和维护问题。软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境
中的组织。
    软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
    软件体系结构在软件系统中的作用主要体现在:体系结构提供了一种共同语言来表达各种关注和协商,进而对大型复杂系统能进行理智的管理。这对项目最终的质量和使用有极大的影响。体系结构是早期设计决策的体现,软件体系结构制约着系统的质量属性,通过研究软件体系结构可能预测软件的质量,使推理和控制更改更简单,有助于循序渐进的原型设计,是可传递和可重用的模型,  软件体系结构级的重用意味着体系结构的决策能在具有相似需求的多个系统中发生影响,这比代码级的重用要有更大的好处。
第三章:软件体系结构风格
1、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。
    答:二层C/S体系结构将应用一分为二,服务器负责数据管理,客户机完成与用户的交互任务。优点(1)C/S体系结构具有强大的数据操作的事务处理能力,模型思想简单,易于人们理解和接受。(2)对软硬件的变化有极大的适应性和灵活性,易于对系统进行扩充和缩小。(3)系统中的功能构建充分隔离,节约大量费用。缺点:(1)开发成本较高。(2)客户端程序设计复杂(3)信息内容和形式单一(4)用户界面风格不一,使用繁杂不易推广。(5)软件移植困难(6)软件维护和升级困难(7)新技术不能轻易应用。三层CS在上面的基础上进行了改造,并增加了一个服务器,其优点:(1)允许合理的划分三层结构的功能,能提高系统和软件的可维护性和可扩展性。(2)具有良好的可升级性和开放性。(3)应用的各层可以并行开发,可以选择各自最适合的开发语言。(4)为严格的安全管理奠定了坚实的基础。
B/S风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。优点(1)基于B/S体系结构的软件,系统安装,修改和维护全在服务器端解决。(2)提供了异种机,异种网,异种应用服务的联机,联网,同意服务的最现实的开放性基础。缺点(1)缺乏对动态页面的支持能力,没有集成有效的数据库处理能力。(2)在数据查询等响应速度上,要远远低于C/S体系结构。(3)数据提交一般以页面为单位,数据的动
态交互性不强,不利于在线事务处理应用。
第四章:软件体系结构描述
1、体系结构描述有哪些方法?有哪些标准和规范?
    答:描述方法的种类包括:图形表达工具,模块内连接语言,基于软构件的系统描述语言,软件体系结构描述语言。
    其中图形表达工具最简单易懂且使用广泛的方法,是采用矩形框和有向线段组合而成的图形表达工具。矩形框代表抽象构件,框内标注的文字为抽象构件的名称,有向线段代表辅助各构件进行通信、控制或关联的连接件,在软件设计中占据主导地位。
    模块内连接语言是采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言。能支持对较大的软件单元进行描述,诸如定义/使用和扇入/扇出等操作,但是由于这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力。
基于软构件的系统描述语言以特定形式相互作用的特殊软件实体构造组成的组织或系统。可以用来在一个较高的抽象层次上对系统的体系结构建模,所面向和针对的系统元素仍然是一些层次较低的以程序设计为基础的通信协作软件实体单元,而且这些语言所描述和表达的系统一般而言都是面向特定应用的特殊系统,这些特性使得基于软构件的系统描述仍然不是十分适合软件体系结构的描述和表达。
软件体系结构描述语言是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言。
(2)软件体系结构的标准和规范主要有:
软件体系结构标准定义了一系列的软件开发边界,而开源软件或软件提供商正是应用这些软件边界来进行软件的开发。例如,我们日常软件开发中所用到的应用服务器、Ajax工具包、数据库或Web服务等等。此外,软件体系结构标准还定义了其它一系列的软件开发边界,而这些软件开发边界主要应用于体系模式或是具体的业务问题的解决,例如B2B(电子商务,Business to business)、商业智能系统等等。同时,这类软件边界还可以用于构建软件的体系基线,如在RUPRational Unified Process,统一过程)或是XPExtreme programming
极限编程)中所应用的那样。在项目管理中,始终都非常关注交付成果(Deliverable)。完成全部交付成果,就意味着覆盖了全部的项目范围,所有的项目活动、项目资源,都是为了有效完成这些交付成果而发生的,交付成果在很大程度上反映了项目目标的要求。通过软件体系标准的建立,可以加速项目交付使用。
    当然,并非所有的软件体系结构标准都可以加速软件产品的交付使用周期或是降低产品的开发费用。一套成熟与实用的标准有它自己的明显特征。
项目专家的建议与意见
软件体系结构标准的第一个特征,就是本标准是否已经得到了组织的IT项目专家的一致讨论与通过,并就相关的内容进行修改与重新制定。只有经过IT项目专家组的一致认可的标准,才可有可能成软件体系结构标准。例如,著名的De facto标准(De facto standard,有译实质标准、业界标准或非官方标准,是指一套技术上或其他方面的规格/标准,而该套规格/标准属于主流而且每个人都习惯依据为法定标准般跟随),可以从已经实现的项目中获得实惠的经验。而通过IT项目专家讨论一致通过的标准则可以应用于组织的其它项目中。
参考模型与实现
通过参考模型及建立的相关成文的文档,可以比较成功的解决产品或项目开发过程的一些实质业务问题。而参考实现由于是对参考模型的具体化,从而可以更加明确的改善项目的开发过程。所以,参考模型与参考实现都将会显著的加速体软件系结构的制定与建设。
支持度模型
支持度模型需要合理的在项目或产品开发过程使用。这通常包括开发、测试及产品环境的平衡等内容。在整个开发环境中,系统应用团队的角及责任需要很明确的定义。而标准的制定及可操作性支持度模型的确定,通过是一个成熟标准的主要体现。
规划支持
规划支持主要通过采用特殊产品、配置的项目环境、模式等工具,来保证项目的正确实施,尽可能的避免项目失败。
产品实现
产品实现是评估标准成熟度的重要的指标。
软件开发编程语言有哪些
 而对于缺少如下的一些特征的项目,通过会产生一些项目风险:
没有经过项目专家就评估的标准,通常会以失败或部分的失败而告终;
没有参考模型和参考实现,标准将不能正确的被执行,同时可能增加软件开发的成本;
没有清晰的支持度模型,将会使软件开发人员的角及责任重复或不清晰;
没有规划支持,则过往项目的经验不充分的加以应用与借鉴;
最后,没有产品实现,则软件产品不能通过实践来进行唯一的检验,不能使软件开发严格的遵循软件开发的生命周期。
根据体系结构标准的成熟度,可以对其进行适度的分类。如下图1所示,标准成熟度金字塔,最顶端的是最成熟的,而最低端的则是最不成熟的。
1提交:这一级别意味着标准制定中已经考虑了产品、模式或实践等因素。
2侯选:此级别表明已经通过了IT项目专家的详细审查。
3推荐:推荐级别已经将参考模型及参考实现配置在合适的位置了。
4实践:实践级别指已经定义了支持度模型,至少有一种产品实现。
5最佳实践:有多个产品实现,同时对支持度模型进行重新定义。