这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178

阅读《构建之法》1-5章有感


第1章:概论

作为一个软件工程的学生,对于软件,程序和软件工程的理解如下:

软件=程序+软件工程;程序=数据结构+算法;软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

1.1节中阿超从一开始简单程序,随着需求增长,渐渐变成一个复杂的工程,从扩展到一个满足各种功能的应用软件,再扩展到一个保证服务质量的软件服务。一个复杂的软件不但有合理的软件架构,软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的关系和参数传递关系等。

那什么叫软件架构?现在架构师岗位需求也不少,工资也属于此计算机行业算高的,为什么架构师目前那么热门呢?

“软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。 ”

--------------------- 本文来自 白及 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010098331/article/details/51490633?utm_source=copy

这篇博客详细地解释构架,通过建筑师设计楼房对比,形象地说明架构就是在组件,彼此间和与环境间的关系,引导设计发展原则中体现的系统的基本结构。

飞机的安全功能更说明一个问题:客户的需求有时候可能没有很明显地提出了,相信没有一个客户会向航空公司提意见,我觉得你们飞机安全不保障。很明显如果连安全问题都不保障,还有谁敢来这家航空公司坐飞机。但作为一个设计者是需要考虑到这些“常识”,这就1.2.4节中软件工程的目标——创造“足够好”的软件所说的要消灭一个个的“bug”。一个好软件需要考虑用户用的舒不舒服,系统会不会时不时死机,登不上,可不可以维护等问题。只有全方面考虑才可以做个好软件!

本章疑问:要作为一个架构师需要多少经验才算是优秀的?


第2章:个人技术和流程

一个工程师在软件开发中的工作是需要一个大致一样的流程,作为一个优秀的开发者,你所做的每一个步骤都需要考虑到团队的进度,这就要求在写技术模块的规格说明书的时候,要越详细越好,最好各项要求都可以表示一个单元测试用例,要考虑到时整个项目所有周期的其它工作人员是否能快速理解你的代码。但现在越来越多的程序员并不怎么想写单元测试。很多开发人员知道他们写的代码大多数都不会应用在实际项目中,或者很快被后面的代码覆盖掉,就懒得测试。而且现在还有专门的测试人员。

但我却赞同一些有业界良心的博主的观点:

“对于程序员个体而言,测试最大的意义在于‘建立和维持对代码的自信心'”。

--------------------- 本文来自 墨镜小空 的segmentfault ,全文地址请点击:https://segmentfault.com/q/1010000002415710

作为一名开发者你的目标应该不仅限于会用,还要知道它到底怎么工作的,要如何改动它一适用更多要求,测试要成为你项目的指南针,指导项目一步步发展过来。测试良好的项目,其代码本身也很清晰·干净,易于阅读和理解。

让自己的程序跑得又快又好这是每个程序员的目标,但也不能不经分析就盲目优化,也许会事倍功半。凡是都是有度才能把项目做的更好。

本章疑问:2.2节中两种分析方法抽样和代码代入还是不大能理解和区别。


第3章:软件工程师的成长

初级工程师是通过积累相关的开发软件知识,提升技术技能还有积累问题领域的知识和经验,积累开发思想,提升职业技能,衡量自己的工作成果对这一次项目开发等而成长。多阅读多思考多写代码是成为一个优秀软件工程师必备的。3.3.2节中迈克康奈尔也为员工提供了一套成长路径。他把工程师分为8个等级,一个工程师从一个级别升到另一个级别需要各方面的要求。例如要达到”工程管理的熟练水平“需要做到阅读经典文献,参与完成6个具体项目,参加3个专门的课程等。越高级别还需要获取证书,发表论文等。

自我评估是软件工程师成长的一部分,只有理解自己,才有进步空间,才是真正意义上的精通这个领域。那如何提高自己能力呢?

“重要的并不是经验本身,而是‘努力的学习’,也就是要不断地挑战自身能力之外的东西。一些狂热的爱好者花费了大量的时间去下棋、打高尔夫球或者玩乐器,但他们可能始终停留在业余水平上,而一个训练有素的学生却可以在相对较短的时间里超越他们,原因就在这里。值得注意的是,在提高水平方面,花费在下棋上的大量时间(即使参加各种比赛)似乎还是比不过专门的训练来得更为有效。训练的主要价值在于发现弱点,并有针对性地进行提高。”

