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++实现计算器(自动生成算式并计算) 要满足的需求有以下几个: 自动生成随机的四则运算算式,包含括号和小数. 对生成的算式计算出结果. 算式.结果分别存储到不同的文件. 一 生成算式 由上述需求可知 ...
随机推荐
- ASP.NET中HttpApplication中ProcessRequest方法中运行的事件顺序;ASP.NET WebForm和MVC总体请求流程图
ASP.NET中HttpApplication中ProcessRequest方法中运行的事件顺序 1.BeginRequest 開始处理请求 2.AuthenticateRequest 授权验证请求 ...
- [笔记]后缀数组SA
参考资料这次是真抄的: 1.后缀数组详解 2.后缀数组-学习笔记 3.后缀数组--处理字符串的有力工具 定义 \(SA\)排名为\(i\)的后缀的位置 \(rk\)位置为\(i\)的后缀的排名 \(t ...
- PHP的curl查看header信息的功能(包括查看返回header和请求header)
PHP的curl功能十分强大,简单点说,就是一个PHP实现浏览器的基础. 最常用的可能就是抓取远程数据或者向远程POST数据.但是在这个过程中,调试时,可能会有查看header的必要. 如下: ech ...
- smartpass
1.smartpass 是用户注册后,产生的用户名密码 与每个摄像头的用户名密码不一致 2.每个设备初始化登录密码为admin admin,如果需要修改,则在进入该设备IP地址,设置——>用户管 ...
- docker启动失败(can't create unix socket /var/run/docker.sock: is a directory)
现象 # service docker start Redirecting to /bin/systemctl start docker.service Job for docker.service ...
- 3902-luogu 最长不下降子区间
题目 现有数列A1,A2,…An ,修改最少的数字,使得数列严格单调递增. 依旧是书上的题 但是书上的范围比较小 而 lg上的数据范围很大 按书上的 方法 是会超时 只能过一半的数据 但是 算法思路还 ...
- 项目Alpha冲刺 1
作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 进行github实战训练,锻炼团队合作能力 1.团队信息 队名:火鸡堂 队员 ...
- 【USACO 2019 Feburary Contest】Gold
模拟二月金组,三个半小时AK. USACO 2019 Feburary Contest, Gold T1 题意:给定一棵树,每个点有点权,每次可以进行以下操作之一: 更改一个点的点权 求某条路径上的点 ...
- java 面向对象抽象类和接口
1.abstract:可以修饰类和方法,被abstract修饰过的称为抽象类和抽象方法. 抽象类: 除了不可以创建对象, 其他和普通类一致. 可以有成员方法.静态方法和构造方法(提供给子类调用)等. ...
- python简介及安装配置
概述 python是解释型语言,相对编译型语言,执行效率较低.python是通过c语言编写,官方解释器也是c语言编写cpython,也有其他的如用java编写的jpython.目前有2.0和3.0版本 ...