一、用3天左右时间精读教材《现代软件工程—构建之法》第一章,整理本章中出现的计算机专业术语
第一章 概论
1.1 软件=程序+软件工程
1、C语言实现二叉树的遍历算法。
2、程序,在这里指的就是源程序,就是一行行的代码,构建不仅仅是cc和link命令。一个复杂的软件不但要有合理的软件架构,软件设计与实现,还要有各种的文件和数据来描述各个程序文件之间的依赖关系,编译参数等,这些都是软件软件构建的过程,有些程序还有32位系统,64位版本等,这是源代码管理,也叫配置管理。具体的验证过程叫做软件测试。
3、软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作。
4、软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步开展后续工作,如设计软件架构,实现算法,测试,到最后发布软件尽快读懂已有程序,了解程序的设计,这叫程序理解。
给软件打补丁,维护众多的服务,团队的新老成员一起修复各种问题,这叫软件维护或者服务运营,这一过程就是软件的生命周期,在这一周期中,有人得负责软件项目的管理。
5、一个好的软件,即使功能和同类软件区别不大,但却会让人感觉到非常好用,这就是软件的用户体验。软件还要处理不同语言、不同地区的用户对界面和功能的不同需求,这叫做软件的国际化和本地化。
6、广义上的软件工程也包括用户体验、用户界面设计等。所以,一个推论是:软件=程序+软件工程。
7、软件开发的不同阶段
(一)玩具阶段(二)业余爱好阶段(三)探索阶段(四)成熟的产业阶段
1.2 软件工程是什么
软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
1.2.1 软件的特殊性
1、复杂性 2、不可见性 3、易变性 4、服从性 5、非连续性
1.2.3 软件工程的知识领域
软件工程的三大类基础知识领域:计算基础、数学基础和工程基础。
1.2.4 软件工程的目标———创造“足够好”的软件
用户满意度 可靠性 软件流程的质量 可维护性
二、教材P18-2
(1)我看了这一段文字(P37-P41),有这个问题(什么叫做软件工程?为什么要采用软件工程方法开发大型软件?)。我查了资料,有这些说法(软件工程包括两方面内容:软件开发技术和软件项目管理。 软件开发技术包括软件开发方法学、软件工具和软件工程环境。 软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。 软件工程是六十年代末为了解决软件危机而出现的一门学科,一般来讲它包含开发技术与管理技术。而软件过程是随作软件工程的开展,特别是近年来系ISO900系列与CMM方法的实践而逐渐时髦的一个概念。它基于质量是做出来的,而非检查出来的现代质量理论。在规范化的软件生产中,离开了软件过程是不可思议的。 区别在于“工程”和“过程”的不同,软件工程是指将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件过程。工程着重应用,软件工程一定是软件过程的一个“产出”,一个个性化的实例!工程也是由过程组成的。 硬件的一些功能一目了然,形象化,就在那儿,更容易理解,比如盖房子的砖,赛车的轮子,数字电路中的接口电路,以某种方式连结在一块就好了 软件工程的结构开发思想,是在你对语言又很深理解的基础上,实现一些功能模块,使这些模块的使用者以某种方式把它们放在一块就安全高效的实现了所要求的功能 补充: 随着企业信息化的深入,对软件项目的需求日益复杂,并会产生频繁的变更, 传统的个人英雄主义的开发方式已经越来越不能适应发展的需要。从软件企业的发展战略来说,如何在技术日新月异和人员流动频繁的情况下,建立本公司的知识库及经验库,把企业中分散的隐性的财富,即个人的知识及经验,转变为企业的知识和经验,以便提高工作效率,缩短产品周期,加强企业的竞争力,具有至关重要的作用。采用科学的管理思想,辅之以先进的管理工具,已经成为企业未来发展必不可少的手段。 如果软件开发机构不能有效地控制和使用软件资源,则在面对风险时就可能导致软件开发活动出现各种问题。由于不能很好地管理软件过程,会使得一些好的开发方法和技术没有起到预期的作用。),根据我的实践,我得到这些经验(项目的成功往往是通过工作组的杰出努力来达到的,这种仅仅建立在依赖特定高素质开发人员基础上的成功,不能保证全组织的持续稳定的软件生产和质量的长期提高。因此,要降低软件开发过程的风险、保证软件产品质量,就必须加强管理,而 软件工程方法开发大型软件是企业过程改善和能力提升的基础。)。
(2)我看了这一段文字(P78-P82),有这个问题(结对编程中,两个人之间产生矛盾影响到代码怎么解决?)。我查了资料,有这些说法(结对编程随着敏捷开发思想的兴起而广为人知, 然而这种实践早已有之。 在 1987年, Intuit 公司 (当时只是一个刚刚创业的个人财务管理软件公司)向顾客宣布在 4 月份提供新版本的软件 (4月15日是美国报税的截止日期)。 但到了 3 月份的时候, 公司仅有的两个技术人员发现项目还是大大落后于预期, 于是这两人在 3 月的最后一个周末开展了疯狂的,不得已的结对编程活动。在结对编程模式下,一对程序员肩并肩地、平等地、互补地进行开发工作。两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起写文档等。),根据我的实践,我得到这些经验(在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。因为一个人的知识已经被其他人共享。)。
(3)我看了这一段文字(第八章 需求分析P151-163),有这个问题(软件需求和获取用户需求有什么区别)。我查了资料,有这些说法(用户需求是从用户那里获得的,经过用户确认的,主要是软件的业务规则,也就是对外的;而软件需求是在用户需求基础上,得到对软件的要求,是给软件设计和开发人员用的,也就是对内的。),根据我的实践,我得到这些经验(用户要求就是看你要干什么用,只是上上网页,低端配置的电脑就能满足你,要是玩游戏那就要主流配置了)
(4)我看了这一段文字(单元测试能让模块功能定义尽量明确,模块内部的改变没有影响其他板块),有这个问题(这几句话的意思不是很明白)。我查了资料,有这些说法(单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。)但我还是不懂,我的困惑是(单元测试是怎么实现的)。
(5)我看了这一段文字(第四章 代码复审),有这个问题(为什么一定要进行代码复审)。我查了资料,有这些说法(首先代码复审中发现的问题,绝大多数都可以由开发者独立发现。从这一意义上说,复审者是在替开发者干开发者本应该干的事。)。
三、教材P18-3
(1)我选择的软件有Games(CS)、Mobile Apps(王者荣耀)、Operating Systems(鸿蒙系统)
游戏软件能够让我在精神上进行自我放松,系统能给我最快的用户体验,比如说搭载鸿蒙系统的荣耀智慧屏电视,开机只有一秒,带来了极致的视听体验。他们的目标的很大一部分确实想盈利,但也有一部分是为了给用户带来更好的体验。
(2)电脑游戏是从网站上下载下来的,而手游是在手机上的软件商城上下载的,荣耀智慧屏是网购得来的。第一次接触电脑游戏是在小学三年级的时候,接触手游是在我高中的的时候,智慧屏是在我念大学的时候。对于电脑游戏和手游我还是比较喜欢的,荣耀智慧屏也给我带来了最好的视听体验。
(3)端游和手游有一部分是bug是来自用户的反馈,有一部分是工作人员的实时检测检测出来的,更新版本的时候会及时在各大应用平台进行更新,并提醒用户及时更新。
(4)同一类型的软件会通过拉拢潜在用户的方式进行竞争,在各大平台发布该软件广告宣传。
上述软件的设计很有逻辑化,例如王者荣耀会根据用户购买英雄皮肤的大数据新出皮肤让用户继续购买。软件是一种逻辑的产品,与硬件产品有本质的区别硬件是看得见、摸得着的物理部件或设备。在研制硬件产品时,人的创造性活动表现在把原材料转变成有形的物理产品。
来源:https://www.cnblogs.com/taoyiming/p/11512433.html