回首向来萧瑟处--个人总结博客

作业基本信息

这个作业属于哪个课程 2021春软件工程实践|W班(福州大学)
这个作业要求在哪里 作业要求
这个作业的目标 课程回顾与总结,个人技术总结
其他参考文献 构建之法第三版 软件质量与测试
博客链接 问题博客

对自己曾经提出的问题进行解答

问题一

阅读第1.2.2节时,深有感触,报考专业就见到了这两门不同的学科。经过两年的学习粗略地了解到计算机科学学习内容比较广泛,偏向于硬件方面,而软件工程专精于软件的实践,在阅读此节时又加深了对二者的了解。书中概括了两门课程的侧重点:

计算机科学 软件工程
发现和研究长期的、客观的真理 短期的实际效果(具体的软件会过时)
理想化 对各种因素的折衷
确定性、完美、通用性 对不确定性和风险的管理,足够好,具体的应用
各个学科独立深入研究,做出成果 关注和应用各个相关学科的知识,解决问题
理论的统一 百花齐放的实践方法
形式化,追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可靠性
查阅百度百科可得两者的定义:
计算机科学,研究计算机及其周围各种现象和规律的科学,亦即研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的性质和问题的学科。计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法等等,到更具体的主题如编程语言、程序设计、软件和硬件等。计算机科学分为理论计算机科学和实验计算机科学两个部分。后者常称为“计算机科学”而不冠以“实验”二字。前者有其他名称,如计算理论、计算机理论、计算机科学基础、计算机科学数学基础等。数学文献中一般指理论计算机科学。
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
学习计算机科学以后的发展与学习软件工程以后的发展有不同何?资料显示学习计算机技术的也可以转向软件开发之类的行业,那社会为什么还有软件工程方面的人才需求呢?

答:从广义上来讲,计算机科学与技术就是专注研发的,开发和构造一系列高精尖的东西给别人使用,软件工程是偏向应用领域的,就是利用别人开发和构造的高精尖的东西进行二次开发形成产品供用户使用。更现实地说,计算机科学与技术属于“后发制人”,软件工程属于“先发制人”。而从长远角度来看,计算机科学与技术属于改变时代的专业,软件工程属于顺应时代的专业。而对于大学专业来说,计算机科学和软件工程的差距主要体现在所修学科上,我们软件工程对实践,即动手编程能力要求较高,聚焦于软件开发的全过程。而计算机的理论知识能力更为完备。这一点教授我们《软件设计模式和体系结构》课程的张老师也提到过。

问题二

第2.1节提到了单元测试,简单来说这可以保证自己负责的模块的独立和质量。定义:单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。那么所有的模块都需要写单元测试吗?还是说存在不需要的情况?

答:学过这学期的课程就知道,单元测试又称模块测试,是程序员开发过程中最低级别的测试活动。往往用于检测一小段代码。我们在编程的时候,既有责任编写功能代码,就有责任为自己的代码编写单元测试,如果能养成对自己的代码进行单元测试的习惯,不但可以写出高质量的代码,还能提高编程水平。

问题三

2.3节讲到个人开发流程,cmu开发的psp到底包含了什么?对我们开发软件有什么帮助?为什么能迅速地流行起来?

答:随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。业界公认由CMU/SEI开发的软件能力成熟度模型SW-CMM是当前最好的软件过程,并且CMM已经成为事实上的软件过程工业标准。但是,CMM虽然提供了一个有力的软件过程改进框架,却只告诉我们"应该做什么",而没有告诉我们"应该怎样做",并未提供有关实现关键过程域所需要的具体知识和技能。为了弥补这个欠缺,Humphrey又主持开发了个体软件过程(Personal Software Process,PSP)。个体软件过程(Personal Software Process,简称PSP)为软件人员进行软件开发提供了一个规范的个人过程框架,PSP过程由一系列方法、表单、脚本等组成,用以指导软件人员计划、度量和管理他们的工作,同时它显示了如何定义过程及如何测量其质量和生产率,这使得psp迅速成为程序员们的得力助手。

问题四

第五章讲到了团队,并给我们推荐了《梦断代码》这本书。它讲述了OSAF开源基金会开发日历管理软件Chandler的过程,前后两打程序员,3年时间,4732个bug,耗费百余万美元,只为了打造(听上去似乎很容易,但想来应该不至于简单)一款全功能的日历软件。这是当时项目的墓志铭,为我们介绍项目失败的全过程,以及从中得到的教训。此外我还在知乎找到了邹欣老师的专栏:梦醒时分 - 梦断代码读后感。这更让我感受到了软件工程的千难万难,软件乃是人类自以为有把握,实则难掌控的技术。但是就如同邹欣老师所说:Build To Win--不管中间有多少挫折,但是我一定要赢。这才是我辈该追求的精神。

