《软件工程》课程总结
问题解答
1.在信息学院中,一般人们会想到做软件开发软件,我是计科的学生,是否这个专业就业或是其它比软工的难,软件工程的目标是创造足够好的软件,那我们计科的学生侧重点在哪?
(1)windows开发:
这个主要用于开发电脑上的软件,需要掌握的有c/c++,windowsAPI,操作系统原理,数据结构算法等。
(2)wed开发:
这就是做网站,分为前端和后台。前端主要负责网页的设计,需要学习HTML,css,Javascript等。后台主要负责服务器端的编程,需要学习Java,PHP,python等其中一门wed开发语言。
(3)电脑游戏开发:
需要有windows开发的基础,再学习directx图形编程,socket通信,游戏服务器假设等。
(4)
移动开发:
主要用于手机。包括ios和android,可以开发手机软件和游戏。需要学习Java(针对Android),objective-c、swift(针对ios)。
(5)
嵌入式系统:
嵌入式系统是软硬结合的技术。对于计科专业的学生,若从事嵌入式软件的开发,像模拟电子技术、数字电路、计算机组成原理、单片机、嵌入式微处理器结构等 硬件课程是较重要的。另外,汇编语言、c/c++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。
2.对于2.1.3 回归测试这一小节中,对回归测试的理解还是不是很清楚,并且里面讲到微软的测试是将里面所有以前发现并修复的Bug找到并且一一验证,可是如何找程序里的Bug呢?
(1) 制作工具,针对某些bug编写一些调试辅助工具。
比如,我那个系统没有完善的崩溃报告,虽然也有dump,但是分析出来的callstack经常不准。于是我为解决崩溃问题编写了个工具,会自动扫描代码,在每个函数入口和出口插入log,以此来定位崩溃点。
(2)掩盖问题,虽然这样做有点不厚道,但是有时不得不这么做。有些bug找不到真正的root cause,但是又要在规定时间内解决,那么我们就可以治疗症状而不去找病因。比如用try catch掩盖一些奇怪的崩溃。不到万不得已不要这么干,未来可能会付出更大代价。
3.软件工程师只能在编程这一方面来体现自己的价值吗?
这个不一定,个人从软件开发中体会到的不一样,我们可以从中学的很多逻辑知识,提高逻辑能力,在以后相关工作中会得到提高。
4.在第四章中,两人合作上如何使两人的能力在编写程序中最大化,用最高的效率来完成对一个软件的开发?如何分配两个人的具体工作,标准是什么?
编程语言能力。不用多说,作为合格的计算机程序员,精通一门语言是必须的。这种精通,不是说看了一本编程宝典,抄了几个程序就能说精通的,要靠长时间的积累
编码能力。遵守编码规范,是一个程序员最基本的要求,可悲的是,很多程序员根本没有意识到这个问题的严重性。另外一个就是注释,要注意不是为了注释而注释。对类,以说明职责为主;对方法,以说明意图为主;对方法体,以说明实现思路为主。对于大段大段的代码,要分段,使用空行隔开,并使用行内注释进行说明。
5.目前由于智能手机的出现对软件的需求越来越多,可是对于开发者来说,是用户体验体验重要还是产品的质量重要应该怎样侧重?为什么?
对顾客的心情写一篇文章,以帮助客户有最好的效果二是解决客户的需求你写的东西要让客户喜欢看。良好的客户体验,可能无法很快看到效果!但尝试吗?没有流谁?你可以优化长尾词,长尾词是排水的王牌,如果你一开始就知道要做什么!顾客是上帝,一切都要以顾客为关注焦点的事,是我做了无数的重视强调客户体验也许你在这里看到的不屑一顾,傻瓜都知道?但是你认为你的客户体验做得好?我原来是不好的?哈哈,现在百分之九十的原始不客户体验,而百度的经验。在百度收录。你应该冷静下来,围绕客户的需求,思想,愿望写原创。也许你会觉得很难写,不知道怎么弄我也是,但写很多的点子就出来。
课程总结
在本学期的“构建之法”课程,是我第一次接触到了工程化的软件开发。刚接触到我们教材上面的设计方法和流程,感觉都是比较基础或者比较老的知识点,所以对其有点缺少信心,另外我对于开发文档也有了新的认识,我理解到编写开发文档就像写日记一样,通过记录每次开发进行的工作内容来记录项目的进程,这不仅可以方便自己日后回想项目版本的更新历程,而且还可以帮助团队里的其他成员理解自己的设计思路。可以极大的方便软件的团队开发进展。众所周知集体的力量如钢铁,众人的智慧如日月。一个团队意味着跟高的效率,更多的点子。一个好的团队应有着明确的分工即每个人都应该有适合自己的任务。身为一个计算机专业的学生,应该在工作之前了解这个行业是如何运作的?软件是怎么开发的?我想《构建之法》很好的解决了这些问题,书中说明的知识,让我们可以提前接触到行业的新技术,让我们能更早更好地融入到社会。
多谢冯花瓶老师这学期课堂上的耐心教授。
多谢邹老师在博客上细心指导。