Chapter 01hsd
Chapter 01hsd
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)
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.
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
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
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 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
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.
Efficiency
Acceptability
19
Software Engineering
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
provides
22
Risk management
Software quality assurance Technical reviews
Measurement.
Software configuration management. Reusability management.
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