software engineering
软件工程笔记
Akimoto Akira
这个作者很懒,什么都没留下…
展开
-
学习日志之software engineering(15)——integration testing
在工程中,每个Unit都是一个独立的个体,但是在某些Unit之间会存在一些dependency导致这些Unit在测试时需要进行处理才能从整个系统中给分离出来单独测试。其中Unit在不同类语言中表示的东西也不同,比如在procedual languages(面向过程的语言)中其表现为function,而在oo language(面向对象的语言)中表现为类以及类中的methods。要知道是否在各个unit之间存在有dependency,我们需要画出dependency graph,如下右边所示:其中f1的运行就原创 2020-05-17 06:11:36 · 377 阅读 · 0 评论 -
学习日志之software engineering(14)——黑白盒测试
V&V过程要处理的对象是Failure,Fault和DefectFailure是由一个或多个Fault引起的,其结果是用户运行程序得到的结果不理想。Fault可能会引起Failure但是也可能不引起,其发生的原因是和需求文件不对应或者是软件写得很辣鸡Defect是Fault和Failure的总称,进行V&V的过程就是要将这个玩意给消灭掉使程序按照requirement里走。这个过程是越靠前所需要的成本就越低。消除Defect的方式之一就是testingTesting的分类原创 2020-05-16 07:20:25 · 578 阅读 · 0 评论 -
学习日志之software engineering(13)——Validation & Verification
这个过程是在编程完成之后对程序进行的一系列检查,其中validation是在用户的角度,从产品的外部进行检查,系统是否可靠,是否对用户有价值。而verification是从产品的内部检查其内部的结构是否输出正确预想的值。前者的对象是stakeholder而后面的对象是designer。我们进行V&V过程的目的是为了减少defect,之前有讲过fault和failure的概念,这里defe...原创 2020-05-04 05:26:51 · 446 阅读 · 0 评论 -
学习日志之software engineering(12)——项目管理
在项目管理过程中有很多东西需要我们去量化,从而达到对项目进度代码质量的把控和预测估计。在iinception过程中也需要很多的参数对整个开发过程进行估计从而给买家提供信息。对于开发过程主要有以下指标:- time重点在于一个calendar time。其中就包括了一个相对时间和绝对时间的表示,相对时间一般对时间的把控比较松散,适用于计划之中,而绝对时间大多用于对整个过程的把控上。- eff...原创 2020-05-01 06:41:45 · 200 阅读 · 0 评论 -
学习笔记之software engineering(11)——项目管理
需要明白的一些概念项目管理需要做的事情主要就是对未来的工程进行的一些规划,主要需要规划的有需要做的事情的工作量和进度的把控以及项目进行中的各种分工。在项目开始时还没有和buyer签合同时需要先对项目有一个大概的构思,这个阶段称为inception phase,一般来说这个阶段vendor会吹点牛什么的来保证这个项目能够拿下来,但是实际情况可能不会那么理想。这个玩意确定了commercial pr...原创 2020-04-30 05:50:05 · 288 阅读 · 0 评论 -
学习日志之software engineering(10)——用文字表述UML
如何在markdown中添加uml图在markdown中添加UML图有固定的格式,这个功能是由plantuml提供的。plantuml可以将UML语言自动转换为UML图,其转换结果可以在plantuml网站上查看。在markdown中添加UML需要有以下格式```plantuml(此处添加UML代码)```UML基础语句有以主要有下面的语句1. UML语句的开始和结束...原创 2020-04-27 07:11:34 · 243 阅读 · 0 评论 -
学习日志之softeare engineering(9)——本地git和远程git的联动
从远程端克隆一个repository如果想提取一个远程端的资源那么首先需要知道远程端的url,然后用下面的语句$ git clone <url>此时下载到自己本地的repository会自动添加一个url作为origin用下面的语句可以检查到$ git remote -v当与其他用户合作的时候往往会有很多url链接,因为他们账号不一样,在合作之前可以通过下面...原创 2020-04-05 08:33:33 · 93 阅读 · 0 评论 -
学习日志之software engineering(8)—— git
这一章主要是对之前的一些复习,现在发现之前还是有很多漏洞当时并没有理解透彻,这里算是查漏补缺了。Tracked的文件移除问题下面两个命令都是直接移除文件,不仅仅在index中移除,在磁盘上的文件也给移除掉$ git rm <文件名>$ rm <文件名>如果只想解除tracked状态不想移除磁盘上的副本用下面这个$ git rm --cached &l...原创 2020-04-05 08:14:56 · 97 阅读 · 0 评论 -
学习日志之software engineering——如何描述requirements
理解需求描述在研发过程中的作用在产品的研发过程中一个很重要的部分是研发过程,在研发过程就需要对需要研发的产品进行分析,了解产品使用的对象了解产品需要的功能等等,给设计人员提供研发的依据和思路,在这个过程中最先开始的部分就是产品需求的定义,这个过程包括几个阶段elication -> informal description -> analysis and formalizati...原创 2020-04-01 09:17:00 · 254 阅读 · 0 评论 -
学习日志之software engineering(6)——黑白盒测试
这一章应该来说是包含在validation and verification章节的一部分,主要是为了测试性能而产生的一些方法上的概念。>黑盒测试:完全不考虑程序内部特性情况下,在程序接口进行测试。只需要看程序的输入和输出是否满足要求就行。只涉及外部视角>白盒测试:又称透明盒测试或结构测试。主要的参照物是程序开始制定的specification和instructions。看其是不...原创 2020-03-21 07:33:30 · 233 阅读 · 0 评论 -
学习日志之software engineering(5)——UML
UML是一种用于描述工程的语言,主要用于在工程开发的前夕对工程整体的需求结构功能等进行描述。在描述之后,程序员可以根据画的图进行进一步的工程开发,利用UML工具也可以直接通过UML图直接生成代码,但是这些代码只是函数框架而已,内容还是得自己填。在UML语言中不同对象之间有4种不同的关系,这几种关系在UML种使用不同样式的线来表示:关联(association):比如老师与学生的关系,这里面...原创 2020-03-18 07:03:43 · 182 阅读 · 0 评论 -
学习日志之software engineering(4)——git
branch操作branch操作原理是新建一个指针然后让head指向这个指针就可以完成branch的切换,每当一个新版本更新指针就会自动和head一起指向信的版本。创建新的branch:$ git branch (branch名)但是新建的时候head并不会指向这个新的branch而是停留在master或者原来的branch指针上,需要head指向一个指针:$ git ch...原创 2020-03-14 07:00:23 · 84 阅读 · 0 评论 -
学习日志之software engineering(3)——git
git的一些基本操作在repository中的文件总共有4种不同的状态:untracked(一个刚创建的文件起始状态) staged(文件已经添加到暂存区,没有更新到repository中) modified(文件已经更改,但是并没有添加到暂存区中) unmodified(git已经承认修改并且修改部分更新到repository中)要创建自己的repository,首先找到自己...原创 2020-03-11 06:53:52 · 156 阅读 · 0 评论 -
学习日志之software engineering(3)——git
git分支管理git的分支创建仅仅是创建一个新的分支指针,head会指向用户所设定的一个指针而在git中使用用户需要的版本分支。这个在乌龟中可以在GUI中设置。这个指针会随着开发进度的推进而一步一步向前推进,由分支节点往后面的版本跳转。分支可以进行合并的操作。假设你已经修正了问题,并且打算将你的工作合并入master分支。 为此,你需要合并iss53分支到master分支,这和...转载 2020-03-10 08:15:14 · 105 阅读 · 0 评论 -
学习日志之software engneering(2)——git
git是一个版本管理工具,用于管理代码和工程,尤其在多人合作的时候需要进行代码的管理与开发日志的编写,达到责任分明过程可视的目的。用于这一目的的系统称为configuration managment system(CMS)Local CMS Centralized CMS Distributed CMS(git属于这一类,对于这一类而言每一台参与工程的电脑上都有一个完整的repositor...原创 2020-03-09 09:21:42 · 245 阅读 · 0 评论 -
学习日志之software engineering(1)
程序设计需要做的事情主要有三个部分:生产(需求提出,设计,实现),检测,管理在生产的过程中流程大概如图所示,其将需求分为多个小的部件进行设计,最后再组装起来为了保证每一个功能的实现,在生产的每一个步骤中都插入一个检测的反馈机制,主要检测其有效性和正确性(validation and verification)在产品生产出后还需要一些工程的管理和产品的配置使得产品能面向市场,注意so...原创 2020-03-06 07:50:31 · 109 阅读 · 0 评论