回想开学初对于软件工程这门课的期望,总结本课程对你带来的提升:

一.学习和使用的新软件:

学习和使用了fireworks,fireworks是Macromedia公司发布的一款专为网络图形设计的图形编辑软件,它大大简化了网络图形设计的工作难度,使用Fireworks不仅可以轻松地制作出十分动感的GIF动画,还可以轻易地完成大图切割、动态按钮、动态翻转图等,因此,对于辅助网页编辑来说,Fireworks将是最大的功臣。借助于Macromedia Fireworks 8,可以在直观、可定制的环境中创建和优化用于网页的图像并进行精确控制。它与 MacromediaDreamweaver和 MacromediaFlash共同构成的集成工作流程可以创建并优化图像,同时又能避免由于进行Roundtrip 编辑而丢失信息或浪费时间。利用可视化工具,无需学习代码即可创建具有专业品质的网页图形和动画,如变换图像和弹出菜单等。


二.学习和使用的新工具:

siege,Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。适合在Linux中使用,它有安装简单,使用简单,测试报告详细的特点。

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

HTML:HTML 是用来描述网页的一种语言,HTML 指的是超文本标记语言 (Hyper Text Markup Language),HTML 不是一种编程语言,而是一种标记语言 (markup language),标记语言是一套标记标签 (markup tag),HTML 使用标记标签来描述网页。


CSS:层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化,CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。

总体来说,CSS具有以下特点:

(1)丰富的样式定义,CSS提供了丰富的文档样式外观,以及设置文本和背景属性的能力;允许为任何元素创建边框,以及元素边框与其他元素间的距离,以及元素边框与元素内容间的距离;允许随意改变文本的大小写方式、修饰方式以及其他页面效果。

(2)易于使用和修改,CSS可以将样式定义在HTML元素的style属性中,也可以将其定义在HTML文档的header部分,也可以将样式声明在一个专门的CSS文件中,以供HTML页面引用。总之,CSS样式表可以将所有的样式声明统一存放,进行统一管理。另外,可以将相同样式的元素进行归类,使用同一个样式进行定义,也可以将某个样式应用到所有同名的HTML标签中,也可以将一个CSS样式指定到某个页面元素中。如果要修改样式,我们只需要在样式列表中找到相应的样式声明进行修改。

(3)多页面应用,CSS样式表可以单独存放在一个CSS文件中,这样我们就可以在多个页面中使用同一个CSS样式表。CSS样式表理论上不属于任何页面文件,在任何页面文件中都可以将其引用。这样就可以实现多个页面风格的统一。

(4)层叠简单的说,层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。例如对一个站点中的多个页面使用了同一套CSS样式表,而某些页面中的某些元素想使用其他样式,就可以针对这些样式单独定义一个样式表应用到页面中。这些后来定义的样式将对前面的样式设置进行重写,在浏览器中看到的将是最后面设置的样式效果。

(5)页面压缩,在使用HTML定义页面效果的网站中,往往需要大量或重复的表格和font元素形成各种规格的文字样式,这样做的后果就是会产生大量的HTML标签,从而使页面文件的大小增加。而将样式的声明单独放到CSS样式表中,可以大大的减小页面的体积,这样在加载页面时使用的时间也会大大的减少。另外,CSS样式表的复用更大程序的缩减了页面的体积,减少下载的时间。

PHP:PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有以下特性:

1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。

2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。

3. PHP支持几乎所有流行的数据库以及操作系统。

4. 最重要的是PHP可以用C、C++进行程序的扩展。

JavaScript:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。其基本特性如下:

1.是一种解释性脚本语言(代码不进行预编译)。

2.主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。

3.可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。

4.跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。

四.统计一下,你在这软件工程实践中,完成了多少行的代码:大概百分之二十左右。

五.学习和掌握的新方法:

(1)需求分析:在完成一个项目之前,要明白这个项目具体是要干什么,要进行详细的需求分析,需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。具体分为功能性需求、非功能性需求与设计约束三个方面。功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。功能性需求是软件需求的主体。开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。主要包括软件使用时对性能方面的要求、运行环境要求。软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。一般也称做设计限制条件,通常是对一些设汁或实现方案的约束说明。例如,要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。

(2)软件测试方法:黑盒测试,黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。白盒测试,白盒测试 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

总结与展望

一.记录自己在软件工程课程上的经验总结:

