任务
添加患者主页评论界面
敏捷开发
公司最近在推行敏捷开发,新的需求按照敏捷开发流程,个人觉得这个工作效率会高一些,不同组之间员工都知道开发的任务进度,协调起来比较方便,但是也有个问题,之前的需求开发都是自己来安排时间,现在一下子要一定的时间内做完,需要时间来适应,加上公司的项目多,有些人负责多个项目,时间安排上会有冲突
-
什么是敏捷开发
敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。
迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。 -
增量开发
迭代开发只是要求将开发分成多个迭代,并没有回答一个重要的问题:怎么划分迭代,哪个任务在这个迭代,哪个任务在下个迭代?这时,一般采用"增量开发"(incremental development)划分迭代。
所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。 -
具体实现方式
Scrum:Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员
XP:极端编程(eXtreme Programming)是一种开发纪律,以简单性、交流、反馈和勇气为基本宗旨。它的做法是以有效的实践规则将整个团队紧密联系起来,通过充分的反馈使团队能随时知道自己的状况和恰当的调节规则以适应自己的特殊情况。对整个流程定义非常严格,规定采用TDD,自动测试,结对编程,简单设计,重构等约束团队的行为
ORMLite
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中
Object Relational Mapping Lite(ORM Lite)为将Java对象持久化到SQL数据库提供了一些简单、轻量级的功能,同时避免了更多标准ORM包的复杂性和开销。
特点:
- 通过注解来设置Java类
- 强大的抽象数据库访问对象(DAO)类
- 灵活的QueryBuilder,可轻松构建简单和复杂的查询
- MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB和Sqlite,并且可以相对容易地扩展到其他数据库
- 处理重复查询任务的"编译"SQL语句
- 支持事务
- 支持对Android SQLite数据库API的本机调用。
使用:
- 导入jar包,包括ormlite-android和ormlite-core
- 配置Bean类
@DatabaseTable(tableName = "tb_user")
public class User
{
@DatabaseField(generatedId = true)
private int id; //id为自动生成
@DatabaseField(columnName = "name")
private String name;
...
}
- 编写DAO类
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String TABLE_NAME = "sqlite-test.db";
/**
* userDao ,每张表对于一个
*/
private Dao<User, Integer> userDao;
private DatabaseHelper(Context context) {
super(context, TABLE_NAME, null, 2);
}
private static DatabaseHelper instance;
/**
* 单例获取该Helper
*
* @param context
* @return
*/
public static synchronized DatabaseHelper getHelper(Context context)
{
if (instance == null)
{
synchronized (DatabaseHelper.class)
{
if (instance == null)
instance = new DatabaseHelper(context);
}
}
return instance;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try
{
TableUtils.createTable(connectionSource, User.class);
} catch (SQLException e)
{
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
try
{
TableUtils.dropTable(connectionSource, User.class, true);
onCreate(sqLiteDatabase, connectionSource);
} catch (SQLException e)
{
e.printStackTrace();
}
}
/**
* 获得userDao
*
* @return
* @throws SQLException
*/
public Dao<User, Integer> getUserDao() throws SQLException
{
if (userDao == null)
{
userDao = getDao(User.class);
}
return userDao;
}
/**
* 释放资源
*/
@Override
public void close()
{
super.close();
userDao = null;
}
}
- 增删改查
User u1 = new User("zhy", "2B青年");
DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
try {
helper.getUserDao().create(u1);
helper.getUserDao().deleteById(2);
helper.getUserDao().update(u1);
List<User> users = helper.getUserDao().queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
网友评论