软 件 工 程 基 础
实 验 报 告
实验名称:实验一
实验题目:个人项目
专 业 | 软件工程 |
学 号 | 223201062520 |
姓 名 | 朱旭 |
指导教师 | 孟桂英 |
成 绩 |
完成时间: 2022 年 11 月
目 录
沈阳航空航天大学 I
1 实验内容及要求 1
1.1 教学内容及要求 1
1.2 实验要求 1
1.2.1创建博客园和Github账号 1
1.2.2阅读材料并思考 1
1.2.3 阅读材料 2
2 实验步骤 1
2.1任务1实验过程 1
2.1.1创建博客 1
2.1.2创建github账号 1
2.2任务二实验过程 1
2.3任务三实验过程 3
2.3.1代码链接 3
https://github.com/zhuxu789/zhuxu 3
2.3.2工作记录 3
2.3.3测试用例 3
2.3.4测试过程 4
4
图1代码截图 4
5
图2代码运行截图 5
图3例子1运行截图 5
图5例子3运行截图3 总结与体会 6
1 实验内容及要求
1.1 教学内容及要求
建立个人博客,完成开发环境和自动测试环境安装,完成自动测试项目。
学习开发环境安装和配置;掌握自动测试技术相关工具使用;将相关技术应用于具体题目。
1.2 实验要求
1.2.1创建博客园和Github账号
需要在博客园创建个人博客账号,并在GitHub代码托管平台中建立账号。GitHub地址格式为:https://github.com/zhanglsh。
请在实验报告中给出博客地址。
1.2.2阅读材料并思考
请阅读北航陈彦吉同学的这篇博客中的各参考资料,并回答如下问题:
(1) 回顾你过去将近3年的学习经历
当初你报考的时候,是真正喜欢计算机这个专业吗?
你现在后悔选择了这个专业吗?
你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其它领域)?
(2) 总结你现在已经掌握的知识
你都具备了那些专业知识和能力?
你认为你已经为成为一个合格的计算机软件工程是做好准备了吗?在专业技术、个人能力以及其它方面你还有那些欠缺?
(3) 畅想未来
对照材料中前人的经历,你还准备从事计算机这个行业吗?
你认为与其它专业的同学相比,你的优势都有哪些?
对已经不远的将来,你的职涯规划是什么?
(4) 代码托管实训
用任何一种语言写一个能运行的小程序,要求输出字符串:“Hello World!”
把程序源代码上传至你注册的代码托管系统中
将代码地址附到博文中的最后部分,要求可以通过链接访问。
1.2.3 阅读材料
请阅读邹欣老师的这篇博文和构建之法第1~3章内容,尤其是第2章效能分析和第3章代码规范部分。回顾和复习课堂讲授的单元测试部分内容。完成下面题目之一。
题目一:最大连续子数组和(最大子段和)
背景
问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n
例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。
题目二:四则运算式生成器
背景
某个小学老师请你为她编写一个能够自动生成四则运算练习题的小程序,要求输入年级和题目数量,程序根据年级输出规定数量的题目,具体要求如下:
一年级运算数为20以内,只生成加法或减法运算式,结果小于20
二年级运算数为50以内,生成加法和减法混合运算式,结果小于50
三年级运算数为1000以内,生成加法、减法和乘法混合运算式
四到六年级运算数为非负整数,生成至少带有三个运算符(从加减乘除四个符号中任选三个)和括号的混合运算式,结果不能为负数
具体要求:
(1) 请从上述两个题目中根据个人实力任选一题,要求写出可运行的完整代码提交至GitHub系统中,并给出代码地址
(2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
(3) 请利用自动测试工具对程序进行测试
(4) 请将程序运行结果和自动测试分析结果截图保存,并附在实验报告中。
2 实验步骤
2.1任务1实验过程
2.1.1创建博客
博客地址https://www.cnblogs.com/zx2580/
图2.11创建博客截图
2.1.2创建github账号
图2.12创建github账号截图
2.2任务二实验过程
请阅读北航陈彦吉同学的这篇博客中的各参考资料,并回答如下问题:
(1) 回顾你过去将近3年的学习经历
当初你报考的时候,是真正喜欢计算机这个专业吗?
比较喜欢但更多是为了就业考虑。
你现在后悔选择了这个专业吗?
不后悔。
你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其它领域)?
喜欢后端方面的工作。
(2) 总结你现在已经掌握的知识
你都具备了那些专业知识和能力?
对C语言,Java语言,python语言略有了解,谈不上精通。
你认为你已经为成为一个合格的计算机软件工程是做好准备了吗?在专业技术、个人能力以及其它方面你还有那些欠缺?
个人认为还差的很远,在专业技术领域内只掌握了一些理论知识,动手实践能力还不足,计算机语言掌握的过于单一且不够精通,所以还需要很多努力,同时还要加强个人的自学能力以及动手实践能力。
(3) 畅想未来
对照材料中前人的经历,你还准备从事计算机这个行业吗?
准备
你认为与其它专业的同学相比,你的优势都有哪些?
科班出身吧。
对已经不远的将来,你的职涯规划是什么?
想考个研究生,或者工作。
(4) 代码托管实训
用任何一种语言写一个能运行的小程序,要求输出字符串:“Hello World!”
把程序源代码上传至你注册的代码托管系统中
将代码地址附到博文中的最后部分,要求可以通过链接访问。https://github.com/zhuxu789/zhuxu
2.3任务三实验过程
2.3.1代码链接
https://github.com/zhuxu789/zhuxu
2.3.2工作记录
按照下表填写工作记录表
表2.1 PSP0 工作记录表
项目 | 记录结果 |
---|---|
日期 | 11.8 |
开始时间 | 17;00 |
结束时间 | 18;00 |
编码行数 | 32 |
错误数量 | 0 |
2.3.3测试用例
例子1
整数数量6
-2 11 -4 13 -5 -2
例子2
整数数量6
1 3 5 7 9 -4
例子3
整数数量5
1 -4 6 8 9
2.3.4测试过程
图1代码截图
图2代码运行截图
图3例子1运行截图
图4例子2运行截图
图5例子3运行截图3 总结与体会
首先我要自我介绍一下,我是一名专升本的学生,在专科时学习的是计算机网络技术,软件工程心得体会未接触软件工程之前一直都很想学这门课程,因为觉得这门课很牛,是那些有工程师称号的高手才摆弄的东西。学了一个学期的软件工程课,终于知道了个软件工程的大概。学的时候总觉得很抽象,理解起来好像不难,但总是摸不着头脑一种很茫然的感觉。曾经以为程序就是软件,软件就是程序。学习这门课程第一个收获是,知道了二者的不同之处。以前做过的一些小型的软件比如加密软件,我也只是在程序旁边附上一个软件的说明,看来已经很接近作坊了。不过大的项目没有接触过,用软件工程的方法还是第一次。我想也是程序的不断复杂化导致了软件危机的发生,使得人们不得不探索新的解决方法。
经过老师的讲解,理解了软件工程,就是一套用于软件的团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是,对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。吾生也有涯,而知也无涯,学习永无止境。起初,对软件工程处于一知半解的状态,分工比较混乱。
其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中,你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。