20150409作业3 阅读《构建之法》1-5章 (Update:2015-04-16
以下是我看《构建之法》1-5章列出来的知识点和一些自己对部分知识的理解以及一些吐槽...和感受
1.1
软件 = 程序 + 软件工程 (软件工程 = 软件 - 程序(我知道软件是什么,也知道程序是什么,但是就是不懂什么是软件工程啊...个人觉得 软件工程 - 程序 = 0
程序 = 数据结构 + 算法 (突然觉得至今为止我们所写的作业都只是程序而还没达到软件的程度啊..就缺软件工程了..软件工程到底是啥~?!
∴软件 = 数据结构 + 算法 + 软件工程
去百度百科看了一下:(有些就直接省略了
定义
IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。
其它定义:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档。
内涵
一、软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下四个方面:1、P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。2、D(DO)——软件开发。开发出满足规格说明的软件。3、C(Check)——软件确认。确认开发的软件能够满足用户的需求。4、A(Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。二、从软件开发的观点看,它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品)。原则:1、抽象;2、信息隐蔽;3、模块化;4、局部化;5、确定性;6,一致性;7、完备性;8、可验证性
衡量工作质量的指标
a.项目/任务有多大?
b.花了多少时间?
c.质量如何?
d.是否按时交付?
自我评价和跟踪 清单
http://www.cnblogs.com/xinz/p/3852177.html
4.2
代码风格规范(嗯,这个一般eclipse或者其他开发工具都会有能够自动缩进的..不过没办法完全规范,还是要靠自己的自觉...
缩进,行宽,括号,断行与空白的{ }行,分行,命名,下划线,大小写,注释.
4.3
代码设计规范
函数,goto,错误处理
(因为没有学C++,中间跳过了部分内容.不过自己看了下,好像说的跟java的没什么区别啊..只是多了个 struct 而已,还有就是不知道 虚函数 是什么鬼咯..
4.4
代码复审
自我复审,同伴复审,团队复审
复审目的:
1.找出代码的错误
如: 1)编码错误
2)不符合团队代码规范的地方
2.发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的
3.发现算法错误 如:使用的算法不够优化,边界条件没有处理好
4.发现潜在的错误和回归性错误--当前的修改导致以前修复的缺陷又重新出现
5.发现可能需要改进的地方
6.教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识
复审步骤
1.代码必须成功地编译,在所有要求的平台上,同时编译Debug|Retail版本
2.程序员必须测试过代码,同时,也可以加上OutputDebugString等输出来监视程序的控制流
3.程序员必须提供新的代码,以及文件差异分析工具
4.复审者可以选择面对面的复审、独立复审或其他方式
5.在面对面的复审中,一般是开发者控制流程,讲述修改的前因后果.但是复审者有权在任何时候打断叙述,提出自己的意见.
6.复审者必须注意提供反馈意见
代码复审后
1.更正明显的错误
2.对于无法很快更正的错误,要在项目管理软件中创建Bug把它们记录下来
3.吧所有的错误记在自己的一个"我常犯的错误"表中,作为以后自我复审的第一步
代码附身的核查表
1.概要部分
1)代码能复合需求和规格说明么?
2)代码设计是否考虑周全?
3)代码可读性如何?
4)代码容易维护么?
5)代码的每一行都执行并检查过了吗?
2.设计规范部分
1)设计是否遵从已知的设计模式或项目中常用的模式?
2)有没有硬编码或字符串/数字等存在?(什么是硬编码啊...
3)代码有没有依赖于某一平台,是否会影响将来的移植?
4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
5)有没有无用的代码可以清除?
3.代码规范部分
修改的部分复合代码标准和风格么?
4.具体代码部分
1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
2)参数传递有无错误?字符串的长度是字节的长度还是字符的长度?是以0开始计数还是以1开始计数?
3)边界条件是如何处理的?switch语句的default分治是如何处理的?循环有没有可能出现死循环?
4)有没有使用断言???老保证我们认为不变的条件真的得到满足?(断言 是什么鬼?不懂啊..
5)对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有优化的空间?
6)数据结构中有没有用不到的元素?
5.效能(不懂具体的是什么
1)代码的效能如何?最坏的情况是怎样?
2)代码中特别是循环中是否有明显可优化的部分?
3)对于系统和网络的调用是否会超时?如何处理?
6.可读性
代码可读性如何?有没有足够的注释?
7.可测试性
代码是否需要更新或创建新的单元测试?
4.5结对编程(这个首先要有个大牛肯跟我结对啊...不然自己要做两份工呢...
对于结对编程的模式,我有很多要吐槽的..
1.并排坐在一台电脑前,面对同一显示器,使用同一键盘,统一鼠标一起工作(这个除了同一宿舍的,不然会很麻烦..顺便提一下..我的是台式..
2.一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起集成测试,一起写文档(这个嘛....除非有大牛..不然两个臭皮匠是比不过一个诸葛亮的..
如何结对编程
1.驾驶员:写设计文档(现在写程序还是没有设计的习惯..总是习惯脑里构思下,然后就直接敲了...),进行编码和单元测试等XP开发流程
2.领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题
3.驾驶员和领航员不断轮换角色,不要连续工作超过一小时,没工作一小时休息15分钟.领航员要控制时间.
4.主动参与.任何一个任务都首先是两个人的责任,也是所有人的责任.没有"我的代码"、"你的代码"或"他/她的代码",只有"我们的代码".
5.只有水平上的差距,没有级别上的差异.两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权力.
6.设计好结对编程的环境,座位、显示器、桌面等都要能允许两个人舒适地讨论和工作.如果是通过远程结对编程,那么网络、语音通讯和屏幕共享程序要设计好.
如何正确地给予反馈
1.最外层:行为和后果
2.中间层:习惯和动机
3.最内层:本质和固有属性(这就是老师说的那个做汉堡吧...哎我还没写呢...
5.1
团队共同的特点:
1.团队有一致的集体目标,团队要一起完成这目标.
2.团队成员有各自的分工,互相依赖合作,共同完成任务.
软件团队的模式
1.窝蜂模式
2.主治医师模式
3.明星模式
4.社区模式
5.业余剧团模式
6.秘密团队
7.特工团队
8.交响乐团模式
9.爵士乐模式
10.功能团队模式
11.官僚模式
开发流程
1.写了再改模式(这个感觉是原型模型....
2.瀑布模型
3.瀑布模型的各种变形
1)生鱼片模型
2)大瀑布带着小瀑布
4.Rational统一流程
5.老板驱动的流程
6.渐进交付的流程
20150409作业3 阅读《构建之法》1-5章 (Update:2015-04-16的更多相关文章
- 阅读<构建之法>13、14、15、16、17章
13章 这么多测试为什么不能整理出一个包括所有功能的测试呢?看着那么多测试都感觉奇怪了. 14章 怎样才能体现一个测试人员的工作价值呢?这样的判断又是否会太独断了? 15章 在时间上,会不会因不同功能 ...
- Week2-作业1——关于阅读《构建之法》第1、2、16章的疑问与感悟
关于阅读<构建之法>第1.2.16章的疑问与感悟 术语解释: 第2章,23页 什么是代码覆盖率? ———————————————————— 在测试中的代码覆盖率是指,你运行测试用例后,走过 ...
- 2nd 阅读构建之法有感
阅读构建之法有感 利用这一周的时间,我大致了解构建之法一书,这本书带我走进了一个全新的领域.它让我以一种新的视角去了解软件产业的发展和工作,领略软件工程的独特魅力,更给出了简单易懂的方式去理解何为软件 ...
- <构建之法>第十三章到十七章有感以及这个项目读后感
<构建之法>第十三章到十七章有感 第13章:软件测试方法有哪些? 主要讲了软件测试方法:要说有什么问题就是哪种效率最高? 第14章:质量保障 软件的质量指标是什么?怎么样能够提升软件的质量 ...
- SE_Work1_阅读构建之法&项目管理实践
项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:阅读<构建之法>并回答问题 个人博客作业 我在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作 ...
- 阅读<构建之法>第三10、11、12章并提出问题
<构建之法>第10.11.12章 第10章: 问题:对我们了解了用户的需求后,但是我们想法和做出来的软件会和用户的需求有偏差,比如风格.界面的修饰等等,那么我们程序猿怎样才能让自己的想法更 ...
- Week2-作业一——《构建之法》三章精读之想
Week2-作业一——精读<构建之法> 前言 其实我本人是不经常看书的,电子书倒是看了不少,实体书真的不经常看,但是为了这次作业的需求,我还是选择静下心来阅读一下这本<构建之法> ...
- <构建之法>第十一章、十二章有感
十一章:软件设计与实现 工作时要懂得平衡进度和质量.我一直有一个困扰:像我们团队这次做 男神女神配 社区交友网,我负责主页的设计及内容模块,有个队友负责网站的注册和登录模块,有个队友负责搜索模块,有个 ...
- c++生成算式并计算(《构建之法》第一章课后第一题)
c++实现计算器(自动生成算式并计算) 要满足的需求有以下几个: 自动生成随机的四则运算算式,包含括号和小数. 对生成的算式计算出结果. 算式.结果分别存储到不同的文件. 一 生成算式 由上述需求可知 ...
随机推荐
- iframe无刷新跨域上传文件并获得返回值
原文:http://geeksun.iteye.com/blog/1070607 需求:从S平台上传文件到R平台,上传成功后R平台返回给S平台一个值,S平台是在一个页面弹出的浮窗里上传文件,所以不能用 ...
- DAG 模型 stacking boxes 动态规划
题目:UVA 103 stacking boxes 题目大意: 给你两个数,一个是盒子的个数,一个是每一个盒子的维数.将一个个盒子互相装起来,让你求最多可以装多少个,要求字典序最小. 解析:这个就是盒 ...
- MySQL的用户的创建以及远程登录配置
最近工作中使用HIve工具,因此搭建了一个Hive的测试环境.通常我们都将Hive的元数据信息存储在外界的MySQL中,因此需要安装并配置MySQL数据库.接下来将讲解MySQL的安装以及配置过程. ...
- 周杰伦的2000w个故事
http://m.v.qq.com/play/play.html?coverid=g0p1mhz5c52ogla&vid=g0025u7k36z&ptag=2_5.8.6.13321_ ...
- http请求的全过程
参考资料 http://blog.jobbole.com/106632/ https://www.cnblogs.com/engeng/articles/5959335.html https://ww ...
- MyBatis之反射技术+JDK动态代理+cglib代理
一.反射 引用百度百科说明: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功 ...
- 深入浅出的webpack4构建工具---Scope Hoisting(十六)
一:什么是Scope Hoisting? 它有什么作用?Scope Hoisting 它可以让webpack打包出来的代码文件更小,运行更快,它可以被称作为 "作用域提升".是在w ...
- linux中VI编写C程序。。。
在linux中编写C程序时不像编写shell那样开头要#!/bin/bash,但是在C程序中要指定头文件(头文件是指输入输出,宏等,而且要首先声明,也是必须要开始就声明的) 写好C代码后要给C文件赋予 ...
- 【Codeforces 1137C】Museums Tour
Codeforces 1137 C 题意:给一个有向图,一周有\(d\)天,每一个点在每一周的某些时刻会开放,现在可以在这个图上从\(1\)号点开始随意地走,问最多能走到多少个开放的点.一个点如果重复 ...
- es3的语法来模拟es5的bind方法
// 简单版 Function.prototype.bind = function(context) { var self = this; return function() { self.apply ...