知识点
1、软件过程就是软件开发过程中软件活动的集合。
2、软件过程各阶段定义
1)问题定义:人们通过开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围。
2)需求开发:在问题定义之后,建立完整的需求分析模型,编写软件需求规格说明。
3)软件设计:根据需求规格说明,确定软件体系结构,进一步设计每个系统部件/组件/模块的实现算法、 数据结构及其接口等。
4)软件编码:将软件设计转换成程序代码,这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确而高效地编写和测试代码。
5)软件测试:检查和验证所开发的系统是否符合客户期望,主要包括单元测试、 子系统测试、 集成测试和验收测试等活动。
6)软件运维:系统投入使用后对其进行改进/重构,以适应不断变化的需求,是一个连续持续的过程。
3、软件开发原则
1)软件复用
构造一个新的系统不必从零做起,直接复用已有的构件进行组装
构件是经过反复使用验证的,由其组成的新系统具有较高的质量
2)分而治之
将一个复杂的问题分解成若干个简单的问题,然后逐个解决
也叫做自顶向下、逐层细化、整体化零
3)提前测试
有问题早发现
全生命周期评审
尽可能早的评审
4)精简完备
按照敏捷开发基本原则,适度简化软件开发过程
简化同时要保证过程的规范性
5)设计原则
UML建模:用例图、类图、活动图、时序图
开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则等
抽象、封装、模块化、复用等
6)设计模式
创建型:工厂模式、单例模式、建造者模式等
结构型:代理模式、适配器模式、装饰器模式等
行为型:中介者模式、迭代器模式、观察者模式等
答疑时间
1、如何进行性能测试
性能测试有很多开源工具,推荐大家使用
压力测试工具:Siege
漏洞检查工具:Nikto2
2、4+1视图能稍微举例说明一下更好
举个例子
1)逻辑架构
上图是一个基于Spring的三层框架。逻辑框架的重点在于逻辑分层+每层组件。每个组件是一部分功能的抽象和凝练
2)开发架构
这个最简单,就是开发环节所有技术。通常用技术选型
上图是JavaEE通用框架。与逻辑架构类似,这个图重点反映的是技术不仅仅是功能。也可以看出开发架构与逻辑架构有交集,但是重点不一样。逻辑架构在逻辑组件,而开发架构重点在于技术方法。
3)过程架构
这个重点在于数据处理的流程和方法。举例
过程架构反映的是一个流程和步骤
4)物理架构
与逻辑架构相对,反映的是物理元素
这个图是上位机和下位机的交互。
3、不太熟悉自动化测试
可以尝试安装好LoadRunner试试。
不知道有没有玩过网游,是否听说过“按键精灵”这种游戏辅助工具。它就是模拟键盘输入去操控游戏。
LoadRunner也是这种理念,利用窗体的句柄,模拟键盘鼠标输入,模拟人的操作。
以“LoadRunner”为关键词百度一下
4、软件设计说明书需不需要写部分实现代码,如果需要写的话和具体的软件编码实现有什么差别
软件设计说明书重在方案的描述,即采用什么方法来解决具体的需求。软件设计环节针对“怎么做”的问题进行逐层细化,在这个环节的重点有“数据库设计”(这点应该很熟)、“软件架构设计”(这点之前容易忽略,方法看我PPT。4+1视图法)。
5、后续课程的展开细节是什么
主线:
1)个人软件开发技术
四个要点:版本控制、单元测试、每日构建、编码规范。
2)结对软件开发技术
结对编程,两人如何进行合作
3)团队软件开发技术
敏捷开发方法(我们的重点是SCRUM方法)、团队的组织与管理、敏捷需求管理(基于用户故事)
4)实践部分,手把手教SCRUM方法,划分为项目启动、迭代1、迭代2。
我们这学期的课程重点在于SCRUM方法实践。