zoukankan      html  css  js  c++  java
  • 《构建之法》第一章读后感

    1.1 软件 = 程序 + 软件工程

      构建过程,构建不仅仅是cc和link命令,一个复杂的软件不但要有合理的软件架构软件设计与实现, 还要有各种文件和数据来描述各个程序文件之间的依赖关系,编译参数,链接参数等等。

      有些程序要配置不同的界面, 运行在中文,英文或其他语言的操作系统上;有些程序还有32位版本,64位版本等. 这是 源代码管理的问题也叫 配置管理。

      我们还有一系列的工具、流程、和文档来保证程序的正确性,这些工具,流程应该达到很高的质量,才能保证开发出来的软件的质量. 这就是 软件质量, 具体的验证过程叫做 软件测试。

      读懂已有的程序,了解程序的设计,这叫程序理解。

      团队的新老成员一起修复各种各样的问题,这叫软件维护,或者服务运营。这一系列过程就是软件的生命周期,在这一周期中,有人得负责软件项目的管理。

      一个好的软件,即使功能和同类软件区别不大,但却会让人感觉非常好用,这就是软件的用户体验。

      软件还要处理不同语言、不同地区的用户对界面和功能的不同需求,这叫软件的国际化和本地化。

    1.2软件工程是什么

      软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

      人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫软件开发流程。

    1.2.1软件的特性

      ·复杂性

        软件可以说是人类创造的最复杂的系统类型。大型软件有超过百万行源代码,上万的不同的文件。

      ·不可见性

        软件工程师能直接看见源代码,但是源代码不是软件本身。

      ·易变性

        软件要不断改变,正确修改软件是一件困难的事情。

      ·服从性

        软件不能独立存在,他总是要运行在硬件上面。

      ·非连续性

        许多软件系统没有连续的特性,有时输入很小的变化,会引起输出上极大的变化。

    1.2.2软件工程与计算机科学的关系

      计算机科学中的理论研究部分,大多可以从形式上证明,与数学、离散数学、数学逻辑密切相关;计算机科学中与实践相关的部分,都和数据以及其他学科发生关系。

      软件工程的研究目标中都有“人”出现,这些“人”可以是项目需求的提供者,可以是软件的开发人员,还可以是软件的用户。

      计算机科学和软件工程的不同侧重点

    计算机科学 软件工程
    发现和研究长期的、客观的真理  短期的实际结果(具体的软件会过时)
    理想化的  对各种因素的折衷
    确定性,完美,通用性  对不确定性和风险的管理,足够好,具体的应用
    各个学科独立深入研究,做出成果  关注和应用各个相关的学科的知识,解决问题
    理论的统一 百花齐放的实践方法
    强调原创性 最好的、成熟的实践方法
    形式化,追求简明的公式 在实践中建立起来的灵感和直觉
    正确性 可塑性

     

     

     

     

     

    1.2.3软件工程的知识领域

    生命周期 软件需求、软件设计、软件构建、软件测试、软件维护
    专门领域 软件配置管理、软件工程管理、软件工程过程
    理论基础 计算基础、数学基础、工程基础

     1.2.4软件工程的目标----创造“足够好”的软件

      用户满意度bug:用户在使用时发现了软件的很多问题,影响了用户使用软件的效率。

      可靠性bug:某个软件经常会崩溃,某个操作系统会时不时死机,某个网站往往在最需要的时候登陆不上去。

      软件流程的质量bug:软件团队和开发流程的问题太多,导致团队成员无法互相协作,按时交付软件。

      可维护性bug:某个软件太难维护,修复了一个问题,另一个问题又出来了。也没有足够的文档,维护人员表示需要更多的资金来维护这个软件,甚至建议推到重写。

    1.3练习与讨论

     2.

      1) 通过读软件工程师的成长,一个程序需要不断更新进步,这也要求程序员需要不断学习新技术才能不被市场淘汰,有什么比较有效的方法提升我们的能力?

      2)我们应如何制定自己的职业生涯规划?

      3)通过读需求分析,我在实习中发现公司的客户可能会提出一些难以实现的需求,我们是否可以拒绝?

      4)通过读IT行业的创新,创新就是做和以前不一样的事,能做成也是一件不容易的事,我们如何提高自己的创新能力?

      5)通过读团队和流程,在团队中每个人的职责不同处理问题的方法也不同,我们怎样才能统一意见,避免吵架?

      3.

      主要使用的软件:Games王者荣耀,Tools有道翻译官,Operating Systems IOS

      分析Games王者荣耀

      通过广告,朋友推荐成为用户,目标是盈利,通过充值购买皮肤抽奖盈利

      通过App Store下载,高中时接触,它的盈利目的太强。

      发现bug及时维护更新,通过不断创新玩法与同类竞争。

  • 相关阅读:
    acdream 1738 世风日下的哗啦啦族I 分块
    hihocoder #1179 : 永恒游戏 暴力
    hihocoder #1178 : 计数 暴力
    hihocoder #1177 : 顺子 模拟
    刷了500道水题是什么体验?
    scu 4436: Easy Math 水题
    JVM系列三:JVM参数设置、分析
    Eclipse插件Target Management (RSE)
    修改jsp文件tomcat发布失败(Could not delete May be locked by another process)
    oracle中修改表名
  • 原文地址:https://www.cnblogs.com/xushaohua/p/11482299.html
Copyright © 2011-2022 走看看