Showing posts with label System Software. Show all posts
Showing posts with label System Software. Show all posts

Saturday, February 8, 2020

Software Engineering | COCOMO Model by Ranjot Singh

Software Engineering | COCOMO Model / by 124Study 

Cocomo (Constructive Cost Model) is a regression model based on LOC, i.e number of Lines of Code. It is a procedural cost estimate model for software projects and often used as a process of reliably predicting the various parameters associated with making a project such as size, effort, cost, time and quality. It was proposed by Barry Boehm in 1970 and is based on the study of 63 projects, which make it one of the best-documented models.
The key parameters which define the quality of any software products, which are also an outcome of the Cocomo are primarily Effort & Schedule:
  • Effort: Amount of labor that will be required to complete a task. It is measured in person-months units.
  • Schedule: Simply means the amount of time required for the completion of the job, which is, of course, proportional to the effort put. It is measured in the units of time such as weeks, months.
Different models of Cocomo have been proposed to predict the cost estimation at different levels, based on the amount of accuracy and correctness required. All of these models can be applied to a variety of projects, whose characteristics determine the value of constant to be used in subsequent calculations. These characteristics pertaining to different system types are mentioned below.

Boehm’s definition of organic, semidetached, and embedded systems:
  1. Organic – A software project is said to be an organic type if the team size required is adequately small, the problem is well understood and has been solved in the past and also the team members have a nominal experience regarding the problem.
  2. Semi-detached – A software project is said to be a Semi-detached type if the vital characteristics such as team-size, experience, knowledge of the various programming environment lie in between that of organic and Embedded. The projects classified as Semi-Detached are comparatively less familiar and difficult to develop compared to the organic ones and require more experience and better guidance and creativity. Eg: Compilers or different Embedded Systems can be considered of Semi-Detached type.
  3. Embedded – A software project with requiring the highest level of complexity, creativity, and experience requirement fall under this category. Such software requires a larger team size than the other two models and also the developers need to be sufficiently experienced and creative to develop such complex models.
  4. All the above system types utilize different values of the constants used in Effort Calculations.
    Types of Models: COCOMO consists of a hierarchy of three increasingly detailed and accurate forms. Any of the three forms can be adopted according to our requirements. These are types of COCOMO model:
    1. Basic COCOMO Model
    2. Intermediate COCOMO Model
    3. Detailed COCOMO Model
    The first level, Basic COCOMO can be used for quick and slightly rough calculations of Software Costs. Its accuracy is somewhat restricted due to the absence of sufficient factor considerations.
    Intermediate COCOMO takes these Cost Drivers into account and Detailed COCOMO additionally accounts for the influence of individual project phases, i.e in case of Detailed it accounts for both these cost drivers and also calculations are performed phase wise henceforth producing a more accurate result. These two models are further discussed below.
    Estimation of Effort: Calculations –
    1. Basic Model –
         E= a(KLOC)^b 
      
      The above formula is used for the cost estimation of for the basic COCOMO model, and also is used in the subsequent models. The constant values a and b for the Basic Model for the different categories of system:
      SOFTWARE PROJECTSAB
      Organic2.41.05
      Semi Detached3.01.12
      Embedded3.61.20
      The effort is measured in Person-Months and as evident from the formula is dependent on Kilo-Lines of code. These formulas are used as such in the Basic Model calculations, as not much consideration of different factors such as reliability, expertise is taken into account, henceforth the estimate is rough.
    2. Intermediate Model –
      The basic Cocomo model assumes that the effort is only a function of the number of lines of code and some constants evaluated according to the different software system. However, in reality, no system’s effort and schedule can be solely calculated on the basis of Lines of Code. For that, various other factors such as reliability, experience, Capability. These factors are known as Cost Drivers and the Intermediate Model utilizes 15 such drivers for cost estimation.
      Classification of Cost Drivers and their attributes:

      (i) Product attributes –
      • Required software reliability extent
      • Size of the application database
      • The complexity of the product
      (ii) Hardware attributes –
      • Run-time performance constraints
      • Memory constraints
      • The volatility of the virtual machine environment
      • Required turnabout time
      (iii) Personnel attributes –
      • Analyst capability
      • Software engineering capability
      • Applications experience
      • Virtual machine experience
      • Programming language experience
      (iv) Project attributes –
      • Use of software tools
      • Application of software engineering methods
      • Required development schedule
      ;
      COST DRIVERSVERY LOWLOWNOMINALHIGHVERY HIGH
      Product Attributes
      Required Software Reliability0.750.881.001.151.40
      Size of Application Database0.941.001.081.16
      Complexity of The Product0.700.851.001.151.30
      Hardware Attributes
      Runtime Performance Constraints1.001.111.30
      Memory Constraints1.001.061.21
      Volatility of the virtual machine environment0.871.001.151.30
      Required turnabout time0.941.001.071.15
      Personnel attributes
      Analyst capability1.461.191.000.860.71
      Applications experience1.291.131.000.910.82
      Software engineer capability1.421.171.000.860.70
      Virtual machine experience1.211.101.000.90
      Programming language experience1.141.071.000.95
      Project Attributes
      Application of software engineering methods1.241.101.000.910.82
      Use of software tools1.241.101.000.910.83
      Required development schedule1.231.081.001.041.10
      The project manager is to rate these 15 different parameters for a particular project on a scale of one to three. Then, depending on these ratings, appropriate cost driver values are taken from the above table. These 15 values are then multiplied to calculate the EAF (Effort Adjustment Factor). The Intermediate COCOMO formula now takes the form:
         E= (a(KLOC)^b)*EAF 
      
      The values of a and b in case of the intermediate model are as follows:
      SOFTWARE PROJECTSAB
      Organic3.21.05
      Semi Detached3.01.12
      Embeddedc2.81.20
    3. Detailed Model –
      Detailed COCOMO incorporates all characteristics of the intermediate version with an assessment of the cost driver’s impact on each step of the software engineering process. The detailed model uses different effort multipliers for each cost driver attribute. In detailed cocomo, the whole software is divided into different modules and then we apply COCOMO in different modules to estimate effort and then sum the effort.
      The Six phases of detailed COCOMO are:
      1. Planning and requirements
      2. System design
      3. Detailed design
      4. Module code and test
      5. Integration and test
      6. Cost Constructive model
      The effort is calculated as a function of program size and a set of cost drivers are given according to each phase of the software lifecycle.

