博文简要信息表:
项目 | 内容 |
---|---|
软件工程 | https://www.cnblogs.com/nwnu-daizh/ |
本次实验链接地址 | https://www.cnblogs.com/nwnu-daizh/p/10980707.html |
团队名称 | 你们都是魔鬼吗 |
作业学习目标 | (1)掌握软件编码实现的工程要求。 |
任务1:团队软件项目设计完善:
1)在团队项目Github仓库中上传文档《软件设计方案说明书》。
家庭理财APP《软件设计方案说明书》: https://github.com/201671010451/shiyanqi
2)在团队博客总结中陈述项目技术设计是如何体现下列原则的:
- 抽象:是传统逻辑用以指称现实中没有一个或一类具体事物与之相适应(即其外延不是一个或一类事物),而仅以依存于某个或某类事物的性质和事物与事物之间的关系为其反映对象的概念。与“具体概念”相对。
- 内聚/耦合/模块化:
- 内聚,高内聚是另一个普遍用来评判软件设计质量的标准。内聚,更为专业的说法叫功能内聚,是对软件系统中元素职责相关性和集中度的度量。如果元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性,反之则为低内聚性。高内聚要求软件系统中的各个元素具有较高的协作性,因为在我们在完成软件需求中的一个功能。
- 耦合,耦合就是对某元素与其它元素之间的连接、感知和依赖的量度。这里所说的元素,即可以是功能、对象(类),也可以指系统、子系统、模块。假如一个元素A去连接元素B,或者通过自己的方法可以感知B,或者当B不存在的时候就不能正常工作,那么就说元素A与元素B耦合。耦合带来的问题是,当元素B发生变更或不存在时,都将影响元素A的正常工作,影响系统的可维护性和易变更性。同时元素A只能工作于元素B存在的环境中,这也降低了元素A的可复用性。。
模块化,把数据结构和操作这些数据的方法紧密的结合在一起所构成的模块,本次设计采用模块化,能够更好地管理数据。
信息隐藏和封装:信息隐藏是目的,而封装则是藉以达到这个目的的技术。封装可以被定义为对对象的内部数据表现形式和实现细节进行隐藏。
界面和实现的分离:采用MVP构架,让activity只做ui的变化,数据的展示,让presenter做数据的处理,数据的传递,让Model做数据的网络获取。这样就可以将原本全部存在Activity的成百上千行代码分离出来,增加代码可读性。只不过增加了类的个数。
- 错误情况处理:
- 变量名不存在:NameError:name 'b' is not defined
- java.lang.ClassNotFoundException(指定的类不存在):这里主要考虑一下类的名称和路径是否正确即可,通常都是程序试图通过字符串来加载某个类时可能引发异常。比如:调用Class.forName();或者调用ClassLoad的finaSystemClass();或者LoadClass()
- 索引错误:IndexError: list index out of range
- 程序模块对于运行环境、关联模板、输入输出参数有什么假设?
- 设计方案对于应对变化的灵活性:
- 程序级别的灵活性,主要通过参数化配置程序低级别的灵活性。
- 高度可配置性,包括各种虚拟机参数、属性文件和XML配置文件。
- 脚本,脚本是扩展复杂功能的利器,但对用户的要求也比较高。通常应该面向开发人员的工具产品。或者在产品部署之前由现场实施人员来完成。
- 插件系统或者模块化平台,插件系统平台从理论上提供了无数的可扩展性。比如Eclipse和NetBeans平台。这儿是抽象的最高点,产品可以一无用处,也可以无所不能。完全看市场有什么插件,用户怎么配置。
设计方案的数据处理能力:
(1)分析推理能力和动手实践能力
(2)数据测量和数据管理
(3)可视化分析
(4)语义引擎
(5)算法- 设计方案的软件重用情况:
- 软件重用被视为解决软件危机,提高软件生产率和质量的有效途径,近年来的软件重用研究的结果表明,基于体系结构,物定域的重用能够有很大的改进。是提高软件开发生产率和目标系统质量的重要途径。本次设计采用了源代码重用、架构重用、应用框架的重用、业务建模的重用、文档及过程的重用、软构件的重用、软件服务的重用。
- 设计中采用了哪些启发式规则?
本次设计中采用的启发式规则有设计结果应该清晰易懂;一般-特殊结构的深度应适当;设计简单的类;使用简单的协议;使用简单的服务;最小设计变动
任务2:团队软件项目编码实现,要求如下:
- 搭建并配置项目集成开发环境;
- Widnows 7操作系统
- Eclipse 安装ADT扩充套件或Android studio的安装
- Android SDK的安装
- JDK的安装
真机测试或用虚拟模拟器(genymotion、夜神)
小组内成员共同商议制定团队项目编码规范, 并在团队项目Github仓库中上传文档《软件编码规范说明书》;
家庭理财APP《软件编码规范说明书》: https://github.com/201671010451/shiyanqi
- 按照软件设计方案说明书要求,选择计算机语言协作编写软件代码,开发软件关联数据库创建程序,进行必要的代码测试;
- 项目实现
- 登录页面展示
- 测试遇到的问题
(1)代码编写有错误,导致运行不出来
(2)使用真机测试出现了闪退
(3)出现黑屏现象 - 上传本周已完成项目源码到团队项目Github仓库。
源码: https://github.com/201671010451/shiyanqi
任务3:在团队博客发布博文,结合燃尽图陈述本实验执行过程,上传团队实施本次作业的场景照片,描述团队成员的具体分工、占整个作业任务的工作量比例及完成各自任务的实际时间
- 燃尽图
- 团队实施本次作业的场景照片
团队分工
团队成员 分工 所占比例 任务实际完成时间 杨志霄 撰写博客以及编码测试 30% 4h 焦少梅 撰写软件编码规范说明书 30% 4h 王奕涵 总结项目技术设计的原则 30% 4h 王雨竹 《软件设计方案说明书》 25% 4h
任务4:总结
本次试验我们小组大家都积极参与进来,分工明确,各司其职。在系统设计中,首先进行需求分析,把系统和具体的实际的家庭中的业务结合起来,明确所设计的系统所具备的功能和解决的问题。然后通过可行性分析,从经济,技术,社会三方面进行阐述和说明系统设计的必要性和可行性,然后就是业务流程和数据流程图以及数据字典。对于要做的系统已经有了一个比较安全的了解后,再往下就是数据可和界面的设计。通过班次的作业,我们小组觉得开发一个与App的关键是需求分析,只有通过详细的调查分析,才能确定系统所需要实现的功能和解决的额问题,开发过程中的难题和和关键是业务流程分析和数据流程分析,这关系到系统整体性和完整性,是系统实现各个模块之间调用的理论基础。
*****