666

201 阅读5分钟

Enterprise Java bEan

Component Object Model

cilent server

browser server

软件体系结构描述语言简称ADL

框架标准是IEEE P1471和Rational

问答题 1.图形用户界面中常用的事件包括哪些。 键盘(点击)事件-(键按下keydown、键释放keyup、按键keyenter) 鼠标(点击)事件-(单击click、双击doubleclick、右击rightclick) 鼠标(拖放)事件-(拖放drag)

2.软件危机产生的原因

1用户需求不明确2缺乏正确的理论指导3软件规模越来越大4软件复杂度越来越高

3.软件体系结构的4+1视图模型包括哪些? 逻辑视图、开发视图、进程视图、物理视图、场景视图

4.类之间关系分为哪四种? 1依赖2关联3泛化(继承),4实现

论述题 1.结合软件体系结构风格,分析东软云医院HIS系统(前端/后端/数据库/整体),分别符合什么样的体系 结构? 后端:面向对象风格;mvc层次结构 前端:仓库风格(超文本系统);mvvm层次结构 数据库:仓库风格(数据库系统) 整体:B/S风格(浏览器/服务器) 整体:独立构件风格(进程通信;事件系统)

2、论述MVC架构的分层及各层的作用(至少3层)。 视图层(ui层/界面层/view层)-数据渲染、用户交互 控制层(controller/web层)-后端给前端提供的服务接口 服务层(业务逻辑层/service层)--业务逻辑的封装,供控制层调用,可调用dao层返回所需的数据, 常分为服务接口层和服务实现层 数据访问层(dao/dal/mapper层)--以接口的形式访问数据持久层(即DB), sql可以写在独立的xml中,也可以写在注解中 数据持久层(数据物理层)--物理数据库(DB) 实体层(entity/pojo层)-临时存储dao层返回的数据/程序中的数据, 供控制层和服务层使用

3.软件设计原则在软件体系结构中起着至关重要的作用,它们指导着软件设计师如何构建高质量的软件系统。以下是一些重要的软件设计原则及其在软件体系结构中的作用: 开闭原则(OCP):开闭原则规定软件实体应对扩展开放,对修改关闭。这意味着软件体系结构应该设计成易于扩展,而不需要修改现有代码。 例如,通过使用接口和抽象类,可以允许新的功能以插件的形式添加到系统中,而不影响现有代码。 单一职责原则(SRP):单一职责原则要求一个类或模块只应有一个引起它变化的原因,即要求类的功能单一。在软件体系结构中,这有助于降低模块间的耦合度,使得系统更加模块化,易于理解和维护。 例如,一个负责用户认证的模块不应同时处理用户数据的持久化。 接口隔离原则(ISP):接口隔离原则要求不应强迫客户端依赖于它们不使用的接口。在体系结构中,这有助于创建更小、更专用的接口,从而减少模块间的耦合。 例如,一个复杂的用户服务接口可以被拆分成多个更小的接口,每个接口只包含一组相关的操作。 依赖倒置原则(DIP):依赖倒置原则建议高层模块不应直接依赖于低层模块,二者都应依赖于抽象。在体系结构中,这有助于解耦模块,使得高层模块更加独立于低层实现。 例如,业务逻辑层不应直接依赖于数据访问层,而是依赖于抽象的数据访问接口。 里氏替换原则(LSP):里氏替换原则指出,子类应该能够替换它们的基类而不会影响程序的正确性。在体系结构层面,这有助于确保组件的可替换性,提高了系统的灵活性。 例如,如果有一个图形渲染系统,基类“Shape”可以被“Circle”或“Rectangle”等子类替换。

Patient(患者) id:String(患者编号) name:String(姓名) age:int(年龄) sex:String(性别) contactinfo:String(联系方式) identityCardNumber:String(身份证号) address:String(地址) haveMedicalRecords:Boolean(有病历本) payType:String(支付类型) +getInfo(id:String):PaientEntity(查询患者信息) +getAllInfo():List<PatirntEntity(查询所有患者信息) +updateInfo(id:String):int(更新患者信息) +addInfo(map:Map):int(增加患者信息) +logoutInfo(id:String):int(注销患者信息) +wiewSchedule(date:Date):ScheduleEntity(查看排班) +pay(id:String):int(支付挂号费)

Appointment(预约) id:String(预约编号) patientId(患者编号) doctorId(医生编号) appointmentTime:Date(预约时间) status:String(预约状态) +makeAppointment()(创建预约) +cancelAppointment()(取消预约) +getStatus(id:String):String(查看预约状态) +printAppointment(id:String):AppointmentEntity(打印预约挂号单)

Doctor(医生) id:String(医生编号) name:String(医生姓名) department:String(科室) specialty:String(擅长领域) +diagnose(id:String):int(诊断) +viewSchedule(date:Date):ScheduleEntity(查看排班) +viewAppointment(id:String):AppointmentEntity(查看预约)

用例图: 病人:取药,扩展:持有处方单、持有缴费单;退药:扩展:持有缴费单 药房工作人员: 查看缴费信息,包含:核对取药人员信息、提醒缴费;核对处方信息:扩展:取药 ; 取药:扩展:发放药品; 验收退回药品 扩展:退费退药