软件工程(C语言实践篇)

学号:SA16225018

姓名:曾龙飞 

一、什么是软件工程与高级软件工程课程设置

1.1软件工程

首先,我先谈谈我对软件工程的理解。软件工程在我的脑海里就是如何利用工程化管理的技术来做软件。为什么会诞生软件工程呢?孟老师不止一次的提到,随着代码量的增大,人对代码的掌控能力越来越弱,代码的逻辑、进度和成本越来越不好控制,产生了软件危机!为了解决软件危机,软件工程应运而生。

1.2课程设置

    以上就是高级软件工程这门课产生的背景。高级软件工程课程,授课老师孟宁老师。课堂主要以孟老师主讲,学生分享的形式进行教学。课下分为线上作业与线下开发两部分。线上使用C语言开发软件,线下使用go语言开发软件。go语言是google开源的5大官方语言之一,一经开放在几年内从TIOBE排行50开外到现在的稳定在前50,孟宁老师线下作业选择go语言进行开发,且看孟老师眼光是否精准。不论go语言是否在未来用的到,这种语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改的特性,在线下开发中可是深深地体会了一把,go语言还融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。

二、通过对软件工程的学习,自己对一开始关于软件工程课程的疑惑的认识:

    现在孟宁老师的软件工程课程已经结课了,从一开始的对软件课程的一无所知到现在的对软件开发流程的整体认识都有了质的认识,一开始对软件开发的各种困惑,通过一个学期的学习,原来的各种疑惑也都解决了。软件的开发并不只是单纯地敲代码,还要经过一整套严格的开发流程,有对软件的整体设计,需求分析,编码规范,开发,测试以及后续的相关维护等有了认识和了解。

    首先,谈谈自身学习。以前每天都只是知道写自己的代码、写注释,不注意代码书写的规范性,缺少对团队合作和交流,在现在软件工程的课程中,一味的遵循个人意愿很难开发出一个好的软件,俗话说:百密必有一疏。这时候,必须要去寻求科学的方法,协调自己的合作伙伴,通过众力量来完成对一个可行性软件的设计、开发和维护等工作。在线下开发中,发现以前项目开发的很多流程和做法都不符合规范,比如代码规范、团队模式、开发方式等。因此在以后项目开发时事先对项目要有一个详细的规划,需求分析,UI设计,看图写代码等。不能只是简单地开发代码,而不去注重软件开发过程记录,多去按照标准的软件开发模式去书写每一个软件开发过程的文档。

三、课上内容

3.1版本控制

    在课上,孟老师主要讲解的方向是版本控制,如果说什么是软件开发项目一定要使用的基础工具,那么版本控制系统应该算最重要的部分。不管是个人开发或是团队协作开发,都可以通过版本控制系统获得巨大的好处。

    没有版本控制系统的话,代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改。有了版本控制系统,开发人员只要将每次程式码的变更都纪录(Commit)起来,并且透过版本控制系统中进行更新。

    有了版本控制系统,我们可以浏览所有开发的历史纪录,掌握团队的开发进度,而且作任何修改都不再害怕,因为你可以轻易的复原回之前正常的版本。我们也可以透过分支和标签的功能来进行软件发行的不同版本,例如稳定版本、维护版本和开发中版本。

    很多项目需求方还没有明白开发的定义,这里必须要跟大家说一点老生常谈的段子:“开发永远是个过程,而不是结果。”所以开发者一定要使用版本控制系统,Git或Mercurial是免费开源的版本系统系统、随处可用的网络、便宜的云端服务器,甚至有现成的第三方服务Github。

