不懂软件开发,家里孩子不听话,没对象的,

大家好我是你们的好虾户,逮朋友。

大家好我是你们的好朋友,逮虾户。

56岁生日当天,房地产大佬、SOHO中国董事长潘石屹发布了一条微博,表示自己要开始学Python。

当时大二就过了英语四级的逮虾户就放下一句狠话“没有人比我更懂Abandon!”

可就在前几天......

人家真的学了半年多了。当无数网友开始感叹连商业大佬真的开始学编程时候,还有一批网友在评论下留下了下面一句话:

“进步青年麻痹自己三大件:英语,健身,学python。”

你细品了这条评论,再看看自己朋友圈“健身三分钟,拍照一小时”的朋友,叹了口气。回想自己也是陷入某音不要不要,看着这些鬼画符的代码更是头大,揉了揉自己的肚子,吓得赶紧从床上爬起来一口气做了10个俯卧撑。

不管是英语,健身,还是学python,对于你都是未知的事物,起手式没做完就产生抵触心理也是在所难免。那有没有..........

别问,问就是软件工程。

软件工程软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面......

用人话讲,“软件工程是信息化时代对于建设软件的一套方法论”,记住最后这两个大字“方法”。

就好像盖大楼需要建筑科学,需要知道怎么受力,需要懂得怎么设计,你说“老板我会开挖掘机”,你们家WJJ就算成精了也是不会盖大楼的。

今天我们不提什么耦合,迭代,生命周期,瀑布模型那些高大上的概念,今天用最简单的一篇文章讲述软件工程。

在《如何追到自己喜欢的人》、《看了这本书,你也是马云》和《母猪的产后护理》这三本书中,你能够看到软件工程的主干线:

需求分析,可行性分析,概要设计,详细设计,编写代码,测试,维护

生活中,当然也可以通过科学方法的层层递进,实现自己想要的结果。

1.可行性分析

......对不起,针对“追到自己喜欢的人”这个需求做可行性分析确实很残忍。

那我们就针对“成为马云”这个需求做可行性分析:你不姓马,所以这个需求不可行,但是“成为马云一样有钱人”似乎好像,可行一点。(0.%也是可行)

分析过程首先是法律,道德,伦理,常识等层面分析,之后是时间成本,物质成本等层面分析。

“我看行,这事靠谱。”

“那就整吧。”

2.需求分析

经过可行性分析,接下来是需求分析阶段。需求分析阶段,我们需要知道我们这次,到底要做什么。“追到自己喜欢的人”、“成为马云”、“照顾好产后的母猪”就是需求。如果没有需求:

没有需求的案例:

一位信息部门的主管接到一个软件项目,然后和多个用户部门需求调研之后,他们都没有提出明确的具体需求,只是让他“先开发出来,再提需求”。于是,这位主管苦思冥想之后,找到一个高招,召开所有部门主管还包括公司的总裁的项目演示会。当时会议室里坐了满满一屋子人,那位IT主管打开投影仪,开始演示他的项目。大屏幕上显示出项目的标题。几秒钟后,电脑的CD-ROM自动打开了,几秒钟后,它又自动关闭了。就这样,演示结束了。其他部门的头头们都纷纷询问是不是设备出了问题,这位主管说:“没错,只是打开CD-ROM,然后再关上它”,紧接着又说“你们,没有一个人告诉了我你们想要什么,所以我就照我自己的想法做了一个。你们还想不想再看一遍”。

有了模糊的需求,我们需要把模糊需求精确为具体需求。

那有了具体需求,下面是不是可以。。。

不,不可以,我的北大导师告诉我,一份好的需求分析,写三到四个月是很正常的,一定要把前面的分析阶段做好,别给自己挖坑。

反复核查自己的需求,确定自己真正想要的,如果是别人的需求,那就反复挖掘他的需求,“坑蒙拐骗“,做一个逼供大师。具体这么做的原因,后面我们在来解释。多的不说,把你的需求,写下来,不管你是恋爱,工作还是教育孩子,写下来你的需求。

3.概要设计

因为软件工程最初是为了更好地建设软件而创立的学科,在软件设计过程中会用到很多图,比如:

E-R图流程图数据流图

图是帮我们梳理整个业务的数据关系,业务流程和信息流向。

在“追到喜欢的人”这个需求上,

首先是数据关系,明确我和她的属性,比如性格,爱好,技能。(这里插一句,当你梳理自己信息时候,着重标出“利他”属性,比如会做饭,会疼人;而“利己”属性则放在次要位置,比如:爱运动,唱歌好听。)

