1、如果本合同任何条款根据现行法律被确定为无效或无法实施,本合同的其它所有条款将继续有效。此种情况下,双方将以有效的约定替换该约定,且该有效约定应尽可能接近原约定和本合同相应的精神和宗旨。
2、本合同经双方授权代表签字盖章,自签订日起生效。
3、本合同一式陆份,甲方执贰份,甲乙双方各执壹份,均具有同等法律效力。(以下无正文)
甲方:_______________乙方:_______________
地址:_______________地址:_______________
授权代表:_______________授权代表:_______________
签订时间:_______________签订时间:________________
《软件工程》课程分析
本课程是软件技术专业学生必修的一门专业必修课。根据培养软件开发人员的需要,本课程的任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法。能在软件工程的理论指导下,开发一个小型管理系统,为今后从事软件工程实践打下良好的基础。
本次的实习终于结束,自己虽然完成了杨总交代的任务,完成了李总的三个游戏的开发和架设,但也存在许多不足的地方,沉默寡言一直是自己的一个毛病,运到问题不主动的说出来给项目的进度造成了很大的阻碍。同时,自己在技术,编码上还有非常多的路要走,程序的运行效率一直制约着真个项目的效率。
我不能判断自主实习与学院安排的统一实习的优劣,从某种程度上说我有时感觉自己没能参与学院的统一实习而感到遗憾。我能说的只是自己出来独自生活了三个月后的一些感想,独自生活了三个月,发觉自己成长了许多许多,不在那么的天真,以前很多的毛病都得到了改正。
以前直接不想面对的苦难自己现在必需去面对,最主要的是,自己有了非常多提升自己的机会,在北京的这段时间,自己参加了百度世界20nn,快乐技术沙龙,微软xx北大校园宣讲会,这些都是自己之前在学校不敢奢望的,与同是it业的别人交流,吸取别人好的方法和工作的经验,让自己受益良多。
我仍然希望我们能多到外面走走,多去见识外面的世界,发现自己的差距,并且努力的缩小差距。
在学校期间,我们不能荒废我们的学业,立志从事it行业的同学应该抓住尽可能的机会去提升自己的能力和技术水平,只有这样,无论在哪里,我们都能泰然处之。
我自从离校接触社会以来,即接受过大公司管理培训、销售技巧,又体验过一线工人生活、简单的管理经验,还给大企业搞过技术及用品服务。
这些社会经验再加上我个人吃苦耐劳、为人诚恳、勤奋刻苦、集体观念强、具有团队协作精神、创新意识,我会很快适应新的工作环境、并且会快胜任这份工作,真诚的希望我们能共同携手创造公司美好的未来。
性格稳重、小心、谨慎。
对工作能够最快挖掘其乐趣,因此能在工作时投入最大的热情、时间、精力。
对上司有良好的认知心态,能高效完成上级的指令。
深知个人能力有限和合作的重要性。所以能很好的处理与同学、同事间的关系。
以不张扬的自得,轻描淡写的自信,为美好欲望力争上游作为生活准则!
学习刻苦认真,多次获得奖学金,一直是系篮球队主力球员,适应能力强,具有一定的社交能力和团队精神,擅长用Delphi语言开发系统及网站设计,精通SQL Server20xx。工作认真负责。善于创新。敢于迎接挑战。敢于承担责任。有较强的精力投入工作。富有工作激情。乐业敬业。
《先进软件开发技术与工具》试题
1. 介绍创建.NET程序的基本步骤。(4分)
答:打开Visual Stdio 文件菜单 新建 项目 选择语言和项目类型 编写代码 编译 运行。
2. C#语言的特点?(5分)
●简洁的语法
●精心地面向对象设计
●与Web的紧密结合
●完整的安全性与错误处理
●版本处理技术
●灵活性与兼容性
3. C#中参数传递有哪些方式?各有什么特点?(6分) 答:有传值和传引用方式。
传值方式,是指将实际参数的值复制一份,存入形式参数中。在方法中对形式参数值的改变不会影响到实际参数。
传引用方式,是指将实际参数的地址复制一份,存入形式参数中,在方法中通过地址可以改变实际参数的值。
4. e is T在什么时候返回true?e as T在什么时候返回非null?(6分) 答:e is T在对象e的类型为T时返回true。
e as T在对象e兼容于T类型时,返回非null。
5. 给出C#语言效率低于C/C++语言的3个原因。(6分) 答:(不确定)
C#有高级内存管理机制,方便了开发,但降低了代码效率;
C#代码是托管运行的,效率较低;
C#不能直接进行内存管理,效率低。
6. 解释以下基本概念。(14分)
(1)托管代码 (2)抽象类 (3)接口 (4)引用类型
(5)异常 (6)属性 (7)值类型
(1)托管代码——由公共语言运行库环境(而不是直接由操作系统)执行的代码。
(2)抽象类——至少包含一个抽象方法的类,该类不能被实例化。
(3)接口——只包含方法、属性、索引器、事件,均为public权限,而且方法只有定义没有方法体。
(4)引用类型——直接存储变量值的引用,该类型的变量作参数,传递的是值所在的地址。
(5)异常——程序执行时遇到的任何错误情况或意外行为
(6)属性——属性是这样的成员:它提供灵活的机制来读取、编写或计算某个私有字段的值。
(7)值类型——直接存储变量的`值,该类型的变量作参数,传递的是变量的副本。
7. 虚方法、抽象方法、静态方法、接口中的方法和密封方法有何区别?(10分)
答:虚方法:用virtual修饰,告诉编译器这个方法可以在派生类中被改写。
抽象方法:用abstract修饰,没有方法体,它所在的类是抽象类。抽象方法必须由其所在类的派生类重写,除非该派生类也是抽象方法。
静态方法:用Static修饰,静态方法存储在类空间中,直接由类访问。
接口中的方法:只有方法的声明,没有方法体,必须由接口的派生类重写。
密封方法:用seal修饰,表示该方法不能被派生类重写。
8. 抽象类、密封类和接口有何区别?各在什么情况下使用?(10分) 答:抽象类:至少含有一个抽象方法的类。用于各派生类有同样的行为,但实现代码各不一样的情况,这时可以基类中定义即抽象方法,该基类就是抽象类。
密封类:表示该类不能被继承。用于不希望该类被继承或修改的情况。
接口:只包含方法、属性、索引器、事件,均为public权限,而且方法只有定义没有方法体。用于向外界声明所具有的行为,用于实现多重继承。
9. 下列程序片断有何错误?(12分)
(1)
class BaseClass
{ public virtual void f1 { }
} class DerivedClass : BaseClass { } public void f1() { }
答:DerivedClass中f1应改为public override void f1(){},加上override。
(2)
class BaseClass
class DerivedClass : BaseClass { } public void f1() { } } { public sealed void f1() { } 答:DerivedClass中f1()不能被重写。
(3)
abstract class BaseClass
class DerivedClass : BaseClass { } public void f2() { } } { public abstract void f1() { }
答:BaseClass中f1应为public abstract void f1();,没有方法体;
DerivedClass中应添加public void f1(){……},实现抽象方法。
10. 写出下列程序的输出。(7分)
class BaseClass
} new public void f2() { } (“”); class DerivedClass : BaseClass { public override void f1() { } (“”); } public void f2() { } (“”); { public virtual void f1() { } (“”);
} (); (); BaseClass b = d; static void Main(string[] args) { DerivedClass d = new DerivedClass();
答:(答案没验证)
11. 编写一个程序,接收用户输入的两个数字(这两个数字不能都大
于30,否则要求用户重新输入),计算两数的乘积并输出。(8分) 答:
static void Main(string[] args)
} (“请输入小于30的数字:”); y = (()); while(y>30) { } z = x*y; (“结果是:”+z); (“请输重新入小于30的数字:”); y = (()); int x=100,y=100,z; (“请输入小于30的数字:”); x = (()); while(x>30) { } (“请输重新入小于30的数字:”); x = (());
12. 马(Horse)、大象(Elephant)、老虎(Tiger)、狮子(Lion)是动物(Animal),动物能够Eat,但是不同的动物有不同的Eat行为。另外,有些动物具有食肉特性(ICarnivore),食肉动物能够捕食(Prey)。定义类和接口用类继承和接口实现来表示以上事物之间的关系。(12分)
interface ICarnivore
} public void Prey(); //食肉特性
就是要积极主动的采纳新的软件技术,且要不断总结经验。大家可以想象一下,如果开发小组组长是一个固步自封的顽固派,那么后果将不堪设想 下面进行另一个知识点:软件生命周期
概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成,但每个时期又进一步划分成若干个阶段;这里我帮大家总结了一下: 计划---需求分析---设计---编码---测试---运行、维护
在这里我解释一下,在开发软件时我们要制定计划,做需求分析了解用户想利用计算机软件帮他们解决什么问题然后进行设计它类似于工程师经常使用的工程蓝图,它包含了详细的设计每个模块,确定实现模块功能。接下来就是编码实现功能,而测试则是使软件达到预订的要求,在这里并不是结束我们还要对其进行运行维护持续满足用户的需求。
从这周开始,我们将开始为期10周的校内实习训练生活,由于自身的一些原因,无法外派到实习公司进行软件项目的培训。这一周里,我们主要是与实习指导教师沟通,制定下校内实习的主要内容和活动安排。
通过与指导教师的沟通,初步定下我个人实习程序项目,通过MyEclipses实现企业商品进销存管理系统,通过编程,达到实现商品进货销售和存储的统计管理。同指导教师初步拟定下需求分析,接下来由个人编写实现代码程序。
接下来就由个人来编写实现代码和进一步的完善需求分析文档。偶尔与同在学校参加校内实习的同学们进行交流探讨,来解决我们在编写程序时遇到的一些问题。
在同学之间的讨论和研究中,我学习到了不少知识,这都是在我们大学课堂上所疏忽的知识点和重要的实践经验,使我受益非浅,这将成为我今后学习工作的重要财富。
接下来,完成需求文档便可以投入到程序代码的编写中去,这个环节所需要的时间是相当巨大的。一份分析得透彻的需求文档,将会给我们之后的程序编写带来很多的方便,所以,接下来需要比较细心的完成我这个项目的需求分析文档。
自己也算半路出家,以前总是不屑基础的东西,总认为我懂了WPF,能画出很炫的界面什么就很好了。其实却是认识太肤浅,只有掌握了不变的东西才能应付好上层的技术,否则只会被微软牵着鼻子走。
所以对新人来说,打好基础是多么重要,可惜我后知后觉了。
除了基础的东西,我认为其次重要的是软件架构。
好的架构可以让事情事半功倍,让下面实现具体代码的感觉很轻松。说得过分点,一个好的架构师可以带一群实习生的干活都能出好东西。软件开发越来越不需要我们懂底层的东西,很多现成的轮子可以用,但是要知道怎么搭积木就需要好的架构师了。
所以我觉得平常要多看好的开源架构,多学习框框的东西,当然轮子和积木知道哪里能拿到。最怕的是像我一样,只会google找积木搭,这就是所谓的纯码农了:
其次是业务,开发很多时候要懂业务。
很多开发的很不屑业务,认为技术才最重要。其实很多时候业务才是王道,软件开发在我看来大部分时间都是给业务做服务的,做支持的,公司都是靠业务才能赚钱的。
所以开发人员也要懂业务,特别对那种不是很想一直做开发的来说,懂业务又懂技术也许会给你更多的机会。
最后是软件开发的职业发展。
个人的看法是码农能爬上去做架构师和经理的其实很少,基本一个萝卜一个坑,我见到开发能一直做到退休的都是老外,人家基本没有title的,这样的我观察无非两种人。一种是对业务很精通,同时对技术系统又很懂的,公司少不了他。一种是对技术很热情很钻研,能力很强,又不想去要什么title的,基本可以挑大梁。
我想国内的情况虽然不太一样,不过基本可以借鉴下老外。当然不做开发还有很多可以做,我想说的是开发是可以做一辈子的,就看个人的想法了。
这个问题我自己也一直在想,目前只有一条模糊的路,也得摸石头过。
1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在mm比较多的团队中。在软件项目团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个
1基于组件的软件复用技术
目前制定实现规范并比较适用于复用的组件模型有CORBA/ORB、COM/ActiveX、JavaBean以及.NET等。通过对以上组件模型的研究与对比,本系统选定.NET中的WindowsForms作为本实时测控软件的组件模型,使用.NETFramework的公共语言运行时,组件都建立在一个共同的底层基础上,不再定义使用复杂的管道接口,对象可以直接交互访问,有利于组件的自由配置,同时,利用.NET技术的分层结构特点,采用“搭积本”的方式生产软件,大大提高软件开发效率。
2基于组件技术的实时测控软件开发
软件架构设计
在组件技术中,一个组件就是一个接口集,它通过接口对功能进行封装。因此,对于同一个应用程序架构,只要其使用的接口集合不变,即可通过更换支持同样接口集的组件来获得不同应用,也可重复利用同一个组件或对组件进行二次开发。而基于组件建立的软件架构和应用开发,其最大优点在于可以复用的应用结构和软件单元。实时测控软件主要是对实时测控数据的处理、评估和显示,而测控数据主要包括光测、雷测、遥测及GPS测量等类型,其处理过程通常包括数据采集、数据解析、数据处理和结果评估等四个部分,针对以上4种数据类型,在基于组件技术思想下,其处理架构可统一进行设计,如图1所示。针对靶场测控系统中光测、雷测、遥测及GPS测量等数据处理应用,通过将数据采集组件、数据解析组件、数据处理组件、结果评估组件替换成相应功能的组件,即可实现在保持软件架构不变的前提下开发出不同的应用系统。
基于组件技术的软件升级维护
组件接口是对某一功能的一套抽象描述,具有封装性,它通过接口与其功能实现分离开了,并以接口作为客户与组件(或组件之间)交互的唯一方式,因此,只要保持接口不变,就可以将系统中的组件用新的组件替换,以随时进行系统升级维护。下面以实时测控数据处理软件中的雷测数据处理应用为例,其软件的架构如图2所示。当需要对系统进行升级维护时,在软件架构完全保持不变的前提下,对具体的组件进行替换,只要保持接口不变,程序无需重新编译链接,系统即可通过使用更新后组件中的新接口来获得新特性,从而实现系统的升级维护。
利用组件复用技术实现软件功能扩展
组件复用是利用已有组件创建新组件,即通过第三方产品来构建自己产品。组件复用是通过包容和聚合来实现的,包容时外部组件包含内部组件的接口,它由外部组件接收此调用请求再交由内部组件来处理,聚合时外部组件直接调用内部组件的接口,它让内部组件直接处理该调用请求。在C++语言,通过在外部组件中增加内部组件接口,并把调用请求转发给内部组件即可实现包容,对于聚合,在内部组件中维护一个外部组件接口指针(如m_pUnknownOuter),通过委托机制,让内部组件接口提出的查询接口请求由一个委托接口转发至外部组件,再由外部组件接口查询内部组件。这样就可以实现一致的访问,即不管是通过外部组件的接口,还是内部组件的接口,都可以查询到内外组件所支持的接口集合。在实际应用中,软件开发不仅有大量的、功能强大的商业化组件可以使用,而且有应用广泛的、成熟的靶场测控系统专用组件可以使用,如组件化的数据接收、量纲复用、坐标转换、滤波平滑、精度评估等功能模块。因此,利用好组件复用技术可以有效扩展靶场测控数据处理系统的软件功能,对于靶场测控系统建设具有重要的现实意义。
3结束语
基于组件技术的实时测控数据处理软件开发可以大大提高软件开发效率,大幅度降低系统的开发费用,有效解决靶场测控数据种类多、规模大、复杂性高的难题,为靶场测控手段的不断发展提供了技术支持。
计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。计算机软件工程学就是为了研究如何消除软件危机而发展起来的。那么什么是软件危机呢?
在开始讲软件危机时我要先提出一个概念:什么是软件?(板书:软件危机、什么是软件)简单来举例像我们平时用的word、excel都是计算机软件。
软件就是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。(软件的英文名为Software板书:software=program+data+document)
那它具有什么特性呢?在这里我向大家绘制两幅图,大家可以比较讨论一下
硬件的失效率刚开始是降低的,这个阶段就是磨合调整,通过调整失效率降低并达到一定时期的稳定,那为什么会失效率增高呢,硬件是物理实体它存在磨损用坏的问题。再来看软件的失效图像,我绘制了两条,一条是理想情况下,另一天是实际情况下。大家可以看出来吗?没错,开发出来的软件并不是永远有效的,随着用户的需求增大等情况失效率会增高。从图中我们还可以看出在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。因为软件是一种逻辑实体,并非具体的物理实体。
另外呢,软件复杂性很高,软件技术的发展落后于需求,成本也相当昂贵。
讲完软件的概念,那么软件危机就比较容易理解了,软件危机就是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 那么大家思考一下,能够正常运行的软件可能会存在软件危机吗?答案是可能会。实际上,几乎所有软件都不同程度地存在这些问题。比方说,你在用QQ软件时,它不能与你的计算机硬件环境兼容或是不能满足你的要求。 总结下来,软件危机需要应对两方面的问题: (1) 如何开发软件,以满足对软件日益增长的需求 (2) 如何维护数量不断膨胀的已有软件
软件危机又有哪些典型表现呢?我们在进行一项工程时是不是经常会有一个工程预算,软件工程也不例外,如果对软件开发成本和进度的估计不准确,那么就很容易使用户不满。再来如果没有和用户进行很好的沟通就着手编写程序,那么人家也不会满意;软件质量靠不住、软件开发出来是不可维护的,也可以说是不能够对其功能进行修改适应用户需求;软件开发供不应求都是软件危机的表现。
那么出现软件危机的原因是什么?在分析原因时我们就通常从内因外因来说,在前面我有讲到软件的特征,软件复杂度高,成本昂贵等都与软件危机的出现有关,外因则是由软件开发和维护的方法不正确有关。
下面我将引入一个问题,大家思考一下,假设你是软件公司的总工程师,当你告诉自己手下的工程师们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并且还举了一个例子:“如果一个故障是编码错误造成的,那么,一个人又怎么能再设计阶段就清除他呢?”你同意他的观点吗?
答:在软件开发的不同阶段进行修改需要付出的代价是很不一样的,在早期引入变动,涉及的面比较少,代价也比较低当进入开发中期,软件配置的许多东西都已经完成,引入一个变动要对所有已完成的配置成分都做相应地修改,不仅工作量大,而且逻辑上海很复杂,代价剧增啊,在软件已经完成时在引入变动,当然需要付出更大的代价。况且软件的开发是团体合作,并不是一个人,早发现早解决很重要!
那么如何消除软件危机呢?这也是我们这门课永恒的课题啊
首先呢我们要对计算机软件有一个正确的认识,软件并不等于程序,这是很多学生出的问题
必须充分认识到软件开发不是某种个体劳动的产物,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。也就是我们所说的团队合作
推广使用在实践中总结出来的开发软件的成功技术和方法 开发和使用更好的软件工具
那么软件危机我们就讲到这,下面开始介绍软件工程:
什么是工程?我们平时经常听到水利工程,建筑工程,工程就是对技术实体的分析、设计、建造、验证和管理。那么我们知道软件是一种逻辑产品,看不到摸不着而软件工程就是把软件当做一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。是一种新兴工程。
如何定义它呢?软件工程就是为了经济地获得可靠地且能再实际机器上高效运行的软件,而建立和使用完善的工作原理;另一个更全面更具体的定义:软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件。
下面就是本节课的重点,请大家认真听讲。软件工程的基本原理:
由于该课程是用于指导软件开发的,和实践联系非常紧密。所以采用了理论联系实际的方法进行授课。一方面,让学生模拟软件公司的项目小组进行软件开发;一方面,对学生进行适时的理论指导。既调动了学生的积极性,又让学生了解了该课程的理论内容,收到了一举两得的效果。具体教学过程如下:
第一步:模拟软件公司的开发项目小组,分组,分设角色(项目经理、用户、需求人员、设计人员、程序员、测试人员、软件安装培训维护人员),确定开发题。让每个小组的学生聚在一起,在项目经理的组织下通过调研、讨论来制定自己小组的开发题目,大家感觉就象在软件公司实习一样,非常新鲜,感兴趣。每个学生都积极主动的去完成自己应承担的那部分工作。
第二步:模拟软件项目开发全过程的各个阶段,进行相关的理论授课和实际开发。即对软件开发的每一阶段,首先按照教材内容进行理论授课,然后让学生参照授课内容进行实际的软件开发实践。
在此阶段结束后,每班召开一个模拟方案论证会,由各开发小组选出代表上台讲解本组的开发方案,其他同学模拟用户对开发方案提出意见。 由于大家对模拟方案论证会非常感兴趣,发言积极踊跃,论证会结束后,每个小组的设计方案都得到了很好的补充和完善。
第三步:学期末各小组提交各自完成的软件系统及开发文档,并进行总结演示,由任课教师进行讲评。
抽象理论课的教学应理论联系实际,让学生在实际应用中掌握抽象的理论,在兴趣中学习,达到我们高职的双向型培养目标。
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.miekuo.com/fanwendaquan/qitafanwen/979473.html