高系分七:软件工程
目录
- 一、我的理解
- 二、我的导图你给我看看,系统分析师,第七章软件工程章节内容
- 优点
- 可优化之处
- 三、对于系统分析师,第七章软件工程章节,应该掌握那些内容?作为一个优秀的系统分析师,在这一章中应该具备哪些能力?平时应该做什么关注和提升?
- 一、系统分析师在第七章软件工程章节应掌握的内容
- (一)软件工程基础概念
- (二)软件需求分析
- (三)软件设计
- (四)软件测试
- (五)软件维护
- (六)软件重用与再工程
- (七)软件项目管理
- 二、优秀系统分析师在这一章应具备的能力
- (一)需求分析与沟通能力
- (二)软件设计与架构能力
- (三)问题解决能力
- (四)项目管理能力
- (五)技术选型与评估能力
- 三、平时应做的关注和提升方向
- (一)关注行业动态
- (二)学习与实践
- (三)团队协作与交流
- 四、系统分析师,第七章软件工程章,你给我出5道题,让我看看
- 题目1
- 题目2
- 题目3
- 题目4
- 题目5
一、我的理解
1.一个软件的生命力,生态作用,会让抄袭者根本遍历不全所有的功能,以及对未来快速实现的页面功能
2.软件工程,单独拿出来一个章节,放到基础里面,放到计算机网络数据库企业信息之后来介绍,可见它对于系统分析师的要求和作用之大
3.软件工程的规则,规范使得产品开发具备科学属性(可定义,可测量,可再现)
二、我的导图你给我看看,系统分析师,第七章软件工程章节内容
从系统分析师的专业视角来看,这张关于“软件工程”的思维导图有一定的知识框架搭建意识,但在内容的准确性、完整性以及逻辑关联上还有优化空间,以下是具体分析:
优点
- 核心主题明确:以“软件工程”为核心,围绕其展开“重用再工程”“生命周期”“产品线”“方法模型”等板块,能从不同维度展现软件工程相关内容,有基本的知识体系构建思路。
- 部分板块有指向性:
- “生命周期”板块清晰列出概念、开发、使用、维护等阶段,涵盖了软件工程生命周期的主要环节,能让读者对软件从产生到退役的过程有初步认知。
- “方法模型”板块提到快速应开(快速应用开发)、敏捷、形式化 - 单(形式化方法等)、语言、模型、过程等,涉及到软件工程中不同的开发方法和模型,为了解软件工程的方法论提供了切入点。
可优化之处
- 内容准确性与完整性
- 专业术语表述:“快速应开”表述不规范,建议改为“快速应用开发(RAD)”;“形式化 - 单”表述模糊,可明确为“形式化方法”等准确的专业术语,使内容更规范。
- “重用再工程”板块:“软件构件”“过程”“逆向”“再”的表述过于简略,缺乏对软件重用(如构件重用的原则、方法)、软件再工程(如再工程的流程、目标)等核心内容的详细说明,可补充软件重用的层次(代码重用、设计重用、需求重用等)、软件再工程中的逆向工程(如从可执行代码提取设计信息)和正向工程(如将重构后的设计转化为新代码)等内容。
- “产品线”板块:“成熟度模型”“过程评估”“建立方式”“环境”“工具”“环境工具”的逻辑关系不清晰,可梳理为软件产品线的关键要素,如产品线的建立过程(包括领域工程、应用工程)、产品线的成熟度模型(如CMMI在产品线中的应用)、支持产品线的环境与工具(如领域特定语言、配置管理工具)等,使内容更有条理且完整。
- “方法模型”板块:对于不同方法和模型的阐述可更深入,比如快速应用开发(RAD)的核心思想、适用场景;敏捷开发的核心价值观和原则;形式化方法的特点(基于数学逻辑进行软件规格说明和验证)、优缺点;以及不同模型(如瀑布模型、迭代模型、螺旋模型等)的具体内容,目前的内容未充分涵盖,可补充完善。
- 板块间逻辑关联
- 各板块与“软件工程”核心主题之间的逻辑连接可更紧密,比如“重用再工程”如何服务于软件工程中软件的维护和升级,“产品线”与软件工程中大规模软件生产的关系,“方法模型”如何指导软件工程的开发过程等,可通过更明确的文字说明或线条标注来体现这些内在逻辑。
- 可以补充软件工程的定义、目标、基本原理等基础内容,作为整个思维导图的开篇,让读者先对软件工程有一个整体的概念,再深入到各细分板块,使知识体系更完整。
总体而言,这张思维导图搭建了软件工程知识的初步框架,但在专业术语准确性、内容完整性以及逻辑关联性等方面,还有较大的提升空间,若能进一步完善,会更有助于系统分析师全面、深入地学习和应用软件工程相关知识。
三、对于系统分析师,第七章软件工程章节,应该掌握那些内容?作为一个优秀的系统分析师,在这一章中应该具备哪些能力?平时应该做什么关注和提升?
一、系统分析师在第七章软件工程章节应掌握的内容
(一)软件工程基础概念
- 软件工程定义与原则:透彻理解软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即把工程化应用到软件上 。熟悉软件工程的基本原则,如抽象、模块化、信息隐藏、局部化、完整性、一致性等,明白这些原则在软件设计与开发过程中的指导作用。
- 软件生命周期:掌握软件从概念形成开始,经过开发、使用和维护,直到退役的全过程。包括可行性研究与计划制定、需求分析、设计(概要设计和详细设计)、编码、测试、维护等阶段,清楚每个阶段的任务、输入和输出。
- 软件过程模型:了解多种软件过程模型,如瀑布模型、快速原型模型、增量模型、迭代模型、螺旋模型、敏捷开发模型(Scrum、XP等)、形式化方法模型等。熟悉各模型的特点、适用场景、优缺点,能够根据项目需求和特点选择合适的模型。
(二)软件需求分析
- 需求获取:掌握需求获取的多种方法,如用户访谈、问卷调查、观察法、原型法、联合需求规划(JRP)等。能够与用户进行有效沟通,准确识别用户的功能性需求和非功能性需求(如性能、可靠性、安全性、易用性等)。
- 需求分析与建模:运用数据流程图(DFD)、实体 - 关系图(ERD)、状态转换图(STD)、用例图、类图等工具和方法,对获取的需求进行分析、整理和建模,建立清晰、准确、完整的需求规格说明书。
- 需求验证:了解需求验证的方法和标准,能够对需求规格说明书进行评审,确保需求的正确性、完整性、一致性、可行性、可测试性等。
(三)软件设计
- 概要设计:熟悉软件体系结构设计,包括分层架构、MVC(Model - View - Controller)架构、微服务架构、面向服务的架构(SOA)等。能够根据需求进行软件模块划分,确定模块之间的接口和调用关系,设计软件的总体结构。
- 详细设计:掌握详细设计的方法和工具,如程序流程图、N - S图、PAD图、判定表、判定树等,能够对每个模块进行详细的算法设计、数据结构设计和接口设计,确保模块的正确性和可实现性。
- 设计原则与模式:理解并应用软件设计原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则等。熟悉常见的设计模式,如创建型模式(单例模式、工厂模式等)、结构型模式(代理模式、装饰器模式等)、行为型模式(观察者模式、策略模式等),并能在实际设计中合理运用。
(四)软件测试
- 测试基础:掌握软件测试的基本概念、目的和原则,了解测试的类型,如单元测试、集成测试、系统测试、验收测试等,清楚各测试阶段的任务、方法和重点。
- 测试方法:熟悉白盒测试方法(如语句覆盖、判定覆盖、条件覆盖、路径覆盖等)和黑盒测试方法(如等价类划分、边界值分析、错误推测法、因果图法等),能够根据软件需求和设计选择合适的测试方法,设计测试用例。
- 测试管理:了解测试计划的制定、测试资源的管理、测试过程的监控和测试结果的评估,能够组织和协调测试工作,确保软件测试的质量和效率。
(五)软件维护
- 维护类型:掌握软件维护的类型,如改正性维护(修复软件中的错误)、适应性维护(使软件适应新的环境)、完善性维护(增加软件功能或改进性能)、预防性维护(提高软件的可维护性和可靠性),了解不同维护类型的特点和实施方法。
- 维护过程:熟悉软件维护的过程,包括维护需求分析、维护方案设计、维护实施、维护测试和维护文档更新等,能够有效地进行软件维护工作,减少维护对软件质量和系统稳定性的影响。
(六)软件重用与再工程
- 软件重用:理解软件重用的概念和意义,掌握软件重用的层次和方法,如代码重用、设计重用、架构重用等。了解软件构件技术,包括构件的定义、接口规范、构件库的管理和使用等。
- 软件再工程:熟悉软件再工程的概念、过程和技术,如逆向工程(从现有系统中提取设计信息)、重构(修改代码结构以提高软件质量)、正向工程(将重构后的设计转化为新的代码)等,能够运用再工程技术对现有软件系统进行改进和升级。
(七)软件项目管理
- 项目计划与估算:能够制定软件项目计划,包括项目范围定义、工作分解结构(WBS)创建、进度计划安排、资源分配等。掌握软件项目估算的方法,如代码行估算法、功能点估算法、类比估算法等,能够对项目的规模、成本和工期进行合理估算。
- 项目进度管理:运用甘特图、网络计划图(如关键路径法CPM、计划评审技术PERT)等工具进行项目进度管理,能够识别项目的关键路径,监控项目进度,及时发现并解决进度偏差问题。
- 项目质量管理:了解软件项目质量保证和质量控制的方法和技术,如质量计划制定、质量审计、测试驱动开发(TDD)、持续集成(CI)、持续交付(CD)等,能够确保软件项目的质量符合要求。
- 项目风险管理:能够识别软件项目中的风险,如技术风险、需求风险、进度风险、人员风险等,进行风险评估和分析,制定风险应对策略,降低风险对项目的影响。
二、优秀系统分析师在这一章应具备的能力
(一)需求分析与沟通能力
能够与用户、开发团队等各方进行有效沟通,准确理解用户需求,并将其转化为清晰、准确的软件需求规格说明。在需求分析过程中,善于引导用户表达潜在需求,解决需求冲突,确保需求的完整性和一致性。
(二)软件设计与架构能力
具备良好的软件设计能力,能够根据需求设计出合理、高效、可维护的软件架构和模块。熟悉各种设计原则和模式,能够在设计中灵活运用,提高软件的质量和可扩展性。
(三)问题解决能力
在软件开发过程中,能够快速诊断和解决各种技术问题和管理问题,如软件性能瓶颈、测试中发现的缺陷、项目进度延迟等。具备创新思维,能够提出有效的解决方案,推动项目顺利进行。
(四)项目管理能力
能够有效地管理软件项目,包括制定项目计划、分配资源、监控进度、控制质量、管理风险等。具备良好的组织协调能力,能够协调各方资源,确保项目按时、按质、在预算范围内完成。
(五)技术选型与评估能力
面对众多的软件开发技术、工具和框架,能够根据项目需求、团队能力、成本等因素,评估和选择合适的技术方案。了解技术的发展趋势,能够为项目选择具有前瞻性和可持续性的技术。
三、平时应做的关注和提升方向
(一)关注行业动态
- 关注软件工程领域的最新技术、方法和工具,如新兴的软件开发框架、测试自动化工具、项目管理平台等。通过阅读专业技术网站(如InfoQ、开源中国等)、技术博客、行业杂志等,及时了解行业动态。
- 关注软件行业的最佳实践和案例,了解其他企业在软件工程方面的成功经验和失败教训。可以通过参加行业会议、研讨会、在线讲座等方式,与同行交流分享,拓宽自己的视野。
(二)学习与实践
- 持续学习软件工程的理论知识,阅读经典的软件工程书籍(如《软件工程——实践者的研究方法》《代码大全》等)、在线课程(如Coursera、edX上的软件工程相关课程),不断深化自己的知识体系。
- 积极参与实际的软件项目,从需求分析、设计、开发、测试到维护的全过程,积累项目经验。在实践中尝试使用新的技术和方法,不断提高自己的实际操作能力和解决问题的能力。
(三)团队协作与交流
- 在项目中注重与团队成员的协作,提高团队协作能力。学会倾听他人的意见和建议,分享自己的经验和知识,共同解决项目中遇到的问题。
- 加入软件工程相关的技术社区或论坛,与同行进行交流和讨论。参与开源项目的贡献,通过与其他开发者的合作,提高自己的技术水平和团队协作能力。
四、系统分析师,第七章软件工程章,你给我出5道题,让我看看
以下是围绕系统分析师第七章“软件工程”设计的5道题目,涵盖不同核心知识点,帮助检验学习效果:
题目1
请简述瀑布模型的核心流程,并分析该模型在现代软件开发中面临的主要挑战(至少2点),以及可通过哪些方法或其他模型来弥补这些不足。
题目2
在软件需求分析阶段,系统分析师需与用户协同完成需求规格说明书的编写。请说明需求规格说明书应包含哪些关键内容,并阐述采用“原型法”进行需求获取时的优势与局限性。
题目3
软件设计原则中的“开闭原则”(对扩展开放,对修改关闭)是面向对象设计的重要准则。请结合一个实际的软件模块设计案例(如电商系统中的订单模块),说明如何遵循该原则进行设计。
题目4
软件测试是保证软件质量的关键环节,单元测试、集成测试、系统测试各有不同的测试重点。请分别说明这三种测试的主要目标,并举例说明在测试过程中可能使用的1种白盒测试方法和1种黑盒测试方法。
题目5
敏捷开发是当前流行的软件开发方法,Scrum是其中典型的框架。请列出Scrum框架中的3个核心角色,并说明Scrum中“ sprint(冲刺)”的时间周期通常范围以及每个 sprint 需完成的核心任务。