软需
210911
- 推荐阅读 人月神话
- 软件开发是焦油坑,能力越大,责任越大,风险越大,同理困难越大,说明你能力越大
- 现在是最好的时代,技术在发展,也是最不好的时代,焦油坑仍然存在,且越来越严重
- 我们遇到的所有的问题,只能解决自身的问题,不能解决别人的问题,我们要想自身怎么改善从而让事情得到改善,需求分析就是解决自己的问题,让自己开心一点
- 成功的项目和项目的成功不是一个含义
- 项目三要素:时间、成本、质量,三角形,面积是项目的范围,面积不变,若要一种要素变高,其他要素也要变
- 成功的项目是项目可以使用
- 项目的成功是在规定的时间内,在规定的成本要求下,达到或超过项目利益干系人(用户)的要求
- 应用软件开发的战略性技术,项目成功的必要条件
- 需求工程:这门课介绍的内容
- 项目管理
- 软件架构
- 软件工程就是通过工程化的方法去做软件,工程化是总结出来的,用什么样的工具,什么样的方法,什么样的过程,什么样的组织去做软件,去干活
- 大学:分析问题解决问题的方法,学习的方法,沟通的方法,自我调节的能力
- 软件需求分析与设计要研究用什么样的
方法
去分析,用什么样的技术
去设计,需求分析和设计要做到什么程度
- 不做会有什么问题
- 做要做到什么程度
- 软件开发的主流方法主要有两个:
- 面向对象的方法
- 核心是按照对象或概念来进行分解
- 软件行业有几个通用核心能力:抽象能力,分解能力,逻辑思维能力
- 结构化的方法
- 按照功能和过程分解
- 面向对象的方法
- 这门课用面向对象方法讲解
- 代码是可增加不可修改的,代码不是编坏的是改坏的
- 用面向对象语言编写但没有面向对象思维,仍然是结构化代码
- 面向对象的好处:可修改、可复用、灵活性
- 实例:赤壁之战
- 实例:五子棋
- 结构化:开始游戏、黑子先行、绘制画面、判断输赢、轮到白子、绘制画面…
- 面向对象:棋子、棋盘、输赢系统
- 如果要改成围棋、象棋,要改的就是输赢逻辑或棋子棋盘的样式
210912
- 利益干系人,希望项目成功/失败的人,政府
- 摘录process model,在课件中,是一个通用模型
- A process model:
- states an order for carrying out activities;
- specifies what development artifacts are to be delivered and when;
- assigns activities and artifacts to developers;
- offers criteria for monitoring a project’s progress, for measuring the outcomes, and for planning future projects
- ISO9000核心
- if the processis right then the process outcome (product or service) will also be right
- uml入门
- SWOT方法
- 把需求分析做好两个基本能力:
- 业务/领域知识,在一个领域浸润
- 沟通能力
- 什么是需求:谁(主体)需要什么样的(形式)东西(内容)。
- 主体就是用软件的最终用户,谁提出来的不一定就是谁用,明确最终用户才能谈友好性和易用性
- 需求是产品必须完成的事(功能性需求)以及必须具备的品质(非功能性需求,即约束,一般是对性能、安全性、扩展性、灵活性等的要求)
- 定性的非功能性需求都要转化成定量的,如很快–>3s内
- 可利用场景法,即用具体的场景来衡量,在什么样的场景下达到什么样的要求
- 非功能性需求更重要!如何将定性的内容定量化是需求分析的关键!!!
- 需求的层次
- 业务需求(目标需求)
- 反映了组织机构或客户对系统、产品高层次的目标要求
- 用户需求
- 描述了用户使用产品必须要完成的任务
- 功能需求(非功能性需求)
- 定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求
- 设计需求
- 指实现的具体细节
- 业务需求(目标需求)
- 需求分析就是从业务需求、用户需求分析得到功能需求、设计需求的过程