
软件工程强调规范化和文档化。规范化的目的是使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,以便于后人的使用和维护,在开发过程中各类相关人员借助于文档进行交流和沟通。
另外,在开发过程中产生的各类文档使得软件的生产过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理。在用户最终验收时可以通过对提交的文档进行技术审查和管理审查,保证软件的质量。
扩展资料:
软件工程原理、软件工程过程、软件工程方法、软件工程模型、软件工程管理、软件工程度量、软件工程环境、软件工程应用、软件工程开发使用。著名软件工程专家B.Boehm综合有关专家和学者的意见并总结了多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理:
(1)用分阶段的生存周期计划进行严格的管理。
(2)坚持进行阶段评审。
(3)实行严格的产品控制。
(4)采用现代程序设计技术。
(5)软件工程结果应能清楚地审查。
(6)开发小组的人员应该少而精。
(7)承认不断改进软件工程实践的必要性。
首先说一个错误的说法:通过查看文档中是否出现synchronized修饰符,可以确认一个方法是否是线程安全的。线程安全性不是一种“要么全有要么全无”的属性。实际上,线程安全性有多种级别。针对常见的情形作简单概括:--不可变的(immutable) -这个类的实例是不可变的,不需要外部同步。例如String、long和Biginteger
--无条件的线程安全(unconditionally thread-safe) -这个类的实例是可变的,但是这个类有足够的内部同步,它的实例可以被并发使用,无需任何外部同步。例如Random和ConcurrentHashMap
--有条件的线程安全(conditionally thread-safe) -对于单独的 *** 作可以是线程安全的,但是某些 *** 作序列可能需要外部同步。条件线程安全的最常见的例子是遍历由 Hashtable 或者 Vector 或者返回的迭代器。由这些类返回的 fail-fast 迭代器假定在迭代器进行遍历的时候底层集合不会有变化。为了保证其他线程不会在遍历的时候改变集合,进行迭代的线程应该确保它是独占性地访问集合以实现遍历的完整性。通常,独占性的访问是由对锁的同步保证的。并且类的文档应该说明是哪个锁(通常是对象的内部监视器(intrinsic monitor))。
--非线程安全(not thread-safe) - 这个类的实例是可变的。为了并发地使用它们,必须利用外部同步包围每个方法调用。例如ArrayList和hashMap。
--线程对立的(thread-hostile) - 即使所有的方法调用都被外部同步包围,这个类仍不能安全地被多个线程并发使用。线程对立的类或者方法非常少,当类修改静态数据,而静态数据会影响在其他线程中执行的其他类的行为,这时通常会出现线程对立。线程对立类的一个例子是调用 System.setOut() 的类。
二、注意:
1.有条件的线程安全类,必须指明哪个方法调用序列需要外部同步,以及在执行这些序列的时候要获得哪把锁。
2.无条件的线程安全类,应该考虑使用私有锁对象(private lock object)来代替同步的方法:
因为这个私有锁对象不能被这个类的客户端程序访问,所以它们不可能妨碍对象的同步。
总结:
每个类都应该利用严谨的说明或者线程安全注解,清楚地在文档中说明它的线程安全属性。synchronized修饰符与这个文档毫无关系。有条件的线程安全类和无条件的线程安全类应该按照上述规范编写实现文档。这样可以防止客户端程序和子类的不同步干扰,让你能够在后续的版本中灵活地对并发控制采用更加复杂的方法。
什么是C语言?C语言的简介。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)