{"id":19020722,"url":"https://github.com/librauee/se","last_synced_at":"2026-02-08T17:03:44.839Z","repository":{"id":107435220,"uuid":"227325554","full_name":"librauee/SE","owner":"librauee","description":"software engineering","archived":false,"fork":false,"pushed_at":"2020-01-02T07:41:56.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-19T06:40:43.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/librauee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-11T09:24:32.000Z","updated_at":"2021-12-12T07:53:14.000Z","dependencies_parsed_at":"2023-06-06T15:30:54.649Z","dependency_job_id":null,"html_url":"https://github.com/librauee/SE","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/librauee/SE","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librauee%2FSE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librauee%2FSE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librauee%2FSE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librauee%2FSE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/librauee","download_url":"https://codeload.github.com/librauee/SE/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librauee%2FSE/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29237118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T14:18:14.570Z","status":"ssl_error","status_checked_at":"2026-02-08T14:18:14.071Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T20:18:23.924Z","updated_at":"2026-02-08T17:03:44.807Z","avatar_url":"https://github.com/librauee.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Software Engineering\n\n## Key point of examination\n\n### 软件过程\n\n* 什么是瀑布模型，有何特性，为什么有僵化的瀑布模型之说？\n  1. 瀑布模型：它提出了一个系统的、顺序的软件开发方法，从用户需求规格说明开始，通过计划、建模、构建和部署的过程，最终提供一个完整的软件并提供持续的技术支持。\n  2. 特性：① 阶段间具有顺序性和依赖性；② 推迟实现的观点，划分逻辑设计与物理设计，尽可能推迟程序的物理实现；③ 质量保证的观点，每个阶段必须完成规定的文档，对其中问题通过复审及早发现，及早解决。\n  3. 僵化：对变更的无奈。① 有些类型的系统需求是模糊的；② 项目参与者之间存在通信鸿沟；③ 预先定义的需求可能是过时的。\n* 瀑布模型和喷泉模型的区别\n\n* CMMI的作用、目的以及级别\n\n  能力成熟度模型集成，可分为五个级别：\n  1. **完成级**\n  * 在完成级水平上，企业对项目的目标与要做的努力很清晰，项目的目标得以实现。但是由于任务的完成带有很大的偶然性，企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。 \n  2. **管理级**\n  * 在管理级水平上，企业在项目实施上能够遵守既定的计划与流程，有资源准备，权责到人，对相关的项目实施人员有相应的培训，对整个流程有监测与控制，并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性，保证了企业的所有项目实施都会得到成功。\n\n  3. **定义级**\n  * 在定义级水平上，企业不仅能够对项目的实施有一整套的管理措施，并保障项目的完成；而且，企业能够根据自身的特殊情况以及自己的标准流程，将这套管理体系与流程予以制度化这样，企业不仅能够在同类的项目上生到成功的实施，在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化，企业的组织财富。\n\n  4. **量化管理级**\n  * 在量化管理级水平上，企业的项目管理不仅形成了一种制度，而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性，实现管理的精度，降低项目实施在质量上的波动。\n  5. **优化级**\n  * 在优化级水平上，企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理，而且能够充分利用信息资料，对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程，运用新技术，实现流程的优化。\n\n* 敏捷过程\n\n\n* 比较分析两种主流的方法学（面向过程分析方法和面向对象的分析方法）\n\n  主要可分为三个方面论述\n  1. **方法**\n    * 前者以功能为主，围绕功能组织数据\n    * 后者以数据为中心，围绕数据组织功能\n  \n  2. **过程**\n    * 前者是一种传统的结构化分析方法，瀑布模型为典型模型，在需求明确的情况下采用较为合适\n    * 后者把面向对象的思想应用于软件开发过程，指导开发活动的系统方法，生命周期长，稳定性高，是迭代的，其中喷泉模型为典型模型\n  3. **工具**\n    * 前者主要的分析与描述工具为**数据流图**、数据字典、判定表和判定树等\n    * 后者主要的分析与描述工具为三视点模型、例图、类图、状态图等\n\n* 试比较B/S (Browser/Server) 和C/S (Client/Server)架构的优缺点？⭐⭐⭐\n  * C/S优点：\n    1. C/S架构的界面和操作可以很丰富。\n    2. 安全性能可以很容易保证，实现多层认证也不难。\n    3. 由于只有一层交互，因此响应速度较快。\n  * C/S缺点：\n    1. 适用面窄，通常用于局域网中。\n    2. 用户群固定。由于程序需要安装才可使用，因此不适合面向一些不可知的用户。\n    3. 维护成本高，发生一次升级，则所有客户端的程序都需要改变。\n\n  * B/S优点：\n    1. 客户端无需安装，有Web浏览器即可。\n    2. B/S架构可以直接放在广域网上，通过一定的权限控制实现多客户访问的目的，交互性较强。\n    3. B/S架构无需升级多个客户端，升级服务器即可。\n  * B/S缺点：\n    1. 在跨浏览器上，B/S架构不尽如人意。\n    2. 表现要达到C/S程序的程度需要花费不少精力。\n    3. 在速度和安全性上需要花费巨大的设计成本，这是B/S架构的最大问题。\n    4. 客户端服务器端的交互是请求-响应模式，通常需要刷新页面，这并不是客户乐意看到的。（在Ajax风行后此问题得到了一定程度的缓解）\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibrauee%2Fse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibrauee%2Fse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibrauee%2Fse/lists"}