




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程 陈斌全2008 2 1 写在前面的话 20次上课 4次实验 自己做 答疑 D313成绩 上课 10 作业及实验 20 考试 70 2 教材及参考书 3 软件工程 课程性质 解决大中型软件的开发问题培养软件开发中的工程思想培养团队精神与沟通能力了解实际软件开发过程做什么 为什么这样做 如何做开发不仅仅是技术课题 更是经济课题 4 软件开发中的常见观点 软件开发就是编程开发进度落后 增加人手就可以了用户什么都不懂 问他们还不如我自己看书想怎么开发不要跟我讲什么规范 把程序写完就可以了能完成开发任务就可以了 不要管我怎么完成的 5 软件开发中的常见观点 续 我就是喜欢一边想一边写 这样开发速度快有一种新的开发工具 据说可以提高10 的开发速度 我们应该马上采用编程高手可以搞定所有的事情 6 开发各阶段的比例 7 开发各阶段的比例 续 8 增加人手可以加快速度么 9 焦油坑 史前史中 没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼 上帝见证着恐龙 猛犸象 剑齿虎在焦油中挣扎 它们挣扎得越是猛烈 焦油纠缠得越紧 没有任何猛兽足够强壮或具有足够的技巧 能够挣脱束缚 它们最后都沉到了坑底 IBM360项目 10 用户就是上帝 项目软件与商用现货软件客户是验收软件和支付开发费用的人用户是体表客户使用软件的人软件开发的目标是开发出用户所需要的软件用户比开发人员更了解业务过程 11 多次维护的程序才是好程序 一次性软件多次使用软件实例 12 开发过程的重要性 软件开发的根本问题在于人们不能对软件过程进行管理 美国国防部 1987SEI的CMM 软件成熟度模型 主要策略是改进软件过程的管理 相信技术的提高是一个自然的结果 软件做的一个整体所获得的改进将导致高质量软件的产生ISO9000的原则 与该标准保持一致并不保证生产出高质量的产品 但可以减少生产出质量低劣的产品的可能 13 两个纽约警察的故事 计划性沙漠中的指南针计划的调整累积数据以制定更为科学的计划 14 新技术就一定好么 软件工程要从长期效应 或整个生命周期 来考虑 不是当一种可提高某个阶段效率新方法出现就采用 要充分考虑到培训 学习过程 维护等问题 15 个人英雄时代已过去了 求伯君的故事 目标就是后来的 为了实现这个目标 在这样的一年零四个月中 求伯君生了三次病 第一次肝炎 第二次肝炎复发 第三次又复发 每次住院一个月到二个月 第二次肝炎复发正是软件开发的最紧要的关头 求伯君把电脑搬到病房里继续写 开发之苦不是病魔缠身 不是身心憔悴 而是孤独 有了难题 不知道问谁 解决了难题 也没人分享喜悦 求伯君就在这孤独之中 写下了十几万行 程序 16 大型软件所需要的人力 Windows95有1000万行代码Windows2000有5000万行代码 Exchange2000和Windows2000开发人员结构 17 什么是软件 软件 Software 是计算机系统中与硬件相互依存的另一部分 它是包括程序 数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列 数据结构 算法 数据是使程序能正常操纵信息的数据结构文档是与程序开发 维护和使用有关的图文材料 18 大中型软件与小型软件区别 大中型软件 多人开发的多版本的软件所需人力 人或少数人与团队 产品使用情况小型软件 一次性 修改不如重新编写大中型软件 原有投资大 为保护投资 一改再改复杂程度 问题复杂与软件结构复杂新问题 问题定义 需求描述 系统划分 各部分接口 维护 交流 可读性 19 什么是好的软件 正确性高效性能有效地利用计算机的时间和空间资源可靠性具有能够防止因概念 设计和结构等方面的不完善而造成的系统失效 具有挽回因操作不当造成软件系统失效的能力易用性 20 什么是好的软件 续 可理解性系统具有清晰的结构 能直接反映软件需求可维护性便于对软件增加新功能 改进性能 修改错误 移植可重用性软件易于被再次使用 21 什么是工程 Webster大辞典 工程 是科学和数学的某种应用 通过这一应用 使自然界的物质和能源的特性能够通过各种结构 机器 产品 系统和过程 成为对人类有用的东西 22 什么是工程 续 RalphJohnson 设计模式 作者之一 Softwaredevelopmentisengineering Engineeringisacreativeactivitybasedonartificeandcraftsmanshipasmuchasitisonmathandscience AstheEngineeringFAQputsit engineeringisthebridgebetweenartandscience Realengineersappreciatebeautyandcraftsmanship aswellaspowerfulmathematicalmodels 23 建筑工程与软件工程 建筑工程计划与可行性用户调查建筑设计修建验收维修与改建 软件工程计划需求分析设计编码测试维护 24 传统工程与软件工程的不同点 对于系统崩溃的态度 或造成的结果 的不同 建筑的可工程化与软件的不可工程化 复杂度 对维护的态度 对新技术的采用 软件工程要从长期效应 或整个生命周期 来考虑 不是当一种可提高某个阶段效率新方法出现就采用 要充分考虑到培训 学习过程 维护等问题 25 什么算好的软件开发 时间控制预算控制质量控制结构清晰文档齐全 可理解性与可维护性主要依靠管理而不是某个人的能力 26 软件开发的三要素 软件工程釆用层次化的方法 每个层次都包括过程 方法 工具三要素 27 软件开发的三要素 续 软件工程的过程过程贯穿软件开发的各个环节 各环节之间建立里程碑 管理者在软件工程过程中对软件开发的质量 进度 成本进行评估 管理和控制 技术人员采用相应的方法和工具生成软件工程产品 模型 文档 数据 报告 表格等 28 软件开发的三要素 续 软件工程的方法软件工程方法是完成软件工程项目的技术手段 它支持项目计划和估算 系统和软件需求分析 设计 编程 测试和维护 软件工程方法依赖一组原则 它贯穿软件工程的各个环节 软件工程方法分两类 传统方法和面向对象方法 29 软件开发的三要素 续 软件工程工具它为软件工程的过程和方法提供自动化或半自动化的工具支持 将若干工具集成起来 与软件工程数据库和计算机系统构成一个支持软件开发的系统称 计算机辅助软件工程 CASE 系统中某一工具的信息加工结果可以作为另一工具的输入 集成的软件工程工具再加上人的因素构成了软件工程环境 30 软件工程原则 在软件开发过程中 为了达到软件开发目标 必须遵循下列原则 抽象模块化信息隐藏局部化一致性完全性可验证性 31 软件工程原则 续 抽象关注事物基本 重要的部分 忽略不相关成分抽象可以使我们的思维聚焦于问题本质 从而简化问题 控制问题复杂度 支持复杂 庞大软件系统的开发 32 软件工程原则 续 模块化模块是程序中一个逻辑上相对独立 具有良好的接口定义的编程单位 过程 函数 类 程序包等模块化是 将复杂的系统分解为一个个相对独立的模块来加以实现 有助于抽象和信息隐藏以及表示复杂的系统 33 软件工程原则 续 信息隐藏模块中的软件设计决策信息封装起来的技术 只知道它的功能以及对外的接口 而不知它的内部细节 有助于软件开发人员的注意力集中于更高的抽象层次 34 软件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年达州b2考货运资格证要多久
- 2025年六安经营性道路客货运输驾驶员从业资格考试
- 2025年黄冈道路货运驾驶员从业资格证考试题库完整
- 劳动教育在综合育人中的功能发挥
- 化工企业产品品质管理规范
- 父母给十岁孩子的成长寄语与书信撰写指南
- 急性心肌梗死指南
- 【国际清算银行】气候明斯基时刻和内生金融危机-2025.3
- 美容创新创业策划方案
- 硬脊膜动静脉护理
- 外研版五年级英语下册期中测试卷及答案【完整】
- 中药饮片处方点评表-副本(文档良心出品)
- JJF1030-2023温度校准用恒温槽技术性能测试规范
- YYT 1849-2022 重组胶原蛋白
- 米什金货币金融学英文版习题答案chapter1英文习题
- 红色资本家荣毅仁课件
- 酒店贷款报告
- 会计职业道德对职业发展的影响研究
- 体育赛事推广方案
- 子宫肌瘤健康教育指导
- 手术室专案改善活动护理课件
评论
0/150
提交评论