虽说本科的时候学过软件工程这门课程,却因为缺少项目编程实践,所以对其理解得不是很透彻。但是在研一的继续学习却有了更为深刻的理解和体会,究其原因除了一而再的受教,更多的是理论与实践的结合。那么,高级软件工程这门课究竟给我带来了什么样的心得呢?

软件工程是一门需要大量实践时间的学科,如果我们只是上课听一听,跟着老师,课本敲一敲代码而已,课后完全没有自己的练习,那无疑是学不好软件的。在这两个多月的学习中,我不仅在课堂上学到了理论知识,更重要的是每周的实验实践以及助教的负责检查和指导,让我不断地进步。

一般有过面向对象编程的人来说,最头疼的估计就是设计了。一个好的项目,设计至少要占到50%甚至更多,那么问题来了,什么样的设计才是好的设计,以及如何才能做到?这就需要软件工程思想来指导。

软件工程的目标就是提高软件的质量与生产率,最终实现软件的工业化生产。质量与生产率之间不存在根本的对立,好的软件工程方法可以同时提高质量与生产率。

软件的质量因素有很多,比如正确性、性能、可靠性、容错性、易用性、灵活性、可扩展性、可理解性、可维护性等。

软件工程的主要环节有人员管理、项目管理、可行性与需求分析、系统设计、程序设计、测试、维护等。

常见的软件工程模型有线性模型、渐增式模型、螺旋模型、快速原型模型、形式化描述模型等。

软件工程多年的发展已经积累了相当多的方法,但这些方法不是严密的理论,我们应该学会选择合适的方法和产生新的方法,“复用”和“分而治之”是两个行之有效的策略,也是在实验中代码编写的关键思想。

复用就是指“利用现成的东西“,文人称“拿来主义”。复用不是人类懒惰的表现而是智慧的表现,正是因为我们总是在继承前人的成果,不断加以利用、改进和创新才会进步。把复用的思想用于软件开发,就能避免重复造轮子。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生成率。

分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。把这个思想应用于软件开发时,我们要考虑复杂问题分解后的每个问题能否用程序实现?所有的程序最终能否集成为一个软件系统并有效地解决原始的复杂问题?

在现实情况中,由于条件的千差万别和技术的日新月异,没有哪一种软件标准能长盛不衰,所以我们要与时俱进,敢于创新,不能过分依赖和套用一些示例。

软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增加新手,可能会延误项目。因为新手会产生很多新的错误,使项目混乱;老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。

对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大。

正所谓,不想当将军的士兵不是好士兵。作为一名合格的程序猿,不仅仅只是码代码来实现系统需求,更应该去培养软件工程的思想。在编写代码的时候,多以软件工程化的思想去推敲考究,看是否能将代码写得更漂亮,更优秀。闲的时候可以设想一下,如果自己是软件架构师或项目经理,该如何设计整个软件开发周期,预测在开发过程中可能遇到的问题及相应的解决方案。只有时刻准备着那个职位,才有机会获得那个职位,机会是留给有准备的人的,不是吗?

附录:实验内容以及实验报告和代码

实验一:写一个“Hello World”小程序

实验一报告

实验一代码

实验二:命令行菜单小程序V1.0

实验二报告

实验二代码

实验三:内部模块化的命令行菜单小程序V2.0

实验三报告

实验三代码

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

实验四报告

实验四代码

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

实验五报告

实验五代码

实验六:函数的可重入性及线程安全

实验六测验

实验七:将menu设计为可重用的子系统

实验七报告

实验七代码

潘凯特

原创作品转载请注明出处

《软件工程(C编码实践篇)》 MOOC课程http://mooc.study.163.com/course/USTC-1000002006

