1、软件工程的定义

软件工程是将系统化、规范化、可度量的方法应用于软件的开发、运营和维护上,也就是将工程方法应用于软件上,并对这些方法的研究。

2、软件危机(software crisis)

软件危机(software crisis)是由于计算机能力的快速增长和无法解决的问题的复杂性。随着软件复杂性的增加,很多软件问题由于现有方法的不足够而产生。

软件危机的原因与硬件的整体复杂度和软件的发展过程有关,主要原因是计算机的计算能力超过了程序员有效利用这些计算能力的能力。软件危机主要表现在以下方面:

  • 项目运行超过预算、时间
  • 软件非常低效、低质量
  • 软件通常无法满足需求
  • 项目难以管理,代码难以维护
  • 软件从未交付

3、COCOMO模型

COCOMO模型(构造性成本模型)是一种精确的、易于使用的、基于模型的成本估算方法,本质上是一种参数化的项目估算方法,模型的参数是使用历史项目的数据拟合回归公式所产生的。

COCOMO模型可以分成以下三个层次:

  1. 基本COCOMO模型:将所计算的程序大小作为软件开发的工作量和成本,程序大小用估量的源代码行数来表示(SLOC, KLOC)该模型可用于软件成本的快速估计,但是它没有考虑到硬件约束、人员质量和经验、模型工具和技术的使用等方面。
  2. 中级COCOMO模型:将所计算的程序大小和“成本驱动因素”作为软件开发的工作量,其中“成本驱动因素”包括产品、硬件、人员和项目属性的客观评价。
  3. 具体COCOMO模型:合并中级模型的所有特点,并对软件工程过程的每个步骤(分析、设计等)的成本驱动因素的影响进行评估。在该模型中,整个软件被分成不同的模块,再将COCOMO模型应用于各个模块中去估量它的工作量,最后将所有的工作量相加作为整个软件的工作量。

4、软件生命周期

软件生命周期是将软件开发工作分成不同的阶段以提高设计、产品管理和项目管理的过程。大多数现代开发过程可模糊地描述成敏捷模型,其他的模型包括瀑布模型、原型模型、迭代和增量模型、螺旋模型、快速应用开发模型等。

生命周期可分成以下几个阶段:

  1. 问题的定义和规划:主要确定软件的开发目标和可行性分析;
  2. 需求分析:弄清用户对软件的全部需求,对软件所要实现的功能进行详细分析,并编写需求文档;
  3. 开发:包括软件的设计、实现和测试;
  4. 维护:包括改进性维护、适应性维护、完善性维护和预防性维护。

5、按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或知识领域

  1. 软件需求(software requirements)
  2. 软件设计(software design)
  3. 软件构建(software construction)
  4. 软件工程的模型和方法(software engineering models and methods)

6、CMMI 的五个级别

  1. 初始级:

    软件过程是无序的,混乱的,没有定义的。成功取决于个人努力,管理是反应式的。
  2. 可管理级:

    有基本的项目管理过程来跟踪费用、进度和功能特性,且制定了必要的过程纪律,能够重复早先类似应用项目取得的成功经验。
  3. 已定义级:

    已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  4. 量化管理级:

    分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
  5. 优化管理级:

    过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

7、CMMI

CMMI是软件能力成熟度集成模型,通过建立有效的软件工程过程的基础结构,提供一个单一的有效的、集成化的、自动的、可扩展的框架,能够帮助企业改进对软件工程的管理,让企业能更高效地生产质量更好的软件。

CMMI提供了单一的集成化框架用于改进一个组织的各种过程,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,更为自动化、可扩展化,因而能够从总体上改进组织的质量和效率。

CMMI对于企业的价值表现为:保证软件开发的质量和进度;有利于成本控制;有助于提高软件开发者的职业素养;能够解决人员流动带来的问题;有利于提升公司和员工绩效管理水平,以持续改进效益。

8、PSP2.1 的阶段及技能要求

工作任务 技能要求
计划 熟悉开发流程,有规划能力
估计这个任务需要多少时间 对整个项目以及各个阶段有大致的时间观
开发 分析设计能力,编程能力
需求分析(包括学习新技术) 详细分析用户的需求并结合项目实际,确定最终需求的功能点
生成设计文档(设计软件的框架) 设计能力,表达能力,撰写能力
设计复审 (和同事审核设计文档) 协商能力
代码规范 (为目前的开发制定合适的规范) 掌握通用的代码规范体制
具体设计 设计能力
具体编码 编程能力
代码复审 细心,审查debug能力
测试(自我测试,修改代码,提交修改) 测试能力
报告 撰写表达能力
测试报告 撰写表达能力
计算工作量 计算能力
事后总结, 并提出过程改进计划 熟悉整个过程,创新意识,多思考多学习