答:经过一学期的软件工程实践,我对Build to win有更深刻的理解。一个软件的开发过程(build)往往是艰难晦涩的,个中滋味只有亲身经历才能真正的体会到。有时候Bug会一个接一个的出现,整体忙于解决Bug,而新的进展几乎没有。但消灭了最后一个bug后,胜利(win)的感觉涌上心头,对编程又增添了一份兴趣,

问题五

第十三章里描述了各式各样的测试,可以按照设计方法分类,可以按照测试的目的分类......然后阐述了各种测试方法。我想太多不同的测试方法会不会过于冗余?能不能编写一个测试概括了所有的测试方法的功能?再细想之后,这种方案是不可行的。写代码要循序渐进,测试也是从小做起,从一开始的单元测试,到最后外部软件测试人员在实际情况下的测试,相去甚远,测试方法绝不能一概而论。各种测试方法各司其职,最终才能得到让用户较为满意的产品。

答:这个问题属实离谱,由于以前缺乏测试的相关知识,才会异想天开。单单单元测试都得以各种形式出现。完成单元测试后,对已测模块和设计信息再进行集成测试。结合已集成的软件和软件需求进行确认测试。然后已确认的软件还要和其他系统元素进行系统测试。最后才是用户的需求规范和已检验的软件进行验收测试。这些都体现了软件测试的复杂性,更说明这是一项细致并且需要具备高度技巧的工作。

问题六

十六章迷思之五:要成为领域的专家,才能创新。这句话我并不是很赞同,书中接下来的阐述也证实了这一点。下面所举的例子也说明了许多行业的重大进步反而离不开“门外汉”的努力。我觉得软件开发也是如此。许多新的项目不就是一些非专家的灵光一现然后投入研究的吗?反之不正是利用创新做出了令人信服的产品才能算为专家吗?所以这句话我不敢苟同。

答:我仍然保留我的意见。诚然创新确实需要一定的理论知识作为支撑,但是这并不是必要条件。一些非专业的人员,也有可能对推动该专业的发展有巨大的作用。历史上就有这样的例子,邮票打孔机就是一个记者发明的。创新人人都可以做。

各阶段收获的知识和能力

阶段 收获
需求 学会了用NABCD模型分析用户需求并将其转化为需要设计的部分,根据特定的场景来分析,并针对每一个要点来修改项目规划
设计 能根据需求分析的结果编写一份完善的设计书以及原型,层次分明,完成后将自己程序员的身份抛开,站在用户的角度来看这份设计书,能读懂并理解软件是如何设计的才说明设计书的目的达到了要求。
实现 按时交付计划里的工作,及时反思自己已做好的工作并安排下一步进度。初窥uview门径,能用其组件来开发小程序
测试 能用微信开发者工具完成小程序测试的各种内容,包括界面测试,功能点测试,兼容测试,异常测试,性能测试
发布 学会调研,并根据用户的反馈及时调整产品

心得

临近期末,我已经在研究期末考了,回首这门课的全过程,跌宕起伏。寒假伊始,就收到了来自软件工程的“礼物”,满怀兴奋地打开了它。认识了新的朋友markdown语言。拥有了写博客的敲门砖。花了大把的时间完成了对博客的装饰(虽然又换了新的装饰,更酷的动图背景),踏上了这门课程。
每一次作业都有对自己的提升,但是过程非常难熬。尤其是一些模糊的要求,只好对着作业博客一步一步的研究。每一次作业都能接触到新的知识,培养新的能力,有编程,有设计,还有分工合作,上了课才知道我们专业并不只有写bug,软件工程其实包括了整个软件的开发过程。真正让我感触最深的就是搭建论文爬取网站,最后部署到服务器成功后的欣喜,不亚于一场游戏酣畅淋漓过后的胜利。还有就是在团队作业中认识了很多志同道合的队友。“恰同学少年,风华正茂”,一次次的合作让我们共同进步,看着一个产品从只有一个题目到最后完成,是一件很满足的事情。最后希望以后的学生们上过这门课也能有所收获。

个人项目

真正独立地完成一个项目的感觉与想象中的完全不同,只有亲身经历过才知道就是再简单的项目也要完成每道过程,缺一不可,“麻雀虽小,五脏俱全”。此外,为这次项目我还编写自己的代码规范,让自己的代码成为“文明人”。

结对编程

第一次用git协作模式合作,过程虽然曲折但结果还是令人满意的。和别人合作的感觉还不错,有个人可以探讨开发过程,一个人闭门造车略显无趣。回想搭建网站的那几天,除了满课,实训,每天都花了的大把时间在学习和实践上,很累很充实。

团队项目

一往无前冲刺行,拨开云雾见光明。两次冲刺都让我受益匪浅,数天的冲刺让我身心俱疲,但同时也收获很多东西,比如使用框架进行小程序的开发,比如真正的融入到一个大团队中完成一次项目开发。还有中间穿插的换组准备,这些都是单纯的刷题所得不到的经历。

个人技术总结

uView框架中图标的使用

posted @ 2021-06-26 00:36  至沁  阅读(113)  评论(4)    收藏  举报