系统分析与设计 || HomeWork1

HomeWork1

A. 软件工程的定义
  • 引文:

Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” ——IEEE Standard 610.12

  • 也就是说软件工程是将系统化的,严格约束化的,量化的工程方法应用于软件的开发,运行,维护过程,即用工程化的方法来打造软件。

B. 解释导致SOFTWARE CRISIS本质原因、表现,述说克服软件危机的方法
本质原因:
  1. 软件是计算机的逻辑部件而不是物理部件。软件问题是在开发时期引入的而在测试阶段没能测出来的故 障,修改软件故障要修改软件原来的设计。
  2. 软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。为了在预定时间内开发出规模庞大的软件,必须由许多人分工合作,软件开发工作量随软件规模增大非线性增长。
  3. 与早期软件开发个体化特点有关:认为软件开发就是写程序并设法使之运行,轻视需求分析和软件维护。也就是说是和软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期阶段软件开发的个体化特点。
  4. 缺乏正确的理论指导。缺乏有力的方法学和工具方面的支持。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件开发产品的个性化,也是发生软件开发危机的一个重要原因。
软件危机的表现:
  1. 对软件开发成本和进度的估计常常很不准确。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
  2. 用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。
  3. 软件质量保证技术(审查、复审和测试) 没有坚持不懈地应用到软件开发全过程中。
  4. 软件常常是不可维护的。由于开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其是。很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,难适应用户要求增加的新的功能需求,软件的复用性不高。
  5. 软件通常没有适当的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件通常没有适当的文档资料,文档资料的作用是:管理和评价软件开发过程的进展情况,开发者与用户和开发者之间通信的工具,维护工具。
  6. 软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程fe的不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件,规模和数量的不断扩大而持续上升。1985年美国软件成本占计算机系统总成本的比例90%。
  7. 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
克服方法:
  1. 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

  2. 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

  3. 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。


C. 软件生命周期
定义:

软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。

周期的七个阶段:

1、问题的定义及规划

  • 此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

2、需求分析

  • 在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。”,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。

3、软件设计

  • 此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。

4、程序编码

  • 此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。

5、软件测试

  • 在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程主要分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。

6、系统转换

  • 将作业由旧系统转换新系统,也就是说运行系统的方法,转换方法有平行、分批、分发、立即、试验五种转换方法。

7、运行维护

  • 软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
软件生命周期模型:

常见的有瀑布模型、迭代模型、增量模型、原型模型、螺旋模型。


D. SWEBoK 的 15 个知识域
  1. 软件需求
    • 关注软件需求的启发,协商,分析,规范和验证。软件需求表达了对软件产品的需求(needs)和限制,有助于解决一些现实问题。
  2. 软件设计
    • 定义系统或组件的体系结构,组件,接口和其他特征的过程以及该过程的结果。
  3. 软件构建
    • 指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。
  4. 软件测试
    • 测试是一项旨在通过识别缺陷来评估产品质量并改进产品质量的活动。
  5. 软件维护
    • 软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。这些类别称为完善,自适应和纠正性软件维护。
  6. 软件配置管理
    • 软件配置管理(SCM)是在不同时间点识别系统配置的规训(discipline),用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。
  7. 软件工程管理
    • 软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。
  8. 软件工程过程
    • 关注软件生命周期过程的定义,实施,评估,测量,管理和改进。
  9. 软件工程模型和方法
    • 解决了涵盖多个生命周期阶段的方法。
  10. 软件质量
    • 是许多SWEBOK V3 KAs中普遍存在的软件生命周期关心问题。
  11. 软件工程专业实践
    • 关注软件工程师要专业、负责、道德地实践软件工程所必须具备的知识,技能和态度。
  12. 软件工程经济学
    • 软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
  13. 计算基础
    • 计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。
  14. 数学基础
    • 数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。涵盖的主题包括集合,关系和功能;基本命题和谓词逻辑;证明技巧;图论和树;离散概率;语法和有限状态机;数论。
  15. 工程基础
    • 工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。涵盖的主题包括经验方法和实验技术;统计分析;测量和指标;工程设计;仿真与建模;根本原因分析。

E. CMMI 的五个级别

Level 1:

  • CMMI一级,完成级。在完成级水平上,企业对项目的目标与要做的努力很清晰,项目的目标得以实现。但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。

Level 2:

  • CMMI二级,管理级。在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。

Level 3:

  • CMMI三级,定义级。在定义级水平上,企业不仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化这样,企业不仅能够在同类的项目上生到成功的实施,在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化,企业的组织财富。

Level 4:

  • CMMI四级,量化管理级。在量化管理级水平上,企业的项目管理不仅形成了一种制度,而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。

Level 5:

  • CMMI五级,优化级。在优化级水平上,企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。

由上述的五个台阶我们可以看出,每一个台阶都是上面一阶台阶的基石。要上高层台阶必须首先踏上较低一层台阶。企业在实施CMMI的时候,路要一步一步地走。一般地讲,应该先从二级入手。在管理上下功夫。争取最终实现CMMI的第五级。


F. 用自己的语言简述 SWEBok 或 CMMI
1. SWEBok
  • SWEBok(软件工程知识体系)是 IEEE Computer Society 提出来的一套构建软件生产的最佳实践与相关知识的框架,用于指导软件工程人才的培养和学科建设。该体系从软件工程的实践和教育两个方面切入,就这两个方面划分了15个知识域(KA)。

    在实践方面,知识体系归纳了 11 种知识域:围绕软件生命周期提出了 5 个知识域:软件需求 KA、软件设计 KA、软件实现 KA、软件测试 KA、软件运行维护 KA;结合工程管理的原则,提出了 6 个 KA:软件配置管理 KA、软件工程管理 KA、软件工程过程 KA、软件工程建模与方法 KA、软件质量 KA、软件工程专业实践 KA。在教育方面,则是提出了软件工程经济学 KA、计算基础 KA、数学基础 KA、工程基础 KA。

2. CMMI
  • CMMI是一种管理流程的标准化。遵循该模型的标准,就能够在管理上迈出一大步。相对于ISO9000的标准, CMMI有五个不同的标准。而每一个标准对企业的管理力度都有着不同的要求。企业可以改进管理模式,不断地提高自己的CMMI等级,从而达到提升管理水平的目的。很多人认为,实施CMMI的意义在于项目工程走向世界。可以在西方国家接到单子。实际上,这只是我国企业实施CMMI的意义的很小一部分。更为重要的意义则是,CMMI的实施能够提高我国企业的管理水平。使我国的企业自管理上能够尽快地引入国际上的先进技术。使我国企业的无序的管理体制变为有序的管理体制,主观的管理变为客观的管理,人治变为体制。CMMI应用将产生的直接效果是提高了工程项目的质量,降低了工程的成本,保证了工程的周期,提高我国企业的在国内与国际市场上的竞争能力。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值