软件工程论文(最终版).doc_第1页
软件工程论文(最终版).doc_第2页
软件工程论文(最终版).doc_第3页
软件工程论文(最终版).doc_第4页
软件工程论文(最终版).doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

概要设计说明书 学院:计算机科学与技术学院 班级:0491101、0491102 任课老师:陶春梅 组长: 陈迪(2011211587)组员:詹芳祥(2011211554)吴杰(2011211568)许冶金(2011211556)何旺(2011211550)刘晓杰(2011211973)赵莹(2011211997)曾甜(2011211695) 目录E.1 引言2E.1.1 编写目的2E.1.2 背景3E.1.3 定义3E.1.4 参考资料4E.2 总体设计4E.2.1 需求规定4E.2.1.1 对功能的描述4E.2.1.2 对性能的规定5E.2.1.3 输入输出要求6E.2.1.4 数据管理要求7E.2.1.5 故障处理要求7E.2.1.6 其他专门要求7E.2.2 运行环境8E.2.2.1 设备8E.2.2.2 支持软件8E.2.2.3 接口8E.2.2.4 控制9E.2.3 基本设计概念和使用说明9E.2.3.1 设计理念9E.2.3.2 使用说明9E.2.4 结构9E.2.5 功能需求与程序的关系10E.2.6 有待改进的方面10E.3 接口设计10E.3.1 用户接口10E.3.2 外部接口22E.3.3 内部接口22E.4 运行设计24E.4.1 运行模块组合24E.4.2 运行控制24E.4.3 运行时间24E.5 系统数据结构设计24E.5.1 逻辑结构设计要点24E.5.2 物理结构设计要点25E.5.3 数据结构与程序的关系25E.5.4 主要代码的解释26E.6 系统出错处理设计27E.6.1 出错信息27E.6.2 补救措施28E.6.3 系统维护设计28E.1 引言E.1.1 编写目的A. 概要设计说明书的目的 本文档的目的旨在推动软件工程的规范化,使设计人员遵循统一的概要设计书写规范,节省制作文档的时间,降低系统实现的风险,做到系统设计资料的规范性与全面性,以利于系统的实现、测试、维护、版本升级等。本文档用于软件设计阶段的概要设计,它的上游(依据的基线)是需求分析规格书,它的下游是系统详细设计说明书,并为详细设计说明书提供测试的依据。B.预期的读者该文档使用人员包括:l 系统分析人员l 系统设计人员l 系统编码人员l 系统测试人员l 系统维护人员E.1.2 背景A.待开发软件系统的名称 记得V2.0B.任务分配及运用该软件的计算站1.E.1引言(目录)-曾甜2.E.2总体设计-詹芳祥、吴杰、陈迪3.E.3接口设计和E.4运行设计-许冶金、何旺4.E.5系统数据结构设计-刘晓杰5.E.6系统出错处理设计(排版)-赵莹适用手机系统:智能手机Android2.2以上用户: 喜爱写日记的android智能手机用户。C. 开发平台Java JDK Eclipse Android ADT JavaSDKE.1.3 定义序号术语名称术语定义1总体结构软件系统的总体逻辑结构。按照不同的设计方法,有不同的总体逻辑结构。若采用传统的面向功能或面向数据的结构化设计方法,则总体逻辑结构为一树形的功能模块结构图。若采用时尚的面向对象或面向部件(组件)的设计方法,则总体逻辑结构为部件(组件)的组装图。2外部接口本软件系统与其它软件系统或网站之间的接口,接口设施可以是中间件。接口描述包括:传输方式、带宽、数据结构、传输频率、传输量(兆/秒)、传输协议。3数据结构数据结构包括:关系数据库表的结构、对象数据库表的结构、变量说明。4概念数据模型关系数据库的逻辑设计模型,叫概念数据模型。主要内容包括一张逻辑E-R图及其相应的数据字典。5物理数据模型关系数据库的物理设计模型,叫物理数据模型。主要内容包括一张物理表关系图及其相应的数据字典。6视图在基表之上建立的一张虚表,叫视图,它具有物理表的许多性质,在授权上很有用。7角色数据库中享有某些特权操作的用户,叫角色。8子系统具有相对独立功能的小系统叫子系统。一个大的软件系统可以划分为多个子系统,每个子系统可由多个模块或多个部件组成。9模块具有功能独立、能被调用的信息单元叫模块。模块是结构化设计中的概念。10部件(组件)具有功能独立、能被调用的、且已包装的信息单元叫部件(组件)部件是面向对象设计中的概念。11内部接口软件系统内部各子系统之间、各部件之间、各模板之间的接口,叫内部接口。接口描述包括:调用方式、入口信息、出口信息等。E.1.4 参考资料1.用户需求分析报告2.数据库设计规范3.命名规范4.李刚. 疯狂Android讲义M. 北京:电子工业出版社, 2012. 1-8445.Bruce, Eckel. Thinking in JavaM. 北京:机械工业出版社, 2007. 1-880E.2 总体设计E.2.1 需求规定E.2.1.1 对功能的描述首次进入应用,程序会要求用户设置一个账户及密码,只有知道该账户及密码才能浏览日记内容。进入主界面后,能够选择写日记或者通过两种不同的方式浏览你的日记,让日记的回忆方式更加有趣。在日记中我们还加入了百度地图接口,能够十分便捷的记录你的地点。另外,程序的日记备份功能帮你将日记保存,即使软件丢失,日记依然能够恢复。程序中自带日历,生日提醒的小功能,记录好友的生日后,能在第一时间给您发送生日提醒的推送,并引导您发送祝福短信。E.2.1.2 对性能的规定E. 灵活性a) 操作方式上的变化在主界面中,你可以进行功能选择:写日记,以日记本或者日记册的方式进行查看,记录好友生日进行实时提醒。如下图:图2-1b) 运行环境的变化为了测试软件的使用情况,我们针对不同的机型进行了软件测试,下表是测试情况:品牌机型android版本测试结果三星I9300android 4.1.1流畅运行小米2Sandroid 4.01流畅运行魅族MX2android 4.1.1流畅运行中兴U880android 2.2流畅运行三星s5830android 2.3流畅运行HTCX920eandroid 4.01流畅运行索尼LT18iandroid 2.3流畅运行VIVOX3tandroid 4.2.1流畅运行2-1表c) 版本更新情况目前我们已经上线的有两个版本,分别是版本1.1和版本2.0。2.0版本相比于之前的版本1.1,我们在系统备份方面进行了优化,最大的改进是在UI界面的全面设计。E.2.1.3 输入输出要求在主界面选择写日记功能之后,你会进入如图2-2的界面: 图2-2 图2-3在该界面中输入标题,并在连接网络的情况下,点击定位键,然后在下面的方框中写入日记内容,最后点击右上角的图标进行操作的保留。示例图如图2-3:想要查看日记的内容你可以选择日记本或者日记册的方式进行查看,如下图2-4,2-5: 图2-4 图2-5E.2.1.4 数据管理要求进行了所需的数据库的建立、数据库的调优、数据库的重组、数据库的重构、数据库的安全管控、报错问题的分析和汇总和处理、数据库数据的日常备份。E.2.1.5 故障处理要求通过我们的软件测试,在版本1.1中,由于输入量较大会导致软件的崩溃,因为没有进行备份功能的设计,所以会使得数据遗失。但是在之后改进的版本2.0中,我们实现了软件的备份功能,在软件崩溃的情况下我们仍能很好的保存数据,不会让用户有遗失数据的风险。E.2.1.6 其他专门要求a) 可维护性我们在调试中或者在用户反馈中发现了软件的不足,能够及时解决问题,并在新版本中进行优化。b) 可靠性在数据存储方面,我们实现了数据的备份操作,能够有效的避免数据遗失。c) 运行环境可转换性在软件的兼容性测试中,我们在多态机型上进行了测试,最终得出了软件适应性良好的结论。E.2.2 运行环境E.2.2.1 设备a) 测试机型号在软件的测试中,我们在多种机型上进行了测试,分别是:三星I9300、s5830,小米2S,HTC X920e,Vivo X3t,索尼LT18i等。b) 部分测试机硬件参数三星I9300:RAM容量:1GB,ROM容量:16GB,核心数:四核;小米2S:RAM容量:2GB,ROM容量:32GB,核心数:四核;HTC X920e:RAM容量:2GB,ROM容量:16GB,核心数:四核。c) 支持的手机系统Android2.2、Android 2.3、Android 4.0.1、Android 4.1.1、Android 4.2.1。E.2.2.2 支持软件a)支持Android2.2Android 4.2.2手机操作系统,b)开发采用windows 7操作系统下的Eclipse软件搭建的Android软件开发平台。c)运行环境为Eclipse下的Android虚拟机以及Android手机。E.2.2.3 接口a)软件的定位功能使用了免费的百度地图API接口,利用数据流量进行定位。b)软件的发送短信祝福的功能使用了系统自带的短信功能的接口进行短信发送。c)生日提醒功能调用了系统通知的接口进行通知弹出的提醒。E.2.2.4 控制该软件是通过个人登录管理,登录时需要输入密码,以保证用户的隐私。E.2.3 基本设计概念和使用说明E.2.3.1 设计理念许多人都有写日记的喜好,但是纸质的日记不能很好的保密:写久了,积累的多了也容易破损丢失。而现代生活中,人手一部甚至多部手机的现象早已经司空见惯,智能手机的出现,智能应用的开发让我们的生活越来越便利。因此我们开发了这个应用。E.2.3.2 使用说明1. 首次进入程序有功能引导界面,并要求建立账户。2. 主界面可以进入日记的书写,日记册,日记本,生日提醒以及日历。3. 主界面右划为菜单栏,还可进入关于我们,密码修改,祝福短信的发送,日记备份还原等界面。E.2.4 结构E.2.5 功能需求与程序的关系 程序1BirthdayServiceSend_Mesg2Activity$1BaseCalendarBookUserDBHelperBackupAndRestoreBookAdapter写日记生日提醒短信祝福备份还原账号管理日记本日历E.2.6 有待改进的方面我们设计的软件正在进行实时更新,和前一个版本1.1相比,在版本2.0中我们主要修复了一些操作上的bug以及系统备份方面的优化,同时我们在界面设计上进行了全新的设计。在接下来的版本中,我们会在界面UI以及日记本功能上进行完善。E.3 接口设计E.3.1 用户接口1.Activity1.1建立和配置Activity(1)创建Activity子类(2)覆盖onCreate方法(3)用setContentView方法定义屏幕布局(4)初始化UI元素变量(5)处理UI元素变量1.2Activity的生命周期(1)Activity三种状态活动状态Activity于主屏幕的最上层,能够与用户交互暂停状态 Activity失去焦点,部分界面可视,不能与用户交互停止状态Activity不可视,但保持所有的状态信息(当Activity暂停或停止状态时,系统可能由于低内存缘故会销毁该Activity,如果这样,再次打开Activity时,就会从onRestart开始,恢复以前状态)(2)Activity生命周期过程onCreate()启动Activity后,进行初始化onStart()当Activity从主屏幕显示时,调用该方法onRestart()当Activity从停止状态进入活动状态时,调用该方法onRusume()当Activity与用户交互,接受用户数据时,调用该方法。此时它位于进程堆栈顶部onPause()当Activity进入暂停状态时,调用该方法。一般用来保存持久数据或释放资源onStop()当Activity进入停止状态时,调用该方法。onDestroy()在Activity终止前,调用该方法。2.视图(View)2.1使用XML布局文件控制(1)保存在reslayout目录(2)引用布局文件(3)引用布局文件的视图2.2在代码中控制3.定制组件3.1继承原来组件3.2组合原有组件3.3完全重写组件(1)带图像的TextView(继承原来组件)(2)带文本标签的EditText(组合原有组件)(3)可更换表盘的指针时钟(完全重写组件)4.对话框4.1 双选择按钮对话框(确定/取消) 4.2 三选择按钮对话框(确定/忽略/取消) 4.3 列表对话框(单选对话框) 4.4 列表对话框(多选对话框)4.5 进度条对话框(圆形) 4.6 进度条对话框(长方形) 4.7 自定义对话框(登录对话框) 4.8 自定义对话框5.Toast和Notification5.1 Toast(显示提示信息框)(1)显示文本信息 (2)添加视图对象来显示特定信息 5.2 Notification(状态栏提醒信息) 6.菜单6.1 创建选项菜单 6.2 设置菜单的图像 6.3 菜单选择事件监听器6.4 动态增加,修改和删除菜单项6.5 子菜单(带复选框和选项按钮)6.6 上下文菜单 7.布局7.1 框架布局(FrameLayout) 7.2 线性布局(LinearLayout) 7.3 相对布局(RelativeLayout) 7.4 表格布局(TableLayout) 7.5 绝对布局(AbsoluteLayout)部分目录如下:部分源码如下:E.3.2 外部接口本软件同外部无软件接口,与手机存在按键与按钮映射方面的接口E.3.3 内部接口各模块之间存在着内部联系,有些模块之间存在着信息共享的关系,用图来直观的表示这些接口:内部接口外部接口:E.4 运行设计E.4.1 运行模块组合1.首次进入程序有功能引导界面,即用户登录模块,要求建立账户。2.主界面可以进入日记的书写,日记册,日记本,生日提醒以及日历,即进入功能模块。3.主界面右划为菜单栏,还可进入关于我们,密码修改祝福短信的发送,日记备份还原等界面。E.4.2 运行控制首次进入应用,程序会要求用户设置一个账户及密码,只有知道该账户及密码才能浏览日记内容。进入主界面后,能够选择写日记或者通过两种不同的方式浏览你的日记,让日记的回忆方式更加有趣。保密的同时也十分方便,随地写,随地浏览。日记中加入了百度地图接口,能够十分便捷的记录你的地点。另外,程序的日记备份功能帮你将日记保存,即使软件丢失,日记依然能够恢复。程序中自带日历,生日提醒的小功能,记录好友的生日后,能在第一时间给您发送生日提醒的推送,并引导您发送祝福短信,再也不用担心忘记好友的生日。E.4.3 运行时间在运行APP时,APP会一直占用系统时间,但此APP所占系统资源较小,不会影响手机正常使用。在退出软件后,此时系统占用为零,所调用的是手机自带定时工具来完成其生日提醒等功能模块的功能。E.5 系统数据结构设计E.5.1 逻辑结构设计要点名称类型长度系统时间keystring16(yyyy-mm-dd HH:mm)生日timestring姓名(别人)fnamestring用户名(自己)sNamestring密码sPwstring必须大于6DiarydiaryTitlestringdiaryDatestringdiaryLocatestringdiaryContentstring这个程序中还有大量的临时变量,如private void setNotify()中的Notification notify = new Notification(),它的存在最大的意义就是将一些分散的数据组成某个数据结构,便于阅读和输出。E.5.2 物理结构设计要点系统时间系统获取curDate,通过String key =sdf.format(curDate)获得(sdf是格式化函数,SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm);)生日系统获取prefdate,通过String time = prefdate.getString(key, null);获得姓名(别人)系统获取fName,通过fName =prefname.getString(key, null)获得用户名(自己)系统获取username,通过userName.getText().toString()获得密码系统获取accountPw,通过accountPw.getText().toString()获得Diarydiary定义为private HashMap diaryMap,通过调用函数diaryMap.put(diaryTitle,cursor.getString(cursor.getColumnIndex(title)来给各项参数赋值E.5.3 数据结构与程序的关系创建访问修改存储系统时间public void onReceive()UpdateDiary.javaUpdateDiary.java生日public void onReceive()BirthdayList.java,BirthDayRemind.javaBirthdayList.java姓名public void onReceive()private void setNotify()用户名CreateAccount.javaCom.db下有5个带有DB字母的java文件都涉及数据库,都涉及到对用户名,密码的操作密码CreateAccount.javaDiaryDiaryBook.javaDiaryList.javaAddDiary.javaDiaryList.javaE.5.4 主要代码的解释我们这个项目主要的代码在src和res/layout下。src文件夹里面主要是每个页面里面的组件有哪些,res/layout下主要是页面里面的布局。由于文件比较多,我就选两个讲一下。比如calendar.xml(在res/layout文件夹下)xmlns:android指的是xml文件的命名空间android:id=+id/mianlayout:定义了布局的变量名称为mainlayout,会自动写进对应的java文件,在java文件中会生成内部类id,可在主程序里面调用id.mainlayout来获取这个布局变量实体。android:orientation=vertical:这个布局是垂直布局。水平布局的话是horizontalandroid:background=drawable/calendar表示引用自己项目里的文件calendar,如果后面是android:drawable则表示引用android系统自带的的。如果显示#00000000,表示自定义的颜色,即黑色。layout _width ,layout_heigh可以直接设置相对于父容器的大小,一般是fill_parent(布满整个屏幕),wrap_content(强制性地使视图扩展以显示全部内容),match_parent(和fill_parent差不多)。android:drawSelectorOnTop=false表示点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的。意思相当于当我们要删除某个日记时,将手指放在记录上屏幕会有的反应。BirthdayReceiver.java和BirthdayService.java(在src文件夹下)BirthdayReceiver和BirthdayService两个文件是生日提醒的服务功能。BirthdayReceiver.java中的public void onReceive(Context context, Intent intent)这个函数表示将用户输入的生日,姓名保存起来。private void setNotify(Context context, Intent intent)表示当时间到的时候发短信祝福。package com.agimind.widget;/包的地址import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import com.agimind.sidemenuexample.R;import com.dcs.test.MainActivity;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.media.MediaPlayer;import android.os.Bundle;/导入包,包括java自身提供的和android自身提供的public class BirthdayReceiver extends BroadcastReceiver SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm);/将得到的日期格式化,以后可以用它将系统时间格式化为上面的格式String fName=;public void onReceive(Context context, Intent intent) SharedPreferences prefdate = context.getSharedPreferences(birthdy,context.MODE_PRIVATE);/获取生日SharedPreferences prefname = context.getSharedPreferences(name,context.MODE_PRIVATE);/获取名字final java.util.Calendar c = java.util.Calendar.getInstance();Date curDate =new Date(System.currentTimeMillis();/得到系统时间String key =sdf.for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论