This is a summery of the first lecture of Advanced SW Engineering
The properties of Software Development
Softwares are inherently complex. Although there are many reasons most appealing reason is the complexity of the problem domains. Software developers have to thoroughly identify the problem domain, which is a fairly difficult task. Since the problem domains are new to them, it is difficult to develop and manage software. Contradictory requirements and Impedance mismatch between users and developers, makes the development process more complex. In addition non functional requirements and functional requirement changes add further complexity to the system. This situation leads high rewards for the developers over the other professions.
Attributes of a Complex System
· Most of the time complex systems are composed with interrelated sub systems.
· Those systems have number of hierarchical levels, which arranged with different kinds of subsystems.
· Intra-component communications are generally stronger than inter-component communication.
In order to develop the system, developers have to identify the exact requirements. However, ambiguity of the natural languages and vagueness makes the requirements identification more difficult. An object-oriented analysis and design method provides a solution by identifying the complex system as a collection of meaningful objects.
Major elements of object model
— Abstraction
— Encapsulation
— Modularity
— Hierarchy