We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19
UNIT-1
SOFTWARE ENGINEERING What is software?
• Computer software is the product that software professionals build
and then support over the long term. • It encompasses programs that execute within a computer of any size and architecture, content that is presented as the computer programs execute, and descriptive information in both hard copy and virtual forms that encompass virtually any electronic media. • Software engineering encompasses a process, a collection of methods (practice) and an array of tools that allow professionals to build high- quality computer software Why is it important? • Software is important because it affects nearly every aspect of our • lives and has become pervasive in our commerce, our culture, and our everyday activities. • Software engineering is important because it enables us to build complex systems in a timely manner and with high quality. The Nature of Software • Software delivers the most important product of our time— information. • It transforms personal data (e.g., an individual’s financial transactions) so that the data can be more useful in a local context. • It manages business information to enhance competitiveness; • It provides a gateway to worldwide information networks (e.g., the Internet), and provides the means for acquiring information in all of its forms. Defining Software
• Software is: (1) instructions (computer programs) that when executed
provide desired features, function, and performance; (2) data structures that enable the programs to adequately manipulate information, and (3) descriptive information in both hard copy and virtual forms that describes the operation and use of the programs. Characteristics of Software • Software has characteristics that are considerably different than those of hardware:
1. Software is developed or engineered; it is not manufactured in the
classical sense. 2. Software doesn’t “wear out.” 3. Although the industry is moving toward component-based construction, most software continues to be custom built. Software Application Domains • Today, seven broad categories of computer software present continuing challenges for software engineers: System software Application software Engineering/scientific software Embedded software Product-line software Web applications Artificial intelligence software Legacy Software • Hundreds of thousands of computer programs fall into one of the seven broad application domains discussed in the preceding subsection. • These older programs—often referred to as legacy software—have been the focus of continuous attention and concern since the 1960s. Dayani-Fard and his colleagues [Day99] describe legacy software in the following way: Cont… • “Legacy software systems . . . were developed decades ago and have been continually modified to meet changes in business requirements and computing platforms. The proliferation of such systems is causing headaches for large organizations who find them costly to maintain and risky to evolve.” • “Liu and his colleagues [Liu98] extend this description by noting that “many legacy systems remain supportive to core business functions and are ‘indispensable’ to the business.” Hence, legacy software is characterized by longevity and business criticality.” Software Engineering • The IEEE [IEE93a] has developed a more comprehensive definition when it states: • Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. Cont… Cont… • Process: • The software engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software. • Methods: Software engineering methods provide the technical how- to’s for building software. • Tools: • Software engineering tools provide automated or semiautomated support for the process and the methods. The software process • A process framework establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. • In addition, the process framework encompasses a set of umbrella activities that are applicable across the entire software process. • A generic process framework for software engineering encompasses five activities: Cont… Communication. Planning. Modelling. Construction. Deployment. Software Engineering practice • Software engineering practices includes: • 1. Understand the problem (communication and analysis). • 2. Plan a solution (modeling and software design) • 3.Carry out the plan (code generation). • 4. Examine the result for accuracy (testing and quality assurance). General Principles • David Hooker [Hoo96] has proposed seven principles that focus on software engineering practice as a whole. They are as follows: 1. The First Principle: The Reason It All Exists 2. The Second Principle: KISS (Keep It Simple, Stupid!) 3. The Third Principle: Maintain the Vision 4. The Fourth Principle: What You Produce, Others Will Consume 5. The Fifth Principle: Be Open to the Future 6. The Sixth Principle: Plan Ahead for Reuse 7. The Seventh principle: Think! Software Myths • There are number of myths that exists in relation to software engineering a few are listed down: • Management myths: • Myth: We already have a book that’s full of standards and procedures for • building software. Won’t that provide my people with everything they need to know? • Reality: The book of standards may very well exist, but is it used? Are soft- • ware practitioners aware of its existence? Does it reflect modern software engineering practice? Is it complete? Is it adaptable? Is it streamlined to improve time-to-delivery while still maintaining a focus on quality? In many cases, the answer to all of these questions is “no.” Cont… • Customer myths: • Myth: A general statement of objectives is sufficient to begin writing • programs—we can fill in the details later. • Reality: Although a comprehensive and stable statement of requirements is not always possible, an ambiguous “statement of objectives” is a recipe for disaster. Unambiguous requirements (usually derived iteratively) are developed only through effective and continuous communication between customer and developer. Cont… • Practitioner’s myths: • Myth: Once we write the program and get it to work, our job is done. • Reality: Someone once said that “the sooner you begin ‘writing code,’ the longer it’ll take you to get done.” Industry data indicate that between 60 and 80 percent of all effort expended on software will be expended after it is delivered to the customer for the first time.