《软件工程》课程的总结
1.对前期提出的问题的回答
1. 如何成为初级软件工程师?
初级资格(助理工程师、技术员)需要掌握计算机与软件工程知识,并且会软件设计。
需要考取初级软件工程师资格证书。
2.初级软件工程师如何成长?
初级的很容易, 掌握一定的技术, 就可以进入项目组了。个人认为最重要的还是项目经验, 系统的项目经验, 从无到有, 操作和掌握项目进程,
有系统的经验, 这样才不会被取代。 我是朝着项目管理的方向发展,不是跟随。
3.软件开发的工作量和质量怎么衡量呢?
James Shore & Shane Warden的《敏捷开发的艺术》一书中看到如下段落:
软件开发生产率是出了名地难以衡量。……在软件领域,我们没有一种客观的方法来衡量产量。一项特性的尺寸是多少?
我们可以通过统计函数点或代码行来度量软件的大小,但这无异于使用立方英寸来度量蜂窝电话的特性。
源代码行数(SLOC)及其语言相关的表兄弟:函数点(function point),是度量软件尺寸的常用方法。不幸的是,它们也常被用于度量生产率。然而,正如外形花哨的手机,软件的大小也并不一定跟特性或价值有关联。
设计良好的代码是模块化的;它支持多项特性而没有重复。设计越好,重复越少,代码行数也越少。这种精心的设计需奥付出时间和精力,但带来的结果是更少的bug和更容易修改的软件。
汇报源代码行数或函数点会鼓励团队每天都产出更多行代码。团队的生产率没有增加,却很可能花费更少的时间在设计质量上。SLOC产量将会提高,确实会,但设计质量却会下降。研究表明,一个程序拥有的代码行数越多,可能拥有的缺陷就越多,开发成本也越高。
总的来说,SLOC和函数点是有问题的生产率度量方法。
4.如何评价一个软件的质量如何?
正确性
高效性
可靠性
易用性
可扩展性
5.一个合格的软件工程师,首先要具备哪些基本知识?
初级部分:
1. Java 面向对象程序设计、Java API使用、数据结构及算法基础、Java高级类特性、异常处理;
2. AWT及Swing图形程序设计、流、网络程序设计、对象序列化、Applet、多线程程序设计、Java应用国际化基础;
3. Java桌面系统项目开发;
4. Java编程基础提高课程:反射机制、设计模式(I)、正则表达式,Java SE5.0新特性等;
5. 基于Oracle的数据库开发及管理、数据库设计、标准SQL、PL/SQL编程;
6. JDBC、JSP2.0、Servlet2.4、JavaBean编程;Tomcat服务器使用、Jbuilder及Eclipse 等集成开发环境;
7. Linux操作系统中的Java程序开发、Linux系统管理;
8. Java Web编程提高课程:JDBC进阶、高效分页处理、过滤器使用技巧、Struts中动态表单验证、DispatchForm等;
高级部分
1. MVC设计模式、Struts架构核心工作机制、国际化、验证框架、Struts Taglib、ORM基础、基于Hibernate的企业级应用;
2. JavaME手机游戏设计、界面程序设计、数据库程序设计、手机短信、多媒体短信(彩信)开发;
3 .JavaEE核心技术、XML、Web Service、异构系统整合、分布式应用开发、WebLogic和JBoss等应用服务器;
4 .CMM、UML与系统建模和设计、Rational Rose、软件工程和软件过程模型、版本控制及设计模式;
6. Java 企业级应用开发提高课程:Hibernate使用技巧、设计模式(II)、Spring编程入门、提高Java EE应用的性能;
.NET程序设计
.NET架构、.NET桌面和Web程序设计、.NET与JavaEE平台应用的整合;
职业素质
IT职业规划、沟通技巧、团队合作、专业技术规范、面试技巧等职业技能培训。
2.总结本学期这门课程的体会
学习软件工程这门课程已经有一个学期了,整一个学期下来,我收获了很多,在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常 有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,也是要从需求获取开始,一直有条有理地到最后完成项目。应该说这就是这门课的价值所在。
小组项目也增加了合作性的锻炼,在以后的日子能更好的工作学习。
3.对课程的建议
自行分组有助于同学们在学习过程中互帮互助,更加高效的完成项目。