第二章个人技术和流程课后题

1.软件工程和程序设计大调查

专业         用时                代码                用工具

16计本     两天                500行             Java c语言

16数本     两天                200行             SQ  c语言

说明软件开发是一项繁重的工作,一个人做的话需要耗费大量时间经历,所以需要团队合作,不同的人有不同的想法,开发需要顾虑到每个人的想法,因此团队配合很重要,整合意见再开发,加之程序的复杂程度不同,个人能力有限,所以软件完成的效率有高有低。(源代码管理的应用)

2.各种编程玩法

首先,编程不是一种知识,而是一门手艺。既然是手艺,就要用学手艺的思路来学习。

我认为我虽然学过c语言和Java,但接触编程的时间不长,只能说会一些皮毛。

#include”datastru.h”

#include”stdio.h”

#include”mlloc.h”

#define MAX 10000

MGRAPH create_mgraph()

{ Int i,j,k,h;

char b,t;

MGRAPH mg;

mg,kind=3;

printf(“请输入顶点数和边数:”);

scanf(“%d,%d”,&i,&j);

mg.vexnum=i;

mg.arcnum=j;

for(i=0;i<mg.vexnum;i++)

{getchar();

pintf(“第%d个顶点信息:”,i+1);

scanf(“%d”,&mg.vexs[i]);}

for(i=0;i<mg.vexnum;i++)

for(j=0;j<mg,veznum;j++)

mg.arcs[i][j]=MAX;

for(k=l;k<=mg.arcnum;k++)

{  printf(“\n第%d条边的起始顶点编号和终止顶点编号:”,k);

scanf(“%d,%d”,&i,&j);

while(i<l||i>mg,vexnum||j<l||j>mg,vexnum)

{printf(“编号超出范围,重新输入:\n\t”);

scanf(“%d,%d”,&i,&j);}

printf(“此边的权值:”);

scanf(“%d”,&h);

mg.arcs[i-l][j-l]=h;}

return mg;

}main(){

MGRAPH mg;

int cost[MAXLEN][MAXLEN];

int path[MAXLEN],s[MAXLEN];

int dist[MAXLLEN];

int i,j,n,v0,min,u;

mg=create_mgraph();    //建立有向图的邻接矩阵结构

printf(“请输入开始顶点的编号:”);    //有向图中顶点的编号从1编起

scanf(“%d”,&v0);

v0- -;n=mg.vexnum;

for(i=0;i<n;i++)          //cost矩阵初始化

{for(j==0;j<n;j++) cost[i][j]=mg.arcs[i][j];

cost[i][j]=0;}

for(i=0;i<n;i++)

{dist[i]=cost[v0][i];

if(dist[i]<MAX&&dist[i]>0)       //dist数组初始化

path[i]=v0;}                  //path数组初始化

for(i=o;i<n;i++)

s[i]=0;                      //s数组初始化

s[v0]=l;

for(i=0;i<n;i++)                  //按最短路径递增算法计算

{  min=MAX;

u=v0;for(j=0;j<n;j++)if(s[j]==0&&dist[j]<min){min=dist[j];

u=j;}

s[u]=l;                          //u顶点是求得最短路径的顶点编号

for(j=0;j<n;j++) if(s[j]==0&&dist[u]+cost[u][j]<dist[j])      //调整dist

{dist[j]=dist[u]+cost[u][j];

path[j]=u;}               //path记录了路径经过的顶点

}

for(i=0;i<n;i++)              //打印结果

if(s[i]==l)

{u=i;

while(u!=v0)

{printf(“%d<-”,u+l);

u=path[u];}

printf(“%d”,u+l);

printf(“d=%d\n”,dist[i]);        //有路径

}

else

printf(“%d<-%d d=X\n”,i+l,v0+l);        //无路径

}

以上是我用C语言写的一个程序。

3.Coder和Hacker的区别

coder和hacker虽然都是写程序的人,但他们在本质上有很大的不同:

我们都知道code的翻译是代码,顾名思义,coder可以说是写代码的人,它在工程师的等级划分中可以说是最底层的。coder知识为了写代码而写代码,他们并不关心写的程序的目的和作用,只是为了完成属于自己的任务,为了自己的生活。他们有一种固定的思维——这是上司交代的工作,必须完成,因为这关系这自己的工资、奖金。而且他们希望自己的工作量最少,所以不会主动做会让自己增加工作量的事,比如对团队开发项目中发现的问题不会提出来,也不会想完善开发的项目。总之,coder只会机械的完成自己份内的工作,也是在未来最大可能会被人工智能取代的一类人。相较之下,hacker就是比coder更高层次的等级了。他们写程序都有自己的目的,为了达到自己的目标,会对程序进行反复的修改,直到达到自己的要求。而且,他们有很强烈的探索欲,当接触到新事物时,他们会用尽全力去探索其原理,并付诸实践,而且乐在其中。此外,hacker会将程序做到自己觉得最好的状态,并且提出会让项目更好的建议或者提出项目的问题并提出自己的解决办法。

