计算机导论 指导教师:杨建国 二零零九年九月
思考 问题十:英语有多重要?
送给学生的话 在大学给自己制定一个 个人使用表
我大学的个人使用表 1.天天锻炼身体,不要说:“我没有时间。” 2.多看一些好书,不要说:“我很忙。” 3.培养自己多方面兴趣,不要说:“我不懂,我不喜欢。” 4.生于忧患,死于安乐。 5.要自信,不要说:“我不行。”应说:“让我试试。” 6.要有实干精神(勤奋)。
7.珍惜生命的分分秒秒,想到:“我能再活一天,我将 要……。” 8.要勇敢承认自己的错误(或不足), 不要说:“那是因 为……。”不要为自己寻找理由,一切无借口。应坦诚 承认别人行。 9.建立终身学习目标,一切以学习为主。从一切人那儿学 习,哪怕他是自己的敌人。从一切方面(特别是实践) 学习。 10.不要轻易许下诺言,要尽最大努力遵守诺言。 11.要多与人真诚合作,想到:个人难挑千担柴。无性情 中人,最好别干。 12.不要在意闲言碎语,坚信:走自己的路,让别人说去 吧!
13.不要成为金钱、名利、权力的奴隶,也不要成为任何人 (哪怕自己最爱的人)的奴隶。应勇敢地作自己的主,活 出自己的风格,想到:我永远是我! 14.要谦虚。 15.珍惜友情,但不刻意去追求。 16.当天的事当天干。 17.一切应从有益自己成功为出发点,但得顾及别人和社会 利益。 18.应迎难而上,奋力拼搏,做到问心无愧,但要考虑“煞车 原理”。
19.多赞美,少批评。 20.为人处事,要对得住自己良心。 21.微笑面对任何人;礼貌对待任何人,哪怕他是个乞 丐;尊重为自己服务的人;爱一切人,哪怕他是自己 的敌人(当然是他好的一面),也应仇恨一切丑恶现 象和坏人。 22.应加强道德纪律观念。 23.注意修养和综合素质的提高。 24.睡前反省今日所作所为及明天的大致安排。
25.千万不要为了别人而毁灭自己(当然献爱心除外), 不要为了报复而毁了自己,最好不要报复。 26.坦然对待一切,不幸应看到希望,成功应看到困难。 微笑面对人生,也就是乐观地对待人生。 27.每日深思:我拿什么资本到社会上去竞争,怎样才能 把自己培养成高素质的可塑性人才?
软件工程 10.1 软件工程的形成与发展 10.2 什么是软件工程 10.3 分析阶段 10.4 设计阶段 10.5 实现阶段 10.6 测试阶段 10.7 文档 电子计算机,俗称电脑,是一种电子化的计算工具。在中国大陆也经常用计算机来指代电子计算机。就目前而言,电子计算机是根据预先设定好的程序来进行信息处理的一种设备。电子计算机分为巨型计算机(又称“超级计算机”)、大型计算机、中型计算机、小型计算机、微型计算机(简称“微机”,其中包括个人计算机,PC),已经逐步进入社会各个领域,尤其是进入了家庭和个人领域,极大地改变了社会的日常面貌。 从1930年代中期到1940年代后期,许多人在开发现代的、数字的、电子的,通用电子计算机。许多试验型的机器被造了出来并且可能是图灵完备化的。这些机器在当时都被宣称为第一台电子计算机,然而它们都只有有限的处理通用问题的能力,所以他们的设计最终都被抛弃了。 计算机发明于1946年。大约在1940—1942年间,在研制导弹的过程中,急需要有一种能迅速计算的工具,以便对导弹的飞行进行控制。在它偏离人所预测的轨道时,把它拉回到轨道上来。这样就产生了能在1/10秒或1/100秒的时间内计算出导弹运行轨迹同预定轨道的偏差的电子计算机。电子计算机不以十进位制进行计算,而是用二进位制计算的。它的出现是当代世界上最大的发明之一。第一台计算机的发明者是一位名叫冯·诺埃门的数学家。
10.1 软件工程的形成与发展 软件危机:软件开发和维护过程中遇到的一系列严重问题 表现: 用户很不满意 质量很不可靠(产品无评价手段) 软件不可维护 对软件开发成本和进度的估算很不准确 没有适当的文档 软件成本比重上升 软件供不应求
产生的原因: 软件是逻辑的系统部件不是物理的系统部件,以程序和文 档形式存在 软件规模越来越大,功能越来越强,软件结构非常复杂 结论:软件危机产生的根本原因与软件产品的特征和软件 产品开发与维护的方法不正确有关 解决软件危机的根本出路: 认识问题的原因所在,吸取前人的经验 要有相应的理论、技术、工具
10.2 什么是软件工程 1.定义 是一门研究用工程化方法构建和维护有效的、实用的和 高质量的软件的学科 它涉及到程序设计语言,数据库,软件开发工具,系统平 台,标准,设计模式等方面 软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: 软件工程 (1)、BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。 (2)、IEEE在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究 (3)、FritzBauer在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 (4)、《计算机科学技术百科全书》中的定义:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
2.软件生存周期 软件生存周期一般划分为: 计划(定义)时期:问题定义和可行性研究两个阶段 开发时期:需求分析、系统设计、编码和测试四个阶段 运行时期:主要是系统维护阶段
典型的软件生存周期: (软件系统目标与范围说明书) 开发阶段 维护阶段 定义阶段 问题定义 (可行性论证报告) 可行性研究 (需求说明书) 需求分析 软件设计 (设计说明书) 编码 (程序) 测试 (测试报告) (软件维护报告) 维护
3.开发模型 传统开发模型 瀑布模型(waterfall model) 快速原型模型(rapid prototype model) 演化开发模型 增量模型(incremental model) 螺旋模型(spiral model) 面向对象开发模型 构件集成模型(component integration model) 形式化开发模型 转换模型(transformational model) 净室模型(cleanroommodel)
10.3 分析阶段 1.需求分析 调查用户需求(添加、删除、修改、查询、打印) 分析新系统的主要目标,分析开发该系统的可行性(技 术、经济、人力、物力、环境、政策、道德等) 计划时期还应制定出人力、资源及进度计划
2.面向过程分析 数据流图 实体关系图 状态图
3.面向对象分析 用例图 类图 状态图
10.4 设计阶段 1.面向过程设计 结构图 模块化 2.面向对象设计
10.5 实现阶段 1.语言的选择 2.软件质量 可操作性 可维护性 可迁移性
10.6 测试阶段 1.白盒测试 基本路径测试 控制结构测试 循环测试
2.黑盒测试 穷尽测试 随机测试 边界值测试
10.7 文档 可行性研究报告 项目开发计划 软件需求说明书 数据要求说明书 概要设计说明书 详细设计说明书 数据库设计说明书 用户手册 操作手册 模块开发卷宗 测试计划 测试分析报告 开发进度月报 项目开发总结报告
作业题 1.为什么要开软件工程这门课? 2.软件可行性包括哪些方面? 3.软件测试工具有哪些? 4.任何一个系统都应该有哪些基本功能?