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

news2024/11/28 22:38:52

目录

一、问题分析

软件开发问题分析

动机

学什么

目的

二、要求

阅读

理解

运用

分析

评估

认知

三、案例选择

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.

 

结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iLogtail 开源两周年:感恩遇见,畅想未来

早在上世纪 60 年代,早期的计算机(例如 ENIAC 和 IBM 的大型机)在操作过程中会输出一些基本的状态信息和错误报告,这些记录通常通过打印机输出到纸带或纸卡上,用于跟踪操作流程和调试,最早期的日志系统借此…

前端必备:高效处理树形数据与数组的实用函数

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:Vue-树形数据处理|数组:实用函数封装 大家好,依旧青山,在开发项目过程中&a…

3、springboot时代背景

一、微服务 二、分布式 三、云原生 原生应用如何上云。 Cloud Native 上云的困难 服务自愈弹性伸缩服务隔离自动化部署灰度发布流量治理...... 上云的解决

人工智能算法工程师(中级)课程21-深度学习中各种优化器算法的应用与实践、代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程21-深度学习中各种优化器算法的应用与实践、代码详解。本文将介绍PyTorch框架下的几种优化器,展示如何使用PyTorch中的优化器,我们将使用MNIST数据集和一个简单…

云游戏畅玩黑神话悟空:使用 NVIDIA 4090 体验极致画质

​ 黑神话悟空 爽啦!没有好配置又想玩《黑神话:悟空》的朋友们都爽啦!自己没有好的 GPU,体验《黑神话:悟空》时画质不好玩的不舒心?厚德云来帮你解决问题!厚德云上线了《黑神话:悟空…

机器学习第五十三周周报 MAG

文章目录 week53 MAG摘要Abstract1. 题目2. Abstract3. 预测标准3.1 问题提出3.2 数据预处理3.3 模型架构MAG3.4 时域故障模式识别3.5 故障检测器 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.4 实验结果4.5 结果分析 5. 结论小结参考文献 week53 MAG 摘要 本周阅读…

【ASPLOS2024】RECom:通过编译器技术加速推荐模型推理,论文中选并获得荣誉奖项!

2024年5月,关于推荐模型自动编译优化的论文《RECom: A Compiler Approach to Accelerate Recommendation Model Inference with Massive Embedding Columns》在系统领域顶会ASPLOS 2024上中选并进行了展示,并被授予了Distinguished Artifact Award 荣誉&…

基于springboot的招聘系统的设计与实现

TOC springboot614基于springboot的招聘系统的设计与实现--论文 研究背景 近年来,由于计算机技术和互联网技术的快速发展,使得所有企事业单位内部都是数字化、信息化、无纸化的发展趋势,随着趋势的发展,各种决策系统、辅助系统…

springboot安全在线学习平台---附源码131019

摘 要 这是采用springboot技术,SQL Server数据库实现的一个基于网络的在线学习系统。系统具有用户登录和注册、普通用户、课程分类、课程、购买表、课程上传等功能。在线学习是通过提供电子课件,让学生可以进行在线学习,并支持电子课件下载的…

windows主机查询url请求来自哪里发起的

最近使用fiddler抓包,看到一直有http://conna.gj.qq.com:47873 的请求, 对此进行溯源,确定是不是被攻击了。 在dos里查询端口进程:netstat -ano | findstr :47873 查到来自8020的进程id 查看此进程应用,发现竟然是…

postgresql 集群文档

https://www.cnblogs.com/Alicebat/p/14148933.html [命令] Pacemaker 命令 pcs cluster (管理节点) – Eternal Center PostgreSQL实战之物理复制和逻辑复制(五)_postgresql 流复制和物理复制-CSDN博客 https://jingyan.baidu…

UE5.4 - 下载和安装

一. 简介 虚幻引擎(Unreal Engine)是由 Epic Games 公司推出的一款功能强大的游戏开发引擎。它于 1998 年推出第一代,其口号是 “全球最开放、最先进的实时 3D 创作工具”。 虚幻引擎被广泛应用于游戏产业,创作出了众多知名的 3…

企业级WEB应用服务器TOMCAT从讲解到实战一篇解决

一 .WEB技术 1.1 HTTP协议和B/S 结构 操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以 被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提 供计算服…

教程:postman的平替hoppscotch,又叫postwoman,hoppscotch的docker-compose安装过程

目录 1. 背景2. 前期准备2.1 准备docker-compose文件,两个版本,一个3合1,一个分开2.1.1 3合1版本(推荐)2.1.2 独立版本 2.2 准备安装nginx-proxy-manager(可选)2.2 准备.env文件2.2.1 默认ip的.…

爬虫案例5——爬取东方财富网的港股数据

简介:个人学习分享,如有错误,欢迎批评指正 任务:从东方财富网中爬取港股的代码,名称,最近价格,涨跌幅,今开,最高等数据 目标网页地址:https://data.eastmone…

科技大厂对AI的垄断

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

探索HTML中的“iframe”标签——WEB开发系列12

现代网页开发中&#xff0c;​​<iframe>​​ 标签是一个非常重要的工具。允许我们在一个网页中嵌入另一个网页&#xff0c;对于展示外部内容、应用嵌套或实现复杂的布局设计都非常有用。来一起探讨如何使用 ​​iframe​​ 标签&#xff0c;包括设置高度和宽度、移除边框…

记录 升级到Gradle 8.4.2 遇到的坑

序言 最近将Gradle从4.0.1 升级到 8.4.2 遇到了很多坑&#xff0c;记录下来帮助有缘人 升级gradle 修改根目录的build.gradle dependencies {classpath com.android.tools.build:gradle:8.4.2classpath org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0}修改gradle-wrapper.…

【html+css 绚丽Loading】000011 三元轮回珠

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

【TS】函数重载的作用

前言 当调用一个函数时&#xff0c;通常会提示有多种调用方式&#xff0c;各种调用方式的参数类型、参数数量、返回值等均可能不同。本文通过自己封装的message作为案例模拟一下。 实现 自己封装的message组件&#xff0c;有以下7种调用方式 message({mode: "mode"…