2024秋软件工程个人作业(第一次)

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243
这个作业的目标 自省代码水平、初步了解github和博客园的使用,为软件工程学习做准备
学号 102201120

1.个人logo文生图任务

这里我使用的是ChatGPT4.0的文生图工具,并使用upscale软件进行AI画质提升以让线条更加流畅。
upscale使用过程略,logo和生成过程如下:

设计理念:

  • 个人比较喜欢动物(尤其是猫狗狐狸等)
  • 希望自己的logo中有编程元素
  • 作为logo不希望太花哨,更希望是简约风格

使用感受:

  • AIGC大幅缩短内容创作时间,提高工作效率
  • 用户无需专业技能即可使用,降低了创作门槛
  • 但也有缺点,图中出现了明显的字迹不清、噪点、模糊等问题,即便经过画质提升也还是有很多意义不明的线条,且难以让AI识别出问题所在和进行改进

2. Github个人主页搭建

在GitHub上进行了个人主页的搭建,如下图:

3.自我评估与学习指南生成

自我评估与课程目标

目前你已经具备了哪些专业知识和能力:

  • 了解基本的C、C++语法;
  • 学习数据结构课程后了解基本的算法;
  • 稍微了解Linux操作系统的相关知识

你对哪类技术方向有兴趣:

  • 对目前主流技术方向的了解不够深入,未能明确自己感兴趣的技术方向。
  • 个人尝试过啃说明书做一些小小的自动化来方便日常操作,如设置某游戏挂机器的开机自启动->自动关联启动模拟器->自动按流程执行挂机操作; (很久以前)也尝试过在教程指导下使用QQ bot爬取某群聊内所有人的QQ号及当前头像

你觉得自己还缺少什么样的能力:

  • 缺乏实战项目经验,对项目开发的流程、实际需求等不了解,编程经验基本仅限于PTA、Leetcode等局部性需求的解题;
  • 对语言的熟悉程度不够深入、没有真正得心应手的语言;
  • 对各类技术的认知太浅,需要提升独立完成项目需求的能力。

你之目前的代码量:

  • 挺少,没有进行过真正意义上的开发,应该只有一两百行

本学期这门课完成后,希望达到的代码量:

  • 希望破千

最期待在课程中能够学习到什么知识:

  • 希望能够了解软件开发的过程,丰富自己的实战经验,加深对语言的了解;
  • 希望能学会如何合作进行软件开发;
  • 希望能对VS等开发软件的使用技巧有更多了解(如调试技巧、项目管理);
  • 希望学会如何在开发过程中进行有效的代码审查

用AI工具生成软件工程学习指南

使用ChatGPT生成的软件工程学习指南

  1. 软件工程概述
    什么是软件工程:软件工程是应用工程原理来开发、操作和维护软件的学科。
    软件开发生命周期 (SDLC):了解软件开发的主要阶段,如需求分析、设计、实现、测试、部署和维护。
  2. 版本控制和协作工具
    版本控制系统 (VCS):学习使用Git等版本控制工具来管理代码库和跟踪更改。学习如何创建、合并分支,以及解决冲突。
    GitHub/GitLab/Bitbucket:了解如何在这些平台上托管代码,并进行团队协作。
  3. 需求分析
    需求收集与分析:了解如何从客户和利益相关者收集软件需求。学习如何撰写需求文档 (Software Requirement Specification, SRS)。
    用例分析:学习如何创建用例图和编写用例描述来描述系统功能。
  4. 软件设计
    软件架构:了解常见的软件架构模式,如MVC(Model-View-Controller)、客户端/服务器架构和微服务架构。
    设计原则:学习一些基本的设计原则,如SOLID原则(单一职责原则、开放-关闭原则、里氏替换原则、接口隔离原则和依赖倒置原则)。
    UML(统一建模语言):了解如何使用UML图来表示类关系、活动流程和系统交互。
  5. 编码与实现
    编程语言的选择:根据项目要求选择合适的编程语言。对于初学者,可以从熟悉的语言(如C/C++)开始,逐渐过渡到其他语言(如Python、Java等)。
    编码标准与风格:学习并遵循编码标准和风格指南,以确保代码的可读性和可维护性。
  6. 软件测试
    测试类型:了解单元测试、集成测试、系统测试和验收测试的区别和用途。
    测试工具:学习使用测试框架(如JUnit、pytest)进行自动化测试。了解如何编写测试用例和测试脚本。
  7. 项目管理
    敏捷方法论 (Agile):了解敏捷开发方法论的基本概念和实践,如Scrum和Kanban。
    项目管理工具:学习如何使用项目管理工具(如Jira、Trello)进行任务分配和跟踪。
  8. 持续集成与持续部署 (CI/CD)
    CI/CD 概念:了解持续集成和持续部署的概念及其在软件开发中的重要性。
    CI/CD 工具:学习如何使用Jenkins、Travis CI等工具来自动化构建、测试和部署流程。
  9. 软件维护和优化
    代码重构:了解如何通过重构改进代码质量和性能,同时不改变代码的外部行为。
    性能优化:学习常见的性能优化技巧,如减少复杂度、优化数据库查询和使用缓存等。
  10. 安全性与质量保证
    软件安全:了解基本的软件安全概念和常见的安全漏洞,如SQL注入、跨站脚本攻击 (XSS) 等。
    质量保证 (QA):学习如何通过QA活动确保软件质量,包括代码审查、静态代码分析和安全测试。
  11. 实践与项目
    参与开源项目:通过参与开源项目来获得实践经验,并与其他开发者合作。
    小型个人项目:尝试从零开始开发一个简单的软件应用,从需求分析到最终部署,完整经历一遍软件开发的生命周期。
  12. 推荐资源
    书籍:
    《软件工程:实践者的研究方法》)—— Roger S. Pressman
    《敏捷软件开发:原则、模式与实践》—— Robert C. Martin
    在线课程:
    Coursera上的《Software Engineering Essentials》
    Udacity的《Software Development Process》
    工具学习:
    Git文档与教程(如Pro Git)
    GitHub学习资源

对该指南的分析:

这份学习指南是较为全面的,它不仅涵盖了软件工程的理论基础,还包括了实践技能和工具的使用,也给出了一些资源的推荐。我认为它适合作为初学者的学习路线图。

posted @ 2024-09-03 23:25  Dm_c  阅读(24)  评论(0编辑  收藏  举报