遇到的困难

在学习计算与软件工程的第一节课前,由于以前未接触过博客以及分享,在编辑文档页面卡了许久。一些Markdown的基本语法使用也不是很熟练。

工具软件认识及看法、学习过程

我从互联网上了解的Markdown语言是这么解释的:

Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。

它的优点和缺点分别是:

优点:

  1. 因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。
  2. 操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而Markdown只需要在标题内容前加#即可

缺点:

  1. 需要记一些语法。
  2. 有些平台不支持Markdown编辑模式。

我觉得Markdown是一款非常方便实用的语言,在编写这篇博文的时候利用语法简书逐渐尝试使用它。

第一章概述内容的读后感

为什么需要软件工程

首先我知道了程序员赖以生存的程序公式是:

数据结构算法 = 程序

我们不仅仅要知道公式还要反问自己:

我们软件行业赖以生存的“软件”, 我们程序员用来安生立命的“程序” 是什么?

软件从来不是只要做出来就行了,即使功能是一样的但失之毫厘,可能造成的结果就大相径庭。怎么样做成好的用户体验呢?从需求分析 (Requirement Analysis)开始,
经历软件架构写数据结构和算法软件测试(Testing)到最后的发布以及后期的软件维护(Software Maintenance)一系列环节都要精准把控。最后免不了的
一个环节:赚钱由此又可以得到一个拓展的推论:

软件企业 =软件 + 商业模式

一个优秀的的程序,优秀的不仅仅是程序本身,还有它背后的软件工程,软件工程决定了它的命运。

那么软件工程是什么?

程序,软件,软件工程可以用下表做一个简单类比:

|航空|软件|影响(如果成功/失败会如何)|如何控制过程 (怎么一步步提高做事情的质量?)|
| ------ | ------ | ------ |
|玩具, 基本知识:纸飞机/航模| 写程序练习数据结构/算法| 影响自己,如果失败, 会减少对这类知识的兴趣。这类知识也有比赛,如航模比赛,程序算法比赛,但是比赛之后,这些算法高手写的程序的可维护性怎样? 有人会拿着程序去发布为商业软件么? |对飞机头哈气, 再哈气... 看别的小孩怎么做飞机, 上航模课外小组...|
|爱好者的尝试:气球+沙滩椅升空 | 用Javascript, Asp.Net, Ruby 写写网站 | 气球升空成功, 当地晚报会报道。程序能跑起来,自己博客写写。失败之后呢? 没关系,爱好者很快会捡起新的爱好|研究各种工具, 做小实验|
|先行者的探索:莱特兄弟飞行|软件业的创新|即使第一个版本的飞机只飞了36米,明白人还是看到了划时代的意义。很多软件原型也是这样。如果探索失败之后,会怎么样? 对于大部分创业者来说,如果还有钱/机会的话,还要继续创新。|研究理论, 不断尝试|
|成熟的工业:飞机制造业 民航|Taobao, Ali-pay, Win7|软件的发布会影响一个公司,一个行业,波及到相关的行业和人员。如果一个公司失败了, 很多人会失去饭碗|有完整和严格的过程控制理论和实践|
所以,由此可以知道软件工程是软件工程是把系统的, 有序的, 可量化的方法应用到软件的开发, 运营, 和维护上的过程。
软件工程包括下列领域: 软件需求分析, 软件设计, 软件构建, 软件测试软件维护.
软件工程和下列的学科相关: 计算机科学, 计算机工程, 管理学, 数学, 项目管理学, 质量管理, 软件人体工学, 系统工程, 工业设计用户界面设计.
我们在开发,运营, 维护软件的过程中有很多技术, 做法, 习惯, 和思想体系。 软件工程把这些相关的技术和过程统一到一个体系中, 叫 “软件开发流程”,软件开发流程的目的是为了提高软件开发, 运营, 维护的效率;以及用户满意度, 可靠性,和软件的可维护性。
软件工具有很多, 有无数的独立软件工具, 例如编译工具, 源代码管理工具, 源代码编辑工具; 也有一些软件工具系统例如 Microsoft Visual Studio; Eclipse; ClearCase; ClearQuest 等等。

软件工程的bug

bug 的多少可以直接衡量一个软件的开发效率, 用户满意度, 可靠性, 和可维护性

  1. 软件的开发效率 – 开发过程中bug 太多了, 导致软件无法按时交付;
  2. 用户满意度 – 用户使用时报告了很多bug, 纷纷表示对生活影响很大;
  3. 可靠性 – 这个软件经常会崩溃,这个操作系统会死机;
  4. 可维护性 – 这个软件太难维护了, 按下葫芦起了瓢, 修复了一个问题, 另一个问题又出来了。也没有足够的文档, 维护人员纷纷表示要把原作者找出来打一顿。
    最后,有实际用处的, 完美的软件在世界上是不存在的.软件工程的一个重要任务就是要决定一个软件在什么时候能“足够好”, 没有严重的“bug”,可以发布。