软件基础,软件过程和需求

1 软件的概念

  含义

    软件 = code + data + documents

    也就是软件的代码, 软件相关的输入输出等数据, 和一切相关的文档

  特点

    抽象的, 无形的, 逻辑实体

    不会被磨损

    可以移植

    软件是复杂的, 难设计难实现难维护

    软件是昂贵的

2 软件危机和软件工程

  软件危机

    进度成本估算不准确

    用户通常对完成的产品不满意

    软件的质量通常是不可靠的

    软件的可维护性差

    没有可用文档

    在计算机的比例越来雨大, 但是跟不上计算机的发展

  软件工程

    软件的实现是一个团队完成的, 这是一个工程项目

3 软件工程职业道德

  软件工程师应该具体8条基本原则

    公众感

    保证客户雇主最大的利益

    保证产品达到较高的水准

    公正和独立的判断力

    管理

    职业感

    同事

    自己, 一生学习专业知识

4 软件过程

  客户(client)

  开发者(developer)

  用户(user)

  具体的工作流:

    需求工作流, 确定用户需求, 技术可行性经济可行性 --> 需求文档

    分析工作流, 更加详细的设定, 使得从面向客户的自然语言到面向开发人员转变 --> 规格说明文档(产品将要做什么)

    设计工作流, 设计文档(如何实现产品)

      1) 架构设计: 将目标产品分解为模块, 明确模块之间的接口

      2) 详细设计: 界面设计+数据库设计+模型设计+数据结构和算法设计

    实现与集成工作流, 相关程序的源代码和适量的注释 + 附加文档(测试用例)

    测试工作流, 每个工作流都要测试

      1) 基于执行测试

      2) 基于非执行测试

    修复和维护

      纠错性维护, 完善性维护, 适应性维护

    退役

5 软件测试

  测试贯穿于整个过程

  测试应该有开发人员+软件质量保证人员共同完成SQA

  基于非执行测试

    测试软件而不运行测试用例

    对象: 代码+文档

    方式: 读代码+评审

  基于执行测试

    测试软件行为的测试

    正确性+实用性+可靠性+健壮性+性能

  当一个软件产品被放弃时, 测试工作才可以停止

6 需求

  一般的, 需求是软件的根和源

  需求是确定用户需要什么(needs)

  可以分为三个层次

    被动的: 客户引导开发者

    主动的: 开发者引导客户

    引领性: 提前预知可能出现的需求并实现

7 获取需求

  软件需求实实在在的

  基本步骤

    准备工作

      确定本次调研要获取或者收集什么

      采用哪些方法和手段

      什么时间地点和参与的人员

    需求的抽取,记录与分析

      形成调研记录文档

    完成需求文档

      功能性需求

      非功能性需求(可靠性, 可维护性, 运行环境要求)

    需求确认

8 快速原型

  快速原型能够快速获取需求

  并不是具体实现了系统, 而是在较短的时间内完成了一个模型, 使客户在系统开发完成之前能够提前见到系统, 从而启发客户端系统软件更加深刻的思考

人若有恒 无所不成
原文地址:https://www.cnblogs.com/weihuchao/p/6799646.html