计算与软件工程I2软件工程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.职业感--软件工程人员应当弘扬职业正义感和荣誉感,尊重社会公众利益。
7.同事--软件工程人员应当公平地对待和协助每一位同事。
8.自己--软件工程人员应毕生学习专业知识,倡导合乎职业道德的职业的活动 方式。
审核来估计项目的进展情况
• 迭代式开发也被称作迭代增量式开发或 迭代进化式开发。
• 在迭代式开发方法中,整个开发工作被 组织为一系列的短小的项目,被称为一 系列的迭代。
• 每个迭代包含了需求、设计、实施(编 码)、部署、测试等各种类型的开发活 动,迭代完成之后需要对迭代完成的结 果进行评估,并以此为依据来制定下一 次迭代的目标。
• 为了检查时间估计和计划的准确性,必 须把它们写成文档并在今后与实际情况 比较。
• 为了制定出更准确的计划,需要知道以 前的计划中存在哪些错误,哪些地方可 以进行改进。
了解时间的使用情况
• 将主要活动分类。 • 记录每项主要活动所花费的时间。 • 用标准的方法记录时间。
跟踪时间
• 以分钟为单位 • 制定计划,按照计划去做。
2.客户和雇主--软件工程人员应当在与公众利益保持一致的前提下,满足客户 和雇主的最大利益。
3.产品--软件工程人员应当保证他们的产品与其相关附件达到尽可能高的行业 标准。
4.判断力--软件工程人员应该具有公正独立的职业判断力。
5.管理--软件工程管理者和领导者应当拥护并倡导合乎道德的有关软件开发和 维护的管理方法。
• 问题定义 • 需求分析 • 软件设计 • 程序编码 • 软件测试 • 运行维护
软件开发过程
• 软件开发过程是指一个软件产品开 发的方法,描述了软件开发中的任 务和行为。常见的软件开发过程模 型包括瀑布、螺旋、迭代、敏捷软 件开发等。
• 编码-修补(code-and-fix)
– 简单地将代码拼凑在一起,为满足客 户的要求,多次改写该软件。
• 计算机及其相关技术正逐渐成为推 动政府、教育、工业、商业、医疗、 娱乐和整个社会发展的核心技术, 软件工程师正是通过亲身参加或者 教授软件系统的分析、说明、设计、 开发、授证、维护和测试等实践工 作,为社会做出了巨大贡献。
• 也因为他们在开发软件系统中所起的重 要作用,软件工程师有很大机会去为社 会做好事或者给社会带来危害,有能力 让他人以及影响他人为社会做好事或者 给社会带来危害。为了尽可能确保他们 的努力应用于好的方面,软件工程师必 须做出自己的承诺,使软件工程师成为 有益的和受人尊敬的职业,为了符合这 一承诺,软件工程师应当遵循下列职业 道德规范和实践要求。
迭代开发特点
• 允许变更需求 • 逐步集成元素 • 尽早降低风险 • 有助于提高团队的士气 • 生成更高质量的产品 • 保证项目开发进度 • 容许产品进行战术改变 • 迭代流程自身可在进行过程中得到
改进和精炼
个人软件过程基础
• 个人软件过程(Personal Software Process, PSP)是为帮助软件工程师完成出色的工作 而设计的。
软件工程定义(2)
• Fritz Bauer: 在NATO会议上给出的定义:建立并使用完善的 工程化原则,以较经济的手段获得能在实际机 器上有效运行的可靠软件的一系列方法。
• 计算机科学技术百科全书: 软件工程是应用计算机科学、数学及管理科学 等原理,开发软件的工程。软件工程借鉴传统 工程的原则、方法,以提高质量、降低成本。 其中,计算机科学、数学用于构建模型与算法, 工程科学用于制定规范、设计范型(paradigm)、 评估成本及确定权衡,管理科学用于计划、资 源、质量、成本等管理。
– 修改代码成本过高。
瀑布模型
• 瀑布模型核心思想是按工序将问题 化简,将软件生命周期划分为制定 计划、需求分析、软件设计、程序 编写、软件测试和运行维护等六个 基本活动。
• 优点:
– 1)为项目提供了按阶段划分的检查点。 – 2)当前一阶段完成后,只需要去关注
后续阶段。
• 瀑布Baidu Nhomakorabea型有以下缺点:
软件工程定义(3)
• 目前比较认可的一种定义认为:软 件工程是研究和应用如何以系统性 的、规范化的、可定量的过程化方 法去开发和维护软件,以及如何把 经过时间考验而证明正确的管理技 术和当前能够得到的最好的技术方 法结合起来。
软件工程与计算机科学的区别
目标 产品 进度与时 间表 关注点 变化程度
– 1)在项目各个阶段之间极少有反馈。 – 2)只有在项目生命周期的后期才能看
到结果。
– 3)通过过多的强制完成日期和里程碑 来跟踪各个项目阶段。
迭代式软件开发
• 需求或设计中的错误往往只有到了 项目后期才能够被发现
• 对于项目风险的控制能力较弱 • 软件项目常常延期完成或开发费用
超出预算 • 项目管理人员专注于文档的完成和
软件工程
计算机科学
在时间、资源、人 员这3个主要限制条件 下构建满足用户需求的 软件系统。
软件(比如办公包 和编译器)。
探索正确的计算和建模方法, 从而改进计算方法本身。
算法(比如希尔排序法)和抽 象的问题(比如哲学家进餐问题)。
软件项目都有特定
研究项目一般不具有设置的进
的进度与时间表
度与时间表
软件工程关注如何 为用户实现
价值。
软件理论关注的是软件本身运
行的原理,比如时间复杂度,空间 复杂度,和算法的正确性。
随着技术和用户需
对于某一种特定问题的正确解
求的不断变化,软件开 决方法将永远不会改变。
发人员必须时刻调整自
己的开发以适应当前的
需求。同时软件工程本
身也处于不断的发展中。
软件开发生命周期
• 软件开发生命周期(SDLC,Systems Development Life Cycle, SDLC)是软 件的产生直到报废的生命周期,周 期内有问题定义、可行性分析、总 体描述、系统设计、编码、调试和 测试、验收与运行、维护升级到废 弃等阶段。
• 软件规模是指软件项目可量化的结 果。
– 代码行的统计要遵循一定的标准,一 般而言,统计代码行时不计空格和注 释。
• 为了估计编程的时间,首先必须估 计程序可能会有多少代码行,然后 估计编写每行代码需要多少分钟。 这样就可以计算出总共需要的时间。
• 所有的规模度量方法都涉及大量的 判断。
软件工程职业与道德
• 它告诉工程师如何把这些先进的工程方 法应用到日常的任务中去。
• 它提供详细的估计和计划的方法。 • 告诉他们如何按照计划去跟踪任务的执
行情况,向他们详细解释如何利用已定 义的过程来指导他们的工作。
时间管理
• 人们很可能像上星期那样安排这星期的 时间。
• 为了制定切实可行的计划,必须对所用 的时间进行跟踪。
2软件工程
软件工程定义(1)
• Barry Boehm: 运用现代科学技术知识来设计并构造计 算机程序及为开发、运行和维护这些程 序所必需的相关文件资料。
• IEEE: 在软件工程术语汇编中的定义:软件工 程是: 1.将系统化的、严格约束的、可量化的方 法应用于软件的开发、运行和维护,即 将工程化应用于软件; 2.在1中所述方法的研究
软件工程职业道德和职业行为准则 (ACM/IEEE-CS联合制定以规范软件工程行业的职业道德和职业行为) 软件工程人员应该做出承诺,使软件的分析、描述、设计、开发、测试和维护 等工作对社会有益且受人尊重。基于对公众健康、安全和福利的考虑,软件工程 人员应当遵守以下八条原则:
1.公众感--软件工程人员应始终与公众利益保持一致。
如何处理中断?
• 由于中断的时间不是有效的工作时 间,所以必须记录中断所占用的时 间。
• 时间日志中的数据也能帮助你了解 工作被打断的频度。中断不仅浪费 时间,还会打断你的思路,导致效 率降低和错误的产生。
软件规模
• 需要多长时间能完成这个任务?
– 通常的做法是先估算项目规模,再根 据规模估算时间。
相关文档
最新文档