1.关于《构建之法》:
看了第一章,关于《构建之法》的概述,通过一定的软件流程,在预计的时间内发布好的软件,软件工程对于开发一个好的软件很重要,在开发中,程序很重要,软件开发流程也很重要。
软件具有:复杂性,不可见性,易变性,服从性,非连续性。还有其他特性。
软件工程的目标:创造“足够好”的软件。
构建之法的目标:
研发出符合用户需求的软件;
通过一定的软件流程,在预计的时间内发布“足够好”的软件;
能证明所开发的软件是可以维护和继续发展的。
可行性分析->项目立项->需求分析->概要设计->详细设计->编码->单元测试->系统测试->集成测试->验收测试->项目上线。
在每个流程尽量减少错误,就会在预计的时间完成足够好的软件。
单元测试:让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的,量化的保证。
创建单元测试函数的主要步骤:
1.设置数据;
2.使用被测试类型的功能;
3.比较实际结果和预期的结果
回归测试的目的:
1. 验证新的代码的确改正了缺陷;
2.同时要验证新的代码有没有破坏模块的现有功能,有没有Regression。
回归测试最好要自动化,因为这样就可以对于每一个构建快速运行所有回归测试,以保证尽快发现问题。单元测试是回归测试的基础。
个人软件开发流程(PSP):
1.不局限于某一种软件技术,而是着眼于软件开发的流程,这样,开发不同应用的软件工程师可以相互比较。
2.不依赖于考试,而主要靠工程师自己收集数据,然后分析,提高。
3.在小型,初创的团队中,很难找到高质量的项目需求,这意味着给程序员的输入质量不高。在这种情况下,程序员的输出往往质量也不高,然而这个并不能全部
由程序员负责;
4.psp依赖于与数据;
5.psp的目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。
软件工程包括了开发,运营,维护软件的过程中的很多技术,做法,习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫做软件开发流程;软件开发流程的目的是:提高软件开发,运营,维护的效率,以及提升用户的满意度,软件的可靠性和可维护性。
初级软件工程师的成长:
1.积累软件开发相关的知识,提升技术技能;
2.积累问题领域的知识和经验;
3.对通用的软件设计思想和软件工程思想的理解;
4.提升职业技能;
5.实际成果。
工程师必须要做到以下几点:
1.阅读:4-6 篇经典文献的深入分析和阅读;
2.工作经验:要参与并完成6个具体的项目;
3.课程:要参加3个专门的课程。
从瀑布模型开始的各种模型都有有一个共同点:重计划,重事先设计,重文档表达。
敏捷开发的原则是:
1.尽早并持续地交付有价值的软件以满足顾客需求;
2.敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势;
3.经常发布可用的软件,发布间隔可以从几周到几个月,能短则短;
4.业务人员和开发人员在项目开发过程中应该每天共同工作;
5.以有进取心的人为项目核心,充分支持信任他们;
6.无论团队内外,面对面的交流始终是最有效的沟通方式;
7.可用的软件是衡量项目进展的主要指标;
8.敏捷流程应能保持可持续性的发展。领导,团队和用户应该能按照目前的步调持续合作下去;
9.只有不断关注技术和设计,才能越来越敏捷;
10.保持简明--尽可能简化工作量的技艺——极为重要;
11.只有自我管理的团队才能创造优秀的架构,需求和设计;
12.时时总结如何提高团队效率,并付诸行动。
MSF(微软解决方案框架)基本准则:
1.推动信息共享和沟通;
2.为共同的远景而工作;
3.充分授权和信任;
4.各司其职,对项目共同负责;
5.交付增量的价值;
6.保持敏捷,预期和适应变化;
7.投资质量;
8.学习所有的经验;
9.与顾客合作。
MFS团队模型:测试,项目管理,用户经验,测试,发布管理,开发,交流。
MFS过程模型:构思->远景/范围认可->计划->项目计划认可->开发->开发完成->稳定->发布就绪认可->部署->部署完成。
软件需求:
1.获取和引导需求;
2.分析和定义需求;
3.验证需求;
4.对软件产品的生命周期中管理需求。
PM(项目经理)的能力要求和任务:
1.观察,理解和快速学习能力;
2.分析管理能力;
3.一定的专业能力;
4.自省的能力。
用户体验要素:
1.用户的第一印象;
2.从用户的角度考虑问题;
3.软件服务始终都要记住用户的选择;
4.短期刺激和长期影响;
5.不让用户犯简单的错误;
6.用户体验和质量;
7.情感设计。
Bug:软件的缺陷;
Test Case:测试用例;
Test Suite:测试用例集;
软件测试分为:黑箱和白箱。
也可分为功能测试和非功能测试。
程序的质量体现在软件外在功能的质量。
问题:
1.如何才能创新,怎样才能锻炼自己的创新意识?
2.软件工程怎样才能学好?
3.每个软件都需要完整的开发流程吗?如果没有会怎么样?
4.关于《构建之法》怎样读才能抓住核心?
5.在自身没有多少编程能力时怎样将书中的知识运用到实践中?