0% found this document useful (0 votes)
93 views30 pages

Chapter 01hsd

Software engineering is the application of engineering principles to the development of software. Software encompasses computer programs, data structures, and documentation. It may be developed as generic products for general markets or as customized products for specific customers. Software engineering aims to produce reliable and trustworthy software economically through systematic, disciplined, and quantifiable approaches to development, operation, and maintenance. It differs from computer science in its practical focus on software production.

Uploaded by

kapil singh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
93 views30 pages

Chapter 01hsd

Software engineering is the application of engineering principles to the development of software. Software encompasses computer programs, data structures, and documentation. It may be developed as generic products for general markets or as customized products for specific customers. Software engineering aims to produce reliable and trustworthy software economically through systematic, disciplined, and quantifiable approaches to development, operation, and maintenance. It differs from computer science in its practical focus on software production.

Uploaded by

kapil singh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 30

Introduction to Software Engineering

The product that software professionals build and then support over the long term. Software encompasses: (1) instructions (computer programs) that when executed provide desired features, function, and performance; (2) data structures that enable the programs to adequately store and manipulate information and (3) documentation that describes the operation and use of the programs.

Generic products

Customized products

Stand-alone systems that are marketed and sold to any customer who wishes to buy them. Examples PC software such as editing, graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists.
Software that is commissioned by a specific customer to meet their own needs. Examples embedded control systems, air traffic control software, traffic monitoring systems.

The economies of ALL developed nations are dependent on software. More and more systems are software controlled ( transportation, medical, telecommunications, military, industrial, entertainment,) Software engineering is concerned with theories, methods and tools for professional software development. Expenditure on software represents a significant fraction of GNP in all developed countries.

Software is a product

Transforms information - produces, manages, acquires, modifies, displays, or transmits information Delivers computing potential of hardware and networks Controls other programs (operating system) Effects communications (networking software) Helps build other software (software tools & environments)

Software is a vehicle for delivering a product


The Law of Continuing Change (1974): E-type (Real world implemented) systems must be continually adapted else they become progressively less satisfactory. The Law of Increasing Complexity (1974): As an E-type system evolves its complexity increases unless work is done to maintain or reduce it. The Law of Self Regulation (1974): The E-type system evolution process is self-regulating with distribution of product and process measures close to normal. The Law of Conservation of Organizational Stability (1980): The average effective global activity rate in an evolving Etype system is invariant over product lifetime.

The Law of Conservation of Familiarity (1980): As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behavior to achieve satisfactory evolution. The Law of Continuing Growth (1980): The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime. The Law of Declining Quality (1996): The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes. The Feedback System Law (1996): E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base.

Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with costeffective software development.

Software product takes the dual role.

Product as well as a vehicle to deliver the product

Software delivers Information.


Software manages the information

Its characteristics that make it different from other things human being build. Features of such logical system: Software is developed or engineered, it is not manufactured in the classical sense

Software doesn't "wear out. but it deteriorates. Although the industry is moving toward component-based construction (e.g. standard screws and off-the-shelf integrated circuits), most software continues to be custom-built

10

11

1. System software: such as compilers, editors, file management utilities 2. Application software: stand-alone programs for specific needs. 3. Engineering/scientific software: Characterized by number crunchingalgorithms. such as automotive stress analysis, molecular biology, orbital dynamics etc 4. Embedded software resides within a product or system. (key pad control of a microwave oven, digital function of dashboard display in a car) 5. Product-line software focus on a limited marketplace to address mass consumer market. (word processing, graphics, database management) 6. WebApps (Web applications) network centric software. As web 2.0 emerges, more sophisticated computing environments is supported integrated with remote database and business applications 7. AI software uses non-numerical algorithm to solve complex problem. Robotics, expert system, pattern recognition game playing

12

Open world computingpervasive, ubiquitous, distributed computing due to wireless networking. How to allow mobile devices, personal computer, enterprise system to communicate across vast network. Netsourcingthe Web as a computing engine. How to architect simple and sophisticated applications to target end-users worldwide. Open sourcefree source code open to the computing community .
Data mining Grid computing Cognitive machines Software for nanotechnologies

13

The older program often referred to as legacy software.


Support core business functions Have longevity and business criticality Exhibit poor quality
Convoluted code, poor documentation, poor testing, poor change management

14

Software Engineering

Real World

Software World

15

The seminal definition: [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. The IEEE definition:

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. (2) The study of approaches as in (1).

More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly. It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project. For most types of system, the majority of costs are the costs of changing the software after it has gone into use.
17

Question What is software?

Answer Computer programs, data structures and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. Software engineering is an engineering discipline that is concerned with all aspects of software production.

What are the attributes of good software?

What is software engineering?

What is the difference between software Computer science focuses on theory and fundamentals; engineering and computer science? software engineering is concerned with the practicalities of developing and delivering useful software. What is the difference between software System engineering is concerned with all aspects of engineering and system engineering? computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process.

18

Product characteristic Maintainability

Description Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment. Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system. Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc. Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

Dependability and security

Efficiency

Acceptability

19

Software Engineering

tools methods process model a quality focus


Any engineering approach must rest on organizational commitment to quality which fosters a continuous process improvement culture. Process layer as the foundation defines a framework with activities for effective delivery of software engineering technology. Establish the context where products (model, data, report, and forms) are produced, milestone are established, quality is ensured and change is managed. Method provides technical how-tos for building software. It encompasses many tasks including communication, requirement analysis, design modeling, program construction, testing and support. Tools provide automated or semi-automated support for the process and methods.
20

A process is a collection of activities, actions and tasks that are performed when some work product is to be created. It is not a rigid prescription for how to build computer software. Rather, it is an adaptable approach.
Purpose of process is to deliver software in a timely manner and with sufficient quality.

21

Communication. Planning. Modeling. Construction. Deployment.

Used by All software development

provides

Iterative approach for software development

22

Software project tracking and control

Risk management
Software quality assurance Technical reviews

Measurement.
Software configuration management. Reusability management.

Work product preparation and production.

23

How does the practice of software engineering fit in the process activities mentioned above? Namely, communication, planning, modeling, construction and deployment.
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).

24

Who has a stake in the solution to the problem? What are the unknowns? Can the problem be compartmentalized Can the problem be represented graphically?

25

Have you seen similar problems before? Has a similar problem been solved Can subproblems be defined? Can you represent a solution in a manner that leads to effective implementation?

26

Does the solutions conform to the plan? Is source code traceable to the design model? Is each component part of the solution provably correct? Has the design and code been reviewed, or better, have correctness proofs been applied to algorithm?

27

Is it possible to test each component part of the solution? Does the solution produce results that conform to the data, functions, and features that are required?

28

Myth 1: Once we write the program and get it to work, our job is done. Reality: the sooner you begin writing code, the longer it will take you to get done. 60% to 80% of all efforts are spent after software is delivered to the customer for the first time. Myth 2: Until I get the program running, I have no way of assessing its quality. Reality: technical review are a quality filter that can be used to find certain classes of software defects from the inception of a project.

29

Myth 3: software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. Reality: it is not about creating documents. It is about creating a quality product. Better quality leads to a reduced rework. Reduced work results in faster delivery times. Many people recognize the fallacy of the myths. Regrettably, habitual attitudes and methods foster poor management and technical practices, even when reality dictates a better approach.

30

You might also like