# Software Engineer 2022 Spring **Repository Path**: cliche07/software-engineer-2022-spring ## Basic Information - **Project Name**: Software Engineer 2022 Spring - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-03-24 - **Last Updated**: 2023-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软件工程实验进度 > 项目跟踪: 建立能反映项目及小组每个人工作的进度、里程碑、工作量的跟踪图或表,每周更新。 ## 实验一 - [x] 对选择的项目进行可行性分析,并写可行性分析报告的初稿 (大纲草稿)。 > 可参考软件设计文档国标及其它可行性分析报告实例,由于项目较小,不要求面面俱到,不涉及的部分可以不写。 ## 实验二 - [x] 小组分工搜索各种主流软件工程技术网站,调研有哪些流行的CASE工具 (如教材中提到的甘特图等),分析它们的用途、技术特点;结合自己的项目和拟使用的技术路线,选择适合的CASE工具,补充、完善所做的可行性分析报告。 - [x] **小组分工讨论传统软件开发过程模型与敏捷开发(中几种主要方法)的比较,分析各自的优缺点,以及如何应用于自己的项目中?** - [x] 分析自己项目中可能存在的风险,细化风险管理(做出风险分级及应对预案)。 ## 实验三 * [x] 针对自己项目中的工作进行工作活动分解,分工进行各自合理的工作进度估算,最后汇总绘出项目活动图,找出关键路径。 - [x] 用甘特图记录跟踪项目过程。 - [x] 调研国内外软件开发团队组织结构和工作方式对比。 - 分工调研国内与国外软件开发团队的管理方式对比(如:996工作制)。 - 从个人角度,你最喜欢的工作方式、工作环境条件、可接受的约束等是什么? - 从团队项目管理角度,你认为最有效的项目组工作管理方式是什么? ## 实验四 * [x] 阅读Scrum开发方法文档,理解Scrum过程工作模型。 - [x] 参考书3.7(P94)皮卡地里电视广告销售系统按COCOMOII的工作量模型进行工作量估算的例子(结合P79-80表),估算自己项目的初始工作量(阶段1)。 - [x] 分析自己项目中可能存在的风险。并进一步细化风险管理(做出风险分级及应对预案)。 - [x] 完成可行性分析报告,截止日期2022/04/01。 ## 实验五 * [x] 学习文档11: SRS(软件需求规格说明)文档的要求和结构,了解其与其他相关文档(文档7,8,12,17)的关系。 - [x] 搜集“SRS”编写案例。 - [x] 编写自己项目的SRS草稿(大纲)。 ## 实验六 * [x] 阅读《掌握需求过程(第3版) 》,对比其附录A和国标SRS(上周已发)的模板,分析有什么不同和特点。选择其中**必要的部分**,补充进自己项目的SRS。 - [x] 使用**E-R图或UML图**为项目系统建模,分析、归纳、总结出符合实际的需求规格。 - [x] 补充完善SRS和项目。 ## 实验七 - [x] 进一步学习Petri网知识,了解如何应用Petri网对系统进行建模。 - [x] 针对项目的不同场景练习,用各种动态建模等工具 (状态图、Petri网、数据流图、OCL逻辑等)建模需求。 > 参考第4章,4.12 皮卡迪里电视广告售卖系统,分析、归纳、总结出符合实际的需求规格。 - [x] 分工协作,用上面的工作补充完善SRS和所负责的项目。 ## 实验八 * [x] 进一步学习UML知识,理解如何应用UML对系统进行建模。 - [x] 了解常用逻辑在计算机学科中的应用。 - [x] 完成SRS文档,截止日期2022/04/29。 ## 实验九 * [x] 分工协作,参考国标“13 - 软件(结构)设计说明(SDD)”等资料,对比参考SAD最新标准IEEE-42010.pdf,针对自己的项目设计SAD初稿。 * [x] 分工协作,学习、检索研究经典软件体系结构案例。 On-the-Criteria-To-Be-Used-in-Decomposing-Systems-into-Modules.pdf http://www.cs.cmu.edu/~ModProb/index.html * [x] 学习、检索课本5.17参考文献及以下推荐的参考书或网上检索新的有关软件体系结构的资料。小组分工,每位成员选择自己关注的部分专题学习并写出学习报告(笔记)(附到最终提交的SAD)。 Software Architecture in Practice ,3rd Edition Documenting Software Architectures ,2nd,Paul Clements https://wiki.sei.cmu.edu/sad Software Architecture: a Roadmap 特别注意会议INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE 的相关文章 (2022年的会议网址https://icsa-conferences.org/2022/) ## 实验十 - [x] 体系结构风格和视图特点:对比书上各种软件体系结构风格和视图特点,思考自己项目属于哪种设计风格?可以上网检索最新的软件体系结构资料,如MVC、Kruchten 4+1视图等。 - [x] 研究经典软件体系结构案例:参阅课本和网上资料,研究经典软件体系结构案例KWIC。针对KWIC和自己项目,参考课本ch5 表5-3,小组成员每人给几种不同的体系结构风格设计打分,评最佳。 - [x] 补充和修改自己项目的SAD文档 ## 敏捷开发---凤凰商城 > 5.12 ~ 5.25 - [x] 敏捷开发-凤凰商城项目实验报告 ## 实验十一 - [x] 第五章课后习题14,故障树转割集树练习。针对自己项目**分析、描绘故障树**,分解为割集树 (附到最终提交的SAD)。 - [x] 参考教材6.2,结合项目的进程和开发历程,从**设计原则**的几个方面,组员对负责设计的模块进行评估,思考存在的问题和解决方案。 - [x] 阅读 - [Dependency injection - Wikipedia](https://en.wikipedia.org/wiki/Dependency_injection#:~:text=In software engineering%2C dependency injection,object is called a service.) - Dependency Injection-A Practical Introduction.pdf 学习依赖注入技术 - [x] 阅读下面设计模式资料或查阅其它相关资料 - Design Patterns-Elements of Reusable Object-Oriented Software.pdf - The GoF Design Patterns Reference.pdf - [Design Patterns - Wikipedia](https://en.wikipedia.org/wiki/Design_Patterns) - [x] 结合项目的进程和开发历程,分析项目采用了那些设计模式 - [x] 给出4种设计模式的例子(语言不限,以组为单位),并总结其特点 ## 实验十二 - [x] 熟悉UML图的使用,参考教材P226和补充材料6-4皇家服务站的例子,学习分析其各种UML图的设计过程; 参照上面的例子,回顾自己的项目曾设计过的UML图,分工协作,修改; - [x] 论述利斯科夫替换原则(里氏代换原则)、单一职责原则、开闭原则、德(迪)米特法则、依赖倒转原则、合成复用原则,结合自己的实践项目举例说明如何应用 (保存到每个小组选定的协作开发平台上,以组为单位) - [x] 上网查询“阿里编程规范 (如:阿里巴巴JAVA开发手册、华为 编程军规”等),对照自己的代码看有哪些不符合规范的地方,修改; - [x] 阅读下面软件测试相关资料(或查阅其它相关资料),了解软件测试的基本概念、主要技术、重要挑战等; Software Testing-A Research Travelogue (2000–2014).pdf ## 实验十三 - [x] 阅读白盒测试和黑盒测试相关资料(或查阅其它相关资料),深入理解白盒测试和黑盒测试,总结其特点 (保存到每个小组选定的协作开发平台上,以组为单位); - [x] 阅读单元测试相关工具的介绍(或查阅其它单元测试工具相关资料),学习单元测试工具的使用; - [x] 阅读符号测试 (Symbolic Testing)相关资料(或查阅其它相关资料),了解符号测试的基本概念、主要技术、重要挑战等; - [x] 阅读差分测试 (Differential Testing)相关资料(或查阅其它相关资料),了解差分测试的基本原理、主要应用等;