软件工程知识要点
- 格式:doc
- 大小:60.50 KB
- 文档页数:13
软件工程专业需要掌握的知识软件工程作为计算机领域中的一个重要分支,涉及到多个方面的知识和技能。
以下是软件工程专业需要掌握的一些核心知识。
一、编程语言编程语言是软件工程师必备的基本技能。
常见的编程语言包括Java、Python、C++、JavaScript等。
除了掌握这些语言的基础语法,软件工程师还应该具备编写高效、可读性强的代码能力,并了解不同语言之间的优缺点和应用场景。
二、数据结构和算法数据结构和算法是计算机科学中的核心概念,对于软件工程师来说尤为重要。
软件工程师需要了解常见的数据结构(如数组、链表、树、图等)和算法(如排序、搜索、动态规划等),并能够在实际开发中应用它们。
这有助于提高软件性能,优化软件结构,并解决复杂的问题。
三、操作系统操作系统是计算机系统中管理硬件和软件资源的核心组件。
软件工程师需要了解常见的操作系统(如Windows、Linux等)的基本原理和工作机制,包括进程管理、内存管理、文件系统和设备驱动程序等。
此外,还应该了解并发编程的概念和多线程处理方法。
四、数据库数据库是存储和管理大量数据的关键组件。
软件工程师需要了解关系型数据库(如MySQL、Oracle等)和非关系型数据库(如MongoDB、Redis等)的基本原理和使用方法。
此外,还应该了解SQL语言以及数据库设计和优化等方面的知识。
五、网络编程网络编程是实现分布式系统和互联网应用的关键技术。
软件工程师需要了解TCP/IP协议栈、HTTP协议以及常见的网络协议(如FTP、SMTP、POP3等)。
此外,还应该了解Web开发的基础知识(如HTML、CSS、JavaScript等),并能够使用常见的网络编程框架和库进行开发。
六、设计模式设计模式是解决常见问题的最佳实践。
软件工程师需要了解常见的面向对象设计模式(如单例模式、工厂模式、观察者模式等)和常用的设计原则(如开闭原则、单一职责原则等),以便在实际开发中提高代码的可重用性和可维护性。
软件工程知识点总结软件工程知识点总结1.软件工程概述1.1 软件工程定义1.2 软件工程的重要性1.3 软件生命周期2.需求分析与规格说明2.1 需求分析过程2.2 需求获取方法2.3 需求规格说明的要素2.4 需求跟踪与变更管理3.软件设计3.1 软件设计原则3.2 结构化设计方法3.3 面向对象设计方法3.4 数据库设计3.5 用户界面设计4.软件开发4.1 编码规范4.2 编程语言选择4.3 软件构建工具4.4 软件测试4.5 版本控制5.软件项目管理5.1 项目计划与进度管理 5.2 软件开发过程模型 5.3 团队协作与沟通5.4 风险管理6.质量保证与软件维护6.1 质量保证方法6.2 软件维护类型6.3 软件维护活动6.4 软件退役与替换附件:________本文档涉及的附件(请附上相关文档、图表等)法律名词及注释:________1.软件工程:________指将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护的工程学科。
2.需求分析:________确定用户对软件系统需要的功能、性能和约束等方面的要求,并以此为基础进行系统的分析和设计。
3.软件设计:________根据需求分析的结果,制定软件系统的总体结构和各组成部分的详细设计方案。
4.软件开发:________根据软件设计的方案,进行编码和调试,最终可执行的软件系统。
5.软件项目管理:________对整个软件项目进行计划、协调、控制和有效地管理,确保项目顺利完成。
6.质量保证:________通过不同的方法和技术,提高软件产品的质量,确保其满足用户的需求和要求。
7.软件维护:________对已投入使用的软件进行修复性、适应性、完善性和预防性等各方面的修改和改进。
软件工程知识点汇总1. 软件工程简介软件工程是运用系统化、规范化和可管理的方法进行软件开发、运行和维护的学科。
它涵盖了软件生命周期的各个阶段,包括需求分析、设计、编码、测试、发布和维护等。
2. 软件工程流程模型常见的软件工程流程模型包括瀑布模型、迭代模型、增量模型、螺旋模型等。
不同的模型适用于不同的项目需求和开发环境,每个模型都有其优缺点。
3. 软件需求工程软件需求工程是确定软件系统应该如何工作的过程。
它包括需求获取、需求分析、需求规格和需求验证等活动。
良好的需求工程能够确保软件系统满足客户的需求和预期。
4. 软件设计软件设计是将软件需求转化为可执行的程序设计的过程。
它包括系统架构设计、模块设计、接口设计和数据库设计等活动。
良好的软件设计能够提高软件的可维护性和可扩展性。
5. 软件开发软件开发是按照软件设计规范进行编码和测试的过程。
开发人员应该具备良好的编程技能和测试能力,并遵循编码规范和测试流程。
6. 软件测试软件测试是为了发现软件中的错误和缺陷,保证软件的质量和可靠性。
测试方法包括功能测试、性能测试、压力测试和安全测试等。
高质量的测试能够提高软件的稳定性和用户满意度。
7. 软件配置管理软件配置管理是对软件开发过程中所的各类工作产品进行控制、记录、审计和追踪的过程。
配置管理包括版本管理、变更管理、发布管理和文档管理等活动。
8. 软件项目管理软件项目管理是对软件开发项目进行规划、组织、指导和控制的过程。
它包括项目需求分析、项目计划制定、项目资源分配和进度控制等活动。
有效的项目管理能够提高软件开发效率和项目成功率。
9. 软件质量管理软件质量管理是在软件开发过程中对质量进行全面管理的过程。
它包括质量计划、质量控制和质量保证等活动。
良好的质量管理能够提高软件的可靠性和用户满意度。
10. 软件维护与迭代软件维护是在软件发布后对其进行修复bug、优化性能和添加新功能的过程。
软件迭代是对软件系统进行增量式的开发和发布,不断提高软件质量和功能。
软件工程知识点汇总软件工程知识点汇总
1、软件需求
1.1 需求概述
1.2 需求分类
1.3 需求获取与分析
1.4 需求规格说明
2、软件设计
2.1 面向对象设计
2.2 结构化设计
2.3 数据库设计
2.4 用户界面设计
2.5 系统架构设计
3、软件编码
3.1 编程语言选择与使用
3.2 编码规范
3.3 软件开发环境
3.4 编码工具和技术
3.5 调试和测试
4、软件测试
4.1 测试基础知识
4.2 测试方法与策略
4.3 白盒测试
4.4 黑盒测试
4.5 功能性测试
4.6 性能测试
4.7 集成测试
4.8系统测试
4.9用户验收测试
5、软件项目管理
5.1 项目计划与进度管理 5.2 风险管理
5.3 人员管理
5.4 项目质量管理
5.5 变更管理
5.6 项目交付与部署
6、软件维护与升级
6.1 软件维护分类
6.2 软件维护流程
6.3 软件升级策略
6.4 软件版本控制
7、软件安全
7.1 信息安全基础知识
7.2 软件安全需求与设计
7.3 安全测试与评估
7.4 安全漏洞修复与更新
附件:
法律名词及注释:
1、版权: 对一种表达形式的独特创造进行保护的法律概念。
2、商标: 表示和区分特定商品或服务来源的标识符。
3、专利: 对于新发明的独特权利,使得发明人可以禁止他人在专利权期限内使用该发明。
4、法律责任: 违反法律规定而应承担的法律后果。
软件工程主要知识点软件工程是一门涵盖多个领域的学科,它旨在研究软件的开发、维护和管理过程。
在软件工程的学习中,有许多重要的知识点需要了解和掌握。
以下是软件工程的主要知识点:1.需求工程:需求工程是软件开发的关键环节,它涉及到收集、分析和管理用户需求的过程。
了解如何正确地定义和验证需求是非常重要的。
2.软件架构:软件架构是软件系统整体结构和组织的蓝图。
学习软件架构的目的是设计出可扩展、可维护的软件系统。
3.软件开发方法:软件开发方法是指一种系统化的方法,用于规划、设计、实施和测试软件系统。
了解常用的软件开发方法,如瀑布模型、敏捷开发和迭代开发等,可以帮助我们更好地管理软件开发过程。
4.软件测试:软件测试是为了验证软件系统的正确性和可靠性而进行的一系列活动。
学会进行有效的软件测试可以帮助我们尽早发现和修复潜在的问题。
5.软件工程项目管理:软件工程项目管理是指管理和控制软件开发过程,以确保项目按时、按质量和按预算完成。
学习项目管理的知识可以帮助我们合理地安排资源、制定计划和解决问题。
6.软件质量保证:软件质量保证是指确保软件系统满足用户需求和质量标准的一系列活动。
学习如何进行软件质量评估和测试可以帮助我们提高软件的质量。
7.可维护性和重构:可维护性是软件系统易于改变和维护的程度。
学习如何进行重构可以帮助我们改进现有的软件系统,使其更加易于理解和维护。
8.软件工程经济学:软件工程经济学是研究软件开发过程中经济方面问题的学科。
了解如何进行成本估算和投资评估可以帮助我们做出明智的决策。
9.软件安全性:软件安全性是指软件系统免受恶意行为和非法访问的能力。
学习如何设计和实施安全措施可以帮助我们保护软件系统的安全。
10.软件工程伦理和法律:软件工程伦理和法律是研究软件工程中伦理和法律问题的学科。
了解软件开发过程中的道德和法律规定可以帮助我们遵守相关的标准和法律规定。
除了以上列举的知识点,软件工程还涉及到很多其他的领域,如人机交互、软件配置管理、软件工程教育等。
软件工程基础知识点总结在软件工程领域,掌握一些基础知识点非常重要。
这些知识点包括软件开发生命周期、需求分析、设计模式、软件测试等。
本文将对软件工程基础知识点进行总结和梳理,以供参考。
1、软件开发生命周期1.1、瀑布模型1.2、增量模型1.3、快速原型开发模型1.4、敏捷开发模型1.5、DevOps模型2、需求分析2.1、需求获取2.2、需求分析与规格说明2.3、需求验证与确认2.4、需求管理3、设计模式3.1、创建型设计模式3.1.1、工厂模式3.1.2、单例模式3.1.3、原型模式3.1.4、建造者模式 3.2、结构型设计模式 3.2.1、适配器模式 3.2.2、装饰器模式 3.2.3、代理模式3.3、行为型设计模式 3.3.1、观察者模式 3.3.2、策略模式3.3.3、命令模式4、软件测试4.1、黑盒测试4.2、白盒测试4.3、单元测试4.4、集成测试4.5、系统测试4.6、验收测试5、软件质量保证5.1、代码规范与静态代码分析工具5.2、缺陷管理与版本控制5.3、自动化构建与持续集成5.4、负载与性能测试5.5、安全与漏洞分析附件:- 附件A:示例需求规格说明文档- 附件B:示例工厂模式代码实现- 附件C:示例单元测试代码法律名词及注释:- 著作权:指对软件的内容享有的法律权利,包括复制权、发行权等。
- 商标权:指对软件的商标标识享有的法律权利,用于区分其它软件和服务。
- 声明:指对软件功能、质量等进行明示的声明,可用于法律保护和责任追究。
- 许可证:指授予他人使用软件的特定权限和条件的法律协议。
软件工程知识点1. 软件工程概述软件工程是一门研究和应用工程原则、方法和工具来开发和维护高质量软件系统的学科。
它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试、部署和维护。
2. 软件生命周期软件生命周期定义了软件开发过程中的各个阶段,包括需求定义、系统设计、详细设计、编码、测试、部署和维护等。
每个阶段都有特定的任务和交付物,通过严格遵循软件生命周期来管理项目,可以提高软件开发的质量和效率。
3. 软件需求分析软件需求分析是确定软件系统所需功能和性能的过程。
它包括对用户需求进行调查、分析和规范化,以便从中获得详细的系统需求。
4. 软件设计软件设计是根据需求分析的结果,确定软件系统的结构和组成部分的过程。
它包括软件架构设计、模块设计、数据结构设计等。
5. 软件编码软件编码是将设计好的软件系统转化为可执行的计算机程序的过程。
在编码过程中,开发人员需要遵循相应的编程规范和标准,以确保代码的可读性和可维护性。
6. 软件测试软件测试是为了发现和修复软件中的错误和缺陷。
测试可以分为单元测试、集成测试、系统测试和验收测试等不同的层级和类型,旨在确保软件功能的正确性和稳定性。
7. 软件部署软件部署是将软件安装和配置到用户的计算机系统中的过程。
在部署过程中,需要注意安装环境、配置文件和用户权限等问题,确保软件能够正常运行。
8. 软件维护软件维护是为了修复软件中的错误、改进功能以及适应新的需求而进行的修改和更新。
维护过程中包括问题分析、修改设计、修改代码、测试和发布等环节。
9. 软件质量保证软件质量保证是通过制定和执行软件质量标准、流程和方法,以确保软件开发过程中的质量问题被及时发现和解决的一系列活动。
包括代码审查、测试自动化、性能测试等。
10. 软件项目管理软件项目管理是对软件开发项目进行规划、组织、监控和控制的活动。
它包括项目需求管理、进度管理、资源管理、风险管理等方面,以确保软件项目按时、按质量要求完成。
软工常考知识点梳理软件工程是一门涉及软件开发的学科,它涵盖了软件的设计、开发、测试、维护等各个阶段。
在软件工程的学习和实践中,有一些常考的知识点,它们是软协的核心内容。
本文将对软工常考知识点进行梳理。
一、软件生命周期模型软件生命周期模型是指软件开发过程中各个阶段的组织和安排方式。
常见的软件生命周期模型有瀑布模型、迭代模型、敏捷模型等。
瀑布模型是一种线性顺序的开发模型,迭代模型则是循环迭代的开发模型,敏捷模型则强调快速响应变化和灵活性。
二、需求工程需求工程是确定用户需求的过程。
在软件工程中,需求工程是整个软件开发过程的基础。
需求工程包括需求获取、需求分析、需求规格说明等步骤。
常见的需求工程技术有面谈、问卷调查、故事板、用例等。
三、软件架构软件架构是软件系统的基本结构和组织方式。
良好的软件架构可以提高软件的可维护性、可扩展性和可重用性。
常见的软件架构模式有分层架构、客户端-服务器架构、微服务架构等。
四、软件开发方法论软件开发方法论是一套指导软件开发活动的原则和实践。
常见的软件开发方法论有结构化开发方法、面向对象开发方法、敏捷开发方法等。
每个方法论都有自己的特点和适用场景。
五、软件测试软件测试是为了发现和修复软件中的错误和缺陷。
常见的软件测试技术有单元测试、集成测试、系统测试、性能测试等。
软件测试是软件质量保证的重要环节,能够提高软件的可靠性和稳定性。
六、软件配置管理软件配置管理是对软件源代码和相关文档进行管理和控制的过程。
软件配置管理的目标是确保软件开发过程中的版本控制和变更管理。
常见的软件配置管理工具有Git、SVN等。
七、软件工程实践软件工程实践包括团队协作、文档编写、代码规范等方面。
良好的软件工程实践能够提高软件的质量和开发效率。
团队协作通常采用敏捷开发的方式,文档编写可以遵循软件工程规范,代码规范可以使用代码静态分析工具来进行检查。
以上是软工常考的知识点梳理,涵盖了软件生命周期模型、需求工程、软件架构、软件开发方法论、软件测试、软件配置管理和软件工程实践等方面。
软件工程知识点范文软件工程是指对软件开发过程的管理和控制,通过系统化的方法,将软件开发过程划分为需求分析、系统设计、编码、测试和维护等阶段,以提高软件开发效率、质量和可靠性。
以下是关于软件工程的一些重要知识点。
1.软件开发生命周期:软件开发生命周期是软件工程中最基本的概念之一、它包括需求分析、系统设计、编码、测试和维护等阶段。
每个阶段都有相应的工作任务和交付物。
2.软件需求分析:软件需求分析是确定软件系统用户需求和业务需求的过程。
该过程包括收集、分析和规范用户需求,将之转化为明确的需求规格说明。
3.软件系统设计:软件系统设计是根据需求分析确定的系统需求,设计软件系统的结构和组成部分。
它包括软件架构设计、模块设计和接口设计等。
4.软件编程与测试:软件编程是根据软件系统设计的结果进行软件编码的过程。
编码过程需要遵循软件编码规范,以确保代码的可读性和可维护性。
软件测试是对软件系统进行验证和确认的过程,包括单元测试、集成测试和系统测试等。
5.软件配置管理:软件配置管理是对软件系统进行管理和控制的过程,确保软件系统的版本和变更管理。
它包括配置项识别、配置控制、配置状态报告等。
6.软件质量保证:软件质量保证是对软件开发过程进行管理和控制,以达到预期的质量标准。
它包括质量计划、质量控制和质量评估等。
7.软件工程方法学:软件工程方法学是指用于软件开发过程的一系列方法和工具,以提高软件开发效率和质量。
常见的软件工程方法学包括瀑布模型、迭代模型、敏捷开发等。
8.软件项目管理:软件项目管理是对软件开发项目进行计划、组织、协调和控制的过程。
它包括项目规划、任务分配、进度追踪、风险管理等。
9.软件工程的经济学:软件工程的经济学是研究软件开发投资和回报的经济效益的学科。
它包括成本估计、投资回报分析、投资决策等。
10.软件工程的伦理和法律:软件工程的伦理和法律是指软件开发过程中必须遵守的伦理准则和法律规定。
例如,保护用户隐私、知识产权保护等。
第1章软件:计算机程序及说明程序的各种文档。
程序”是计算任务的处理对象和处理规则的描述;“文档”是有关计算机程序功能、设计、编制、使用的文字或图形资料。
软件生产的发展:程序设计时代,程序系统时代,软件工程时代。
软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。
软件工程性质:它涉及计算机科学、工程科学、管理科学、数学等领域,计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。
软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。
软件工程要用管理科学中的方法和原理进行软件生产的管理。
软件工程要用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。
软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。
在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。
在软件开发管理中,主要是研究软件管理学、软件经济学、软件心理学等。
软件工程面临的问题:软件费用;软件可靠性;软件维护;软件生产率;软件重用。
软件工程过程:获取过程;供应过程;开发过程;操作过程;维护过程;管理过程;支持过程。
软件生存周期:可行性分析和项目开发计划;需求分析;概要设计;详细设计;编码;测试;维护。
软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
增量模型是一种非整体开发的模型。
瀑布模型是一种整体开发的模型螺旋模型将瀑布模型与增量模型结合起来,加入了风险分析,用于复杂的大型软件开发;分为几个螺旋周期:第一,制定计划;第二,风险分析;第三,开发实施;第四,用户评估。
喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。
喷泉模型使开发过程具有迭代性和无间隙性。
基本知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。
变换模型是一种适合于形式化开发方法的模型。
从软件需求形式化说明开始,经过一系列变换,最终得到系统的目标程序。
软件开发方法:结构化方法由结构化分析、结构化设计、结构化程序设计构成。
它是一种面向数据流的开发方法。
第一.结构化方法总的指导思想是自顶向下、逐步求精。
它的基本原则是功能的分解与抽象,它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题。
第二.Jackson方法是一种面向数据结构的开发方法。
第三.维也纳开发方法(VDM)是一种形式化的开发方法,软件的需求用严格的形式语言描述。
第四.面向对象的开发方法包括面向对象分析、面向对象设计、面向对象实现。
面向对象开发方法有Booch方法、Coad方法第2章软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
注意,可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得去开发,其中的问提能否解决。
可行性研究实质上是要进行一次简化、压缩了的需求分析、设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。
可行性研究的任务技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
包括:开发的风险;资源的有效性;技术;开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。
经济可行性包括成本――效果分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。
社会可行性包括:合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。
典型的可行性研究有下列步骤:确定项目规模和目标;研究正在运行的系统;建立新系统的高层逻辑模型;导出和评价各种方案;推荐可行的方案;编写可行性研究报告。
可行性研究报告的主要内容:引言;可行性研究前提;对现有系统的分析;所建议系统的技术可行性分析;所建议系统的经济可行性分析;社会因素可行性分析;其他可供选择方案;结论意见。
成本――效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。
效益分有形效益和无形效益两种。
有形效益可以用货币的时间价值、投资回收期、纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。
投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。
项目的纯收入,也就是在整个生存周期之内的累计经济效益(折合成现在值)与投资之差。
项目开发计划:项目概述;实施计划;人员组织及分工;交付期限。
第3章在进行可行性研究和软件计划以后,如果确认开发一个新的软件系统是必要的而且是可能的,那么就进入需求分析阶段。
需求分析是指,开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
它的难点主要体现在以下几个方面:问题的复杂性;交流障碍;不完备性和不一致性。
需求易变性。
需求分析的基本任务是要准确地定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。
本阶段要进行以下几方面的工作:问题识别:功能需求;性能需求;环境需求;用户界面需求分析与综合,导出软件的逻辑模型编写文档:需求规格说明书;初步用户使用手册;确认测试计划;修改完善软件开发计划。
结构化分析(SA)是面向数据流进行需求分析的方法。
SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分。
这些描述工具是:数据流图;数据字典;描述加工逻辑的结构化语言,判定表、判定树。
“数据流图(DFD)”描述的分解,即描述系统由哪几部分组成,各部分之间有什么联系等等。
“数据字典”定义了数据流图中每一个图形元素。
结构化语言、判定表或判定树则详细描述数据流图中不能被再分解的每一个加工。
数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成。
加工(又称数据处理)。
对数据流进行某些操作或变换。
数据存储(又称文件),指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。
数据源点或终点:是本软件系统外部环境中的实体,统称外部实体。
数据字典(DD)就是用来定义数据流图中的各个成分的具体含义的,它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。
数据字典的内容及格式数据项是组成数据流和数据存储的最小元素。
数据流条目;数据存储条目;数据项条目;加工条目数据字典中的加工逻辑主要描述该加工“做什么”,即实现另工的策略,而不是实现加工的细节,它描述如何把输入数据流变换为输出数据流的加工规则。
加工逻辑也称为“小说明”,描述加工逻辑一般用以下三种工具:结构化语言、判定表、判定树。
结构化语言是介于自然语言和形式语言之间的一种半形式语言。
它的结构可分成外层和内层两层:外层用来描述控制结构,采用顺序、选择、重复三种基本结构;内层对于顺序执行和循环执行的动作,用结构化语言描述。
对于存在多个条件复杂组合的判断问题,用判定表和判定树。
IDEF0:用来描述系统的功能活动及其联系,建立系统的功能模型。
IDEF1:用来描述系统的信息及其联系,建立系统的信息模型。
IDEF2:用来进行系统模拟,建立系统的动态模型。
传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统“做什么”的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。
形式化方法是将需求规格说明用形式规约语言来描述。
典型的有基于模型的Z语言及VDM开发方法。
第4章在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。
进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明”文档中,软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。
然后对结构进一步细分,称为详细设计或过程设计。
概要设计的基本任务:1设计软件系统结构(简称软件结构)――采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
软件结构设计是以模块为基础的,在需求分析阶段,已经把系统分解为层次结构。
设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。
2数据结构及数据库设计:数据库的设计指数据存储文件的设计(概念设计、逻辑设计、物理设计),数据库的“概念设计”、“逻辑设计”分别对应于系统开发中的“需求分析”与“概要设计”,而数据库的“物理设计”与模块的“详细设计”相对应。
3编写概要设计文档(概要设计说明书、数据库设计说明书、用户手册、修订测试计划,对测试策略、方法、步骤提出明确要求。
)4评审:对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等等都一一进行评审。
模块的基本属性:接口指模块的输入与输出;功能指模块实现什么功能;逻辑描述内部如何实现要求的功能及所需的数据;状态指该模块的运行环境,即模块的调用与被调用关系。
功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。
模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
开发一个大而复杂的软件系统,将它进行适当的分解,不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率,这就是模块化的依据。
抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素。
通过抽象,可以确定组成软件的过程实体。
通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。
信息隐蔽指在设计和确定模块时,使得一个模块内部包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。
模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。
耦合性也称块间联系。
指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
无直接耦合数据耦合标记耦合控制耦合公共耦合内容耦合(低――高)1无直接耦合2数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递。
3标记耦合指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址。