




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程实验文档实验概述本书提供了二个方式不一、要求不同的综合实践,供读者选择。这些综合实践可帮助读者系统地运用软件工程知识来开展软件开发实践,以加强对知识的理解和掌握,积累软件开发经验,培养多方面的软件开发能力。读者可结合课程教学的实际情况(如课时数)和要求(如培养目标),考虑可投入时间、已有的资源等多种因素,选择其中的一个实践任务来开展课程综合实践。1.综合实践一:阅读、分析和维护开源软件该实践要求针对一个具有一定规模和高质量的开源软件,阅读和标注程序代码,分析开源软件的结构和质量,在此基础上针对该软件开展维护工作,包括增加软件功能、修复软件缺陷、更改软件设计、编写程序代码、开展软件测试等工作。该实践的目的是要学习高质量开源软件所蕴含的高水平软件开发技能,结合具体的开源代码来深入理解软件工程的方法、思想和原则,在此基础上运用软件工程知识对开源软件进行维护,并在此过程中熟练掌握和使用多种软件开发工具和环境。该实践相关任务完成之后需要提交一组实践成果,包括开源软件质量分析报告,开源软件泛读、标注和维护报告文档,开源软件维护后的软件代码等,并要求经维护后的开源软件可运行和可演示。该实践的特点是基于已有的开源软件来开展软件工程实践,对于软件工程新手而言较易入手,有可参照和模仿的学习对象,实践任务系统和完整,覆盖了所有的软件开发阶段;实践的内容相对简单,易于操作和实施。本质上,该实践首先通过逆向工程来进行学习,然后通过正向工程开展软件开发。读者可以自己选择某个高质量的开源软件进行阅读、分析和维护,也可以就围绕小米便签MiNotes这个开源软件进行。本书后续章节的综合实践部分将结合小米便签MiNotes这个开源软件来介绍如何开展开源软件的阅读、标注、分析和维护实践工作。2.综合实践二:开发软件系统该实践要求独立构思软件及其需求,或者基于某个选定的软件需求,在此基础上开展一系列的软件开发工作,包括需求分析、软件设计、编码实现、软件测试、部署运行等,最终产生可运行和可演示的软件系统。该实践的目的是学会如何运用软件工程的方法、技术和软件开发工具来完整地开发软件系统,并确保软件系统的质量,在此过程中培养多方面的能力和素质,如系统能力、解决复杂工程问题的能力、团队协作能力、自主学习和独立解决问题的能力、口头和书面表达的能力等。该实践相关任务完成之后需要提交一组成果,包括软件需求文档、软件设计文档、源程序代码、软件测试用例和测试报告等,并要求所开发的软件系统可运行和可演示。该综合实践的特点是,要求开发者针对特定的软件需求或者构思出相关的软件需求,并以此开展软件开发实践。建议对实践的规模和软件系统的质量提出明确的要求,如软件系统的代码量要求2000行以上等等,使得课程实践具有一定的挑战性和难度,从而可以较为全面地锻炼和培养开发者的软件工程能力和水平。该实践可以要求读者自己来构思软件及其需求,也可以采用命题作文的形式要求学生开发出某个软件系统,如Mini-12306软件。本书后续章节的综合实践部分将结合Mini-12306软件的开发来详细介绍该实践任务如何开展。这二个课程综合实践可采用3-5人为一个团队的方式来组织开发。实践的配套教材可参阅《软件工程实践教程:基于开源和群智的方法》一书。综合实践一:阅读、分析和维护开源软件任务:选取或指定待阅读、分析和维护的开源软件,获取其源程序代码。方法:访问Github、Gitee、SourceForge等开源软件托管平台,检索和查询开源软件,从中选取待阅读、分析和维护的开源软件。或者直接选定小米便签MiNotes开源软件,通过/MiCode/Notes网址进入其社区,下载其源程序代码,在本机计算机安装AndroidStudio工具,加载、编译、部署和运行MiNotes开源软件。要求:所选取或指定的开源软件要求功能易于理解、代码质量高、规模适中(5000-20000行代码量),也可以直接指定“MiNotes”便签管理开源软件作为阅读、分析和维护的对象。结果:获得开源软件的源代码,并可运行和操作该开源软件。综合实践二:开发软件系统任务:分析相关行业和领域的状况及问题。方法:选择你所感兴趣的行业和领域(如高铁服务、旅游出行、老人看护、防火救灾、医疗服务、婴儿照看、病虫害防护、机器人应用等),开展调查研究,分析这些行业和领域的当前状况、存在的问题和未来的需求,思考如何开发该行业和领域的软件,以满足其需求,解决其问题。读者也可以直接调研与“12306”软件相对应的火车旅客服务领域,分析当前的“12306”软件是如何解决旅客服务问题的,还存在哪些方面的不足。要求:调研要充分和深入,分析要有证据和说服力,要通过调研来梳理出潜在的软件需求,从而指导后续的软件开发。结果:行业和领域调研分析报告。实验任务1综合实践一任务:获取开源软件代码,安装和运行开源软件系统。方法:针对所选定的开源软件(如小米便签开源软件MiNotes),到开源软件托管平台下载开源软件代码(如/MiCode/Notes),并依托相关的开发平台(如AndroidStudio)对该软件进行编译,生成可运行的安装软件,部署在实际的计算环境(如Android智能手机)上运行。要求:获取软件的开源代码,编译和运行软件系统。结果:(1)下载软件的开源代码;(3)可运行的软件系统。综合实践二任务:调查研究相关行业和领域问题的软件解决现状。方法:针对所选择的行业和领域(如高铁服务、旅游出行、老人看护、防火救灾、医疗服务、婴儿照看、病虫害防护、机器人应用等),结合你关注的行业或领域问题(如买票难、改签不易等等),开展系统和深入的调查研究,分析当前有哪些软件可以用于解决这些行业和领域问题,它们做到什么程度,还存在哪些方面的不足和局限。要求:调研要充分和深入,分析要有证据和说服力。结果:行业和领域软件的调研分析报告,说明需要软件介入来解决哪些方面的行业和领域问题。实验任务2综合实践一任务:理解和分析开源软件的整体情况。方法:根据所选定的开源软件(如小米便签开源软件MiNotes),运行和使用该开源软件,理解软件的整体功能;泛读开源代码,分析和掌握开源代码的构成,包括:有哪些子系统、模块、模块与功能的对应关系、软件模块间的关系、代码量等,在此基础上绘制出软件系统的体系结构图(可以用UML的包图和类图来描述);也可利用SonarQube等软件工具分析开源代码的整体质量情况,发现存在的质量问题。要求:理解开源软件提供的功能和服务,掌握软件系统的模块构成,分析开源软件的质量水平。结果:(1)软件需求文档,描述开源软件的大致需求;(2)软件体系结构图,描述开源软件的模块构成;(3)SonarQube的开源软件质量报告。综合实践二任务:构思如何基于软件来解决行业和领域问题。方法:针对所调研的行业和领域及其面临的具体问题(如买火车票难),构思如何通过软件,并结合其他的设备和系统(如机器人、无人机、手机等)来解决问题。例如,为了解决买票难得问题,要开发一个在线的车票购买系统,它可以与公安的身份认证系统以及银行的支付系统等进行交互,以完成身份验证和在线支付等功能,其前端软件表现为Android手机的APP,后端软件提供了一组服务和存储功能,可帮助旅客实时查看车次和剩余车票信息,给旅客提供在线购票、改签和退票等服务。要求:所构思的软件可有效解决行业和领域问题。结果:行业和领域问题的大致软件解决方案。实验任务3综合实践一任务:(1)组建综合实践一的项目团队,建立项目仓库,度量项目的相关数据。(2)精读和标注开源软件的程序代码。方法:按照课程的要求组建综合实践一的项目团队(如2-4人为一个小组),在头歌平台上创建实践一的项目,从而生成该项目的仓库,并将原始的开源代码上传到主仓库之中;基于主仓库的程序代码,借助于诸如SonarQube等工具,对课程综合实践一的软件制品规模及其质量等进行度量,以获得关于软件课程实践一的定量性描述信息。逐行阅读开源软件代码(如MiNotes),结合上下文详细了解各行代码的功能和作用。精读过程中如果遇到困难和问题,可到StackOverflow中去找寻答案,或者在软件工程学习社区中交流讨论。在精读的基础上对程序代码中的类、方法、语句片段和语句等进行注释。要求:组建项目团队,生成综合实践一的项目仓库,基于Git、SonarQube等工具对软件项目进行度量,具体包括:(1)源代码文件、模块和代码行数量;(2)程序代码的质量分析数据。所谓的精读是指要深入理解代码的具体语义内涵,理解为什么要这样编程,领会其中的编程要领和编码风格;精读和注释的代码量要有一定规模,建议在1000-3000行左右。结果:软件综合实践一的项目团队和仓库以及项目的初始度量数据。理解开源代码的语义,给出程序代码的注释,可撰写技术博客来总结精读和标注的成果及心得体会。综合实践二任务:组建综合实践二的项目团队,建立综合实践二的项目仓库。方法:按照课程的要求组建综合实践二的项目团队(如3-5人为一个小组),在头歌平台上创建实践二的项目,从而生成该项目的原始仓库。要求:组建项目团队,基于Git或者头歌平台创建项目及其仓库。结果:软件综合实践二的项目团队和仓库。实验任务4综合实践一任务:构思开源软件的新需求。方法:采用集体讨论、大脑风暴等方式,结合实际的问题来构思开源软件的新需求,以完善开源软件的功能和性能。例如,为了提高小米便签开源软件的实用性,该软件在现有的基础上应该新增哪些新功能和新性能需求。要求:所构思的软件需求要有意义和价值,存在技术和进度等方面的可行性;用自然语言和UML用例图来描述所构思的软件需求,撰写相应的软件需求文档。结果:UML用例图模型和软件需求描述文档。综合实践二任务:构思待开发软件系统的需求。方法:构思软件需求,也可借助互联网大众的力量来帮助构思需求;从分析软件的利益相关方入手,站在他们的视角来构思软件需求,以解决实际问题;借助于UML用例图来刻画初步软件需求,并撰写初步软件需求的文档。实验任务5综合实践一任务:分析开源软件的需求,撰写软件需求文档。方法:借助UML进行开源软件的需求进行建模,包括原有的软件需求和新增的软件需求,遵循软件需求规格说明书的标准或模板,撰写开源软件的软件需求规格说明书,并对其进行评审,以发现和解决软件需求中存在的问题。例如,结合小米便签开源软件的已有功能和新增功能,对其进行建模和分析,撰写和评审软件需求文档。要求:建立开源软件的用例模型、用例交互模型、分析类模型和必要的状态模型,按照软件需求规格说明书的规范标准,撰写相应的软件需求文档。结果:开源软件的用例交互图、分析类图、状态图以及软件需求规格说明书。综合实践二任务:精化和分析软件需求。方法:整个开发团队一起精化和细化所构思的软件需求,采用UML的交互图、类图、状态图等,对精化的软件需求进行描述和建模,建立软件需求模型;在此基础上,遵循软件需求规格说明书的模板,撰写软件需求文档;要确保软件需求模型和文档的质量,对最终的软件需求制品进行评审。要求:建立软件需求的用例交互模型、分析类模型和必要的状态模型,按照软件需求规格说明书的规范标准,撰写相应的软件需求文档,并需要对文档的规范性、正确性、一致性、可理解性等进行评审。结果:软件需求的UML模型和软件需求规格说明书。实验任务6综合实践一任务:开源软件的体系结构设计。方法:针对开源软件新增加的软件需求,考虑软件体系结构风格,搜寻可用的软件资源(包括开源软件),分析原有的软件体系结构能否适应新的软件需求,或者扩展和优化原有的软件体系结构,引入新的设计元素(包括可重用的软件资源),或者重新设计软件体系结构。要求:针对开源软件及其新构思的软件需求,在原有软件体系结构的基础上,调整、优化或重新设计开源软件的体系结构,以满足新的软件需求。结果:软件体系结构模型(至少包括逻辑视点和物理视点的体系结构模型),软件体系结构设计文档。综合实践二任务:软件体系结构设计。方法:针对关键软件需求,考虑软件体系结构风格,搜寻可用的软件资源(包括开源软件),设计初步的软件体系结构;在此基础上,对软件体系结构进行精化设计,进一步确定其构件、子系统和设计类等设计元素,以满足所有的软件需求;最后给出软件体系结构的部署模型。要求:针对构思的软件需求,开展软件体系结构设计,产生软件体系结构设计模型。结果:软件体系结构模型(至少包括逻辑视点和物理视点的体系结构模型),软件体系结构设计文档。实验任务7综合实践一:阅读、分析和维护开源软件任务:开源软件的用户界面设计。方法:针对开源软件新增加的软件需求,考虑软件的用例模型和用例交互模型,对开源软件的用户界面进行设计,以支持用户与开源软件的输入和输出,进而实现开源软件的新功能。要求:基于开源软件新构思的软件需求,针对其用例模型和用例交互模型,要以用户为中心进行设计和优化。结果:用户界面原型,用户界面的UML类图模型以及界面跳转的顺序图模型。综合实践二:开发软件系统任务:软件用户界面设计。方法:基于用户的软件需求,针对软件系统的用例模型和用例交互模型,设计软件系统的用户界面,明确每个用户界面的设计要素,界面之间的跳转关系,以支持用户与软件系统之间的输入和输出。要求:针对所构思的软件需求,包括用例模型和用例交互模型,要以用户为中心开展用户界面的设计。结果:用户界面原型,用户界面的UML类图模型以及界面跳转的顺序图模型。实验任务8综合实践一:阅读、分析和维护开源软件任务:开源软件的详细设计。方法:针对开源软件新增加的软件需求,考虑软件的体系结构设计和用户界面设计,对开源软件进行详细设计,以实现开源软件的新功能。要求:基于开源软件新构思的软件需求,结合体系结构设计和用户界面设计的成果,要详细到足以支持编码。结果:用类图、顺序图、活动图、状态图等描述的详细设计模型。综合实践二:开发软件系统任务:软件详细设计。方法:基于软件系统的用例模型、用例交互模型和分析类图,对软件体系结构设计和用户界面设计的具体成果进行精化和细化,通过用例设计、类设计、数据设计、子系统/软构件设计,产生软件详细设计模型。要求:基于软件需求分析、体系结构设计、用户界面设计的具体成果,所产生的详细设计成果要详实到足以支持编码。结果:用类图、顺序图、活动图、状态图等描述的详细设计模型。实验任务9综合实践一任务:编写开源软件的维护代码。方法:针对开源软件代码,基于所选定的程序设计语言,借助CASE工具,编写开源软件的维护代码,并对代码进行单元测试和调试,以发现和解决代码中存在的缺陷和问题。要求:基于设计模型和文档来编写维护代码,要对所编写的代码进行质量保证,以发现和解决代码中的缺陷。结果:开源软件的维护代码。综合实践二任务:编写所开发软件系统的程序代码。方法:基于软件设计模型和文档,借助所选定的程序设计语言,利用编码、测试和调试等CASE工具,编写目标软件系统的源程序代码,并对代码进行单元测试和调试,以发现和解决代码中存在的缺陷。要求:基于设计模型和文档来编写代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030新传媒行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年地基产业行业市场现状供需分析及投资评估规划分析研究报告
- 矿山安全生产监管与采矿权承包合同
- 餐饮行业员工职业规划与晋升合同
- 车辆挂靠共享出行项目合作协议
- 媒体活动策划与传播合同
- 商业综合体无偿场地租赁管理协议
- 茶艺师茶道礼仪培训合作协议书
- 夫妻财产分割与权益维护协议
- 美容院合伙经营合同范文
- 湖北省武汉市2025届高中毕业生四月调研考试生物试题及答案(武汉四调)
- 人音版七年级下册赛乃姆教学设计
- SL631水利水电工程单元工程施工质量验收标准第2部分:混凝土工程
- 八年级下册英语2025电子版人教版单词表
- 2025年山东济南历城金融控股集团有限公司招聘笔试参考题库含答案解析
- 末梢血糖监测操作流程
- 心理学基础知识题库及解析
- GB/T 10810.3-2025眼镜镜片第3部分:透射比试验方法
- 武汉2025届高中毕业生二月调研考试数学试题及答案
- 初级美甲考试试题及答案
- 2025年南邮面试试题及答案
评论
0/150
提交评论