2024秋软件工程个人作业(第一次)
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243 |
这个作业的目标 | 1. 为后续实践作业打好基础做好准备工作 2. 直观体会AIGC的强大力量 3.掌握Markdown编辑器的使用 |
学号 | 102201308 |
1.个人logo文生图任务
使用工具:Craiyon
使用步骤:
先在脑海里构思我想要什么样的效果,然后与Craiyon对话,准确地告诉他我想要生成logo的元素,等待生成。
设计理念:
白鸽是我追星的粉丝象征,为了符合博客园和github以及我学的专业,我加入了电脑元素。幸运的是Craiyon第一次生成,我就挺满意直接采用了。
使用体验和感想:
这次使用Craiyon生成logo之后,我深感ai之强大。但是用这个AIGC图像生成工具需要爬梯子,希望国内的AIGC工具也能蒸蒸日上,不输外国网站的效果。
2.Github个人主页搭建
3.个人随笔
自我评估:
目前已经具备的能力
A:对C语言较为熟悉,大部分的程序习惯用C语言写
B:能运用C++面向对象编程
C:会用CSS写一些简单的网页
目前缺少的能力
A:没有开发过软件,没有实战经验
B:学到的语言还太浅薄
代码量:
之前的代码量大概在5k行,希望这门课结束后我的代码量能翻倍
感兴趣技术方向:前端、Android
最期待在课程中能够学习到什么知识,有什么收获:
希望这门课结束之后,我能真正掌握开发软件的方法,成功设计出一个软件。
软件工程学习指南
1. 基础知识
1.1 编程基础
语言选择:选择一门主流编程语言(如Python、Java、C++、JavaScript)作为起点。
推荐书籍:《Python编程:从入门到实践》、《Java核心技术 卷 I》、《C++ Primer》。
在线课程:Codecademy、Coursera、edX上的编程入门课程。
1.2 计算机科学基础
数据结构与算法:了解常见的数据结构(如数组、链表、栈、队列、哈希表、树、图)以及基本算法(排序、搜索、动态规划等)。
推荐书籍:《算法导论》、《数据结构与算法分析》。
在线资源:LeetCode、HackerRank、GeeksforGeeks。
2. 软件工程核心概念
2.1 软件开发生命周期(SDLC)
阶段:需求分析、设计、实现、测试、部署、维护。
模型:瀑布模型、迭代模型、敏捷开发(Scrum、Kanban)。
2.2 需求分析
技巧:如何进行需求收集、用户故事、用例图。
工具:JIRA、Trello、Asana。
2.3 设计
设计原则:SOLID原则、设计模式(如单例模式、观察者模式、工厂模式)。
工具:UML(统一建模语言)、Lucidchart、draw.io。
2.4 实现
编码规范:代码风格、文档注释、版本控制(Git)。
工具:GitHub、GitLab、Bitbucket。
2.5 测试
类型:单元测试、集成测试、系统测试、验收测试。
工具:JUnit(Java)、pytest(Python)、Selenium(自动化测试)。
2.6 部署与维护
部署:持续集成/持续部署(CI/CD)、容器化(Docker)、云服务(AWS、Azure、Google Cloud)。
维护:错误修复、性能优化、技术债务管理。
3. 软件工程实践
3.1 敏捷开发
Scrum:了解Scrum框架、角色(产品负责人、Scrum Master、开发团队)、Sprint计划。
Kanban:看板管理、流动效率优化。
3.2 版本控制
Git:分支管理、合并冲突解决、提交规范。
工具:GitHub、GitLab、Bitbucket。
3.3 团队协作
沟通:有效沟通、代码审查(Code Review)、团队合作技巧。
工具:Slack、Microsoft Teams、Zoom。
4. 进阶技能
4.1 系统设计
架构模式:微服务架构、单体架构、服务导向架构(SOA)。
性能优化:负载均衡、缓存机制、数据库优化。
4.2 DevOps
概念:持续集成、持续部署、自动化测试。
工具:Jenkins、Docker、Kubernetes、Terraform。
4.3 安全性
知识:常见安全漏洞(如SQL注入、跨站脚本攻击XSS)、安全编码实践。
工具:OWASP ZAP、Burp Suite。
5. 资源推荐
5.1 在线学习平台
Coursera、edX、Udacity、Pluralsight:提供各种软件工程相关的课程和证书。
5.2 书籍推荐
《代码大全》 - Steve McConnell
《人月神话》 - Frederick P. Brooks Jr.
《设计模式:可复用面向对象软件的基础》 - Erich Gamma等
5.3 社区与论坛
Stack Overflow:技术问题解答和讨论。
Reddit:r/programming、r/softwareengineering等。
5.4 实践项目
开源项目:参与GitHub上的开源项目,积累实际开发经验。
个人项目:根据自己的兴趣开发项目,如博客系统、任务管理工具等。
学习指南思考:
我用Chatgpt写了一份简易的软件工程学习指南,这份学习指南全方位多维度地为我解答了如何入面,我体会到了要学好这门课不能闭门造车,要广泛地学习,学无止境。