Tuesday, July 16, 2019

Definition of system software, types of system software by Jot Chahal / 124Study



Features of the system software

Components of system software

• Device Driver: it is a computer program. Computer hardware can interact with the higher level computer programs with the help of device drivers. These device drivers act as a translator between the application of the user and the hardware device. Due to this, it simplifies programming.
• Operating System: The operating system is the system which manages the hardware of the computer. The operating system consists of program and data. An operating system also provides us with services so that we can execute the application software. 
Example: Linux, Unix, Microsoft Windows etc.
• Server: it is a program which works like a socket listener in a computer networking system. A server computer is a series of computers which link other computers with itself. The server can provide some essential services to both private users and public users via the internet across a network. 
• Utility Software: it performs small tasks which are used to manage computer hardware and application software.
Example: system utilities, virus scanners etc.. 
• Windowing System: it supports the implementation of window managers. Windowing system provides essential support to graphics hardware and pointing devices like keyboard and mice. The windowing system is a component of the graphical user interface.
System Software

Types of system software

Operating system

• It will allocate resources to each task.
• It will keep the all hardware parts of the system in a ready state so that it can follow the instructions given by the user.
• It enables the user to access and use application software. 
• It schedules the multiple tasks by priority.
• It controls the improper use of the computer.
• It sets the coordination between the different devices.
• It prevents the error during the use of the software.
• It enables the computer to access network.
• It manages different computer resources such as software, hardware etc..
• It controls the input and output devices of the computer.
• It detects, installs and troubleshoot devices.
Example: The earlier OS was MS-DOS which make use of Command Line Interface(CLI). After then, windows was developed by Microsoft which make use of Graphical User Interface(GUI). So, they keep on evolving.

Programming Language Translators

Device Drivers

Firmware Software

It is the operational software which is already embedded in flash, ROM, EPROM, EEPROM memory chips so that the OS can identify them quickly. The task of the firmware is to directly manage and control all the activities of any single hardware.
Traditionally, firmware was installed on the non-volatile chips. We can upgrade them by changing with the new programmed chips.
However, nowadays, firmware was installed on the flash chips. So, now we can upgrade them without swapping the chips.
There are two types of chips: BIOS(Basic Input/Output System) chip and UEFI(Unified Extended Firmware Interface) chip. The manufacturer installs the firmware on the motherboard, and it can be accessed through these two types of chips. It is the configuration interface. When the computer is powered on and is going through POST  (Power On Self Test), then it is first loaded.  
The motherboard firmware wakes all the hardware when it starts. It ensures that all the components of a computer are operational. If all the ingredients are properly working, then it will run the bootloader, which will further load the operating system. If there is a fault in RAM of the system, then the BIOS will not allow the computer to boot.
The main difference between the firmware and the driver is that firmware will reside within the devices whereas the drivers will install in the operating system.

Utility Software

• To protect us against external threats, the inclusion of a firewall is there.
Example: windows firewall
• It can scan hardware diagnostic services like performance monitor, hard disk sentinel.
• It can also compress files so that the disk space can be optimised. E.g., WinRAR, WinZip.
• Utility can do disk partition services like Windows Disk Management.
• Utility can help us in recovering in our lost data. E.g., iCare Data Recovery, Ease Us Data Recovery Wizard etc.,
• Utility can back up our data to increase the security of our systems like Cobian and Clonezilla.
• Utility can do defragmentation of a disk so that the scattered file can be organised on the drive. E.g., Disk Defragmenter, Little Snitch etc.,
• Utility can perform antivirus and security software so that the security of the files and the applications can be maintained. E.g., AVG, Microsoft Security Essentials etc.,
System SoftwareApplication Software
We make use of system software for operating hardware of the computer.The user makes use of application software to perform some specific task.
When the operating system is installed on the computer, then the system software is also mounted on the machine. We install the application software according to the requirement of the user.
System software works in the background. So the user is not able to interact with it.Generally, the user interacts with the application software.
It can run independently as it provides the platform for the running application softwares.It can’t run independently because it is not able to run without the presence of system software.
Example: compiler, assembler, interpreter etc..Example: word processor, web browser, media player etc.