软件生命周期中软件定义时期包含:问题定义、可行性研究、需求分析。这三个阶段的区别。 软件定义时期三阶段个人深度理解版核心逻辑线 用户说痛点 → 我们定方向 → 团队自检算账 → 拍板开工 → 深挖用户要的功能 → 交给后续设计。1. 问题定义与用户对“标准答案”· 我在干什么听用户甲方描述他的烦恼或诉求然后我用自己的专业语言帮他翻译成一句话“你要的到底是一个什么类型的软件”比如是网站、手机APP还是后台管理系统。· 关键动作定范围。只确定“我们要解决这个领域的问题”绝不涉及任何内部实现。· 本质这是程序员与用户之间关于“做的是什么东西”的第一次对齐。2. 可行性研究关起门来“照镜子”· 我在干什么拿着问题定义的结果回公司内部开个小会绝对不研究“具体用什么代码写、数据库表怎么建”即强调的不管“做法”。· 我们只看三样家底1. 技术行吗现有硬件跑不跑得动现有程序员的技术栈够不够2. 人够吗开发周期内人手是否充足3. 钱值吗做出来有效益吗法律允许吗· 结论行就继续不行直接砍掉项目。· 本质这是开发团队对自己的内部评估与用户暂时无关。3. 需求分析再次面向用户“抠细节”· 我在干什么可行性研究通过后我回过头来再次找到用户这一次不再是聊“要什么类型的软件”而是要逐条逐句地确定“这个软件到底必须具备哪些具体功能”· 比可行性研究“细”在哪可行性研究只判断“能不能做出来”不关心具体功能而需求分析要把所有功能点列成清单比如用户登录、商品下单、支付回调、数据统计……。· 重要边界此时依然不谈具体技术实现不谈用哪种数据库、不谈用Java还是Python只聚焦“用户眼里的系统长什么样”。· 产出物《需求规格说明书》这份文档就是后续所有设计和编码的“总指挥令”。4. 后续链路· 需求分析完成后拿着那份《需求规格说明书》交给后面的 “设计阶段”。从设计阶段开始程序员才真正着手考虑“具体怎么做”选框架、画流程图、建数据库。---一句话总结问题定义是帮用户说清“要什么”可行性研究是关起门查家底“能不能做”坚决不看施工图需求分析是拿着合格证回来问用户“具体要哪些功能”依然不看施工图。软件生命周期软件定义软件开发运行维护。软件定义问题定义可行性研究需求分析。软件开发总体设计详细设计→【设计】编码单元测试综合测试→【实现】