这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243 |
这个作业的目标 | 熟悉博客园和github操作,使用AIGC以及自我介绍 |
学号 | 102201125 |
设置Markdown编辑器
一.个人logo文生图
使用DALL-E3进行个人logo文生图
1.设计过程
我首先给出我的要求,选择了我想要在logo中展示的元素和使用场景,以及想要的整体感觉和色调。
第一次给出的效果图大致符合预期,接着希望可以稍微在简约一些,但第二次给出有些太简约了,在经过调整还是选择了第一次生成的图。如下
2.设计理念
- 希望结合浪漫与科技感,创造一个既简洁又富有深度的个人 logo,适合用于技术博客和 GitHub 账号。选择了星空,火焰,鲜花以及科技元素,整体颜色选择上选择暗色调
- 星空元素首先有浪漫元素,在没有光污染的高山上,看着一片无边无垠的星空,感受和大自然共鸣的美妙体验,然后星空也象征着无限的可能性和探索精神,比较适合技术领域的背景,暗示着技术创新的无尽潜力。
- 火焰元素代表着激情和动力,因为自己名字中有个火字偏旁,所以加入,希望自己可以在技术上有无限激情。同时与其他元素相融合,不仅突显了能量感,还与黑暗背景形成了鲜明的对比,增强了视觉冲击力。
- 鲜花元素代表着自然与美学的结合,带有浪漫与柔和的情感色彩。它为整体设计增添了一丝温暖与柔和,平衡了科技感的冷峻,同时也暗示着创造力的绽放和成长。
- 技术元素为了与计算机行业相结合,设计中加入了细微的技术符号,例如简约的电路线条或几何形状。这些元素巧妙地融入了星空、火焰和鲜花中,保持了整体设计的和谐与统一,体现了技术与艺术的结合。
- 暗色调增加了设计的沉稳感,不仅符合现代科技设计的风格,也让其他元素如星星、火焰和鲜花更加突出。
- 结合这些元素,希望传达技术背景,也融入个人的审美和情感。
3.使用AIGC的感想
1)创作的效率与灵感的激发
AIGC能极大提升创作的效率,从图像生成到文本生成,AI的能力让我们可以快速实现原本需要大量时间和精力的工作。它不仅让我们能够迅速实现想法,还能通过AI生成的结果激发新的灵感。
2)操作简单,让创造的门槛变低
只需简单描述出你的想法,AI就能帮你完成初步设计,甚至实现一些富有创意的结果。
3)细节把控和需求理解能力依然不足
有些时候反复修改和训练,总是得不到满意的结果
4)是不是原创?版权?
AI生成的内容是基于已有数据训练的,因此它的“创作”是基于对大量已有作品的学习和模仿。AI生成的内容是否受版权保护?我们需要谨慎处理这些潜在的风险。
二.github个人主页搭建
三.随笔
目前具备的专业知识和能力
掌握c,c++、python编程语言,掌握一定的算法和数据结构知识。
有兴趣的技术方向
对于前端技术比较有兴趣,基础技术栈,前端框架等;
对于网站流量分析也有一定兴趣,可以了解用户行为,营销效果等,可以优化转化率,具有一定的指导作用。
缺少的能力
缺少熟练,规范使用编程语言的能力,学习了书面内容,没有做过大型的实践;对于编写程序过程中需要匹配的文件没有了解,需要进一步学习;对于各种系统的api接口了解少,需要进一步了解。
代码量
目前代码量大概在千行左右,课程结束后希望达到万行。
期待学到的知识和收获
希望可以增强自己的代码水平,熟悉软件架构和设计,以及对于软件中使用的数据库技术有一定了解;希望在小组作业中感受团队协作编写程序的过程和乐趣。
AI生成的学习指南
这里是一个软件工程课程的学习指南,涵盖核心概念、关键知识点和学习策略,帮助你系统化地学习和掌握这门课的内容。
1. 软件工程基础概念
1.1 软件工程简介
- 定义:软件工程是系统化、规范化和可度量的开发与维护软件的学科。
- 目标:提高软件的开发效率和质量,确保软件的可维护性和可靠性。
1.2 软件开发生命周期 (SDLC)
- 阶段:需求分析、设计、编码、测试、部署与维护。
- 目标:确保软件按计划开发并交付给用户,满足预期需求。
1.3 软件工程的原则
- 抽象:隐藏复杂性,专注于高层次设计。
- 模块化:将系统拆分成多个可独立开发和维护的模块。
- 信息隐藏:模块之间不直接暴露实现细节,减少耦合。
- 增量与迭代:逐步构建和改进软件。
2. 软件开发模型
2.1 瀑布模型
- 线性开发:需求明确、顺序开发,每个阶段依次进行。
- 优缺点:结构清晰但灵活性差,适用于稳定需求的项目。
2.2 增量模型
- 增量交付:将产品分为多个部分逐步开发与交付。
- 优缺点:能快速交付部分功能,但要求需求提前规划。
2.3 敏捷开发
- 迭代开发:通过短周期的迭代,不断优化和完善软件。
- 优缺点:适应变化能力强,但要求开发团队的协作能力高。
3. 需求分析与管理
3.1 需求获取
- 技术手段:通过访谈、问卷、观察等方式收集用户需求。
- 目标:明确系统要解决的问题及其约束条件。
3.2 需求文档
- 功能需求:系统应该执行的具体任务。
- 非功能需求:性能、安全、可扩展性等质量属性。
3.3 需求变更管理
- 变更控制:设置需求变更流程,确保每次修改得到审查和批准。
- 追踪需求:保持需求和设计的连贯性,防止项目偏离目标。
4. 软件设计
4.1 软件架构设计
- 架构模式:常见的模式包括分层架构、微服务架构、客户端-服务器架构等。
- 设计原则:高内聚、低耦合,通过清晰的模块分工减少依赖。
4.2 详细设计
- 类设计:定义系统中的类及其交互方式,采用UML等工具进行建模。
- 设计模式:学习常见的设计模式(如工厂模式、单例模式、观察者模式等),提高代码复用性和可维护性。
4.3 接口设计
- API 设计:确保系统组件之间的通信接口清晰且灵活,避免模块间强耦合。
5. 软件实现
5.1 编码实践
- 编码规范:保持代码一致性,如命名规则、注释风格和代码缩进。
- 代码复用:重用已有的库和模块,避免重复开发。
- 单一职责:遵循单一职责原则,使代码模块化、易维护。
5.2 版本控制
- Git 版本控制系统:使用分支、提交记录和合并功能来管理代码。
- 常见工作流:Git Flow 和 GitHub Flow 是两种常见的协作开发模式。
6. 软件测试
6.1 测试类型
- 单元测试:验证单个模块的功能是否正确。
- 集成测试:测试模块之间的接口是否正常工作。
- 系统测试:全面测试整个系统的功能。
- 验收测试:确保系统满足用户需求。
6.2 自动化测试
- 使用测试框架(如JUnit、PyTest)来实现自动化测试,减少人工错误。
6.3 持续集成与测试
- 持续集成:将代码自动集成到主干中并持续测试,减少集成问题。
7. 软件维护与优化
7.1 维护类型
- 纠错性维护:修复软件中的缺陷和错误。
- 适应性维护:修改软件以适应新的需求或环境。
- 完善性维护:优化性能或增强功能。
7.2 性能优化
- 代码优化:减少不必要的计算和内存占用。
- 数据库优化:通过索引、查询优化来提升数据库性能。
8. 学习建议
8.1 多实践项目
- 实际项目能够让你将理论知识付诸实践,加深理解。
- 选择一些小型的开源项目,参与代码贡献和讨论。
8.2 阅读优秀的源码
- 学习开源项目的架构、代码风格和设计模式,提高编码水平。
8.3 与团队协作
- 通过团队项目学习如何进行协作开发,使用版本控制、任务管理工具提升团队协作效率。
8.4 反复学习
- 软件工程理论结合实际需求不断演进,通过反复学习和实践,提升对软件工程的理解和掌握。
通过以上的学习指南,你可以逐步建立对软件工程系统性和全面性的认识,做好理论和实践的结合,从而为未来的软件开发工作打下坚实的基础。
分析
以上学习指南由chatgpt生成,说是学习指南,感觉更像是一个复习提纲,列举出了核心概念、关键知识点,最后给出了学习建议,合理性适中,看这份学习指南,可以得到一个大概的系统化的初步印象,结合学习策略,大概可以知道应该怎么去学软件工程。但是不太具体,并没有被指导的感觉,只是一个系统性的了解,个性化不强,可以多一些学习资源和具体步骤推荐。总体对我有些许帮助。