高级软件工程-读书笔记之思想篇相关推荐

  1. 《教练型管理者》读书笔记-第2篇 【教练技能】

    <教练型管理者>读书笔记-第1篇 [教练原则] 第2 篇 教练技能 教练原则是通过教练的行为体现的.就像学习武功一样,心法虽然重要,但要落地就需要依靠扎实的基本功,这就是教练的核心技术. ...

  2. 《教练型管理者》读书笔记-第3篇 【教练流程】

    <教练型管理者>读书笔记-第1篇 [教练原则] <教练型管理者>读书笔记-第2篇 [教练技能] 第3 篇 教练流程 教练定义:"教练是基于对话技术,赋能个人达成绩效目 ...

  3. 《学术研究你的成功之道》读书笔记之论文篇

    <学术研究你的成功之道>读书笔记之论文篇 五年前的一次机器学习会议上,正逢凌晓峰教授签名出售新书<学术研究你的成功之道>,心血来潮买了一本,翻了一下觉得写得很不错.近日由于要在 ...

  4. 《教练型管理者》读书笔记-第4篇【教练实践】

    <教练型管理者>读书笔记-第1篇 [教练原则] <教练型管理者>读书笔记-第2篇 [教练技能] <教练型管理者>读书笔记-第3篇 [教练流程] 第4 篇 教练实践 ...

  5. 读书笔记之 sed 篇

    Sed&awk笔记之sed篇:简单介绍 最近在阅读<sed & awk(第二版)>,这本书是sed和awk相关书籍中比较经典的一本.我在读书的时候有一个习惯,就是会作一些笔 ...

  6. 软件工程读书笔记(四)——软件工程师的成长

    昨天依靠一罐红牛撑了一天,在零点到来前五分钟commit了最终代码.脑袋昏沉地走出实验室,去肥西路的蒸小皖吃了一碗牛肉面,在凌晨一点之前,把自己扔到了床上,当然少不了敲开宿舍楼下的门的时候宿管阿姨的一 ...

  7. Android4学习-高级编程读书笔记开始篇

    随着智能手机行业的发展,Android系统从最初诞生到现在的几年被大量的完善和修改.以前一直做的是pc端的开发,逐渐意识到移动端是未来几年的大势所趋.Android系统是基于Linux kernel ...

  8. 《软技能》读书笔记——自我营销篇

    本篇介绍 本篇教授的软技能是学会"自我营销",可以通过写博客,运用新媒体平台,参与技术研讨会并发表演讲,著作并出版自己细分专业领域的书籍等方式进行自我宣传营销,扩展自己在业界的知名 ...

  9. 《教练型管理者》读书笔记-第1篇 【教练原则】

    前言 管理的好坏于管理者的好坏会对结果产生显著影响.要想取得优异的业绩,企业就必须让它的每个团队都拥有一位优秀的管理者. 我们对于教练的定义是:基于对话技术,赋能个人达成绩效目标的持续过程.也就是说, ...

最新文章

  1. ci持续集成工程师前景_持续集成CI---失败原因
  2. oracle 附加日志 挂起,Oracle 附加日志(supplemental log)
  3. ppt生成器_9款魔性#傻瓜生成器#,上班可以划水一天
  4. Chrome浏览其中,关闭窗口js无效.(window.close())
  5. 计算机科学与技术的班会,计算机科学与技术学院2014级信管三班班会
  6. Easy RealMedia Producer使用向导
  7. Sql server备份数据库不执行
  8. 5006.推荐初学者几本CCNA教程和材料
  9. 如何去除图片背景变透明?在线抠图软件怎么用?
  10. JAVA - Quartz 定时任务_启动原理
  11. Flask 个人网站重构上线
  12. win7系统如何开启打印服务器配置,win7系统怎么添加打印服务器端口
  13. WordPress Contact Form插件‘cntctfrm_contact_emai’参数跨站脚本漏洞
  14. amigo幸运字符什么意思_OMG,12 个精致的 Java 字符串操作小技巧,学它
  15. Git 使用过程中遇到的问题以及解决办法
  16. 亚马逊(Amazon)新接口SP-API和PII受限信息的开发者申请
  17. 本地RTMP流媒体服务器搭建拉流简易版
  18. STM32 使用 ITM 输出调试信息
  19. 知道创宇区块链安全实验室|Meter.io 攻击事件分析
  20. IntellIJ IDEA导入项目后无法运行方法的解决方法!

热门文章

  1. C# WinForm 强大的图形控件ScottPlot
  2. DW如何设置计算机管理,《Dreamweaver网页设计》网页设计技巧
  3. excel中制作下拉列表
  4. Android 滑动拼图验证码控件
  5. 在控制面板,管理工具找不到Internet 信息服务
  6. 穿越火线活动网页显示Java_Java设计模式-装饰模式:《穿越火线》RMB 玩家的快乐~...
  7. 写一份好的产品说明书
  8. 西部数据的硬盘加密毫无作用
  9. Force 10交换机初始配置文档
  10. 编程之美:让CPU占用率曲线听你指挥