读《系统分析与设计方法》一书有感作为一个软件专业的学生,理解和掌握系统分析与设计的知识是必不可少的。在阅读《系统分析与设计方法》一书中以及加上老师教导,我学到了很多东西,收获不少。系统就是由若干可以相互区别、由相互联系并且各自独立的单元组成各个子系统之间同样是独立而又相互联系的。系统具有集合性、相关性、目的性、整体性和环境适应性。在开发完成一个软件项目的过程中,系统工程必须经过开发阶段、建造阶段、运行阶段、更新阶段、维护阶段。系统分析与设计的方法主要包括结构化生命周期法(又称瀑布法)、原型化方法(迭代法)、面向对象方法。按时间过程来分,开发方法分为生命周期法和原型法,实际上还有许多处于中间状态的方法。原型法又按照对原型结果的处理方式分为试验原型法和演进原型法。试验原型法只把原型当成试验工具,试了以后就抛掉,根据试验的结论做出新的系统。演进原型法则把试好的结果保留,成为最终系统的一部分。按照系统的分析要素,可以把开发方法分为三类:①面向处理方法(ProcessingOriented,简称PO)。②面向数据方法(DataOriented,简称DO)。③面向对象的方法(ObjectOriented,简称OO)。系统分析和设计应遵循的原则有:系统开发是面向客户的,应从客户的角度考虑。诸如系统开发生命周期之类的产品更新换代机构应该在所有的信息系统开发项目中建立起来。信息系统开发的过程并不是一个顺序的过程,它允许步骤的重叠和倒转等。如果系统的成功可能性受到很大限制时,应取消整个项目。文档材料是系统开发生命周期中重要的可递交成果,应加以重视。在本书的第一部分中,主要集中于系统分析和设计的整体描述,包括系统分析和设计方法的环境,信息系统构件,信息系统开发,项目管理。期中印象比较深刻的是系统开发过程的能力成熟度模型(CMMI)。信息系统和软件的CMM框架用来帮助改善其系统开发过程的成熟度。CMM包括了五个成熟度等级:初始级、可重复级、已定义级、已管理级、优化级。期中,每个等级都是下一个等级的必须条件。在软件开发过程中需求分析阶段是至关重要的一个阶段,需求分析阶段可能被称为定义阶段或者逻辑设计阶段。需求分析阶段的第一个任务是确定需求,在这个阶段至少将目标转换成为满足其需要的功能需求和非功能需求的框架。在这个阶段需要交付的成果是功能需求和非功能需求的草稿。在初步定义完了功能需求和非功能需求后,得排列需求的优先次序。如果一个项目落后于进度或者超出预算,,知道哪个需求比其他需求更重要可能是很有用的。在排列需求的优先次序中可以使用到时间盒的技术。需求分析并不会真正的技术,因为企业需要具有快速适应不断变化的需求和机会的能力。信息系统不能比企业自身的响应技术还慢。在学习本书第二部分的时候,我了解到了需求分析在整个项目开发中的作用以及成为整个项目主导的因素。只要好的需求才能设计开发出好的软件项目。在项目开发过程中,我们还可以利用图表的形式来简化方便人员的开发设计。期中有五种图表是系统分析师常用的:类图、用例图、协作图、顺序图、状态图。期中用例图是用例建模的产物,它以图形化的方式将系统描述成用、参与者(用户)及其之间的关系。简单的说就是用直立的小人来表示参与者(用户),用圆圈来表示用例,他们之间以箭头的形式来连接。关系包括了:关联关系、扩展关系、使用关系、依赖关系、继承关系。但是书上没讲到《include》关系,跟老师的讲解有点出路。老师在讲义上通过画图的方式很好的解释了《include》和《extend》的关系。数据建模这一章节中,我了解了数据建模的含义,它是一种为数据库定义业务需求的技术。数据建模中比较重要的概念有实体和属性之间的关系,关系是连接实体的一个时间,或者仅仅是存在于实体之间的逻辑关系。关系有很多种类,多对多、一对多、一对一、等等。这些关系的图形化符号记起来很不容易,但是我自己想到了一个比较容易记忆的简单的方法。一个就用“|”表示,零个就用“0”表示,多个就用“”表示,然后根据相应的说明来选择。比如零个或一个(0|),一个或多个(|)。过程建模是一种组织和记录数据的结构和流向的技术,它记录系统的“过程”和有系统的“过程”实现的逻辑、策略和程序。期中也介绍到了数据流图(DFD),数据流图是一种描述通过系统的数据流以及系统实施的工作或处理过程的工具。我觉得数据流图DFD的最大的优点就是容易阅读,因为数据流图仅有三种符号和一种连接:圆角矩形表示要完成的过程或者工作,正方形表示外部代理(系统的边界),开放的方框表示数据存储(可以是文件或者数据库),箭头表示数据流(可以是输入和输出,或者是表示到过程和来自过程)。统一建模语言UML的目的就是对面向对象系统进行可视化、评述、和文档化。它适用于系统开发从需求规格描述道系统完成后测试的不同阶段(需求分析阶段、分析阶段、设计阶段、编程阶段、测试阶段)。UML2.0的模型主要图包括了:用例图、活动图、类图、对象图、状态机图、组合结构图、交互图、定时图、组件图、部署图和包图。在理解这章的过程中,我感觉比较轻松,但是把一些关系,事件,实体等等用图形化的形式表示出来还是非常难的。用UML设计面向对象系统时候,我们得准确的找到实体类、接口类、控制类、持续类、系统类和设计关系。在面向对象设计的过程中,主要包括了一下活动:对用例模型加以精炼以反映实现环境;建模支持用例情景的对象交互、行为和状态;修改对象模型以反映实现环境。前面说到需求分析是整个软件项目开发中最重要的一环,其实我觉得可行性分析也是跟需求分析一样的重要。因为信息是一个必须经过检验的重要资本投入,就像市场要检验一个新产品,系统分析员应该考虑投资能够收回吗?是否有其他投资能够带来比预期更高的回报。要说他们的区别,我个人觉得是:可行性分析是要决定“做还是不做”。需求分析是要决定“做什么,不做什么”。可行性分析报告有六个准则:运行可行性、文化可行性、技术可行性、进度可行性、经济可行性。只有进行了可行性分析报告,才能够确定企业是否要做这个项目。如果说在可行性报告中显示没有成功的可能,那么就没有必要再做需求分析了,整个项目就不会做下去了。进行可行性分析报告可以避免项目中途告终的结果,在系统开发过程中举足轻重。数据库开发与设计这章,感觉书上讲解的没有老师讲的详细。书上并没有提到范式,但是在课堂上我了解到数据库设计的范式。有第一范式、第二范式、第三范式、BC范式等。等级越高,数据冗余越少,对系统调用数据库更方便。数据库的核心是DBMS,DBMS的核心是数据库引擎,引擎响应专门的命令以创建数据库结构,然后创建、读取、修改和删除数据库中的记录。DBMS使用数据定义语言(DDL)创建记录类型、字段和结构化关系,还定义了数据库视图;DBMS还是用数据处理语言(DML)用来创建、读取、修改和删除数据库中的记录。但是并非所有数据库的DBMS都被要求使用DDL和DML。看完这章,总结了一下建立关系数据库模式的步骤,首先要为每个实体类型建立一张表,然后为每张表选择一个主键,同时增加外键来表示一对多的关系,接着还可以建立几个新表来表示多对多的关系,然后还得定义参照完整性约束,评价模式质量,并且进行必要的改进,最后为每个字段选择适当的数据类型和取值约束。数据库在系统开发的过程中是必不可少的,几乎所有框架类型都得用到数据库,它也是MVC框架的底层核心。对于本书的还有一个比较映像深刻的就是UI(userinterface),用户界面设计。一个良好的用户界面应该为用户提供友好的使用方式,通过用户界面用户可以同应用程序打交道,处理输入并且获得输出。Galitz曾经提出过用户界面设计的原则:理解你的用户及任务、让用户参与界面设计、在实际用户中测试系统、进行迭代设计。记得以前大二的时候学习JAVA的时候,我曾经开发过基于图形用户界面(GUI)的聊天软件,不过当时的界面设计完全设计的是随心所欲,并没有理论作为指导。在学习VB课程的时候学过UAR,简单的了解了一些关于界面友好化设计的原则。这本书也给出了用户界面设计过程的几个步骤:1.以图表形式描述用户界面对话;2.原型化对话和用户界面;3.获得用户反馈;4.如果需要,回到1步或者2步。最后总结下,虽然我没用把这本书的每一个地方都认真精读,有些地方略读的,但是看完整本书后我收获很大。读完《系统分析与设计方法》这本书再加上老师在课堂上的一些讲解以及以前学习事件过程中的收获,我对于系统分析与设计有了进一步的理解,能高屋建瓴的看待系统分析与设计整个过程的步骤以及增加了一些开发设计中的重要事件的理论知识。对于系统分析的心得