其次是步骤流程,这里主要指粗略的方向,“对她好”,“让她注意到我”这就算很粗略啦。

“成为马云一样的人”这个问题可能更好的来解释概要设计。

奋斗青年基本步骤

建立学习目标,学习,实践。

具体学什么,怎么安排,就放在详细设计阶段啦!还是那句话,数据和流程分析都要写在纸上啦。

4.详细设计

在“追到喜欢的人”这个需求上,就是细化到具体行为,时间地点人物做什么,穿什么衣服都要精确。

在“成为马云一样的人”这个需求上,就是细化到学习什么,怎么学,什么时间学等等(不断地学习,真的是成为马云一样人的唯一出路)。

软件开发的话,精确到算法,模块化代码,数据库字段设计等等。

不管是需求分析,可行性分析,概要设计,详细设计。其实都属于事前计划,不要觉得“连谈个恋爱老子还要写计划”看起来很愚蠢,我写计划了,我有对象了,你呢?

咳咳,最主要的,是软件工程带来的方法论是普适性的。用开发软件的思路来规范自己的生活行为和流程,从而实现自己的目标,才是我们最想表达的。

好的正文继续。

5.编写代码

“追到自己喜欢的人”,没有这一步。

比较重要的原则,就是忘记你的需求分析和可行性分析文档,根据你的设计,进行实施。这里就解答之前为什么要把需求做好的原因了。

连大楼的图纸都打印出来了,工人都到场准备干活了,领导觉得这里不盖大楼,盖公园吧。(当然现实中这种情况很多,就当做是彗星撞地球的不可抗拒力吧,你得听领导的。)

如果照着原本就不够扎实的需求开始实施,到后面,真是恨不得从头做算了,可是看着已经盖了20层的大楼,心想“修补修补算了”,最后得到的结果往往都不尽人意。

所以回到开头,潘石屹写代码,就是在这个阶段。

6.测试

如果是开发软件,在这个阶段你应该有一套程序了,但是,不知道能不能用。你需要准备各种各样的测试用例来测试你的程序。

如果是“追到自己喜欢的人”,接下来,你可以找一个异性朋友,演练一遍你的计划,对其中的问题进行修正,原则是,尽量不过度破坏之前的概要设计,详细设计。如果之前的结构被更改就会变成:

“我看这个三楼盖的挺好的,你把一楼二楼都给我拆了吧,只保留六楼就行了!”

真当自己是哈尔的移动城堡啊。

这里举例一下软件测试中两个测试方法:白盒测试和黑盒测试。

区别,就在于是否分析中间的逻辑处理环节。

如果是“追到自己喜欢的人”这个需求,

白盒测试就是当你给她一束花,你得到了她的笑容,分析是因为花让她笑了,还是花的包装让她笑了(女孩子的心思你别猜)。

黑盒测试,就是,给她花,她笑了,OK。

“追到自己喜欢的人”这个需求,白盒测试的重要性显然要比黑盒测试大的多。

测试是所有系统上线前必做的,其实我们平时在做事前也会在内心演练一遍,预测可能的问题,从而修正自己的行为,加加经验值,为日后工作进展铺平道路。

7.维护

恭喜你们在一起了。“好好在一起吧,过日子和谈恋爱可不一样。”你妈如是说道。拿出之前的纸质文档,会为你婚姻幸福提供参考和帮助的。

什么?失败了?再建立另一个“如果追到自己第二喜欢的人”这个项目,从头开始吧。

找找之前每一步的纸质文档,分析是哪里出了问题呢。

正经的讲就是面对软件正式使用过程中,难免会有问题,既然能通过测试到这个阶段,bug相对还是少的,不断地补丁和下发用户指引会让程序的使用越来越流畅。

好的,我们最后总结一遍:

简明的流程:明确需求,简单设计,具体设计,测试,维护;每一步都用图形化,流程化的形式为自己理清思路,梳理每两者之间的关系。把自己做一件事情的文件存档,以备下次有类似问题时可以借鉴,多次练手后,解决任何问题,都变成彻彻底底的套用公式啦!

虽然没有像论文一样把软件工程太过硬核描述,可自己看完了:

“我这是写的软件工程还是恋爱手册。”

这里是逮虾户,大家下次再见




转载请注明:http://www.zjiaren.com/txjg/11700.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了