在阅读《构建之法》之前,我所认为的软件就是通过c,c++等语言编程,制作出的一个能满足人们操作需求的一些代码,认为一个好的软件工程师,就是能够在很短的时间之内,最快的根据需求写出几段代码程序的人,认为一个完美的软件就是能够满足人们的要求永远都不出bug。

而邹欣老师在《构建之法》绪论中提到,软件=程序+软件工程,程序是软件的基础,而软件工程师吧系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。简而言之,就是将软件开发、运营和维护的流程进行系统统一化,从而提高软件开发的速度,减少开发周期,提升软件质量。而一个好的软件工程师,出了需要具备良好的编写程序的能力外,还需要有软件工程的意识。

邹欣老师还提到了软件的特殊性质:复杂性、不可见性、易变性、服从性和非连续性。这些性质让“做一个好软件”变得很难。对于程序的bug,有一个软件行业的著名笑话——这不是缺陷,这是 一个功能!道出了bug的本质:软件的行为与用户的期望值不一样。也许现在的bug可能是以后的某种功能,或者曾近是某种功能。因此,软件很少有完美的,但是软件工程师就是在挑战完美,让软件更加的可靠,用户体验更加的满意,软件的维护更加的容易。

对于这一点,我认为软件工程和机械工程有很大的相似之处——追求完美!机械加工之中工件的表面的光滑程度永远都可以更进一步,工件内部或多或少的都会存在着加工残余的应力,这些往往和理想情况相冲突,最终使得产品的功能出现缺陷和偏差。因此,机械工程追求精准,减小误差是一直以来的目标。

在机电控制方面,机械和软件结合得十分紧密。机械负责传动和执行,电力负责提供动力,而软件则负责控制。因此,机械学生很有必要学习软件工程,了解了软件工程的开发模式和编写思维,能够使我们设计的机械更符合控制需求,而拥有机械工程能力的学生也更容易理解机械的运行方式利于软件控制

<构建之法>阅读感想的更多相关文章

  1. <<构建之法>>略读感想

    经过对构建之法这本书的快速阅读和学习,我有以下疑问. 1.对软件工程来说是应该更注重结果和功能的实现还是更注重代码的易读和完整? 2.应该怎样平衡不同用户的不同需求以达到使大多数人满意的目的? 3.应 ...

  2. 学习打卡day12&构建之法阅读笔记第一篇

    今天浅读了<构建之法>的前四章,稍微有一些个人的见解与感受 第一点即是开篇提及到的算法与数据结构这门学科开设的必要,大二上学期学习了这门课程,就我个人目前接触到的层面来看,几乎可以说用不太 ...

  3. <构建之法>阅读笔记6

    第九章:项目经理 是讲项目经理的作用功能和重要性,书里面主要讲的是微软的PM(Programe Manager)和其他团队PM(Project Manager)的区别,还介绍了PM的能力要求以及人物, ...

  4. 学习打卡day14&&构建之法阅读笔记第二篇

    对于书中所提到的结对编程我还是有些许感受的,在大二上学期我就有和同学合作,共同完成编码.有时候可能是我来做非常非常简易的前端页面部分,然后给同学一个基础框架,让同学往框架里面填充,时而遇到问题我再来沟 ...

  5. 《构建之法》阅读有疑 与 个人Week1作业

    <构建之法>阅读有疑 在用将近五节课的时间将邹欣老师的书<构建之法——现代软件工程>第二版大致看完.虽然全书是以轻松的口吻与”移山公司”员工的一些趣味谈话来传输一些理念和思想的 ...

  6. 软件工程---阅读《构建之法》P384~391

    -阅读<构建之法>P384~391后,我充分认识到软件工程师的职业道德的重要性,具体有: 原则1:公众 原则2:客户与雇主 原则3:产品 原则4:判断 原则5:管理 原则6:职业 原则7: ...

  7. 阅读《构建之法》P384~391

    通过阅读<构建之法>P384~391以及参考阅读杜老师给出的链接,得出一个重要的结论:软件工程师的职业道德至关重要. 软件工程的动态性和需求的前后关系,要求一个规范能对出现的新情形有较强的 ...

  8. 阅读《构建之法》第八、九、十章有感和Sprint总结

    1.阅读<构建之法>读后感 第八章:需求分析 需求分析,我觉得需求分析挺重要的,一个需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应 ...

  9. [BUAA软工]第一次博客作业---阅读《构建之法》

    [BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

随机推荐

  1. BUAA_OO第一单元总结性博客作业——表达式求导

    一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达 ...

  2. dategate的用法

    菜鸟教程上的说法是这样: delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数. 使用 delegate() 方法的事件处理程序适 ...

  3. CQRS简单入门(Golang)

    一.简单入门之入门 CQRS/ES和领域驱动设计更搭,故整体分层沿用经典的DDD四层.其实要实现的功能概要很简单,如下图. 基础框架选择了https://github.com/looplab/even ...

  4. 查询mssql的死锁语句

    都是从网上找的,只是记录一下,可能用到. 查询死锁,要在当前数据库下,否则tableName列得不到正确信息select    request_session_id spid,OBJECT_NAME( ...

  5. JavaWeb总结(四)

    使用Servlet发送服务器端响应信息 Servlet API中定义一个专门的接口类javax.servlet.http.HttpServletResponse用于创建HTTP响应,包括HTTP协议的 ...

  6. 【转载】MFC的Main函数跑哪去了

    原文:http://blog.csdn.net/weiwenhp/article/details/8455471 习惯的思维 用习惯了C的人要看一个程序时首先会想到找到那个main函数在哪,然后再顺着 ...

  7. mongodb原生node驱动

    写在前面 最近读<node.js学习指南>,对于mongodb没有介绍太多的工作原理,但是对于一个前端开发者,即使你还没有用过这种数据库也可以让你很好的理解和使用       一本非常好的 ...

  8. nginx配置转发详解

    nginx各项参数的详细配置 本文主要讲解nginx.conf中server部分配置及多路转发问题: server { listen 9090; server_name 127.0.0.1; #cha ...

  9. Siki_Unity_7-4_高自由度沙盘游戏地图生成_MineCraft_Uniblocks插件(可拓展)

    Unity 7-4 高自由度沙盘游戏地图生成 MineCraft (插件Uniblocks) 任务1&2&3&4 素材 && 课程演示 && 课 ...

  10. 《Redis设计与实现》阅读笔记(三)--链表

    链表 定义 链表分为两部分,链表节点和持有链表的list结构. 每个链表节点包含前置节点指针,后置节点指针,节点值void*用于保存各种不同类型的值 list结构包含表头节点指针,表尾节点指针,节点数 ...