软件工程个人总结

软件工程个人总结

一、学习和使用的新软件

Git

Git是一款免费的、开源的分布式版本控制系统,用于敏捷高效的处理任何或大或小的项目。Git是Linux Torvalds为了帮助管理Linux内核开发而开发的一个开源码的版本控制软件。Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用hhtp协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

二、学习和使用的新工具

Enterprise Architect

     Enterprise Architect是一个完全的UML分析和设计工具,它能完成从需求收集经步骤分析、模型设计到测试和维护的整个软件开发过程。它基于多用户Windows平台的图形工具可以帮助您设计健全可维护的软件。除此,它还包含特性灵活的高品质文档输出。用户指南可以在线获取。我们用这个软件主要就是用来画用例图,流程图,以及画类图。

三、学习和掌握的新语言、新平台

SQL Server 2005

        SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理 关系数据库系统;同时也是 数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层 数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同 数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

ASP

ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单方便的编程工具。ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序,ASP网页可以包含HTML标记、普通文本、脚本命令一COM组件等,利用ASP可以向网页添加交互式内容,也可以创建使用HTML网页作为用户界面的web应用程序。

四、统计一下,你在这软件工程实践中,完成了多少行的代码

由于此次的项目比较简单,所以完成的代码大概有七、八百行。

五、学习和掌握的新方法

    通过一学期的软件工程的课程的学习,再加上做的项目,让我对一个软件的开发过程有了比较直观的了解,明白了开发一个项目的基本步骤是什么,一个项目应该如何开发等等。

总结与展望

一、记录在软件工程课程上的经验总结

通过上软件工程课,知道了做一个项目应该必须经过一定的步骤,少了每一步,可能都会给后面的进展带来很大的阻挠。

二、对于下一届的学弟学妹你有什么建议和告知呢?

    现在的我深刻的感受到,我们这个专业的课程学习看起来并没有什么联系,但实际上,这些课程中的专业知识都是环环相扣的,所以以后的学弟学妹,一定要打好自己的专业知识基础,以免将来像我们一样,什么都学过,但什么都不精通,到时候又苦了自己啊!

三、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》团队合作的阶段,你们团队经历过么?最后到达了哪一阶段?

    我们团队的成员是一个宿舍里的,因为当时想的是大家总是在一起,这样讨论什么问题也会比较方便,不用像别的团队一样,总是找不齐人,可是,后来我们发现,在宿舍根本没办法讨论问题,因为影响的因素太多了,后来,我们就决定去自习室一起讨论项目,那样之后,我们的效率明显很高。对比了书上的团队合作的几个阶段,我们团队经过了萌芽阶段、磨合阶段,最后我觉得我们团队达到了规范阶段。

四、个性发挥,包括图文、照片和创意等

    说实话,这门课程是我们这学期最忙的一个课程,作业也多,任务也多,可是这门课也正是让我们收获最多的一门课程。我相信,在这门课上学到的东西,以后会很有用处的!

 

对“软件工程第一次作业”的五个问题的重新回答

问题:  

(1)在看到《成长和代码量的关系》时,作者提到代码量和工程师的水平是线性的吗?可是作者似乎并没有给出明确的答案,但我希望能了解具体的关系。

答:在经过一学期的软件工程课程的学习,和看了《构建之法》这本书之后,我自认为代码量和工程师的水平是线性的,因为一个好的软件工程师,他之所以被称为工程师,就说明他在软件编写方面已经有了一定的成就,而一个软件工程师基本都是从程序员发展而来的,程序员都是会有大量的代码基础的,并且邹欣老师也说了“当代码是在2,000行以下,程序员可以用 ‘写了再改’ 的蛮干方法,并且靠记忆力搞定一个程序,但是, 如果你的代码规模达到20,000行,你要用结构化编程(类,模块,API,细节隐藏,面向对象的其它方法,等)来保证程序不变成一团乱麻。”所以只有当自己的代码量达到了一定的高度,自然而然就会写出更好的程序,所以自己的水平就高了!

 

(2)我在看第十章《典型用户和场景》时,第二小节讲到了USE CASE 用例图,书中说了很多概念性的定义,但却没有具体的USE CASE用例图的画法,所以我想知道USE CASE用例图具体的定义形势以及画法到底是什么样的?

答:USE CASE 用例图虽然在课本中没有详细的说明,但老师上课的时候给我们讲的很详细,还讲了类图和顺序图,到现在也基本掌握了这几类图的画法了。 

(3)书中第五章为我们软件团队的模式和开发流程,但我不明白团队模式和团队的开发流程有什么关系?是一种团队模式就有一种开发流程吗?  

答:

软件团队的模式包括以下几种:

 

(1)主治医师模式:一人为主,其他人为此人服务。

 

(2)明星模式:主治医师模式到达极致,一人的光芒掩盖所有人。

 

(3)社区模式:每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。

 

(4)业余剧团模式:在不同项目中每个人扮演着不同的角色,可能随着项目的改变,自己的角色也会发生变化。

 

(5)秘密团队模式:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。

 

(6)特工团队模式:有一些有特殊技能的专业人士组成的团队。

 

(7)交响乐团模式:人员工具齐全,准备充足的团队。

 

(8)爵士乐模式:相对自由,有风险,人少且不靠谱。

 

(9)功能团队模式:具备不同能力的同事们平等协作,共同完成一个功能。

 

(10)官僚模式:层层领导的团队模式。

团队的开发流程有:

(1)写了再改模式:和一窝蜂团队模式比较像。

(2)瀑布模型及其各种变形。

(3)RUP统一流程。

(4)老板驱动的流程。

(5)渐进交付的流程。

(6)TSP的原则。

    至于团队模式和团队的开发模式的关系,我个人的理解是一群人在一起做软件开发,总是要一些方式方法。而这里团队模式就是这一群人的定性,团队的开发模式则是这群人使用的方法的定性。有了团队中人的定性,那么这些人所使用的方法不就是更好定义了吗?并且有了团队模式,有了开发流程,那么这个团队的工作效率也会很明显的提高的!

 

 

 

(4)在《用户体验》这一章中,说要情感设计,那么在设计一个程序的过程中,应该带入什么样的情感?

    答:在我看来,程序设计是一个必须要带感情的过程,因为只有用心做出来的产品才会让顾客喜欢,当你在设计一个产品的某个功能时你应该先想想如果是自己使用,那么你会满意自己的设计吗?你会不会想“如果这个功能是那样的就好了”,当你这样想的时候你就是把自己放到使用者的位置上了,而不是一个设计者,那么这样你设计出来的产品才会被别人所接受和喜爱,所以我觉得软件工程是在设计一个车须的时候应该带入的就是“设身处地”的感情。 

(5)在第十三章《软件测试》中,我看到说“有错不改“,为什么明明知道一个程序有Bug但却不改?

    答:一个软件等到完全完善,里面至少得有好几百个bug,其中有些bug会在软件上市之前就改正好,而又的暂时未被发现的就会延续到下一个版本中再改正,但有些bug明明编程人员早已经发现了并且也有能力修复好它,但是在修复好这个bug之后后面可能会引发更多的bug,而修复这些bug的工作量是无法估计的,所以程序设计人员在这个bug没有什么大碍的情况下就不会去修复这个bug了。

 

posted @ 2017-06-25 17:25  M橘子小姐  阅读(228)  评论(4编辑  收藏  举报