软件工程(C编码实践篇)学习总结
2018-06-18 04:02:01来源:未知 阅读 ()
本文是作者在学习了软件工程(C编码实践篇)课程后的学习总结性质的文章
希望能通过自己的一些理解和经验帮助大家更好地理解软件工程的有关内容。。
学生 戢祥
课程地址《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
原创作品转载请注明出处。。谢谢。
众所周知,软件工程涉及的范围十分宽泛,从软件的生命周期来看,分为:问题的定义及规划、需求分析、软件设计、程序编码、软件测试、运行维护。这六个阶段。
而说起软件工程,我的理解是用系统的规范化工程化的方法来指导开发和维护高质量软件产品的过程。
并且对于代码层面而言,软件工程中有个概念叫高内聚低耦合。它是判断设计好坏的标准,主要是看系统的内聚性是否高,耦合度是否低。
由于软件工程中一个重要的设计思想就是模块化的思想,而耦合性指的是模块间的联系,是软件系统结构中各模块间相互联系紧密程度的一种度量。
内聚性指的是模块内的联系,是模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
那么我们便可以得出一个结论:
在代码层面上的软件工程就是力求通过一系列的设计思想和规范的方法论来让系统能够达到高内聚,低耦合的效果。
我们要说的这门课程便是从一个menu菜单小程序入手,逐步重构和细化,最终成为一个可以嵌入其他程序中的一个可重用的模块。
是从代码层面来介绍软件工程的一些设计思想。下面从每次实验的角度来总结这门课程的大致内容以及个人的一些心得。
注:课程实验主要是在实验楼提供的Linux虚拟机环境中完成的。
主要采用的是C语言来完成实验,当然我们也可以用其他语言来复现实验效果,比如go语言等。
1.从简单做起,熟悉环境
写一个hello world小程序
这次实验主要是熟悉实验环境,熟悉linux的一些常用的命令,如ls,cd,mkdir等,以及vim编辑器三种模式和gcc编译器的使用。
2.搭建基本的框架
命令行菜单小程序V1.0
这次实验是按照代码规范简单地搭建一个menu小程序。
值得注意的是for语句是c99中的规范,如果我们用到的话,需要用c99规范来编译。
编译语法是:
gcc helo.c -std=c99 -o hello
3.实现业务逻辑和数据存储之间的分离
内部模块化的命令行菜单小程序V2.0
这次实验是在上次实验的基础上,实现业务逻辑模块和数据存储模块之间的分离。(模块化的思想)
4.将通用的模块集成到项目中
用可重用的链表模块来实现命令行菜单小程序V2.5
这次实验中,我们发现了linklist可以重新分离出一个可重用的模块linktable,然后再将这个通用的接口集成到我们的系统中。(接口设计)
5.活用callback函数使接口更加通用
用callback增强链表模块来实现命令行菜单小程序V2.8
这次实验中,我们要实现接口中的信息隐藏,用回调函数来使接口更加的通用。(信息隐藏,通用化,多态)
6.将项目重构成一个模块,供其它模块使用
将menu设计为可重用的子系统
这次实验中,我们为menu系统设计接口,将menu系统重构成一个可重用的模块。这样我们就可以把menu模块嵌入其他系统中。
课程总结:
学完本次课程我最大的收获是了解到了一个可重用的模块是如何被建立起来的,以及我们每次在重构这个模块时的意义。
并且认识到了设计的方法论就是不断地重构,同时也熟悉了很多设计原则,如模块化,通用的思想,接口如何设计,信息隐藏,增量开发,线程安全等方面。
遗憾的是本门课程主要是从代码层面来讲解软件工程的,对软件工程流程方法的介绍上稍显欠缺。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 软件工程第三次作业 2020-03-30
- TinyXML2的快速实践 2019-10-13
- 整数编码 2018-12-04
- 算法第三章实践报告 2018-12-02
- 【数据结构与算法】二叉树——哈夫曼编码 2018-11-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash