软件工程师入门学习
软件工程专业需要掌握的知识

软件工程专业需要掌握的知识软件工程作为计算机领域中的一个重要分支,涉及到多个方面的知识和技能。
以下是软件工程专业需要掌握的一些核心知识。
一、编程语言编程语言是软件工程师必备的基本技能。
常见的编程语言包括Java、Python、C++、JavaScript等。
除了掌握这些语言的基础语法,软件工程师还应该具备编写高效、可读性强的代码能力,并了解不同语言之间的优缺点和应用场景。
二、数据结构和算法数据结构和算法是计算机科学中的核心概念,对于软件工程师来说尤为重要。
软件工程师需要了解常见的数据结构(如数组、链表、树、图等)和算法(如排序、搜索、动态规划等),并能够在实际开发中应用它们。
这有助于提高软件性能,优化软件结构,并解决复杂的问题。
三、操作系统操作系统是计算机系统中管理硬件和软件资源的核心组件。
软件工程师需要了解常见的操作系统(如Windows、Linux等)的基本原理和工作机制,包括进程管理、内存管理、文件系统和设备驱动程序等。
此外,还应该了解并发编程的概念和多线程处理方法。
四、数据库数据库是存储和管理大量数据的关键组件。
软件工程师需要了解关系型数据库(如MySQL、Oracle等)和非关系型数据库(如MongoDB、Redis等)的基本原理和使用方法。
此外,还应该了解SQL语言以及数据库设计和优化等方面的知识。
五、网络编程网络编程是实现分布式系统和互联网应用的关键技术。
软件工程师需要了解TCP/IP协议栈、HTTP协议以及常见的网络协议(如FTP、SMTP、POP3等)。
此外,还应该了解Web开发的基础知识(如HTML、CSS、JavaScript等),并能够使用常见的网络编程框架和库进行开发。
六、设计模式设计模式是解决常见问题的最佳实践。
软件工程师需要了解常见的面向对象设计模式(如单例模式、工厂模式、观察者模式等)和常用的设计原则(如开闭原则、单一职责原则等),以便在实际开发中提高代码的可重用性和可维护性。
软件工程师入门学习

软件工程师入门学习一.概述什么是软件工程,为什么要软件工程?1.软件要知道什么是软件工程,当然得先知道什么是软件.软件就是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据和相关文档的完整组合.注意:软件不仅包括程序,还包括文档.所以做软件也不仅仅是编程序,还需要写文档,后者应该提到与前者并重的地位。
2.软件危机从50年代到60年代,人们曾经把程序设计看作是一种任人发挥创造才能的技术领域,只要程序能得到正确的结果,程序的写法可以不受任何约束.人们认为好的程序应该是运用了许多与众不同的技巧和窍门的程序.这种观点好象把编程序当成了一种艺术,因为艺术总是宣扬个性,喜欢与众不同.(实际上,编程序的确可以看做是一种艺术,不过这种艺术是在遵循一定范式和准则这个前提下的艺术,个人观点)然而,随着软件的规模越来越大,人们在实践中发现随心所欲编写的程序给维护,修改带来了很大的麻烦.程序晦涩难懂,不同程序员,不同时期编写的模块难以接口.因此,软件开发遇到了很大的困难.往往投入很大,收获甚微.做的软件漏洞百出,或无人使用.这就是软件危机.于是,人们在茫然中,渐渐的抛弃了原先的观点,开始探索一种新的软件开发的思想.这就导致了软件工程的产生.程序也从按个人意图创造的"艺术品"转化为一种工程化的产品。
3.软件工程的定义软件工程的定义很多,如:“软件工程是开发,运行,维护和修复软件的系统方法”;“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”等等。
定义是抽象的,掌握精髓才是关键。
对软件工程的最好理解就是“只可意会,不可言传”,试问各位看官,您们都学过化学,但化学的定义是什么呢?但是,为了更快的意会,有必要在此废话几句。
软件工程可以看作是一种方法,一种思想,就是指导大家如何更好地开发软件的方法和原则。
软工也可看作是一种工具,就是帮助大家分析,设计软件的工具,如:流程图,数据字典,以及一些辅助软件等。
嵌入式软件工程师入门基础知识

嵌入式软件工程师入门基础知识嵌入式软件工程师是一种高端的职业,他们的作用是制造、设计和开发最先进的嵌入式系统。
这些系统常常在一些设备上使用,如智能手机、电视机、电子设备和工业设备等等。
作为嵌入式软件工程师,必须要具备一定的基础知识,以下是一些入门基础知识。
1. 学习嵌入式系统基础知识嵌入式软件工程师要首先掌握嵌入式系统的基础知识,如处理器、微控制器、嵌入式操作系统等等。
这些基础知识是开发嵌入式系统所必须的。
2. 掌握编程语言作为一名嵌入式软件工程师,必须熟练掌握C和C ++等编程语言,这两种语言是嵌入式系统开发所必须的编程语言。
3. 熟悉电子电路知识为了能够设计和开发嵌入式系统,嵌入式软件工程师还需要熟练掌握电子电路的知识。
这些知识包括数字电路、模拟电路、信号处理、嵌入式系统电路设计等等。
4. 掌握常用的开发工具开发嵌入式系统时,需要使用各种各样的工具,如调试器、编译器、仿真器等等。
嵌入式软件工程师必须要掌握这些工具,以便在开发嵌入式系统时能够使用这些工具。
5. 学会如何进行测试和调试在嵌入式系统开发中,测试和调试是非常重要的环节。
嵌入式软件工程师必须要学会使用各种测试和调试工具,以便能够快速地找出问题并进行修复。
6. 掌握版本控制系统在嵌入式系统开发中,版本控制系统是非常重要的。
这些系统可以让嵌入式软件工程师进行源代码管理,并且可以方便地协作开发项目。
总之,嵌入式软件工程师必须要具备一定的基础知识,包括嵌入式系统基础知识、编程语言、电子电路知识、常用的开发工具、测试和调试以及版本控制系统等等。
掌握这些知识可以帮助嵌入式软件工程师在开发嵌入式系统时更加得心应手。
软件行业入门基础知识

软件行业入门基础知识在软件行业入门之前,了解以下几个基础知识可以帮助您更好地理解和适应这个行业:1. 编程语言:了解一种或多种编程语言,例如Java、Python、C++等。
不同的编程语言有不同的语法和特点,了解编程语言可以帮助您编写和理解代码。
2. 数据结构和算法:熟悉常见的数据结构(如数组、链表、栈、队列、树等)和算法(如排序、搜索、图算法等)。
这些知识对于优化代码和解决问题非常重要。
3. 操作系统和网络基础:了解基本的操作系统原理和网络概念,例如进程管理、内存管理、文件系统、网络通信等。
这些知识有助于理解软件运行环境和网络交互。
4. 软件工程和开发方法:学习软件开发的基本原理和方法,如需求分析、设计、编码、测试、部署等。
了解软件工程和开发流程可以帮助您设计和开发高质量的软件。
5. 数据库和SQL:了解关系型数据库的基本概念和SQL语言的基本操作。
数据库是存储和管理数据的关键组件,而SQL是用于查询和操作数据库的重要语言。
6. 版本控制系统:熟悉版本控制系统,如Git或SVN。
版本控制系统可以帮助团队协作开发,并保留代码的历史记录。
7. Web开发基础:了解基本的前端(HTML、CSS、JavaScript)和后端(如服务器端语言、数据库等)开发概念。
Web开发是软件行业的一个重要领域。
8. 软件测试:学习基本的软件测试技术和方法,如单元测试、集成测试、系统测试等。
软件测试是确保软件质量的重要环节。
9. 常见开发工具和框架:掌握常见的开发工具,如集成开发环境(IDE)、代码编辑器、调试器等。
了解流行的开发框架和库,如Spring、Django、React 等,可以提高开发的效率。
10. 持续学习和技术跟进:软件行业发展迅速,持续学习和跟进新技术是非常重要的。
关注行业动态、参与开发社区、阅读技术博客和书籍可以帮助您保持竞争力。
以上是软件行业入门的基础知识。
不同的职位和领域可能需要不同的专业知识,但这些基础知识是通用且重要的。
软件工程师必学《红宝书》-计算机基础课

软件工程师必学《红宝书》-计算机基础课摘要:一、引言二、软件工程师必学的《红宝书》1.《红宝书》的概念2.《红宝书》的重要性三、计算机基础课程1.计算机组成原理2.数据结构和算法3.操作系统4.计算机网络四、软件工程师如何学习《红宝书》1.理解基本概念2.动手实践3.结合项目经验五、结论正文:一、引言在软件工程师的职业发展道路上,有一本书是必不可少的,那就是被誉为“红宝书”的经典教材。
本文将介绍《红宝书》的内容以及为什么软件工程师必须学习它,并探讨其中的计算机基础课程。
二、软件工程师必学的《红宝书》1.《红宝书》的概念《红宝书》是对计算机科学与技术领域核心知识的总结,包括计算机组成原理、数据结构和算法、操作系统、计算机网络等课程。
这些课程为软件工程师提供了扎实的理论基础,帮助他们更好地理解和解决实际工作中的问题。
2.《红宝书》的重要性《红宝书》中的知识是软件工程师必备的基本素养。
掌握这些知识可以帮助他们更好地理解计算机系统的运行原理,提高编程效率,分析问题,优化算法,更好地解决实际问题。
三、计算机基础课程1.计算机组成原理计算机组成原理课程主要介绍计算机硬件的基本组成、功能和工作原理,包括CPU、内存、输入输出设备等。
理解计算机组成原理对于软件工程师来说至关重要,因为这将帮助他们更好地理解程序运行的底层机制。
2.数据结构和算法数据结构和算法课程涉及数据表示、数据存储、数据处理等方面的知识。
掌握这些知识可以帮助软件工程师编写高效、可维护的代码,提高程序性能。
3.操作系统操作系统课程讲述计算机系统的基本软件——操作系统的原理和实现。
了解操作系统的工作原理有助于软件工程师更好地管理资源、调度任务、优化程序性能。
4.计算机网络计算机网络课程主要介绍计算机网络的原理、协议和技术。
掌握计算机网络知识可以帮助软件工程师设计和实现分布式系统、优化网络通信、解决网络问题。
四、软件工程师如何学习《红宝书》1.理解基本概念学习《红宝书》时,软件工程师应关注基本概念和原理,而不仅仅是具体的技术和工具。
软件开发需要学什么 软件工程师必备基础知识

说起软件开发,大家都不陌生。
作为互联网行业中的金牌职业,软件开发的高薪回报和良好前景受到许多年轻人的青睐。
不少0基础想学软件开发的人士都有这样的疑问,软件开发需要学习多久,主要学习什么呢?小编在咨询北大青鸟佳音校区资深的软件开发老师后,结合自己的经验给大家总结了几点。
1、基础知识学软件开发往往要与数学和英文打交道,所以要有一定的数学、英语基础,有一定的基础在学习软件开发上可以说是事半功倍了。
如果英语、数学不错的,可以跳过这一步。
2、基础编程语言知识北大青鸟佳音校区的资深软件开发老师指出,实现软件运行都由某种程序语言来实现,所以学好程序语言是做好软件开发工作的必修课。
因此想要学习软件开发,要做的第二步就是选择一门编程语言进行学习(对于有英文、数学基础的算是第一步),并且专心学好一门语言,因此初学者最好根据自身喜好以及对自身将来的职业定位来选择要学习的语言。
对于软件开发,确定一个感兴趣的或者擅长的方向很重要。
一般来说想做好软件开发,学习的编程语言不得少于一门,目前主流的编程语言有Java、PHP、.net、C#语言等,软件开发形式多种,先学好这些基础语言,之后字慢慢扩展。
其实编程语言之间有它们的共通性,比如每种编程语言都有数据类型、变量、常量、流程控制语句、函数、输入输出等概念,但不同语言针对这些概念有他们自己的表现形式,而在学习的过程中,最重要的是要养成“编程的思想”,了解编程的内涵,将自己培养成一个开发人员。
3、数据库(SQL Server)知识除了学习基础语言,还要学习数据库的知识,数据的存储、调用在软件开发中是必不可少的。
4、web相关知识HTML、CSS、JavaScript。
经过这四个学习阶段,基本已经掌握了一个完整的开发基础了,之后就是深入的学习各种框架(比如spring、structs2、hibernate 等)之类的了。
软件开发要学多久?对于有意向学习软件开发的人士来说,学习时间是首要考虑的一个问题。
软件工程师的入门技能和职业规划

软件工程师的入门技能和职业规划随着信息技术的迅猛发展和互联网的普及,软件工程师逐渐成为了热门职业之一。
尤其是在当今数字化时代,软件工程师的需求越发旺盛。
那么,如果想要成为一名优秀的软件工程师,有哪些入门技能和职业规划需要掌握呢?一、入门技能1.计算机基础知识想要成为一名合格的软件工程师,首先要掌握计算机基础知识,包括计算机硬件、操作系统、计算机网络等方面。
这是为了能够深入了解计算机的基本组成和原理,知晓软件开发所依赖的底层基础设施。
2.编程语言成为一名优秀的软件工程师必须掌握至少一种编程语言,例如Java、Python、C++等。
掌握多门语言可以提高自己的工作效率并丰富自己的编程思路。
要熟练掌握所选用的编程语言中的基本语法和面向对象编程思想,从而能够快速、高效地进行软件开发。
3.数据结构和算法数据结构和算法是软件工程师必备的技能。
熟练掌握这两个领域可以提高代码效率、减少空间和时间复杂度,并优化软件系统性能。
因此,软件工程师需要花费时间深入学习这个领域,以便提升自己的软件开发能力。
4.版本管理工具常见的版本管理工具包括Git、SVN等。
使用版本管理工具可以方便地记录代码的变化和修改,便于多人协作开发,并支持代码回退和分支管理等功能。
掌握这些工具可以提高软件开发的效率,同时也是职业规划中重要的一步。
5.测试和调试能力在软件开发中,测试和调试是非常重要的环节。
软件工程师需要具备应用调试工具和编写测试用例的能力,以便找出程序中的问题并进行修复。
掌握这些技能可以帮助软件工程师有效地减少错误率和提高软件的可靠性。
二、职业规划1.职业重心在软件工程师的职业规划中,首要任务是确定职业重心。
考虑自己的技能和兴趣,选择一个有前景、发展空间大的职业领域,成为该领域中的专家。
同时要将自己的职业规划与公司的战略目标和发展方向紧密结合,以方便自己能够获得更好的晋升机会和薪资待遇。
2.继续学习和进修软件工程师需要经常更新自己的知识和技能,跟上新技术和新发展的步伐。
软件工程初学者必读:入门教程(二)

