软件设计与体系结构作业/实验报告作业/实验一软件设计与体系结构作业与实验报告作业/实验一经典软件体系结构风格(一)姓名:薛富磊专业:软件工程(外包方向)班级:计134-4学号:201358504424成绩:指导教师:刘其成计算机与控制工程学院2016年03月23日软件设计与体系结构作业/实验报告作业/实验一一、软件体系结构.................................3二、作业/实验内容................................3三、问题与解决方案...............................7四、作业/实验收获................................8软件设计与体系结构作业/实验报告作业/实验一一、软件体系结构软件体系结构是控制软件复杂性、提高软件系统质量、支持软件开发和复用的重要手段之一。软件体系结构设计可用于描述Agent与Agent之间的交互和组织结构的规划,因此Agent系统能从良好的体系结构设计中受益。该文整合了图表句法理论和层次谓词变迁网理论,提出一种形式化建模方法,从抽象层(架构)和实现层(动态行为)两方面来构建Agent系统的软件体系结构。模型具有可验证和追踪性,为Agent系统软件体系结构分析与评估提供了良好的基础。二、作业/实验内容①实验目的:理解主程序-子程序软件体系结构、面向对象软件体系结构的原理,掌握他们的实例,并通过编程使他们实现。②实验内容:运行主程序-子程序和面向对象的软件体系结构的实例,完成思考题的五个问题,巩固加深。运行结果:软件设计与体系结构作业/实验报告作业/实验一(2)思考题(作业)的内容1、面向对象软件体系结构与主程序-子程序软件体系结构的区别和联系是什么?答:1、计算机基本的被独立提供出来的程序,它能够调用子程序,而不被任何子程序所调用。它是计算机程序的中心部分。2、包含调用子程序的程序称为主程序。主程序不能被它的子程序调用。主程序和子程序两者是相对的。比如,某主程序在某个过程中调用了子程序A,子程序A在某个过程中又调用了子程序B,那么A对主程序而言是子程序,但对B而言它又成了主程序。主-子程序体系结构在设计上使用层次化的划分方法,通常采用自顶向下的功能化设计方法,面向对象体系结构在设计上使用面向对象的设计方法,可以隐藏对象的内部状态并且要求所有对象间的交互都通过该方法,即进行了数据封装,这也是面向对象编程的基本原理2、从理论上讲,主程序-子程序软件体系结构组件是什么?连接件是什么?特点是什么?上述实验1程序中具体的组件是什么?连接件是什么?答:组件是:主程序,子程序。连接件:调用-返回机制特点:将大系统分解为若干模块(模块化),主程序调用这些软件设计与体系结构作业/实验报告作业/实验一模块实现完整的系统功能。试验1组件是intmain();intmax(a,b)连接件是调用的max(a,b)函数,将实参传入max函数里面完成计算,返回main函数;3、从理论上讲,面向对象软件体系结构组件是什么?连接件是什么?特点是什么?上述实验2程序中具体的组件是什么?连接件是什么?答:组件:类和对象。连接件:对象之间通过功能与函数调用实现交互。特点:①交互性:通过过程调用或类似的协议②封装性:限制对某些信息的访问③多态性:在运行时选择具体的操作④继承性:对共享的功能保持唯一的接口⑤动态绑定:运行时决定实际调用的操作复用和维护。试验2组件是从类的角度:classSpot();classTrans();classTest();三个组件从对象的角度:Spot类的s,p对象,Trans类的ts对象连接件是voidmove(Spotp,intk,inth);Spots=newSpot(2,3);Transp=newTrans(s,4,5);4.编写一个主程序-子程序软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?答:修改原有程序求最小值软件设计与体系结构作业/实验报告作业/实验一#includeiostreamusingnamespacestd;intmin(inta,intb){intz;z=ab?a:b;return(z);}intmain(){inta,b;cinab;couttheminismin(a,b)endl;return0;}试验3组件是intmain();intmin(a,b)连接件是调用的min(a,b)函数,将实参传入max函数里面完成计算,返回main函数;5.编写一个面向对象软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?软件设计与体系结构作业/实验报告作业/实验一功能计算长方形面积ClassMArea{Publicdoublearea(intlen,intwidth){returnlen*width;}}Classoverload{Publicstaticvoidmain(Stringargs[]){MAreaa=newMArea();System.out.println(ob.area(3,0));}}试验4组件是ClassMArea;Classoverload;两个组件连接件是MAreaa=newMArea();三、问题与解决方案在完成实验和思考题(作业)时遇到哪些问题,是如何解决的?问题一:第一段老师给的代码运行不出来解决办法:和同位商量了下,将那个c语言的程序转换成了c++软件设计与体系结构作业/实验报告作业/实验一的程序,完成了任务。四、作业/实验收获答:通过对于软件体系结构的学习,让我不但复习了以前的知识,让我的操作更加得心应手,大家一起合作,竞争,并且让我体验到软件体系结构对于编程的重要性,让我坚定决心学好他,并应用到现实中。