软件工程专业毕业设计论文内容模板.docx
- 文档编号:10331499
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:26
- 大小:217.43KB
软件工程专业毕业设计论文内容模板.docx
《软件工程专业毕业设计论文内容模板.docx》由会员分享,可在线阅读,更多相关《软件工程专业毕业设计论文内容模板.docx(26页珍藏版)》请在冰豆网上搜索。
软件工程专业毕业设计论文内容模板
本科毕业设计论文模板〔软件开发类〕
1绪论
1.1研究背景(合并1.2)
春天里来百花香,怎么会不让人沉醉呢?
美丽的花自然好看,但人的创造力更是无边,花艺赋予了鲜花更多的话语表达,想不想接触甚至做出更多美好的花艺作品呢?
「花田小憩」不仅仅是有专业的花艺教学内容,它还是一个活泼的百万花艺爱好者社区。
在这里,你可以看到各式各样的话题讨论,不仅限于花艺,还延伸至家居、植物、杂物等生活美学领域。
「花田小憩」还提供了众多高清花艺壁纸,供你下载换桌面,可以适配各种屏幕尺寸。
的美观再也不愁了。
「花田小憩」是一款花艺爱好者不容错过的生活应用。
在这里,收获的不仅仅是花艺知识,还有同道中人和美的生活方式。
让你的节奏,慢下来,美下去。
作为一个植物生活美学平台,「花田小憩」还提供跟花艺与生活美学相关的物品贩卖,如鲜花、器皿、干花、书籍等。
你可以在这里寻找生活的美。
「花田小憩」创办初衷是想为所有喜欢植物和美学的人们,通过花草与时间的叠加,营造一个小而美的精致生活。
希望能让用户在繁琐的生活之中,享受一种静雅恬淡的生活之美,制造一份专属的美学生活态度。
1.2研究开发现状分析
〔1〕研发现状:
现有系统解决领域问题及其技术运用现状的分类、分析,优缺点分析:
总结现有成果的优缺点;〔2〕系统开发的必要性;在上述分析的根底上,说明工程研究开发的必要性。
1.3主要研究内容.
〔1〕技术路线:
采用什么技术、方法、环境与工具;〔2〕系统特征:
解决的关键问题〔解决什么问题〕、到达什么目标,实现什么功能。
1.4本文的组织结构
此文的分为六局部,其中第一局部为绪论,主要介绍App的研究背景以及国内外形势,第二局部为相关技术和工具综述,主要分为Android技术的讲解、Android应用程序的介绍、Java开发方面的知识、C/C++开发方面的知识、硬件抽象层的概述、系统内核层的讲解、以及Android的平安权限机制的深入探讨、Android四大组件中Activity的理解以及Android应用程序的框架,还有Android系统维护方面的相关知识。
2.相关技术和工具综述
2.1Android技术
Android是一种以linux为根底的开放源代码操作系统,主要使用于便携设备。
目前尚未有统一中文名称,中国大陆地区较多人使用“安卓〞或“安致〞。
Android操作系统最初由AndyRubin开发,最初主要支持。
2005年由谷歌收购注资,并组建开放联盟开发改进,逐渐扩展到平板电脑及其他领域上。
Android的主要竞争对手是苹果公司的ios以及RIM的BlackberryOS。
2021年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2021年2月数据,Android占据全球智能操作系统市场52.5%的份额,中国市场占有率为68.4%。
Android的系统架构和其它操作系统一样,采用了分层的架构。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
Android是以Linux为核心的操作平台,作为一款开放式的操作系统,随着Android的快速开展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢送,成为真正意义上的开放式操作系统。
在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程〔如:
python、lua、tcl、php等等〕,还有其他诸如:
QT〔qtforandroid〕、Mono〔monoforandroid〕等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。
另外,谷歌还在2021年特别发布了针对初学者的AndroidSimple语言,该语言类似Basic语言。
而在网页编程语言方面,JavaScript,HTML5等等都已经支持Android开发。
2.1.2Android应用程序
早期的Android应用程序开发,通常通过Android SDK〔Android软件开发包〕下使用Java作为编程语言来开发应用程序,但通过不同的软件开发包,那么使用的编程语言也不同。
例如开发者可以通过Android NDK〔Android Native开发包〕使用C语言或者C++语言来编程语言开发应用程序。
同时谷歌还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的Visual Basic语言。
此外,谷歌公司还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。
2.1.3JAVA开发方面
Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。
考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。
2.1.4C/C++开发方面
早期的Android开发只支持Java作为编程语言开发应用程序,因而使得其他语言开发者只能望而却步。
2021年4月,谷歌正式对开发者发布了Android NDK,NDK允许开发者使用C/C++作为编程语言来为Android开发应用程序,初版的NDK使得开发者看到了C/C++在Android开发中的希望。
但是,当前版本的NDK在功能上还有很多局限性:
NDK并没有提供对应用程序生命周期的维护;NDK也不提供对Android系统中大量系统事件的支持;对于作为应用程序交互接口的UI API,当前版本的NDK中也没有提供。
但是相对于初版的NDK,现在的NDK已经进行了许多重大的功能改进。
由此可见,NDK仍然需要完善和开展,相信未来随着NDK的开展,NDK可以做得更多更好。
2.1.5硬件抽象层
Android 的 HAL〔硬件抽象层〕是能以封闭源码形式提供硬件驱动模块。
HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考虑驱动程序实现的前提下进行开展。
HAL stub 是一种代理人〔proxy〕的概念,stub 是以 *.so 档的形式存在。
Stub向HAL“提供〞操作函数〔operations〕,并由 Android runtime 向 HAL 取得stub的operations,再callback这些操作函数。
HAL 里包含了许多的 stub〔代理人〕。
Runtime 只要说明“类型〞,即moduleID,就可以取得操作函数。
2.1.6系统内核
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。
因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。
Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。
Android 为了到达商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。
bionic/libc/kernel/ 并非标准的kernel header files。
Android 的 kernel header是利用工具由 Linux kernel header 所产生的,这样做是为了保存常数、数据结构与宏。
2.1.7平安权限机制
Android本身是一个权限分立的操作系统。
在这类操作系统中,每个应用都以唯一的一个系统识别身份运行〔Linux用户ID与群组ID〕。
系统的各局部也分别使用各自独立的识别方式。
Linux就是这样将应用与应用,应用与系统隔离开。
系统更多的平安功能通过权限机制提供。
权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。
Android平安架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。
这其中包括读写用户隐私数据〔联系人或电子邮件〕,读写其他应用文件,访问网络或阻止设备待机等。
安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。
从用户角度看,一款Android应用通常会要求如下的权限:
拨打、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取状态或识别码、精确的〔基于GPS〕地理位置、模糊的〔基于网络获取〕地理位置、创立蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、防止待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。
一款应用应该根据自身提供的功能,要求合理的权限。
用户也可以分析一款应用所需权限,从而简单判定这款应用是否平安。
如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比拟可疑。
编辑本段系统组件
Android开发四大组件分别是:
活动(Activity):
用于表现功能。
效劳(Service):
后台运行效劳,不提供界面呈现。
播送接收器(BroadcastReceiver):
用于接收播送。
内容提供商〔Content Provider〕:
支持在多个应用中存储和读取数据,相当于数据库。
2.1.8Activity
Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最根本的模块之一。
在Android的程序当中,Activity 一般代表屏幕的一屏。
如果把比作一个浏览器,那么Activity就相当于一个网页。
在Activity 当中可以添加一些Button、Check box 等控件。
可以看到Activity 概念和网页的概念相当类似。
一般一个Android 应用是由多个Activity 组成的。
这多个Activity 之间可以进行相互跳转,例如,按下一个Button 按钮后,可能会跳转到其他的Activity。
和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。
这样做在很多时候是相当方便的。
2.1.9应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。
该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的平安性限制)。
同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的效劳和系统,其中包括;
1.丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。
2.内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据
3.资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。
4.通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
5.活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
2.2系统维护
为了去除系统运行中发生的故障和错误,软、硬件维护人员要对系统进行必要的修改与完善;为了使系统适应用户环境的变化,满足新提出的需要,也要对原系统做些局部的更新,这些工作称为系统维护。
系统维护的任务是改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中用户提出的新的功能及性能要求,其目的是维护软件系统的“正常运作〞。
这阶段的文档是软件问题报告和软件修改报告,它记录发现软件错误的情况以及修改软件的过程。
3.需求分析
3.1系统功能分析
3.3系统非功能分析
包括运行环境、系统接口、数据要求、主要性能、质量体系〔可靠性、可用性、平安等〕、其他需求等;
运行环境:
MacOSXEICaptian10.11.6
系统接口:
1.专题页面:
一级页面:
:
//
专题:
:
//
文章详情:
:
//
本周精选:
:
//
专题分类:
最新:
:
//
其他:
:
//
2.发现页面:
轮播图:
POST请求
参数:
Name
Value
Action
getAdList
:
//
轮播图详情页Html:
POST请求
参数:
Name
Value
token
F4D845028303F9A466B67EFF9C8C6BD6
userId
d6e0ce4c-44c2-4b20-b07c-5cf9f21de3a6
action
getActivity
activity
ff1f65c4-01b7-4ccf-b4b2-bf81599010d2
:
//
轮播图详情页评论:
POST请求
参数:
Name
Value
index
1
actId
ff1f65c4-01b7-4ccf-b4b2-bf81599010d2
token
F4D845028303F9A466B67EFF9C8C6BD6
userId
d6e0ce4c-44c2-4b20-b07c-5cf9f21de3a6
Action
getComList
pageSize
5
:
//
每日精选:
POST请求
参数:
Name
Value
type
荐
action
getJianOrJingList
currentPageIndex
0
pageSize
4
:
//
帖子详情:
POST请求
参数:
Name
Value
bbsId
c6c89ef3-92c9-4bac-9381-6af00fad620e
userId
d6e0ce4c-44c2-4b20-b07c-5cf9f21de3a6
action
getDetail
:
//
评论详情:
POST请求
参数:
Name
Value
bbsId
c6c89ef3-92c9-4bac-9381-6af00fad620e
action
getBbsList
currentPageIndex
0
pageSize
20
:
//
3.发布帖子:
获取帖子分类:
POST请求
参数:
Name
Value
action
getCircleType
:
//
发布帖子:
POST请求参数:
Name
Value
content
大家好
fileTypes
gif
type
afe78aff-8c30-4beb-a7e2-95d0cbeea3c6
token
F4D845028303F9A466B67EFF9C8C6BD6
userId
d6e0ce4c-44c2-4b20-b07c-5cf9f21de3a6
action
writeBBS
:
//
4.账号信息:
POST请求
参数:
Name
Value
type
1
action
getList
version
2
:
//
5.注册:
POST请求
参数:
Name
Value
mobile
131********
cc
86
mcc
460
:
//
6.登录:
POST请求
参数:
Name
Value
terminal
Android
mcc
460
cc
86
market
htxq
jpc(极光推送)
vc(验证码)
417393
:
//
4.系统设计
4.1设计指导思想和原那么
4.1.1概要设计
在系统需求分析阶段,搞清楚了软件“做什么〞的问题,形成了目标系统的逻辑模型。
现在我们所要做的就是要把软件“做什么〞的逻辑模型变换为“怎么做〞的物理模型,即着手实现系统的需求。
首先,我们需要描述的是系统的总的体系结构。
4.2详细设计
4.2.1软件设计原那么
根据用户的体验方便快捷,系统分为四大模块,其中专题模块是为用户提供每日的精选帖子,根据专题分类推荐帖子,还有丰富的壁纸,无需用户自己找,发现界面是由精选,圈子,订阅三个小界面组成的,清晰明了的为用户提供了自己想要的选择,商城界面那么是方便用户购置自己喜欢的花,而我的界面显示的那么是自己的个人信息,用户可以修改自己的头像,查看自己帖子的点赞情况或者管理等一些功能。
4.2.3系统结构设计
系统的概要设计中最重要的就是系统的模块化。
模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成假设干个模块的过程。
每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。
将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模块的划分不能是任意的,应尽量保持其独立性。
也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定根底。
在系统的概要设计中采用结构化设计以需求分析阶段产生的数据流图为根底,按一定的步骤映射成软件结构。
首先将整个系统化分为几个小问题,小模块。
然后,进一步细分模块,添加细节。
4.3系统的详细设计
该工程采用MVP架构,该架构是Android平台MVC框架的升级,MVC全称是Model-View-Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
MVC是一种框架模式而非设计模式,GOF把MVC看作是3种设计模式:
观察者模式、策略模式与组合模式的合体,而核心是观察者模式。
简而言之,框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
MVP架构是在MVC的根底上进行的升级,MVP模式是MVC模式的一个演化版本,MVP全称Model-View-Presenter。
目前MVP在Android应用开发中越来越重要了。
在Android中,业务逻辑和数据存取是紧紧耦合的,很多缺乏经验的开发者很可能会将各种各样的业务逻辑塞进某个Activity、Fragment或者自定义View中,这样会使得这些组件的单个类型臃肿不堪。
如果不将具体的业务逻辑抽离出来,当UI变化时,你就需要去原来的View中抽离具体业务逻辑,这必然会很麻烦并且易出错。
MVP模式会解除View与Model的耦合,有效的降低View的复杂性。
同时又带来了良好的可扩展性、可测试性,保证系统的整洁性和灵活性。
MVP模式可以别离显示层与逻辑层,它们之间通过接口进行通信,降低耦合。
理想化的MVP模式可以实现同一份逻辑代码搭配不同的显示界面,因为它们之间并不依赖与具体,而是依赖于抽象。
这使得Presenter可以运用于任何实现了View逻辑接口的UI,使之具有更广泛的适用性,保证了灵活度。
MVP模式的三个角色
〔1〕Presenter–交互中间人:
Presenter主要作为沟通View与Model的桥梁,它从Model层检索数据后,返回给View层,使得View与Model之间没有耦合,也将业务逻辑从View角色上抽离出来。
〔2〕View–用户界面:
View通常是指Activity、Fragment或者某个View控件,它含有一个Presenter成员变量。
通常View需要实现一个逻辑接口,将View上的操作转交给Presenter进行实现,最后,Presenter调用View逻辑接口将结果返回给View元素。
〔3〕Model–数据的存取:
Model角色主要是提供数据的存取功能。
Presenter需要通过Model层存储、获取数据,Model就像一个数据仓库。
更直白的说,Model是封装了数据库DAO或者网络获取数据的角色,或者两种数据方式获取的集合。
工程中列表视图采用第三方库XRecyclerView,该框架继承自RecyclerView,在RecyclerView的根底上进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 专业 毕业设计 论文 内容 模板
![提示](https://static.bdocx.com/images/bang_tan.gif)