以上都是我认为coder和hacker中的不同之处。

4.分析开发工具

软件开发中的性能优化对程序员来说是一个非常重要的问题。一个小问题可能成为一个大的系统的瓶颈。但是对于程序员来说,通过自身去优化代码是十分困难的。幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和性能测试,从而大大简化程序员进行代码性能优化的过程。

AMD CodeXL

2011年发布的AMD CodeAnalyst Performance Analyzer 现在已经被AMD CodeXL所替代。AMD CodeXL的主要目的是帮助开发者更好利用CPU, GPU和APU的计算性能,具有强大的GPU调试、CPU和GPU代码分析、及静态的OpenCL内核性能分析等能力。 AMD提供了支持Windows 7、Windows 8和Linux系统的单机版CodeXL分析工具。在Visual Studio 2010,2012和2013上也有AMD CodeXL的扩展版,其在Visual Studio开发环境中集成了GPU和APU的调试和分析能力。旧的AMD CodeAnalyst Performance Analyzer extension目前仍然可用。

Visual Studio质量和诊断中心

除了上述分析工具,Visual Studio本身也内置了优秀的分析和调试工具,都放在 Visual Studio的质量与诊断中心。 质量和诊断中心除了包括熟悉的Visual Studio分析工具,还有一些新的工具,其功能包括JavaScript内存分析, HTML UI响应能力分析,和Windows应用商店应用的XAML UI响应能力分析,和能量消耗、CPU使用、内存使用情况分析等。此外,Visual Studio 2012中的JavaScript函数时间和性能向导也已经更新,包含在新的质量和诊断中心中。因为这些工具现在都可以在中心中获得,所以可以在一个单独的分析会话中运行多个工具,并获得相互结合和交叉分析的结果。 你还可以在Visual Studio 2015的性能和诊断页面运行分析工具。Visual Studio 2015中的一些调试和诊断功能得到了增强,包括支持基于JavaScript的Apache Cordova项目,以及基于C # 的Xamarin和Android项目的跨平台调试 其他改进包括在“监视”窗口通过lambda表达式进行step,通过Visual Studio远程工具运行、调试和测试其他计算机上的程序,内置的HTTP流量数据的网络诊断等。 许多这些新工具与强大的Visual Studio 2015诊断工具调试器窗口放在了一起,并组合了输出窗口,IntelliTrace历史数据,以及性能和诊断中心的工具。

Telerik JustTrace

2013年,Telerik获了EQATEC,因此EQATEC分析工具现在是Telerik JustTrace .NET内存和性能分析工具的一部分。JustTrace提供两种模式的性能分析,轻量化分析的采样分析工具和收集CLR事件进行更深入分析的跟踪工具。它还具有捕获 .NET实例分配快照的内存分析的功能。 JustTrace集成了Visual Studio 2013,2012,2010和2008,也可以作为一个单机版的分析工具。Telerik提供30天的试用期,同时JustTrace也可作为DevCraft工具套件的一部分。

JetBrains dotTrace

JetBrains dotTrace经过四年漫长的发展,现在已经是一个包含代码执行跟踪工具和性能分析工具的套件。它包括dotTrace Performance和dotTrace Memory 两个工具,dotTrace Performance用来分析代码性能,比如函数执行时间,调用次数,消耗时间比率等,dotTrace Memory一般用来分析内存占用情况。你可以在本地和远程系统中对代码进行跟踪、采样或逐行分析。dotTrace对微软.NET框架的支持一直到4.5.2版本,也可用于分析Silverlight4或5的单机桌面应用程序、Web应用程序、Windows通信基础(WCF)服务等。新功能包括时间轴分析(timeline profiling)和SQL查询分析。 dotTrace extension Visual Studio Gallery网页提供了一个非常清晰,简洁的产品概述。通过看完概述如果你对产品有兴趣,可以到JetBrains网站决定下载或购买。 JetBrains目前提供有时间限制的免费试用版以及几种许可选项,例如ReSharper Ultimate包,其中包括ReSharper,dotCover,dotTrace,dotMemory,以及ReSharper C + +,所有包只需要一个许可证。

原文地址:https://www.cnblogs.com/July1/p/9028788.html

时间: 2024-10-22 09:56:17

第二章个人技术和流程课后题的相关文章

构建之法(第二章个人技术和流程)