-------------------- 本文来自在《科学美国人》的一篇名为“The Expert Mind”(专家思维)

“努力的学习”意味着,要常常去处理那些刚好在你能力极限上的问题,也就是那些对你来说有很大可能失败的事情。如果不经历一些失败的话,你可能就不会成长。你必须不断地挑战自我,超越自己的极限。

本章疑问:中国现在计算机考级证含金量究竟怎么样?公司只看项目经验不看证的吗?作为一个大三学生需要什么证书公司才会招聘你?


第4章:两人合作

现代的软件都是在相互合作中完成的,所以“如何看懂别人家的代码”和“如何让自己代码让别人看懂”是合作中不可缺少的问题。做一个有商业价值的项目,代码规范是相当重要。代码风格规范每个公司都有自己一套,每个员工都会按照公司要求来完成公司项目;但如果个人项目的话,一般会按常规来编写。代码设计规范牵涉到设计设计、模块间的关系、设计模块、运行环境等方方面面。

代码复审是代码设计规范的一个环节,无论多牛逼的大神,总有考虑不全的地方,在开发前期越早发现问题,修复代价就越低。代码复审可以发现很多问题,所以如果我们都处于这一种状态那项目开发会更好,所以才有了结对编程,结对编程让两个人所写代码不断处于”复审“过程,程序员可以及时发现并解决问题·避免把问题拖到后面阶段。

那什么时候结对编程是最有效的方法?

“最主要的因素是技术与挑战相匹配。在独自编程中,如果技能和挑战能互相匹配,最高产的模式就是流模式(Flow)。结对编程添加了一个更有效的模式——指导模式(Coaching),它能够提高全队当前与未来任务的生产率。”

--------------------- 本文来自 jobbole 的 iteye ,全文地址请点击:http://www.iteye.com/news/20082

结对编程成功模式要不就是两人互相学习进步,要不老手带新手。当然也有失败模式,浪费时间没有专业指导,结果什么都没有解决。

本章疑问:如果结对编程的两位已经进入失败模式,那是该换人还是双方都退一部勉强完成一个不怎么好的作品?


第5章:团队和流程

团队是有一致的目标,虽有各自分工,但却互相依赖工作,共同完成这目标。团队模式有很多:在5.2节中,列举出:“一窝蜂模式”、“主治医师模式”、“明星模式”、“社区模式”、“业余剧团模式”、“秘密团队”、“特工团队”、“交响乐团模式”、“爵士乐模式”、“功能团队模式”、“官僚模式”等。

其中瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。重计划,重事先设计,重文档表达成为瀑布模型开始后的模型一个共同点。这一类方法集大成者要算RUP。RUP包括业务建模、需求、分析和设计、实现、测试、部署、配置和变更管理、项目管理、环境。RUP分四个阶段:初始阶段—细化阶段—构造阶段—交付阶段。

渐进交付流程中MVP是最小可行产品,又称为Minimal Feature Set,最小功能集。具体的做法是:把产品最核心的功能用最小的成本实现出来(或者描绘出来),然后快速征求用户意见。

“一个MVP是不是最小的产品, 它是一种策略和流程指向制造和销售产品给客户。 它是构思一代,原型,演示,数据收集,分析和学习一个反复的过程。 一目的,是尽量减少花费在一个迭代的总时间。 该过程被重复,直到所希望的产品,市场拟合得到的,或直至该产品被认为是不可存活。”

--------------------- 本文来自 MBA智库百科 的 最简可行产品,全文地址请点击:https://wiki.mbalib.com/wiki/最简可行产品

本章疑问:在众多模型是不是最新的模型才适合现在软件开发?那如何选好适合的模型呢?是决定于公司的哪些因素?


总结:

国庆七天,读完前五章,明白了团队合作的重要性,也为未来的大作业提供了意见,课本简单易懂,但本人学术不精,还是很多不大理解,稍后再多多琢磨一下,希望能理解更透彻。

转载于:https://www.cnblogs.com/fulanjiang/p/9747888.html

