内容包括适应软件过程的要求、设计技术方案、编写高质量代码、代码缺陷复查、程序调试与优化、编写高质量文档、版本控制、软件质量控制和团队协作等基本功。本书的每一章对应于软件工程师要掌握的一项基本功。
本书以软件工程为指导,讲解各项基本功的关键技术要点,具有很强的实用性和可操作性,适合于信息专业在校高年级学生、软件工程师和软件项目管理者阅读。
第1章 软件过程 1
1.1 软件开发基本功 1
1.2 软件过程的作用 2
1.3 瀑布式软件过程 3
1.4 增量式软件过程 4
1.5 软件过程的具体体现 5
第2章 软件系统设计 7
2.1 设计基本手段 7
2.2 设计任务 8
2.3 结构化设计 9
2.4 模块化方法 11
2.5 面向对象设计 13
2.6 软件设计重用 14
2.7 软件设计检查 15
第3章 高质量编程 17
3.1 编程风格约定 17
3.2 高质量程序语句 18
3.2.1 直截了当说明意图 18
3.2.2 少使用临时变量 19
3.2.3 避免使用相似代码 20
3.2.4 促使语句松耦合 21
3.3 高质量函数原形 21
3.3.1 声明函数的理由 21
3.3.2 函数命名 23
3.3.3 函数参数 24
3.4 高质量函数编程 25
3.4.1 选择控制流结构 25
3.4.2 从伪码入手编排函数 26
3.4.3 尽量简化控制流 27
3.4.4 防错性编程 27
3.5 高质量程序结构 29
3.5.1 促使程序模块化 29
3.5.2 使模块关系清晰 29
3.5.3 每个模块只做一件事 30
3.5.4 分块编写大的程序 30
3.5.5 尝试优化数据结构 31
3.6 几条经验法则 32
3.6.1 检查程序清晰性 32
3.6.2 重编质量差的程序 32
3.6.3 从算法入手提高质量 32
3.6.4 尽量删除注释的代码 33
第4章 程序代码复查 34
4.1 微软的教训 34
4.2 代码复查的特点 35
4.3 微软人的复查 36
4.4 浏览程序不是复查 36
4.5 复查的层次化方法 37
4.6 复查效果激励 39
4.6.1 提高复查的效率 39
4.6.2 降低缺陷引入率 40
4.6.3 以老带新,时时学习 40
第5章 调试与优化 42
5.1 调试的误区 42
5.1.1 靠猜测发现错误 42
5.1.2 舍不得花时间理解问题 42
5.1.3 对调试工具的迷信 43
5.2 对复查进行验证 43
5.2.1 验证顺序程序代码 43
5.2.2 验证条件程序代码 44
5.2.3 验证循环程序代码 46
5.2.4 验证某些控制结构 48
5.3 卓有成效地调试 49
5.4 程序优化的涵义 51
5.5 提高执行效率 51
5.6 优化程序结构 56
5.6.1 尽量减少数组维数 56
5.6.2 运用辅助数据结构 57
5.6.3 促使程序简单化 58
第6章 程序质量保证 62
6.1 SQA与软件过程 62
6.2 SQA的回报 63
6.2.1 保证用户满意度 64
6.2.2 促进销售 64
6.2.3 降低维护成本 64
6.2.4 提高实践能力 65
6.3 程序接口质量保证 65
6.3.1 参数要直观 66
6.3.2 返回值要统一 68
6.3.3 函数用途要单一 69
6.3.4 信息隐藏 70
6.4 程序实现质量保证 70
6.4.1 句法技巧 71
6.4.2 语法检查 71
6.4.3 全局变量 72
6.5 测试阶段的SQA 72
6.5.1 单元测试 73
6.5.2 集成测试 73
6.5.3 系统测试 74
第7章 编写软件文档 75
7.1 软件文档的作用 75
7.1.1 程序修改 75
7.1.2 工作交接 76
7.2 文档观念中的误区 78
7.2.1 文无定法 78
7.2.2 放弃质量,保证进度 79
7.2.3 程序比文档更重要 80
7.2.4 错几个字算得什么? 81
7.3 轻松写文档 82
7.4 必须纠正的缺陷 83
7.4.1 滥用省略 83
7.4.2 不遵守文法 84
7.4.3 交代不明 85
7.4.4 眉目不清 85
7.4.5 未认真编辑 85
7.5 案例点评 86
7.6 重视文档常规项 87
第8章 程序版本控制 89
8.1 版本控制方法 89
8.2 个案讨论 93
8.3 解决具体问题 95
8.4 适应版本控制要求 97
8.4.1 用工具管理版本 97
8.4.2 适应变更控制的要求 98
8.4.3 开发小组的版本协调 98
8.5 向配置管理过渡 100
第9章 软件质量控制 104
9.1 软件质量概念 104
9.2 质量控制手段 106
9.3 最常规的手段 108
9.4 质量要求具体化 109
9.5 质量问题分辨 110
9.6 质量问题改进 112
9.7 解决好技术干扰 114
第10章 团队协作基本功 115
10.1 让会议有效果 115
10.2 与主管共事 116
10.3 强化产品观念 117
10.3.1 控制成本观念 117
10.3.2 软件重用观念 118
10.3.3 “用户第一”观念 119
10.4 调配工作时间 120
10.5 在实践中提高能力 121
参考文献 124
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责...
计算机技术与软件技术资格(水平)考试专业类别、资格名称和级别对应表 计算机软件 计算机网络 计算机应用技术 信息系统 信息服务高级资格 信息系统项目管理师系统分析师(原系统分析员)系统架构设计师网络规...
前景: 随着我国信息化建设的开展,以及国家各项相关政策的下达,使得全国各地的信息化建设如火如荼,出现了大量的信息化网络人才的缺口,而我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于网...
序号 计划完成时间 实际完成时间 工作量 评分标准 2 3 4 5 6 7 平均 个人承担任务( 20 %) 员工自评 部门主管考评 ①实际完成时间滞 后超过 50%;(0分) ②实际完成时间滞 后50%~10%;(50-90 分) ③按时的完成该项 任务 ;(95 分) ④提前出色的完成 该项任务 .(100 分) 考核期间: 年 月 日 至 年 月 日岗位:软件工程师姓名: 部门: 软件工程师绩效考核表 序号 描述 分数 1 完整性 文档格式满足规范或 标准的程度以及文档 内容涵盖范围满足规 范或标准的程度 计算公式: 内容覆盖率 =已包含 要求条目数量 /规范 要求涵盖数量 10 2 可追溯性 文档版本变更控制的 程度 10 3 可读性 文档可被同行(专业 知识结构及水平相近 的人)有效理解的程 度 20 工作完成质量 (25%) 评分标准 员工自评 部门主管考评 文档 ①文档编写格
软件工程师岗位职责 1.软件的程序设计与代码编写 2.有关技术方案、文档的编写 3.软件单元的测试 1、根据项目具体要求 ,承担开发任务 ,按计划完成任务目标 2、配合系统分析人员完成软件系统及模块的需求调研与需求分析 3、配合系统分析人员完成软件系统及模块的设计 4、独立完成软件系统及模块的编码 5、协助测试人员完成软件系统及模块的测试 6、负责编制与项目相关的技术文档 7、有 OA 及电子政务软件开发经验或相关背景优先考虑 ; 1、根据项目具体要求 ,承担大型网站设计与开发 2、部分软件功能模块设计和软件界面美化 3、协助测试试人员完成软件系统及模块的测试 系统分析员岗位职责 : 1、负责项目开发作业程序的执行 ,严格执行开发设计工作规范 ; 2、负责进行需求调研分析 ,制定项目需求规格说明书 ; 3、负责产品详细设计方案和具体设计的制定、审核 ; 4、负责具体开发工作 ,解
软件工程师是什么相信很多人都会存在疑问,今天北大青鸟旗舰总校的老师就给大家简单介绍一下吧:
和软件有关的专业称为“软件工程”。其实很多人对这个专业还是有一些误解的,包括我在没有进入这个行业之前,只是以为这个专业知识学如怎么设计软件。
其实,“软件工程”并不注重于“软件”而注重于“工程”,引用IEEE(美国电气和电子工程师协会)的定义,是将严格约束的、可量化的、系统化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。结合在网络上各方的说法,简单来说,软件工程专业目标就是响应信息化发展需要,培养具有计算机和信息知识与技术的能对软件进行分析、设计、开发和测试的人才。把工程化大量,高效生产的思想应用于软件生产,满足社会日益增长的对优秀人性化的软件需求。
软件工程专业涉及了计算机科学和管理学,包括:离散数学、计算机概论(对计算机的构造原理乃至于整个计算机领域的介绍)、计算机语言(c++、c、java等)、数据库原理、开发测试方法、项目管理等。但是对于专业课程,毕竟计算机编程思维与我们一般的思维不同,所以如果对于计算机毫无基础的同学来说,开始的学习阶段会比较吃力,往往会出现头昏脑胀不知如何入手的情况,但是多花点时间和心思,耐心学习下去,不会比别人差。再通过平时多看相关的书籍,更加深入了解计算机的构造和原理,还有多动手实践,积累经验。这事是我们学校和传统大学教育方式的不同支出。技术是建立在扎实深厚的理论基础之上的,而不是单纯地学会如何写代码,才能真正做到资源整合,算法优化,才能设计出好程序。
工程师写软件我们都会觉得很神奇其实过程是很枯燥的。有时候,一个软件团队合作都需要好几年时间才开发出来,往后还要更多时间去维护和更新。而且也别看一个软件的界面那么美能实现很多功能,其实其底层数据的编写一点也不神奇,都是利用各种一些极其普通的算法叠加嵌套而成的。但同时,这也是一种设计。利用这些枯燥的代码创新,设计出合理,节省资源空间,人性化的软件,满足客户需求,是一件值得骄傲的事情。选择了软件工程,如果能做好面对枯燥的准备,却又能从中找到乐趣的话,也是一件相当不错的事。
对于这一专业的就业前景,应该说,在中国的话,还是相当有发展潜力的。毕竟目前中国的专业软件人才还是相当少,而中国的信息发展又即将迈进新台阶,至少在未来10年以内,对软件工程开发的人才需求量非常大。而且,软件工程专业的毕业生可选择的职业范围比较多。比较典型的有架构师(条件最好)、项目经理、软件工程师。而且,一般来说,这些行业的薪水都不算低。很多学员毕业每月薪水为5000-6000元,一年以后每月7000-9000元,也有很多月薪超过一万的水平。想要达到这一薪水水平,前提是要基础扎实,刻苦耐劳。计算机科学更新换代非常快,只有紧跟潮流发展的步伐才能迎合市场需求。只有具有扎实功底及丰富经验或者把工作重心转移为管理的软件人才能站稳脚跟,不至于被淘汰。同时,也要做好准备,找工作并不是很容易和顺利,只有真的具有技术和能力的人才会被大公司青睐。
通过简单介绍相信大家也都知道,软件工程是具有非常大潜力的行业,但是也是需要花头脑和时间进行钻研的行业。简单说它是一门专业技术,深层次将它也是一门艺术。只有真正热门投入其中才能感受其带来的乐趣。
软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。这些岗位的分工不同,职位和/或级别不同,但工作内容都是与软件开发生产相关的。软件工程师是IT行业需求量最大的职位,稳居IT行业职位需求TOP10的第一位(第二位是高级软件工程师)。
软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C /JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/S B/S程序开发,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUCTS等前沿技术。除此之外,关于网络工程和软件测试的其他技术也要有所涉猎,以利于操控全局。
软件工程师可谓是软件项目开发的掌舵者。一名优秀的软件工程师应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。虽然要求技术全面,但无须偏执于门门技术都精通,任何软件工程师都有自己的技术特长和偏向,对于自己手中的技术,可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。
近来,随着全球经济形势的严峻,越来越多的企业开始受到冲击,利润空间加剧下滑。为了控制成本,裁员、减薪成为了企业方最常用、也是最优先考虑的方法。而失业、生存压力也就成为了近期备受关注的词汇。据国际劳工组织的专家预测,2009年全球失业人数将再创记录,达2.1亿人。而在国内,裁员狂潮也在地产、金融等企业的带领下迅猛袭来。
席卷全球的金融海啸,正在悄悄地波及大学生就业市场。一方面,预计2008年底有100万大学毕业生不能就业,2009年将有592万大学生毕业 再加上往届没有就业的大学生预计上千万的失业大学生;研究生扩招这一政策并不看好,扩招无非只是把现在的就业压力转移到将来几年而已。没有从跟本上缓冲就业压力,将来还可能会出现研究生就业难。”另一方面,不少企业却取消了校园招聘计划,2009届大学生们已经感受到了就业前景的“寒流”。我们可以从这幅漫画中看出,毕业生的就业需求量与企业的就业岗位量相差很多,在金融风暴下,毕业生的就业前景不容乐观。招聘会的火爆场面也证实了这一点。
而从以往就业形式分专业看,月薪最高的10个专业分别是法语、石油工程、注册会计、软件工程、德语、微电子学、建筑学、信息安全、保险和日语;月薪最低的10个专业分别是临床医学、小学教育、中医学、教育学、美术学、医学影像学、林学、历史学、体育教育和音乐学。尽管2009年就业形势不好,但一些行业仍有很多机会可供求职者去把握。根据2008年人才指数分析及2009年才市预测,其中有三大行业在刚刚过去的2008年占尽风头,预计也将在2009年里继续风光,这些行业分别是信息技术与互联网行业、建筑业、快速消费品业;
信息技术与互联网行业的人才需求一直保持全年行业需求的最高,月月居十大热门行业榜首,招聘始终维持在15%-20%左右的市场份额。从行业人才需求看,技术人才水涨船高,软件人才需求最为火爆。
网上职位需求显示,2008年软件行业招聘比例比2007年上升5.3%;在IT行业需求排名第一。对于软件工程师、在未来几年中的需求将会继续增加。