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. Tomcat启动和请求处理解析

    tomcat是我们经常使用的组件,但是内部是如何运行的呢,我们去一探究竟. 1.tomcat架构 tomcat的整体架构图如下: Tomcat中只有一个Server,一个Server可以有多个Serv ...

  2. 有向图的拓扑排序的理解和简单实现(Java)

    如果图中存在环(回路),那么该图不存在拓扑排序,在这里我们讨论的都是无环的有向图. 什么是拓扑排序 一个例子 对于一部电影的制作过程,我们可以看成是一个项目工程.所有的工程都可以分为若干个" ...

  3. Machine learning第四周code 编程作业

    1.lrCostFunction: 和第三周的那个一样的: function [J, grad] = lrCostFunction(theta, X, y, lambda) %LRCOSTFUNCTI ...

  4. Maven 问题笔记汇总

    Web项目通过Maven部署到Tomcat的错误. Maven环境下面多项目之间的引用 Maven 远程仓库下载慢的的解决方案 Intellij IDEA 像eclipse那样给maven添加依赖 I ...

  5. docker 限制 容器内存 使用

    转载 : https://www.cnblogs.com/sparkdev/p/8032330.html 默认情况下容器使用的资源是不受限制的.也就是可以使用主机内核调度器所允许的最大资源.但是在容器 ...

  6. LARTC

    大牛的博客 howto ,however, is simplify. another space ip link list ip address show ip route show route -n ...

  7. (java/javascript) list 交集 并集 差集 去重复并集

    java list 交集 并集 差集 去重复并集 package com; import java.util.ArrayList; import java.util.Iterator; import ...

  8. python-组播

    #!/usr/bin/python #coding=utf-8 #发送端 import sys,struct,socket from time import sleep message="h ...

  9. js中一次性注册多个事件

    在js中,如果想一次性给一个控件或者标签初测多个事件的方法: 假如有个<input>标签: <input id=”inputValue” value=”www.baidu.com”/ ...

  10. git 学习之分支

    在一开始学习 git 的时候我们经常提到一个东西---- master.那么 master 到底是什么呢?其实它就是一个分支,一般这个分支就是主分支.而在一般 git 中都有一个指向当前你工作的分支 ...