软件工程2021:第1次作业—— 自我介绍 + “分析" 软件(热身运动)

自我介绍:

我叫卢桐桐,来自于江苏省淮安市。现在就读于南通大学,学习的专业是大数据。转眼间,今年已经大三了,在这之前的两年里通过一些课堂上的学习以及自己课外的学习,到目前为止自己对计算机以及当前流行的大数据有了一些初步的认识。当然,要想学习这个专业并继续深造,我目前所了解到的东西是远远不够的,这也就要求我要更加深刻并认真的去继续学习。除了学习以外,课余时间我还喜欢看书听歌,以此来丰富自己的生活。

 

分析软件:

 通过查阅资料,我了解到一些关于软件构建的知识,有一篇文章对软件构建的步骤做了一些具体的阐述:1.如何建立起领域模型:途径一:分析业务中的业务流和业务规则,从中归纳出功能的基本单位,这个基本单位就是领域模型之一或领域模型的一部分。途径二:从原型界面中观察显示的数据,它们是领域模型的外在体现。途径三 :从持久化介质中推导领域模型,如从数据库的表结构和ER图中推导领域模型.途径四:向领域专家问询业务流程中的核心单元是什么,甚至自己进入问题领域去学习探究。途径五:将不熟悉的领域和相似的自己熟悉的领域做对照,类比出领域模型。途径六:从已有的知识系统中学习,参考功能相似的软件代码,向优秀代码学习。2.如何完善领域模型:领域模型是经常发生相互联系的,上一步只是建立了孤立的,仅能表现单个领域对象信息的模型,要使它们丰富完善起来,需要做以下工作:1) 从程序的功能角度入手,考虑需要几个领域对象才能完成这个功能,再由此考虑领域对象之间的联系.这方面的典型例子是需要雇员类和资源类的协助,借贷关系才能完整的表现出来。2) 从领域对象本身入手,考虑领域对象之间是否有级联,回溯,包含等常见关系.如个人信息包含地址信息,公司类和雇员类的级联关系,雇员类查找自己所属公司的回溯关系等。3) 从反持久化入手,考虑把一个领域对象从存储介质中提取出来需要那些领域对象的帮助,这些领域对象是通过那种方式联系在一起的,这方面的典型例子是表之间的主键和外键,领域对象同样也要具有相对应的成员变量。3.领域对象设计完成之后一旦领域对象设计完成,程序的设计工作就可以说完成了一大半,其余工作都是围绕领域对象来进行,这些工作有:1) 从考虑怎么为领域对象服务入手,为领域对象设计服务类,服务类的常用方法有添加,删除,更新,查询领域对象四种以及从ID取得一个领域对象,判断持有某个ID的领域对象是否存在等.具体的操作实际上由服务类的持久层类成员完成,服务类实际上起到的是一个领域对象上下传输通道的作用.一般来说Service层的六大函数是add,delete,update ,search, hasId(String id), getById(String id))再加上一些用于查询的函数。2) 考虑到实现服务类中要求的方法,设计持久层类,其中的成员函数基本是服务类的六大方法的具体化,持久层类实际上起到一个把领域对象存储到持久介质中和从持久介质中取出领域对象的作用.如果持久层是关系型数据库的话,还需要设计领域对象对应的表以及表之间的关系ER图。3) 从功能的角度设计控制层的函数和类,在这里控制层类调用服务层类来操作领域对象,业务逻辑主要体现在这里.4) 从领域对象的输入输出和表现的角度设计各个表现层类.设计这一层类时应该从用户立场考虑而不是从代码编写者的立场考虑,怎么让用户感到直观,方便,快捷就怎么设计界面.5) 在设计上述层次的同时,考虑到减少重复代码,突出主干代码而设计实用层类,把共通的操作都归纳到一起,这样既提高的代码的清晰程序和可读性,也使修改变得方便容易起来. 6) 如果有些变量在使用过程中是可能发生变化的,如数据库的地址,业务中一些硬编码信息等,这样的量就不该硬编码(Hard Code)在程序中,否则修改后还需要重新编译,打包,发布.而应该把这些量写在XML形式的配置文件里,在程序启动时读取.4.软件的六大层次上面的工作完成后,我们会得到以下六大层次:1) Domain层  2) Service层(允许Control层访问,能访问Persistence层  3) Persistence层(也称为DAO层,只允许Service层访问  4) Control层(访问Service层和View层  5) View层(仅被Control层访问)  6) Util层 5.逐步完善六大层次中类的各个具体函数  6.绘出各层次类的静态类图  7.最后的步骤:子程序内部的设计

 

根据我使用软件的经验来说,我认为作为一个合格且取得一定市场成功的软件来说,会具有以下三点令人认可的软件价值:1.实用性:一个软件诞生的根本目的是为了实现用户的使用,而要想拥有广大的用户市场,该软件则必须具备一定实用性,从而达到吸引用户的目的。那么在开发软件的过程中,就要求开发者要能够切实了解并掌握用户的需求,从而通过一系列手段达到该软件的实用性。2、便捷性:软件在具有一定强大功能的基础上能实现便捷的操作也会成为该软件的一亮点,而为了实现这种便捷性,软件开发者在开发软件过程中应当注意简化操作流程或通过强化操作指引来实现用户操作的方便快捷,例如钉钉的强大功能下,同时具备着详细且理解的操作指引,为用户的使用增加了很大的便捷性。3、保密性:随着网络的迅猛发展,用户的网络信息也出现很多问题,最重要的就是信息泄露问题。所以一个软件的保密性也成了用户认为软件价值所必需具备的条件,这也就要求软件开发者在开发过程中不可忽视信息保密这一功能,应当加强密保手段,实现对用户信息的保密。

 

posted @ 2021-09-04 14:32  LTTbiu  阅读(34)  评论(1编辑  收藏  举报