系统分析与设计Lesson1

系统分析与设计lesson1

1、简单题

  • 软件工程的定义
    (1)将系统化、规范化、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。
    (2)对(1)中所述方法的研究。——IEEE[IEE93]
  • 阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
    software crisis:软件危机。由于计算机技术和应用发展迅速,整个社会对计算机应用的需求越来越大,知识更新周期加快,软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究;但软件的生成却还沿用“手工作坊”的生产方式,人工编程生产,生产效率不够高,生产能力极其低下,从而在计算机软件的开发和维护过程中会遇到一系列严重问题,这些问题统称软件危机。
    COCOMO模型:结构性成本模型。模型按其详细程度可以分为三级:基本COCOMO模型,中间COCOMO模型,详细COCOMO模型。其中基本COCOMO模型是是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。中级COCOMO模型在基本COCOMO模型的基础上,再用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但更进一步考虑了软件工程中每一步骤(如分析、设计)的影响。软件工程的定义其实核心就是要规范化软件开发过程中的每一个环节,COCOMO也是重要的一种方法来衡量软件开发的成本,它们的存在是为了应对软件危机的出现,也是历史发展的必然性。
  • 软件生命周期。
    Systems Development Life Cycle,SDLC) 又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
  • 按照 SWEBOK 的 KA 划分,本课程关注哪些 KA 或 知识领域?
    SWEBOK的Version 3将KA划分为:软件需求、软件设计、软件构建、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量、软件工程专业实践、软件工程经济学、计算基础、数学基础、工程基金会。
    本课程关注:软件工程管理、软件工程过程、软件工程模型和方法、软件质量。
  • 解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
    Level 1 – Initial 过程不可测,极少的控制和反馈
    Level 2 – Managed 过程定格,能反馈
    Level 3 – Defined 过程标准化,积极主动的
    Level 4 – Quantitatively Managed 过程可度量且可控
    Level 5 – Optimizing 过程不断改进优化
  • 用自己语言简述 SWEBok 或 CMMI (约200字)
    CMMI-Capability Maturity Model Integration,能力成熟度模型集成。
    CMMI是美国产业界、政府和卡内基梅隆大学软件工程研究所(CMU/SEI)于2002年1月推出的集成了软件工程(SW)、系统工程(SE)、集成化产品和过程开发(IPPD)等学科的综合成熟度模型;
    CMMI的表现形式有2种
    阶段式 ,成熟度级别:应用于跨多个过程域的组织过程改进的成果。五个成熟度级别1-5。
    连续式 ,能力级别:应用于单个过程域中的组织过程改进的成果。四个能力级别0-3。
    CMMI的5个组织成熟等级为(1)初始级、(2)已管理级、(3)已定义级、(4)量化管理级、(5)优化级
    CMMI的过程域定义了每个成熟度等级应该达到的水平,没达到定义水平,则不通过该级别。
    CMMI可以保证软件开发的质量与进度,有利于成本控制,有助于提高软件开发者的职业素养,能够就解决人员流动所带来的问题,并且有利于提升公司和员工绩效管理水平。

2、解释PSP各项指标及技能要求

  • 阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
    各项指标:
    1. 项目大小,一般用代码行数来表示,也可以用功能点;在实际产品中写了多少代码,不包括空行/注释/单字符行 。
    2. 花费时间,可以用小时, 天,月,年来表示 ,一组人所花费的时间可以用 (人数*时间) 来表示,例如某项目花费了10个人·月。
    3. 质量如何,交付的代码中缺陷的比例 。
    4. 是否按时交付,以标准方差来看,稳定的交付时间更为重要 ,能保证团队的协同性。
  • 按表格PSP 2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)

    待做事项

    • 计划
      · 估计这个任务需要多少时间
    • 开发
      · 分析需求
      · 生成设计文档
      · 设计复审 (和同事审核设计文档)
      · 代码规范 (为目前的开发制定合适的规范)
      · 具体设计
      · 具体编码
      · 代码复审
      · 测试(包括自我测试,修改代码,提交修改)
    • 记录时间花费
    • 测试报告
    • 计算工作量
    • 事后总结
    • 提出过程改进计划

    所需技能

    1. 规划能力,对任务/项目进行统筹管理,合理安排过程时间;
    2. 理解能力,要能理解需求,分析需求;
    3. 书面表达能力,能撰写各种各样的文档;
    4. 编码测试能力,要对底层的数据结构算法等具有设计,具备编码能力进行开发,能构思出高质量的输入来进行测试。
    5. 总结能力,对时间花费、工作量进行计算,事后进行总结,反思并提出改进方案;
    6. 执行力,严格按照计划来行事。

    统计方式

    1. 将项目明确划分阶段,确定每个阶段的工作任务和结束指标;
    2. 每次完成阶段的工作任务后,对自己花费的时间计时记录下来,利用代码统计工具对完成的代码进行统计;
    3. 项目完成后,统计之前的记录的结果进行分析。

你可能感兴趣的:(系统分析与设计,软件工程)