关键词:UML建模;面向对象分析;软件工程
中图法分类号:TP311 文献标识码:A
“软件工程”课程的综合性很强,其将多门计算机相关课程的知识进行了融合。“软件工程”课程教学的主要目标是帮助学生理解软件开发的特点和原理,掌握基本的开发技能,能够应用软件开发来解决实际问题,以提升其实践能力和专业素养。当前,面向对象的方式是主要的软件开发方式,因此结合市场需求特点和技术发展形势,在实际教学中也主要使用此方式。
面向对象的软件开发和面向过程的软件开发有一个共同特点,即具有一定生命周期,体现在可行性分析、需求分析、设计等各个环节,对于面向对象的软件工程来说,不同阶段之间并没有非常明确的界线。但是,在软件开发中,发现问题越早,越能够以更小的代价及时解决。因此,这就要求前期的设计分析必须严谨、到位、计划明确,以避免后期实现过于仓促和粗糙,进而导致后期需要付出极大的维护和修复成本。在众多工程技术中,建模是其中普遍使用并且得到实践检验的技术。若要阐述清楚一个系统的组织结构或动态逻辑,则可以尝试采用不同的角度、模型来划分系统结构和组织,从而有效推动系统设计开发。
1 UML特点概述
UML的提出是“站在巨人的肩膀上”的,其吸收和提炼了众多建模语言的特点和优势,因此其表达能力也是空前的优越,能够有效表达系统模型,其作为一种辅助工具可有效帮助面向对象分析设计,主要特点如下。
(1) UML在图形表示和基本概念方面,具有Booch,OMT和OOSE等方法特点,对符号系统进行了统一、规范和简化,并且对符号系统进行了补充和更新,使其具有更强大的表达能力。项目的具体需求不同,可以选择不同的图形符号,以满足个性化表达需求。(2) UML是独立存在和使用的,不受编程语言约束,能够在设计开发中搭建起沟通的中介和桥梁。(3)在进行具体建模时,若想实现最佳应用效果,则应选取简单有效的UML图形,并结合具体情况进行合适的搭配和表达。(4)结合实际的应用需求和环境变化,UML也在不断演变更新,提出了很多新的概念和形式。
UML提出的模型类型多样,能够满足不同情况和需求,从而更好地满足人们解决实际问题的需求。其能够建立更加完善、成熟的系统模型,从而更好地帮助不同人群理解问题,对抽象概念有更加准确的了解,使后期的实际推进和维护也更加可行。软件工程教学也是采用面向对象的软件工程教学,为了让学生对抽象的专业概念和冗杂的知识有更准确、清晰的认识,采用UML结合具体实例的方法,进而使教学过程更加具体、可行。
2对象软件工程教学中UML的应用
开发软件的第一步是需求分析,由开发人员进行需求调查和解析,力求准确、全面;第二步是在需求分析的基础上进行产品的设计,将其转换为成果,并且根据产品特点选择匹配的语言,实现编码需求;最后一步,需要进行后续的测试环节,包括单元、集成和系统测试,至此目标系统才算完成。开发阶段不同,所使用的开发方法也不同。“软件工程”课程的特点是关注理论教学和实践提升,前者主要采用案例教学方法,后者主要利用软件项目进行驱动。综上,实际的教学过程主要是以软件开发为导向和线索,通过实际工程案例的分析,结合UML技术,进行建模实践,从而推动实现软件,并以此为依据进行软件测试。项目讲解过程中全程贯穿UML技术,学生通过实际案例深刻理解面向对象思想的引领作用。同时,理论结合实践,帮助学生理解抽象概念知识,如类、接口等,又使其对软件工程的开发过程和指导思想有了实际理解。
UML建模技术对于面向对象的软件开发过程主要的作用體现在以下几方面:可以根据实际需求进行系统个性化的可视化操作;能够对系统行为、结构进行描述;系统构造有一定模板;决策能够更好地进行文档化操作。这里的具体分析和解释说明选择的案例是图书馆管理系统的读者功能。
2.1需求分析
软件开发过程中的第一个环节就是对用户需求进行明确和分析。对于面向对象的软件开发来说,主要以用例模型来体现。用例模型的构成部分包括参与者、用例、它们的关系,参与者和用例之间的关系为关联关系,参与者相互之间的关系为泛化关系,用例相互之间的关系有不同类型,包括包含、扩展、泛化等,这里选择的实际案例是图书管理系统。
当前的图书馆管理系统,读者主要的权限是自助借还书,通过实际调查和分析发现,读者还有很多其他功能需求,包括账号登录和操作,对图书信息的查询处理,以及超时提交罚款等。若要建立用例模型,首先需要对参与者进行识别,然后是读者。其次,需要对用例进行确定,也就是读者的功能需求,包括借还书、账号登录操作、书籍信息查询等。最后需要对用例间关系进行明确,例如登录系统可能会忘记密码,需要进行密码找回,因此找回密码与登录之间存在拓展关系:借书时需要对读者身份进行验证,因此身份验证和借书两个功能间存在包含关系:还书时如果超时,需要进行罚款提交,因此罚款提交和还书之间存在扩展关系等。通过对这些用例关系进行梳理和分析,能够将读者用例图构建起来,如图1所示。这种具体的实际案例、用例模型的分析,学生能够对其中的不同角色有更好的理解,并且更加明确这些关系概念,从而对其逻辑关系、知识结构等有更深刻的理解和掌握。
2.2系统分析和设计
系统分析的主要任务是解决“怎么做”的问题,重点是依托概念层的类图对系统静态结构进行再现,通过交互图、状态图等来反映系统的变化。描述系统动态行为可以表现对象之间的关系,反映彼此信息沟通,发现可能导致对象状态变化的事件、行为等,继而发现类的属性与行为,形成具有完全意义的类。
UML中交互图的构成是由适应不同使用场景的顺序图、通信图、交互概览图以及时序图等构成的,其中,顺序图和通信图是主要构成要素。顺序图反映消息传输的时间顺序,以及反映用例的行为顺序,通信图是表示信息收发双方之间的组织关系。通常来说,顺序图和通信图能够实现转换。
读者选用自助借书功能时,第一步需要通过验证读者证来确认合法身份。验证成功后,读者可以根据提示在指定位置放置书籍,系统会对书籍进行自动识别,从而明确借阅是否超期等。若该图书证还可以借阅书籍,则会在系统里创建该读者借阅该书的信息。顺序图就可以反映这个过程,包含读者的行为顺序和时间消耗等。若读者完成身份验证,则借书记录方要进行借书合法性查阅和借书操作、更新图书信息等,这属于有对应的方法。若要反映交互的空间性,则可以采用通信图来描述。
在对象的有效时间周期中,如果发生变化或者状态改变,就需要状态图对该段时间内的变化进行描述,通过对引发状态改变的行为进行分析和归类,以总结出引发变化的方法。在图书自动化管理系统中,新书信息写入系统后才能实现自动借阅,此时书籍会存在可借、借出和超期等状态,这些状态可以改变。如果不允许书籍流通,就需要将其信息删除。描述书籍状态的改变就是状态图。分析导致狀态改变的行为、条件等,就能找到书籍类新增、借出、已还等方法。若完成某个任务需要多个对象进行交互,或者反映某个工作的具体流程,则就需要活动图进行描述,如图2所示。
无论是系统分析或是设计阶段,类图建模都是重要的内容,包括简单的概念层类图,和较为复杂的能够为系统开发小组所理解的类。设计阶段需要借助类图、包等进行接口设计,活动图能够对其中的复杂方法和主要算法流程进行描述。比如,在图书馆信息系统中,例图、顺序图、状态图等就能反映读者的基本情况和图书的借阅信息等。在搭建类图的流程中,要明确类的属性和具体操作,对类与类间的多重性等进行具体阐述。初步完成系统模型后,还要立足项目设计需求,对整个设计进行完善和升级,如对设计进行整体统筹,明确各类指标的优先级,实现具体参数的优化;阐述较为实用的增效的技术,包括增加冗余关联,提升访问效率,扩大限定关联,缩小查询范围,减少派生属性等具体操作方面的技巧。
2.3实现阶段
面向对象的技术研发在实现层面需要完成的任务有2部分:一是把之前分析设计的结果进行解读,以便对具体面向对象的程序语言进行理解并书写,二是完成具体的实效测试。在设计的实现阶段,主要从实现层类图变成具体的程序结构,增加控制类;顺序图、活动图等可以表述程序的完成流程;根据通信图中的消息传输情况,可以找到对应的操作函数和属性变量;根据状态图反映的变量或者行为发现对应类的操作。
设计实现的各个阶段都要依托具体的测试,包括单元测试、集成测试和系统测试等。它们的关系具体表现为:单元测试是根据实现层类图和类的说明书来测试已经完成的程序,集成测试是依据设计类图、构件图、通信图等,确保程序模块在系统中的正确位置;系统测试是依据例图对系统功能顺利、正确运行进行测试,以满足用户的具体要求。讲解测试理论和实现要结合UML系统的分析和设计,从而让理论更便于理解,以及对UML在面向对象软件开发中的重要意义进行精准描述,以加深认识。
2.4运行和维护阶段
完成全部系统测试后,要对系统进行运行和维护,依据UML配置图,让系统软件和硬件在具体场景中进行运行。在这个过程中,如果发现问题就要及时进行维护和调试,从而发现问题并进行整改。
3结束语
讲解面向对象的“软件工程”课程需要引入多个抽象的概念和理论,UML提供了多角度观察和描述软件系统特征的具体策略,能够被应用到软件开发的具体场景和不同阶段中:UML模型和软件工程项目实践相结合,能够提升教学的直观性和实用性,让学生能够更深入地了解教学内容,也能更好地展示教学内容的系统性,从而有助于落实各项教学任务和教学要求。
作者简介:
李莉(1980—),硕士,讲师,研究方向:软件工程。