Unit-1 1) What is software engineering? Explain the nature (or) types of software? Software engineering is defined as the systematic, disciplined quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. Types of software: System software: ➢ Is a collection of programs written to service other programs. ➢ It processes complex, but determinate , information structures. Ex: compilers, editors, file management utilities. ➢ System applications process largely indeterminate data. Ex: OS components drives, networking software, telecommunication processors. ➢ System software area is characterized by heavily interaction with computer hardware. ✓ heavy usage by multiple users; ✓ concurrent operation that requires scheduling, ✓ resource sharing, and sophisticated process management; ✓ complex data structures; and multiple external interfaces. Application software ✓ Consists of standalone programs that solve a specific business need. ✓ [Stand-alone program is a computer program that does not load any external module, library function or program and that is designed to boot with bootstrap procedure of target processor.] ✓ Applications process business or technical data that facilitates business operations or technical decision making. ✓ In addition to conventional data processing application it controls business function in real time. ✓ Ex: Point-of-sale transaction processing, real time manufacturing process control. Engineering/scientific software ➢ Engineering and scientific software have been characterized by "number crunching" algorithms. ➢ Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing. ➢ However modern applications within the engineering/scientific area are moving away from conventional numerical algorithms [ex: differentiaition] towards real-time and even system software characteristics. ➢ Like Computer-aided design, system simulation[aircraft], and other interactive applications. Embedded software: ➢ Embedded software resides in read-only memory and is used to control products and systems for the consumer and industrial markets. ➢ Embedded software can ✓ perform very limited and esoteric[specialized/difficult] functions (e.g., keypad control for a microwave oven) or
✓ provide significant function and control capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and braking systems). Product-line software (e.g., inventory control, word processing, multimedia) ➢ Designed to provide a specific capability for use by many different customers, ➢ Product line s/w can focus on limited and escoteric market place or address mass consumer markets. ✓ Ex: word processing, spreadsheets, ✓ computer graphics, multimedia, entertainment, ✓ db mgt, personal and business financial applications. Web applications ➢ WebApps-span a wide array of applications. ➢ As e-commerce & B2B applications grow in importance. ➢ It not only provide standalone features, functions, and content to the end user, but also are integrated with corporate databases and business applications. Artificial intelligence software ➢ Artificial intelligence (AI) software is the software, which thinks and behaves like a human. ➢ AI software makes use of non-numerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis. ➢ Applications within this category include ✓ expert systems, also called knowledge-based systems, ✓ pattern recognition (image and voice), ✓ artificial neural networks, ✓ theorem proving, and game playing. Ubiquitous computing (small, wireless devices) ➢ Ubiquitous computing or "ubicomp" where computing is made to appear anytime and everywhere. ➢ Rapid growth of wireless networking may lead to true distributed computing. ➢ To develop systems s/w and application s/w that will allow small devices, personal computers and enterprise system to communicate across vast networks. Netsourcing (net-wide computing) ➢ Net sourcing: The challenge for software engineers is to architect simple and sophisticated applications that provide benefit to targeted end-user market worldwide ➢ Netsourcing is the practice of renting or "paying as you use" access to centrally managed business applications, made available to multiple users from a shared data center over the Internet or other networks via browser-enabled devices. ➢ Netsourcing is the practice of renting access to centrally managed business applications ➢ Everything from credit card validation to human resources. Open source (operating systems, databases, development environments) ➢ The challenge for software engineers is to build source that is self descriptive but more importantly to develop techniques that will enable both customers and developers to know what changes have been made and how those changes manifest themselves within the software. ➢ Advantages of Open Source Software is free to use, distribute, and modify. ➢ Open Source software is more secure/reliable because it is open source. Anyone can find issues and everyone can help fix it.
➢ programming languages like Python, Ruby, PHP,etc . The “new economy” ➢ The “new economy”: The challenge for software engineers is to build applications that will facilitate mass communication and mass product distribution. 2) What is software engineering? Explain characteristics of software? Software engineering is defined as the systematic, disciplined quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. Characteristics of software: Software is engineered not manufactured: ➢ Although some similarities exist between software development and hardware manufacturer, two activities are fundamentally different. ➢ Firstly, in both H/W and S/W activities high quality is achieved through good design. ➢ But manufacturing phase for hardware can introduce quality problems that are easily corrected in case of software. ➢ Secondly, both activities r dependent on people but relationship between people applied and work accomplished is entirely different. Ex: 10 new no. of people vs one 10 years experienced ➢ Thirdly, both activities require construction of a “product” but the approaches are different. Software doesn’t ware out but it does deteriorate: Failure rate curve for hardware: ➢ Known as “Bathtub curve” ➢ In manufacturing phase h/w exhibits relatively high failure rates early in its life; ➢ Defects r corrected & failure rate drops to a steady-stat level for some period of time.[quite low] ➢ As time passes failure rate raises as h/w components suffer affects of dust, vibration, abuse, temperature extremes etc. Failure rate curve for software:
➢ Should take in form of “ idealized curve” ➢ During life of maintainance some changes r made and new defects r introduced causing failure rate curve to spike as shown in fig. ➢ Before curve can return to original state there will be steady state failure coz another change is requested causing curve to spike again. ➢ Slowly, minimum failure rate level begins to raise – s/w deteriorates due to change. ➢ H/W component can be replaced if it wears out but s/w has no spare parts. ➢ s/w maintenance is more complex than hardware maintenance. Most software continues to be custom built. ➢ Although industry is moving toward component-based assembly most software continues to be custom built. ➢ In h/w world, components reuse is part of engg process but in s/w reuse is in board scale in different programs[android]. 3) Explain different levels of CMMI? CMMI defines each process area in terms of “specific goals and specific practices” required to achieve these goals.