功能分析
需求列表
1、用户端部分:
- 网站需要对 SEO 友好,具体可参考搜索引擎站长白皮书 。另外,需要给搜索引擎提供 XML格式的 sitemap 文件 。
- 博客需要提供搜索功能,搜索范围限定在标题 、分类和标签上 。 博客每天的增量数据为10 篇文章。
- 能够根据某个分类查看所有关于这一分类的文章,分类没有层级的关系,只有一级分类 。一篇文章只能属于一个分类 。
- 访问首页时, 需要能看到由新到旧的文章列表,以便于查看最新的文章 。 作者可以设置置顶某篇文章 ,也可以同时置顶多篇文章。 多篇文章置顶时 ,排序规则为从新到 旧 。
- 列表分页需求 。 针对首页、频道页和标签页,都需要提供分页需求,每页展示 10 篇文章。列表页展示文章时, 需要展示摘耍 , 默认为文章的前 140 个字 。
- 需要能够通过 RSS 阅读器订阅博主的文章,具体可参考 RSS 规范 。
- 要能够对某一篇文章进行评论 。 评论不需要支持盖楼的模式,只需要在文章页面展示评论 。 在页面侧边栏,也需要能展示最新评论。
- 能够配置友链,方便与网友进行链接 。 这在一个页面中展示 即可 ,不需要分类 。 但是需要能够指定某个友链的权重 ,权重高者在前面展示 。
2、作者端需求
- 博客后台需要登录方可进入 。 目前没有多用户需求, 以后可能会有,要考虑可扩展 。
- 能够创建分类和标签,一篇文章只能属于一个分类 ,但是可以属于多个标签 。 标签和分类都没有层级关系 。
- 作者在后台需要设置文章标题、 摘要 (如果为空 , 则展示文章前 140 个字)、 正文、分类和标签 。 不需要实时保存 。 文章格式默为 Markdown。 开发周期够的话,增加可视化编辑器。
- 增加文章配图时 ,图片需要增加水印 ,其内容为网站网址 。
- 导航只是分类,默认展示在顶部 。 同时每篇文章都需要有浏览路径,以告知读者目前所处位置 。 浏览路径的组成为:首页>文章所属分类〉正文 。 对于导航的顺序, 作者可以设置权重 ,权重高者在前。 顶部最多展示 6 个分类,多余的分类展示到底部 。
- 作者更新后,读者能够收到通知(暂时不开发)。
功能点梳理:从产品经历所提的需求中提炼出这个系统有哪些功能点,最终落实为功能列表/清单,进而再进行任务分配。
- 后端渲染页面,对 SEO 友好 ;
- 提供 sitem叩.xml 文件,输出所有文章;
- 搜索功能,能够针对标题 、分类和标签进行搜索;
- 根据分类和标签查看文章列表;
- 文章可以设置置顶,可以同时设置多篇文章置顶;
- 首页(列表页) 需要展示文章摘要, 140 字以内,可以作者填写,或者自动展示文章前140 个字·
- 首页(列表页) 需要分页展示,每页 10 条;
- 提供 RSS 页面,根据 RSS 2.0 规范输出内容;
- 文章页面支持评论,不需要盖楼, 侧边栏能够展示最近评论;
- 评论模块需要增加验证码功能,避免被刷;
- 后台能够配置友链,所有友链在一个页面中展示 ;
- 用户可以通过用户名和密码登录后台,之后才能创建文章;
- 需要考虑多用户的扩展情况 , 多用户时需要对分类、标签、文章、友链的操作权限进行隔离;
- 分类增、删 、改、查一一需要字段 id 、名称、 创建日期、创建人、是否置顶导航以及权重;
- 标签增 、 删 、改、查一一需要字段 id、名称、 创建日 ;朗和创建人;
- 文章增、删、改、查一一需要字段 id、标题、摘要、正文、所属分类、所属标签、状态(发布、草稿或删除)、 创建日期和创建人 ;
- 侧栏模块用来展示侧边栏需要的数据,需要字段川、类型、标题、 内容 、 创建日期和创建人。
实体及关系
使用PonyORM(Python中的一个ORM库,详见https://editor.ponyorm.com/)提供的在线工具来画出对象实体模型。
对于网站功能整体来说,分为用户端和管理后台。
用户端的功能又可以分为以下4类:
- 内容模块:首页、分类列表页、标签列表页和友链页
- 评论模块:用户添加评论、展示评论的部分。
- 侧栏模块:博客侧边栏展示的内容。
- 功能模块:sitemap页面和RSS页面。
管理后台的功能分为以下两类:
- 用户管理:登录、权限控制。
- 内容管理:分类、文章以及侧边栏等内容的增、删、改、查。
到此为止,我们通过对需求的评审和整理,最终得到了明确要开发的功能,然后对功能进行了实体抽取以及模块划分。后面我们要做的就是,在已经清楚知道要开发什么功能之后,如何进行技术选型。好的技术选型不仅能够提供开发效率,而且也能降低维护成本。