又到了学期末了,此时此刻软件工程课业接近尾声了。时间过得太快,仿佛昨天这学期的课才开始,
开学时,老师让我们提出了不少对这门课的问题和疑惑,通过一学期的努力学习,我可以试着解开我自己的疑问了。
下面是我对我在学期开始时提出的问题的自我回答,
1:在软件设计行业竞争是否激烈。
答:软件设计行业竞争远比我想象的激烈,每个人都在努力的从一个程序员才从一个 “敲代码的” 上升到 工程师。
2:软件设计行业是否有较高的时效性,对于更新换代的时间要求严格
答:软件设计行业有非常强的时效性,更新换代对于软件设计行业是必须进行的。而且频率远远高于其他行业。
3: 在一款软件已经发布后,开发人员应该继续完成的工作有哪些?
答:我认为最重要的就是软件维护(Software maintenance)是一个软件工程名词,是指在软件产品发布后,因修正错误、提升性能或其他属性而进行的软件修改。
-
软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改,修改时应充分利用源程序。修改后要填写《程序修改登记表》,并在《程序变更通知书》上写明新旧程序的不同之处。
-
软件维护活动类型总起来大概有四种:纠错性维护(校正性维护)、适应性维护、完善性维护或增强、预防性维护或再工程。除此四类维护活动外,还有一些其它类型的维护活动,如:支援性维护(如用户的培训等)。针对以上几种类型的维护,可以采取一些维护策略,以控制维护成本
4:软件出现BUG的几率在什么区间内可以被接受,反之,大于什么数据就不能被发行
答:目前project上的BUG严重程度分为五个等级,按照CMM5中定义的规范,BUG严重等级可分为3-5个等级,由于我们公司的CMM水平还处于初级阶段,将BUG等级划分过细不符合我们当前的CMM水平,同时也不利于测试人员对BUG等级的精确划分。根据我们公司的情况,同时参照其它中小公司的等级划分标准,建议将BUG等级划分四个等级,分别为致命、严重、一般、提示。
● 测试发生率
测试发生率为按照特定步骤执行多次的BUG重现率
测试发生率=BUG重现次数/按照特定步骤执行的总次数。
其中:对于概率性问题,执行的总次数应结果BUG的复杂程度执行(20-50次)
用户使用发生率等级划分:
如上所述,用户使用发生率=用户类别*业务类别*测试发生率,根据最终得到的用户使用发生率的值的不同,可以将用户使用发生率划分为如下几个等级(也可沿用旧等级划分,将<2%的问题划入等级“低”)
5:作为一个大三学生,我是否有能力参与到软件设计当中
答:我认为我现在是有能力参与到软件设计中的,虽然我可能还不能独当一面,自己独自完成一款软件的设计,但是我认为我也要积极参与,每一个软件工程师都是从菜鸟慢慢成长起来的,哪怕我现在只能帮到TEAM一些微薄之力,我也是愿意参与的,这样对我自己是中难得的经历和提高。
6:一款软件是否有固定的存活周期?能否通过人为干预影响存活周期
答:是有固定的存活周期的,通过运行与维护可以增长存活周期
生命周期阶段
答:我认为软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义.1995年,Standish Group针对系统开发成功的研究表明,所有的开发项目中有32%的项目在它们结束之前被中止.此外多于一半的软件项目花费的成本相当于原来预算的2倍.软件工程只有42%的软件项目完成时达到了预期的范围和功能,事实上,许多系统只完成了部分预期的需求.因此,软件的开发是一个很困难的活动,要求很仔细的计划和执行.软件工程就是在这样的背景下,由许多计算机科学家经过多方面的探索和总结而成形的.目前发展十分迅速 近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门,生产部门,和服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分.展望二十一世纪,软件仍将成为驱动任何事情从基础教育到遗传工程取得新进展的动力.学习研究工程化的软件开发方法,使开发过程更加规范.软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。 (1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。 (2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。 (3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
8: 软件有哪些分析与实现的方法?
答:需求分析法介绍:
深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。
需求分析可分为需求提出、需求描述及需求评审三个阶段。
需求提出
主要集中于描述系统目的。需求提出和分析仅仅集中在使用者对系统的观点上。开发人员和用户确定一个问题领域,并定义一个描述该问题的系统。这样的定义称作系统规格说明,并且它在用户和开发人员之间充当合同。
需求描述
在问题分析阶段分析人员的主要任务是:对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。分析人员要将对原始问题的理解与软件开发经验结合起来,以便发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求。
需求评审
在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。
以上就是我对学期开始时对自己提出的问题的解答,诚然有的答案并不是通过这一个学期学到的,但是通过我自己的学习和查找最后也找到了答案,我认为这也是老师对我们的良苦用心,让我们不仅仅局限与课堂上,更通过自己的发现欲学到了更多的知识。
课程总结: 刚开始学软件工程这门课的时候以为就是跟之前学的语言一样编写代码,没想到这么复杂。需要创建框架,结构,分析数据,需求分析的任务是理解和表达用户的需求,描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的借口细节,定义软件的其他有效性需求。概要设计把每个组成部分的功能都给出意义明确的模块,每个模块都和一部分需求相对应。但是不考虑细节。详细设计,把每个模块的功能实现详细的表示出来,为源程序的编写打下基础。然后就是编程阶段等等步骤才可以完成一次软件工程。而团队合作更需要分工明确,按时完成并且富有责任心。还要积极的跟小组成员讨论,一起完成项目的规划,如果不是小组的共同努力我想我肯定在这么短时间内完成不了这个项目在此感谢冯华平老师和我的小组成员。
这次项目让我学到很多东西,不仅在理论上让我对IT领域有了全新的认识,在实践能力上也得到了很大的提高,真正的学到了学以致用,更学到很多做人的道理,对我来说受益匪浅。我意识到自己知识的缺少,这激励我在以后的学习、工作、生活中要不断了解信息技术发展动态以及信息发展中出现的新的技术。
不仅如此,这个学期我印象最深的一句话就是老师的一句:“不要满足于做一个程序员,要从一个 “敲代码的” 上升到 工程师” 。我对这句话真的是受益匪浅,所以我认为我不应该把这门课当成一个任务,或者毕业后当成一个谋生的工具而已,我不是一个单纯敲代码的而已,虽然我现在只有很基础的知识和技能,但俗话说得好,不想当将军的士兵不是好士兵。这句话激励着我,努力的打好现在的基础,有一天学成后,当一位软件设计的艺术家,就像音乐家,就像大厨,就像画家,他们都可以因为自己的魅力被称作艺术家,我也想成为一名艺术家!一名有自己创意,有自己头脑在软件中的“代码艺术家”!