在第二章的学习之中,了解到第二章主要讲:单元测试,回归测试,效能分析,个人软件开发流程(PSP) 1.单元测试 软件是由多人合作完成的,不同的工作有相互依赖的关系.单元测试应该准确,快速地保证程序基本模块的正确性. 单元测试好坏的标准如下: 1.单元测试应该在最低功能/参数上验证程序的正确性.        2.单元测试必须由最熟悉代码的人(程序的作者)来写        3.单元测试后,机器状态保持不变        4.单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)       

构建之法第二章个人技术和流程

如果说第一章我还有点概念,那么第二章我可以说一窍不通,什么是VSTS,什么是单元测试,什么是回归测试,还是什么是效能分析--好多的新名称,第一次看见,是那么的没有头绪.要不是百度了,仅仅看书,我完全不知VSTS--Visual Studio Team System,是由微软开发的一套具有高生产力.高集成性.可扩展的生命周期开发工具. 2.1.1节图文并茂的告诉我,单元测试重要作用,可能是自己的能力不足,相关知识了解的太少了,一边看还一边想,单元测试怎么写?写在哪里?什么时候写?就算是按照书本上的

构建之法 第二章 个人技术和流程

这一章重点介绍的是以前了解过但未曾注重过的单元测试&回归测试:个人技术素养是团队协作的基础. 1.VSTS单元测试 源代码 public Class User() { public User(string userEmail) { memail = userEmail; } private string memail;//private变量拒绝外部类访问(除非用get/set方法) } 测试代码1 public void ConstructorTest() { string userEmail

第二章 个人技术和流程

2.1 单元测试 大部分软件是由多人合作完成,不同工作人员相互有依赖关系.例如,一个人负责的模块功能被别人调用.软件的很多错误都来源于程序员对模块功能的误解.疏忽或不了解模块的变化.怎样能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的.量化的保证?单元测试是一个很有效的解决方法. 好的单元测试标准:a.单元测试应该在最基本的功能/参数上验证程序的正确性. b.单元测试必须由最熟悉代码的人(程序的作者)来写.  c.单元测试过后,机器状态保持不变.  

《Getting Started with WebRTC》第二章 WebRTC技术介绍

本章作WebRTC的技术介绍,主要讲以下的概念: .  如何建立P2P的通信 .  有效的信令选项 .  关键API的关系 2.1 设置通信 尽管WebRTC通信的基础是P2P的, 但设置这个通信的初始步骤是要求一些协作的. 这些动作通常由Web服务器和/或信令服务器提供. 这个协作可以允许两个或多个WebRTC设备或端找到彼此,交换通信的细节, 协商定义了他们如何通信的会话, 最后建立它们之间的直播P2P媒体流. 2.2 一般流程 应用场景其实是很多的,从简单的页面DEMO到多方会议. 这里只

[NOIP 2014复习]第二章:动态规划——NOIP历届真题回顾

序列型动态规划 1.Wikioi 1058 合唱队形 题目描述 Description N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2-,K,他们的身高分别为T1,T2,-,TK,  则他们的身高满足T1<...<Ti>Ti+1>->TK(1<=i<=K). 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形. 输入

【带你从零开始,开发一个阅读站】第二章,技术选型

首先,上图展示的是项目的部署方式.用户通过手机访问上面的nignx,即应用nignx将请求分发到三台web服务器中,服务器将从redis缓存里获取热点数据,如过期或者非热点数据则从数据库中获取并同步到redis.此过期时间设定为12小时.另外数据库和redis未保存正文内容.当用户读取正文内容时,服务器读取文件,并在前端页面做展示. 其次,图片是另外一组服务器.同样图片也做热点缓存,只不过缓存在本地内存.这里的热点数据即首页展示的50本书籍,并且会一天清理一次热点图片. 另外需要注意的是,本项目

【构建之法】第2章 个人技术和流程

1 单元测试 (1) 单元测试 (2) 回归测试 回退操作 2 效能分析工具 先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析 3 个人开发流程 (1) 计划 明确需求和其他相关因素,指明时间成本和依赖关系 分析需求 生成设计文档 设计复审(和同事审核设计文档) 代码规范(为目前的开发定制合适的规范) 具体设计 具体编码 代码复审 测试(包括自测,修改代码,提交修改) 记录用时 测试报告 计算工作量 事后总结 提出过程改进计划 一个模块(类)应该只有一个导致它变化的原

现代软件工程 练习与讨论 第二章 个人技术

1. (1)要找满足在2-31中,只有两个相邻的数不是的它的约数的数. (2)不存在 (3)2147483648 (4)并行优化最外层循环 2. 花2到3周完成,代码量几百行到几千行不等,很少有人使用代码管理工具,大部分是合作完成.程序的实用性较差,也不维护.版本少说明很多人实际上并没有自己完成作业.