个人学期总结
一、请根据自己的学习实践回答自己当初提的问题,并提出新的问题。
问题1:我们应当怎么选择不同的开发流程才能开发出适应这个时代的软件呢?时代在无时无刻的更新,怎样的开发流程才能使得这个软件的生命周期更长而更好的适应这个时代呢?
解答:时代是瞬息万变的,科技也是不断发展的。软件的生命周期,亦称软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务,然后按规定顺序依次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。软件的生命周期包括:1、问题的定义及规划:此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。2、需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。3、软件设计:此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。4、程序编码:此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。 5、软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。6、运行维护:软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
问题2:构建之法到底如何构建,它是一套完整的体系还是一个体系的每一步操作呢?
解答:学完软件工程,我认为构建之法是一个体系,它包括设计软件的每一步。
问题 3:在本书第12章中讲到用户体验。用户体验确实是一个很令人头疼的问题,如果自己辛苦写出来的软件不被用户所喜欢,那自己的劳动成果也就白费了。那么在满足用户需求的的基础上,再如何提高用户体验呢?是不是这个产品满足了用户的所有要求就等同于这个产品的用户体验好呢?
解答:在这个问题上我认为代老师的经验给了我答案:UI设计不需要更高更好的技术,用户体验才是最重要的。用户觉得好才是真的好。
问题4:既然有了黑箱和白箱可以测试设计,书中讲到“在实际工作中,我们不应画地为牢,严格只用某一种测试设计方法。我们对系统地了解当然是越多越好。所谓“灰箱”的提法,正反映了这一点”。那么什么是“灰箱”?书中并没有给出明确的答案,只是从一个角度阐述了“灰箱”的某种好处而已。
解答:1. 黑盒测试:黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价划分类、边值分析、因—果图、错误推测等,主要用于软件确认测试。"黑盒"法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。"黑盒"法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。2. 白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。3. 灰盒测试:灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。灰盒测试结合了白盒测试盒黑盒测试的要素.它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识盒与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在测试人员视野之外的信息设计测试。
问题5:在第16章中主要讲述了IT行业的创新。IT行业需要创新,是的,这一点我很承认。可是这个创新是不是有某种规律而言呢?答案我认为当然是否定的。那么在我们黔驴技穷的时候,如何要在这一行业走下去呢?
解答:书籍是人类进步的阶梯。我认为我们不会有黔驴技穷的一天,因为在这个瞬息万变的时代终身学习是必须的,唯有终身学习才是王道。而要终身学习就必须要读书,任何一门新的技术都在书本中有一定基础的讲解。而对于IT行业的创新我认为室友一定规律的,这个规律便是沿着为人类服务而行的,满足人类的需求便是任何一个行业亘古不变的规律。
二、完成课程的实践总结和给你带来的提升,包括以下内容:
1.统计你在软工课程实践中,完成了多少行的代码;
完成了大约三千多行代码。
2.软工实践的各次作业分别花了多少时间?累计花了多少个小时在软工实践上?平均每周花多少个小时?(做一个列表)
软工作业 |
花费时间 |
平均每周花费时间 |
实验一 软件工程准备 |
5 |
7 |
实验二 软件工程个人项目 |
8 |
7 |
实验三 软件工程结对项目 |
8 |
7 |
实验四 基于原型的软件需求获取 |
8 |
7 |
实验五 软件研发团队组建 |
5 |
7 |
实验六 团队项目评审与团队项目选题报告 |
6 |
7 |
实验七 团队作业3—团队项目的原型设计与开发 |
8 |
7 |
实验八 团队作业4—基于原型的团队项目需求调研与分析 |
8 |
7 |
实验九 团队作业5—团队项目需求改进与系统设计 |
9 |
7 |
实验十 团队作业6—团队项目系统设计改进与详细设计 |
7 |
7 |
实验十一 团队作业7—团队项目设计完善&编码测试 |
8 |
7 |
实验十二 实验十二 团队作业8—团队项目用户验收评审 |
5 |
7 |
3.哪一次作业让你印象最深刻?为什么?
在软件工程的试验中,印象最深刻的一次作业是实验九 团队项目需求改进与系统设计,因为那一次我们团队6个人一起写作业,写到十二点,每个人都有自己的分工,一起做到了晚上12点,当然这次的作业分数也是最高的一次,我相信一份耕耘一分收获。付出了多少就会回报多少。
4.学习和使用的新软件;
visio、git
5.学习和使用的新工具;
process on、墨刀、GitHub、 leangoo看板
6.学习和掌握的新语言、新平台;
博客园,GitHub
7.学习和掌握的新方法;
快速原型方法、白盒测试与黑盒测试、面向对象设计方法、盒图、判定树、判定表等
8.其他方面的提升。
教会了我们书写文档的能力,和如何制作一个软件以及团队合作一起交流的能力。
三、你认为目前的课程有哪些问题,你有什么更好的建议:
1.你认为本门课程需要在哪里进行改进,具体措施有哪些,包括:时间进度安排,项目难度等均可;
实验尽量布置少一点,不要占用其他课程的作业时间;实验课尽量不要讲课,让我们做实验;理论课尽量多一点。项目难度还好,可以直接一开始就选题,一学期制作夜歌项目,不然时间太紧张了。
2.你认为助教/老师哪里做的不足,哪里限制太多等;
我希望助教老师的评分标准应该是一样的,可以制定一个评分标准。
3.你认为每次项目的评分标准存在哪些问题,你认为的合理评分准则是怎样的(个人/结对/团队算三个)
每个人的总成绩可以在团队/个人/结对的项目中计算一个比重,其实如果从刚开始做项目,我认为一个人是有能力完成的,即使是有团队,有些人也不会做,团队项目只是布置给团队里的某个人的,而不是布置给团队的。或者可以减少团队的人数。
4.在结对项目中你是否真正体会到了结对的好处,是否真正严格进行了结对编程,双方的工作量是否相同;
结对编程中体会到了结对编程的好处,任务量分下去,每个人只需要负责自己需要负责的那一部分即可。在结对编程的时候,双方的工作量肯定是不一样的。没有绝对的公平可言。
5.你的团队项目是否成功,如果重来一次你是否还会选择这个团队,为什么成功/失败;
团队项目可以说是成功的,如果重来一次我还会选择这个团队,即使自己脾气不好,可能对团队的某些人太严格,但是整个团队都在体谅自己的坏脾气,,不说项目大家还是好朋友。
6.总结一下你们团队在做项目时大家的时间安排情况。
每个成员在每个实验中的任务是不一样的,安排也是不一样的,时间占用情况可能部分同学占用的比较多,部分同学占用的比较少。但是做项目的时间大部分都是在一个固定的时间内一起完成各自的分工。
7.对下一届软工课实践教学的建议,或者对于开学初的你,对于大一的你,对于开学初的老师,你有什么想建议和告知的呢?对于后来人的期许。
其实我认为这门课的安排就不是很合理,应该在一周多加几个课时,将这门课安排在大二,刚学完java的那个学期。
四、你还有什么想说得话
软件工程这门课对我的帮助还是挺大的,学到了多少知识暂且不说,但是却学会了如何控制自己的情绪,如何和自己的小组成员沟通,学会了书写文档的能力。总的来说,还是不错的。