软件工程初学者必读:入门教程一、软件工程的定义和作用软件工程是通过系统化的、可量化的方法进行软件的开发、运维和改进的过程。
随着信息技术的发展,软件在我们的日常生活和各行各业中扮演着越来越重要的角色。
软件工程的目的是为了提高软件开发的可靠性、可维护性、可扩展性和安全性,以满足用户和业务的需求。
二、软件开发的生命周期软件开发通常按照一系列阶段来进行,这些阶段被称为软件开发生命周期。
常见的软件开发生命周期包括需求分析、系统设计、编码、测试、部署和维护。
在每个阶段中,不同的活动和工具被用来支持软件的开发和管理过程。
三、需求分析需求分析是软件开发的第一步,也是最为关键的一步。
在这个阶段,开发团队需要与用户合作,明确软件的功能和性能要求。
通过与用户沟通和理解他们的需求,开发团队可以准确地捕捉到用户的期望,为后续的开发工作打下坚实的基础。
四、系统设计在需求分析之后,开发团队需要进行系统设计。
系统设计阶段包括架构设计、模块设计和数据库设计等,旨在确定软件系统的整体结构和组成部分。
在设计过程中,开发团队需要重点考虑系统的可扩展性、灵活性和可重用性,以便在后续的开发和维护过程中更加方便。
五、编码编码阶段涉及将系统设计的概念转化为实际的代码。
在这个阶段,开发团队需要根据设计文档实现各种功能模块,并遵循编码规范和最佳实践。
编码是软件开发的核心环节,需要开发人员具备良好的编程技巧和逻辑思维能力。
六、测试测试是软件开发过程中不可或缺的一环。
通过测试,开发团队可以发现和修复软件中的缺陷和问题,确保软件的质量和可靠性。
测试可以分为单元测试、集成测试和系统测试等不同层次,每个层次都有其独特的目的和方法。
开发人员需要熟悉各种测试技术,并编写高质量的测试用例来验证软件的功能和性能。
七、部署和维护部署和维护是软件开发生命周期的最后两个阶段。
在部署阶段,开发团队需要将软件安装到目标服务器或用户设备上,并进行系统配置和网络连接等相关工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程师入门学习一.概述什么是软件工程,为什么要软件工程?1.软件要知道什么是软件工程,当然得先知道什么是软件.软件就是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据和相关文档的完整组合.注意:软件不仅包括程序,还包括文档.所以做软件也不仅仅是编程序,还需要写文档,后者应该提到与前者并重的地位。
2.软件危机从50年代到60年代,人们曾经把程序设计看作是一种任人发挥创造才能的技术领域,只要程序能得到正确的结果,程序的写法可以不受任何约束.人们认为好的程序应该是运用了许多与众不同的技巧和窍门的程序.这种观点好象把编程序当成了一种艺术,因为艺术总是宣扬个性,喜欢与众不同.(实际上,编程序的确可以看做是一种艺术,不过这种艺术是在遵循一定范式和准则这个前提下的艺术,个人观点)然而,随着软件的规模越来越大,人们在实践中发现随心所欲编写的程序给维护,修改带来了很大的麻烦.程序晦涩难懂,不同程序员,不同时期编写的模块难以接口.因此,软件开发遇到了很大的困难.往往投入很大,收获甚微.做的软件漏洞百出,或无人使用.这就是软件危机.于是,人们在茫然中,渐渐的抛弃了原先的观点,开始探索一种新的软件开发的思想.这就导致了软件工程的产生.程序也从按个人意图创造的"艺术品"转化为一种工程化的产品。
3.软件工程的定义软件工程的定义很多,如:“软件工程是开发,运行,维护和修复软件的系统方法”;“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”等等。
定义是抽象的,掌握精髓才是关键。
对软件工程的最好理解就是“只可意会,不可言传”,试问各位看官,您们都学过化学,但化学的定义是什么呢?但是,为了更快的意会,有必要在此废话几句。
软件工程可以看作是一种方法,一种思想,就是指导大家如何更好地开发软件的方法和原则。
软工也可看作是一种工具,就是帮助大家分析,设计软件的工具,如:流程图,数据字典,以及一些辅助软件等。
软工还可以看做是一种过程,就是软件开发的过程。
实际上,方法,工具,过程三者是软件工程的三要素.4.软件生存期软件同其他事物一样也有一个孕育,诞生,成长,成熟,衰亡的过程,这个过程就叫做软件生存期。
软件生存期含有六个步骤:制订计划,需求分析,设计,程序编码,测试和运行维护.所以,请注意,当开始计划开发一个软件的时候,这个软件的生存期就已经开始了,而不是到软件开发完成时才开始。
5.软件生存期模型软件生存期模型是用来表示软件生存期内各种活动是如何组织的,是从软件项目需求直到软件经使用后废弃为止,跨越整个生存期的系统开发,运做和维护所实施的全部过程,活动和任务的结构框架.迄今为止,已提出多种生存期模型,如:瀑布模型,演化模型,螺旋模型,喷泉模型,智能模型等.这里只介绍最基本和常见的瀑布模型。
瀑布模型,即软件开发的过程是:计划,需求分析,设计,编码,测试,运行维护六个阶段.他们是自上而下,相互衔接的固定次序,如瀑布流水,逐级下落.实际上,各个阶段的工作并非完全自上而下的,各个阶段之间可能有反复.如果采用瀑布模型开发软件,就要遵循这六个步骤.所以请注意,做软件并不等于编程序,编程序仅仅是其中的一个部分.不要认为一个人不编程序了,他就不做软件了,他可能做系统分析和总体设计,而这相对编码来说是更重要的.6.软件工程的主要研究内容从上面的瀑布模型可以看出软工的主要研究内容:软件需求分析,软件设计, 程序编码,软件测试,软件维护,软件复用,质量保证等.需要说明的是,软工的内容如马克思主义一样是发展变化的,它的内容是不断充实的.二.需求分析什么是软件需求分析,为什么要需求分析,如何进行需求分析.1.为什么要需求分析需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力, 时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,痕不得找块豆腐一头撞死.需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计.2.什么是需求分析什么是需求分析,上面已经提过,简言之就是分析软件用户的需求,细致的进行调查,把用户"做什么"的要求最终转换为一个完全的,精细的软件逻辑模型,并些出软件的需求规格说明,准确地表达用户的要求.3.需求分析的任务简言之,需求分析的任务就是解决"做什么"的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求.4.需求分析的过程需求分析阶段的工作,可以分为四个方面:问题识别,分析与综合,制订规格说明,评审.a.问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:功能需求(做什么), 性能需求(要达到什么指标),环境需求(如机型,操作系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标.b.分析与综合:逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分.最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型).c.制订规格说明书:即编制文档,描述需求的文档称为软件需求规格说明书.请注意,需求分析阶段的成果是需求规格说明书(好象软考曾经考过这个问题),向下一阶段提交.d.评审:对功能的正确性,完整性和清晰性,以及其它需求给予评价.评审通过才可进行下一阶段的工作,否则重新进行需求分析。
5.需求分析的方法需求分析的方法有很多.这里只强调原型化方法,其它的方法如:结构化方法, 动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法)在此不讨论.原型化方法是十分重要的(是软考等常考的知识点).原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能.原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其他方面上存在缺陷.建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等.如,为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型.以后的目标系统就在原型系统的基础上开发.原型主要有三种类型(软考考过):探索型,实验型,进化型.探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性.实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠.进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。
在使用原型化方法是有两种不同的策略:废弃策略,追加策略.废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统.系统构造完成后,原来的模型系统就被废弃不用.探索型和实验型属于这种策略。
追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。
进化型属于这种策略.三.软件设计什么是软件设计,如何进行软件设计。
1.软件设计与程序设计的区别程序设计就是编程序,这是大家熟悉的,很多人印象中的"做软件"就是编程序, 因此可能有人会把程序设计和软件设计等同起来.这是不对的,软件设计是对软件的整体结构,程序结构,数据结构,文件结构,接口定义等的设计,是宏观上的设计. 而程序设计仅仅是软件设计的实现,所以做软件决不简单等同与编程序。
2.软件设计的重要性需求分析阶段解决的是"怎么做"的问题,而设计阶段就是解决"如何做"的问题。
软件设计阶段所做出的关于软件总体结构等的决策将直接影响软件开发的难度, 软件维护的难易程度,他将最终决定软件质量的好坏和软件开发的成败。
3.软件设计的任务软件设计有两个步骤:概要设计和详细设计(过程设计).概要设计将软件需求转化为数据结构和软件的系统结构.详细设计通过对结构表示进行细化,得到软件的详细的数据结构和算法.概要设计阶段要完成的工作有:(1)制订规范,首先为软件开发组制订在设计时应该共同遵守的标准(如文档编写规范,函数命名准则等),以便协调组内各成员的工作.(2)软件体系结构的总体设计。
(3)处理方式设计。
(4)数据结构设计.(5)可靠性设计.(6)编写概要设计阶段的文档.(7)概要设计评审.详细设计阶段要完成的任务是:(1)确定软件各个组成部分内的算法以及各部分的内部数据组织.(2)选定某种过程的表达形式来描述算法.(3)进行详细设计的评审.也就是说概要设计是更高层的设计,而详细设计是更面向实现的设计。
4.软件设计基础软件设计的策略有:自顶向下,自底向上,以及这两种的结合,等等.自顶向下,即先从大的模块入手,把系统分为几个大的模块,然后每个大模块再分成小的模块,如此逐步细化下去,直到模块够小,能够实现为止.自底向上,与此相反,先从系统要用到的最底层的小模块设计起,然后组合某几个小模块成为一个大的模块,如此逐步综合,直到设计出整个系统.以上两种策略的综合,即可能先用自顶向下的策略设计出某几个大的模块,某个大模块的设计又采用了自底向上的设计方法,等等。
当对系统的总体结构非常清晰是可采用直顶向下的方法.而当系统的总体结构一时难以把握,可以先从小处着手,采用自底向上方法,一个一个模块的构造,直到构造出整个系统。
5.软件设计的方法与工具软件设计的方法很多,如:结构化设计方法,Jackson设计方法等.这些方法一般较为形式化和烦琐,在此不做讨论.需要说明的是,在需求分析阶段采用的"原型化方法",也可以应用于软件设计阶段,实际上在软件开发的大部分过程,原型化的思想都可采用。