3.2版本控制收获

    通过课上的学习,成功在线下一级自己团队开发的振东贴(贴吧)项目中使用了版本控制,体会了其中的好处,git本地仓库,从git-hut远程push,pull分支,checkout分支,git st检查版本变动,到add与am提交commit。

    git真的很神奇,切换分支后在本地文件系统中自动显示当前的分支,其实他是基于各个版本之间差异以存储差分的形式控制各个版本的。远程项目的git-hub,merge分支,与校验,已经出错时的版本回溯。在并行软件开发的过程中起到了十分重要的作用。版本的发布借用了部分svn版本控制的功能,在课上经同学分享习得,也十分好用。

    在下面分享一本书《Pro git》详细的讲述了有关版本控制的知识,相信会对大家以后的项目开发有举得的帮助。

 这里还有我在网上摘抄的有关版本控制具体分支建立规则的黑科技知识:

一个完美的 Git 分支管理模型 (Git工作流)

四、线上与线下开发

4.1软件工程线上/下开发

    线上采用c语言完成实验线上有孟宁老师在网易云课堂的在显视频讲解,内容明了清晰(云课堂链接:孟宁老师网易云课堂链接)每次在实验楼linux系统平台上完成实验(链接:实验楼,实验楼不定期还会推送出精彩的试验课程,比如SSM框架spring+springmvc+mybatis还有Python爬虫课程,我都有在上面实验,收获良多),线下使用go语言完成开发。项目与实验主要是为了让广大同学熟悉一下软件开发的要点:

第一、需要遵守代码规范,好处是便于修改和维护。让别人看的清楚你的代码;

第二、数据和业务逻辑的分离。我们需要将代码进行模块化,从而更好地维护和复用代码;

第三、懂得合理地设计接口,既不能面面俱到,也不能太过笼统,够用就好。比如说:链表的接口设计和菜单的接口设计就有所不同。链表需要增删查改的接口,而菜单的接口就无需如此太过细节化;

第三、掌握代码的运用技巧,比如说回调函数的使用;

第四、非功能性需求,比如说安全性。这里尤其需要谈到的是线程安全,如何利用加锁的机制构建出写出安全的代码;

第五、设计思想,这里需要应用一些前人总结的设计模式,比如说工场模式、观察者模式、适配器模式等。应用这些模式能大大增加代码的延展性,更好地包容变化,更好地复用代码。当然,为了拓展视野,孟老师也提到函数式、形式化方法的编程;

以下是我的线上试验的目录与连接:

实验一:helloworld小程序

实验二:命令行菜单小程序V1.0

实验三:内部模块化的命令行菜单小程序V2.0

实验四:用可重用的链表来实现菜单功能

实验五:用callback实现增强链表模块功能

实验六:函数的可重入性(reentrant)及线程安全浅析(非实验,为线上测验)

实验七:将menu设计为可重用的子系统

4.2课业内容与得分


(注:第六次试验内容为在线测试,没有试验报告,每次试验后会进行学生互评,没有完成互评的学生当次试验成绩折半,最后一次试验过了互评截止日期惨遭折半)

4.3开发心得

线上实验与线下作业分别有7次,循序渐进的完成了工程菜单模块的设计,从实现功能性需求到实现非功能性需求,再到解耦模块之间的功能,规范接口,使用回调函数,使用makefile编译。一路下来真的学到了很多,尤其是关于回调函数,以前一直不知道使用它的意义,到现在,为了分离所有函数功能,与业务逻辑。在函数功能中定义回调函数,在业务逻辑中的函数参数中传入回调函数接口,完成数据存储与业务或者说计算的分离。感觉自己真的进步了。

五、收获与遗憾

    学习软件工程我最大的收获,就是理解了软件工程,初步设计软件,明白软件开发的流程。特别是,由于孟老师有着丰富的软件开发经验,所以比只讲软件工程理论要来的有趣、更好理解得多!最大的遗憾是,我希望线上课程能让我和同学共同协作,通过规定接口来完成一个比较大型软件项目,因为我感觉软件工程离不开沟通协作。这方面可能会延长教学周期,但是真心希望可以有这方面的课程。

    最后,深深感谢孟宁老师给我带来了如此生动、有趣而又丰富的软件工程课程。

作者:曾龙飞

《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 

转载请声明出处以及上信息,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容