系统分析与设计 homework-1的更多相关文章

  1. FPGA最小系统分析与电路设计

    <FPGA最小系统分析与电路设计> 部分节选自<FPGA应用开发入门与典型.pdf > FPGA最小系统包括:FPGA芯片.下载电路.外部时钟.复位电路和电源. 如果使用NIO ...

  2. 系统分析与设计个人作业:WordCount

    本次作业gitee地址:https://gitee.com/ackary/WordCount 一.项目简介 1.基础功能 基础功能部分主要实现的功能是统计一个程序设计语言源文件的字符数.单词数.行数, ...

  3. 文献综述十六:基于UML的中小型超市管理系统分析与设计

    一.基本信息 标题:基于UML的中小型超市管理系统分析与设计 时间:2016 出版源:Journal of Xiangnan University 文件分类:uml技术系统的研究 二.研究背景 开发一 ...

  4. 系统分析与设计lesson6

    | 分类 作业  | 1.用例建模 a. 阅读 Asg_RH 文档,绘制用例图. 按 Task1 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸 b. 选择你熟悉的定旅馆在线服务系统 ...

  5. 奖学金评分系统(系统分析与设计版与Delphi实现代码)

    一.系统规划 1.1 项目背景介绍 在奖学金评比过程中,学生综合测评是学校普遍采用的评比手段.对学生实施综合素质测评的目的在于正确评价学生的综合素质,为评奖学金提供依据,实现学生教育管理工作的标准化. ...

  6. WordCount系统分析与设计作业

    Gitee项目地址 https://gitee.com/gitdq/homework psp表 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 10 10 · ...

  7. 系统分析与设计 homework2

    1. 简述瀑布模型.增量模型.螺旋模型(含原型方法)的优缺点. 瀑布模型 优点: 降低了软件开发的复杂度,提高软件开发过程中的透明性,提高软件开发的可管理性. 为项目提供了按阶段划分的检查点. 当前一 ...

  8. 系统分析与设计结对项目——WordCount

    结对项目完成WordCount 合作者:201631062507  201631062526(学号) 代码地址:https://gitee.com/WordCountMC/WordCountTeam ...

  9. 系统分析与设计HW2

    简答题 1. 简述瀑布模型.增量模型.螺旋模型(含原型方法)的优缺点. 瀑布模型 优点: 定义了软件开发基本流程与活动. 为项目提供了按阶段划分的检查点. 当前一阶段完成后,只需关注后续阶段. 缺点: ...

随机推荐

  1. 腾讯云服务器部署 django项目整个流程

    CentOS7下部署Django项目详细操作步骤 前记:购买腾讯云服务器,配置自选,当然新用户免费体验半个月,我选择的系统是centos7系统版本, 接下来我们来看整个配置项目流程. 部署是基于:ce ...

  2. sprintf与strcat

    sprintf可以将整数转化为字符串,也可以连接两个字符串.但是用sprintf在连接两个字符串时,容易出现错误. 因此连接两个字符串时候用strcat, 将整数转化为字符串时候用sprintf. 转 ...

  3. Writing analyzers

    Writing analyzers There are times when you would like to analyze text in a bespoke fashion, either b ...

  4. 【javascript】—— JS判断浏览器类型、操作系统

    navigator.userAgent : userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值. navigator.platform : platform ...

  5. mxonline实战12, 课程评论,相关课程推荐,课程视频页

    对应github地址:第12天   一. 课程评论   1. 创建URL, VIEW courses/views.py -> Course

  6. linux中文件句柄数问题

        问题描述:  有时候业务比较繁忙时,就会出现如下问题 too many open files:顾名思义即打开过多文件数.不过这里的files不单是文件的意思,也包括打开的通讯链接(比如sock ...

  7. JavaScript基础总纲

    如果前人种好了树那我们干嘛不去享受阴凉,然后花费时间去为大树的成长进一份力. 我发现一个站点写的很全面写很系统,我总结主要分为一些几个模块: 一,JavaScript 教程(基础) 二,JavaScr ...

  8. sql注入实例详解(二)

    前言 这篇文章就是一个最基本的SQl手工注入的过程了.基本上在sqlilabs上面的实验,如果知道了其中的全部知识点,都可以通过以下的步骤进行脱裤.下面的这个步骤也是其他的脱裤手段的基础.如果想要精通 ...

  9. 图的基础---关键路径理解和实现(Java)

    引言 之前所说的拓扑排序是为了解决一个工程能否顺利进行的问题.但在生活中,我们还会经常遇到如何解决工程完成需要的最短时间问题.     举个例子,我们需要制作一台汽车,我们需要先造各种各样的零件,然后 ...

  10. linux之getenv putenv setenv和unsetenv详解

    1.getenv函数 头文件:#include<stdlib.h> 函数原型: char * getenv(const char* name); 函数说明:getenv()用来取得参数na ...