在软工理论课上,老师讲了很多知识,构建之法这本书写的也很有意思,讲到重要知识的时候老师会让我们笔头练习,能够及时巩固,实验课上老师会带我们做游戏,玩儿纸牌,让我们觉得不那么无聊,其实,软件工程这门课还是挺好的,教了很多方法,特别是真正动手去做的时候,也能知道团队合作的重要性。

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

这门课可以学到很多知识,也可以将自己的才能展现出来,团队合作会让你体验到快乐,各司其职,也会学到一些课外的知识,其他的语言及其软件工具的应用,希望你们加油!

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

我们的团队经历过在意见不合时的争执,也有过听从组长的分配各司其职,这些都为我们在团队合作中建立了良好的基础,现在软件已经基本上完成,但是还是有一点不足。

个人总结的补充

请回顾软件工程第一次作业,通过本学期的学习,对第一次作业中的5个问题重新回答。

1.到底哪种开发方法比较好?到底哪一种适合我呢?

感觉还是手机APP好一点,不管以后是进入企业还工作是自己创业,手机APP都能带来很大的帮助,手机APP能让企业用最低的广告成本,获得最佳的推广效果。与传统的广告方式相比,手机APP广告无需按点击和播发次数付费,其图文并茂、形象生动的广告表现形式,无论是费用还是效果方面都比传统的广告更胜一筹。它能增加对老客户的粘性,圈留住老客户,让他们成为你最忠实的口碑传播者,这样无形中提高用户的口碑,手机APP能让信息传播随时随地。手机APP传达给客户的信息不会因为时间或者是空间的原因而受阻,可以随时随地传播或接收信息。手机APP有利于企业发展新用户。企业可以通过APP快速有效地收集客户反馈信息,还可以实现即时留言互动,收集客户第一时间反馈的信息,更有利于企业的开发新用户。

2.形式化方法是一种怎样的学术领域?

在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和鲁棒性。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。这种方法特别在数学、计算机科学、人工智能等领域得到广泛运用。它能精确地揭示各种逻辑规律,制定相应的逻辑规则,使各种理论体系更加严密。同时也能正确地训练思维、提高思维的抽象能力。

3.预期变化和期望变化对于软件工程来说有什么不同?

预期变化是对于对于开发人员来说,在一定的期望之下用户体验之后给的结果与自己当时期望的结果的一个变化,期望变化是用户体验之后反馈给开发人员的一种信息与用户在没有接触时的变化。

4.在各种测试方法中,哪一种测试方法更加能够更快的解决问题?应该是选择最好的一种,那么我们如何判断?

黑盒测试

顾名思义,就是把所有东西装到一个盒子里,看不到内部逻辑,只能通过外部的可见的功能模块,对软件进行测试。比如说一个网站的登陆功能,你不知道它的内部逻辑是怎样的,只能通过网页的注册输入文本框和注册按钮,来测试注册这个功能是否正常。一般黑盒测试也叫数据驱动测试或者功能测试(通过输入数据来确定功能是否完整是否正常)

一般它所关注的点如下:

1、是否有不正确或遗漏的功能?

2、在接口上,输入是否能正确的接受?能否输出正确的结果?

3、是否有数据结构错误或外部信息(例如数据文件)访问错误?

4、性能上是否能够满足要求?

5、是否有初始化或终止性错误?

白盒测试白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。(一般的接口测试也可以理解为白盒测试,你自己清楚的知道各个业务流的逻辑走向,可以有效的制定一些测试用例,不需要盲目的通过功能点去做各项测试)

白盒测试主要是想对程序模块进行如下检查:

1、对程序模块的所有独立的执行路径至少测试一遍。

2、对所有的逻辑判定,取“真"与取“假”的两种情况都能至少测一遍。

3、在循环的边界和运行的界限内执行循环体。

4、测试内部数据结构的有效性,等等。

灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

5.我们的软件团队,是否需要在研究之后加入新的成员呢,这样怎么判断我们成员的契合度,而且加入新成员的前提是我们感觉人手不够,这么意味着,如果在程序开发过程中有了新的创意,是否得重新推翻。

如果在开发过程中有了新的创新,不用重新推翻,在人手不够的前提下加入新成员,成员的契合度就要看如何给成员进行任务分配,成员各司其职,互相商讨,自然便有了契合度。