第三次作业:阅读《构建之法》1-5章有感相关推荐

  1. 读《构建之法》13--17章有感

    第十三章讲的是软件测试,其包括功能测试和非功能测试,测试方法有单元测试,代码覆盖率测试,构建验证测试,验收测试"探索式"的测试,回归测试场景.集成.系统测试,伙伴测试,效能测试,压 ...

  2. 第一次软工作业(构建之法)

    第一次软工作业(构建之法) 关于构建之法的若干个问题 1.第一章32页,原文:"有人认为,"中文编程",是解决程序员编程效率的一个秘密武器,请问它是一个"银弹& ...

  3. 迷路在现代软件工程中的羔羊——略读邹欣老师《构建之法》及讲义有感(附上源代码管理软件以及CI/CD调研Demo)

    迷路在现代软件工程中的羔羊--略读邹欣老师<构建之法>及讲义有感(附上源代码管理软件以及CI/CD调研Demo) 项目 内容 这个作业属于哪个课程 北京航空航天大学2022春季软件工程(罗 ...

  4. 现代软件工程—构建之法》第一章 中出现的计算机专业术语

    现代软件工程-构建之法>第一章 中出现的计算机专业术语 软件 程序 软件工程 二叉树 遍历算法 数据结构 算法 应用软件 软件服务 源程序 软件架构 软件设计与实现 依赖关系 编译参数 链接参数 ...

  5. 《构建之法》第二章读书摘要

    第二章   个人技术和流程 <构建之法>第二章主要讲了个人技术和流程,因为团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应该有一个流程,这一章中着重介绍PSP,即个 ...

  6. 读《构建之法》1-5章

    <构建之法>第一至五章,我了解了软件工程的重要性,它就像楼房的建设,是一项大工程,必须有设计,步骤,工具,有能力,有计划,还要有团队合作才有可能实现这么一个工程. 第一章:概论 读第一章的 ...

  7. 《现代软件工程--构建之法》第一章整理

    任务1.计算机专业术语    1.1 软件+程序+软件工程       "程序=数据结构+算法" 程序是指源程序,是一行行代码,它是建立在数据结构的一些算法上面的. "软 ...

  8. 作业三--阅读《构建之法》1-5章

    第一章:概论     当我做出来的程序,跟用户的需求不尽相同,但我不认为自己有错,而且 还认为提出的意见苛刻.都说用户至上,这是否要我们完全根据用户的需求去 对程序进行维护,还是继续根据自己方向去完善 ...

  9. 第三次作业---读《构造之法》1-5章有感

    这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178. 第一章:概论 读完第一章了解到了什么是软件工程.软件工 ...

最新文章

  1. 字符设备编号的注册分配
  2. pandas dataframe column_Python数据分析——Pandas 教程(下)
  3. 【数理知识】《随机过程》方兆本老师-第6章-鞅过程及其性质
  4. 分布式和微服务区别_深度解析spring cloud分布式微服务的实现
  5. [EffectiveC++]item34:区分接口继承和实现继承
  6. IO口复用时钟的配置
  7. PAT甲级1016 (map,排序)
  8. IPXX防护等级中关于防水实验的规定
  9. win10磁盘管理界面各系统分区介绍
  10. 华住:移动时代,自主可控的架构秘密
  11. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_03.入门程序之需求分析
  12. 【情感识别】基于matlab KNN算法语音情感识别【含Matlab源码 542期】
  13. 网页服务器移机设置,手头有一台服务器,应该怎么配置才能正常作为网站服务器运行呢?...
  14. 组播源发现协议-MSDP
  15. 基于Android和Java的校园外卖系统设计与实现
  16. 5000元的电视机推荐 5000元75寸高性价比电视推荐
  17. AutoCAD在指定布局中如何隐藏指定的图形?
  18. 机器学习笔记(二)——特征工程
  19. kali 2.0修改gnome登陆界面背景图片
  20. webpack entry入口

热门文章

  1. Android中Handler消息传递机制应用之子线程不允许操作主线程的组件
  2. Font Awesome一套绝佳的图标字体库和CSS框架的使用
  3. 划分子网和构造超网的学习
  4. 吐血整理 《计算机网络 五层协议之物理层(上)》
  5. 神策合肥研发中心携手安徽开发者社区,深入交流共促行业发展
  6. 互联网金融,如何起死回生? | 周四话金融
  7. 喜报!良品铺子签约神策数据
  8. vim 的 grep 插件`Leaderf rg`:grep 和模糊匹配的完美结合
  9. JAVA关系表达式解析微引擎
  10. 内容提供器(Content-Provider)完整使用指南