阅读、分析和维护高质量开源软件有感——小计一笔

目录

一、问题分析

软件开发问题分析

动机

学什么

目的

二、要求

阅读

理解

运用

分析

评估

认知

三、案例选择

MiNotes"开源软件

方式

实践支撑软件工具

操作流程

应该学到的知识

学习过程

四、任务与输出

1.阅读开源软件

2.标注开源软件

3.分析开源软件

4.维护开源软件

五、书籍推荐

结语


阅读、分析和维护高质量开源软件有感------小计一笔

一、问题分析

软件开发问题分析

缺乏较大规模软件开发的实践和经验 ,单个程序规模不超过500 LOC

缺乏工程思想和方法来指导软件开发 ,关注于计算思维,忽视软件工程思想

确保质量意识来指导软件系统的开发 ,没有见过高质量的代码,不知道差距在哪里

动机

从具体的代码入手,学习和实施高质量的软件开发实践

学什么

高质量的开源软件代码 ,高水平软件开发技能和经验,包括软件设计、编码实现等 ,深刻领会软件工程的理念、思想和方法

目的

切身理解软件工程的思想和原则,深入掌握高质量开发方法及技术,积累软件开发技能、经验和工程素质

二、要求

阅读

足够数量的高质量代码

理解

高质量软件设计及编码风格,高水平编程技巧和方法

运用

用所学方法,开源软件及代码片段来维护开源系统,用开源社区中的群智知识来解决实践中遇到的问题,用分布式协同手段来进行软件开发

分析

软件系统的架构、质量等

评估

软件设计及代码的质量水平及其原因

认知

理解代码"质量"(可扩展、可维护性等)重要性,理解"变化"对软件开发及质量带来的影响

三、案例选择

功能易于理解,用应际实向面,领域知识简单

代码质量高 ,值得学习,如高质量软件设计、良好编程风格

代码规模适中 ,不能太小、也不能太大,5000-20000 LOC

编程言语熟知 ,立马上手,不用学习编程语言

跃活社区开源 ,促进交流、问答和问题解决

MiNotes"开源软件

□开发者一资深团队 √ 小米公司MIUI 团队开发的一款开源移动APP软件

□主要功能一易于理解 √创建和管理便签、编辑、基于Google Task的云同步

□代码规模一适 中 √ 6个包、170个文件、41个Java类、471个类方法 √ 8800行代码

□代码质量一高质量 √软件设计和代码质量较高

方式

口个体 ( 1 人 ) √ 阅读、标注、分析和维护

口结对 (2人) √ 阅读、标注、分析和维护

口群体 √解决问题、重用代码

实践支撑软件工具

口代码阅读和标注工具 √ 阅读代码及结构、代码标注、分享和评价标注 √ Codepedia (codepedia.trustie.net) √ 或Android Studio或 Eclipse

口代码维护和管理工具 √分布式系统开发、代码版本管理 √EduCoder 实践任务

口问题讨论和经验分享工具 √技术博客、问题讨论、经验分享 √LearnerHub(www.learnerhub.net)

操作流程

口从GitHub 中查询和克隆开源代码

口在Android-Studio 中编译开源代码

口将代码部署在手机或Android-Studio中运行

口将代码上传到实践项目的仓库之中

应该学到的知识

Java和android编程,基于Git的版本管理,基于UML 分析和设计,开源软件的重用

学习过程

四、任务与输出

1.阅读开源软件

口任务:阅读和理解开源代码 √泛读开源软件的所有代码(如8800多行) √理解开源软件的整体功能和架构,绘制体系结构图 √描述软件功能与实现模块间的对应关系

口输出 √开源软件的功能描述(文档) √开源软件的架构图(包图和类图) √软件功能和代码间的实现对应图(文档)

2.标注开源软件

口任务:精读部分代码(约2000- 3000 行 ) √理解软件详细设计(类设计) √理解子系统、类、方法和语句的语义 √掌握代码编写风格和规范、代码的实现方法和技巧 √对类、方法、语句三个层次进行代码标注

口输出 √代码注释(类、方法、语句块、语句层次)

□标注内容 √ 功能 (What) 和意图 (Why) , 无需解释代码如何做

□标注要求 √言简意赅,表述清晰 √准确和正确,不要歧义和二义 √太少和过多的代码注释均不可取,要防止二个极端 √确保注释与代码间的一致性

□对代码的标注要分层次来进行,要在语句、语句块、方法 和 类等多个不同层次进行标注

3.分析开源软件

口 任务:分析代码编写风格、发现代码缺陷等 √ 运用SonarQube 等工具,分析代码质量 √学习优秀的代码编写风格和编程实践 √基于代码分析结果自动生成相应问题,学生通过回答问题加深对代码的理解和认识

口输出 √ 开源软件代码质量分析报告(文档),包括:代码编写规范、好的软件设计、好的编程风格、代码缺陷和问题

4.维护开源软件

口维护工作 √完善功能,让学生去构想和创意,老师负责引导和建议 √纠正缺陷,根据质量分析情况,修改相关代码 √实现方法,利用开源软件,遵循代码风格,确保质量要求

口输出 √维护后的高质量开源软件 √可运行和可演示软件系统

五、书籍推荐

□毛新军等,软件工程:理论与实践,高等教育出版社,ISBN: 978-7-04-061010-9,2024年1月.教育部101计划核心教材.

□毛新军等,软件工程实践教程:基于开源和群智的方法,高等教育 出版社,2019.8,ISBN 978-7-04-052423-9.

结语

接下来到周日进行这个项目的详细解读,加油!!!

相关推荐
张太行_10 小时前
人月神话:软件工程的永恒智慧
大数据·软件工程
snow@li12 小时前
PMP项目管理:理解PMP、PMP学什么 / 适合谁学 / Project Management Professional / 项目管理专业人士
软件工程
张较瘦_14 小时前
[论文阅读] 人工智能 + 软件工程 | 大型语言模型与静态代码分析工具:漏洞检测能力大比拼
论文阅读·人工智能·软件工程
reddishz3 天前
软件设计 VS 软件需求:了解成功软件开发外包的关键差异
软件工程·产品经理·需求分析·软件需求
AIGC包拥它4 天前
检索召回率优化探究二:基于 LangChain 0.3集成 Milvus 2.5向量数据库构建的智能问答系统
人工智能·python·langchain·软件工程·个人开发·milvus
PcVue China5 天前
法国彩虹重磅发布EmVue:解锁能源监控新方式
安全·自动化·软件工程·能源·数字化
卓码软件测评5 天前
软件项目中标需要哪些东西?软件工程投标需要准备什么材料?
人工智能·功能测试·软件构建·开源软件·软件需求
爱思德学术5 天前
中国计算机学会(CCF)推荐学术会议-A(软件工程/系统软件/程序设计语言):FSE 2026
分布式·软件工程·软件构建
张较瘦_6 天前
[论文阅读] 人工智能 + 软件工程 | Trae Agent:让AI智能体高效解决仓库级软件问题,登顶SWE-bench排行榜
论文阅读·人工智能·软件工程
张较瘦_6 天前
[论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
论文阅读·人工智能·软件工程