Chapter 1 - Lecture notes 1 PDF

Title Chapter 1 - Lecture notes 1
Course Software Engineering
Institution Bangalore University
Pages 27
File Size 882.5 KB
File Type PDF
Total Downloads 5
Total Views 164

Summary

Chapter 1 of software Engineering...


Description

Introduction to Software Engineering Chapter One

5th Semester BCA, VEIT Degree College 2014

Software Engineering| Chapter 1

Chapter 1

Introduction to Software Engineering Software Product 1. A software system usually consists of a. A number of separate programs, b. Configuration files, which are used to set up these programs, c. System documentation, which describes the structure of the system, and d. User documentation, which explains how to use the system and web sites for users to download recent product information. 2. Software engineers are concerned with developing software products, i.e., software which can be sold to customer. 3. There are two fundamental types of software product: I.

Generic Products Generic Products are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them.

Example: Generic products such as i. Databases ii. Word processors iii. Drawing packages iv. Project management tools II.

Customized Products

Customized Products are systems which are ordered by a particular customer. A software contractor develops the software especially for that customer Example: Customized product include 5th Semester, BCA, VEIT Degree College

Page 2

Software Engineering| Chapter 1 i.

Control systems for electronic devices

ii.

Systems written to support a particular business process

iii.

Air traffic control systems

4. An important difference between Generic product and Customized product Generic Product The organisation develops the software and

Customized Product The specification is usually developed and

controls the software specification

controlled by the organization that is buying the software. The software developers must develop the software according to that specification

Software Engineering Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. There are two key phrases in the definition. 1. Engineering discipline a. Engineers make things work. b. They apply theories, methods and tools where these are appropriate, but they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods. c. Engineers also recognize that they must work to organizational and financial limitations or restrictions (or constraints), so they look for solutions within these limitations or restrictions (or constraints). 2. All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support production.

5th Semester, BCA, VEIT Degree College

Page 3

Software Engineering| Chapter 1

Software Process 1. A software process is the set of activities and associated results that produce a software product. 2. There are four fundamental process activities which are mentioned below. 1

Software Specification

Customers and engineers define the software to be produced and constraints (or Limitations or restrictions) on its operation

2

Software Development

3

Software Validation

The software is designed and programmed The software is checked to ensure that it is what the customer requires

4

Software Evolution

Where the software is modified to adapt it to changing customer and market requirements

3. Different types of systems need different development processes. Example: For an aircraft, real-time software has to be completely specified before development begins whereas, in e-commerce systems, the specification and the program are usually developed together. 4. Consequently, these generic activities may be organized in different ways and described at different levels of detail for different types of software. 5. The use of an inappropriate software process may reduce the quality or usefulness of the software product to be developed and/or increase the development costs.

Software Attributes •

Software product have a number of associated attributes that represents (or reflect) the quality of that software.

5th Semester, BCA, VEIT Degree College

Page 4

Software Engineering| Chapter 1 •

The attributes are not directly concerned with what the software does. Rather, they represents (or reflects) its behavior while it is executing and the structure and organisation of the source program and associated documentation.

Examples of these attributes (sometimes called non-functional attributes) are the software’s responses time to a user query and the understandability of the program code. •

The specific set of attributes from a software system depends on its application.



Therefore, a banking system must be secure, an interactive game must be responsive, a telephone switching system must be reliable, and so on.



The set of attributes are the essential characteristics of a well-designed software system.



The essential attributes of good software are: 1. Maintainability 2. Dependability 3. Efficiency 4. Usability

Product Characteristics

Description

Maintainability

Software should be written in such a way that it may evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable consequence of a changing business environment.

Dependability

Software dependability has a range of characteristics, including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure.

Efficiency

Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilization, etc.

Usability

Software must be usable, without undue effort, by the type of user for whom it is designed. This means that it should have an appropriate user interface and adequate documentation.

5th Semester, BCA, VEIT Degree College

Page 5

Software Engineering| Chapter 1

Software Engineering Challenges Software engineering faces three key challenges: 1. The heterogeneity challenge: Increasingly, systems are required to operate as distributed systems across networks that include different types of computers and with different kinds of support systems. It is often necessary to integrate new software with older legacy systems written in different programming languages. The heterogeneity challenge is the challenge of developing techniques for building dependable software that is flexible enough to cope with this heterogeneity. 2. The delivery challenge: Many traditional software engineering techniques are time consuming since they require time to achieve software quality. However, businesses today must be responsive and change very rapidly. Their supporting software must change equally rapidly. The delivery challenge is the challenge of shortening delivery times for large and complex systems without compromising system quality. 3. The trust challenge: It is essential that the customer must trust the software. This is especially true for remote software systems accessed through a web page or web service interface. The trust challenge is to develop techniques that demonstrate that software can be trusted by its users. All the above challenges are not independent but inter-dependent.

Software Development Life Cycle (SDLC) 1. A software development process, also known as software development life cycle (SDLC), is a structure imposed on the development of a software product. 2. The principle stages of SDLC are A. Requirement Analysis and Definition B. System and Software Design C. Implementation and Unit testing D. Integration and System Testing E. Operation and Maintenance 5th Semester, BCA, VEIT Degree College

Page 6

Software Engineering| Chapter 1

Requirements Analysis and Definition

Operation and Maintenance

System & Software Design

Integration & System Testing

Implementation and Unit Testing

Figure 1.1: Software Development Life Cycle Requirements analysis and definition: After feasibility study has been performed, the requirements analysis which includes the software system’s services, constraints and goals is established after consulting the system users. Then the exact requirements are defined in detail. System and Software Design: Once the requirements for a system have been documented, the software system must be designed to meet system requirements. The system design process divides the requirements into either hardware or software systems along with the overall system architecture. Software design involves designing abstractions and their relationships. Implementation and Unit testing: This process produces the actual code as a set of programs. Testing is an integral and important phase of software development process. Unit testing ensures that defects are recognized quickly and that each unit meets its specification.

5th Semester, BCA, VEIT Degree College

Page 7

Software Engineering| Chapter 1 Integration and System Testing: All the modules or individual program that have been developed and tested individually are integrated and tested as a whole system to ensure that the software requirements have been met. After system testing the software is delivered to the customer. Operation and Maintenance: Operation phase involves installation, customization, testing and evaluation. Maintenance involves correcting errors which were missed in the earlier stages. It also involves changes or improvements of the system units so that it meets the new requirements, if any. Software training and support is also important, since software is effective only if used correctly.

Software Process Models •

A software process model is an abstract representation of a software process.



Each process model represents a process form a particular perspective, and thus provides only partial information about that process.



The generic models are not definitive descriptions of software processes. Rather, they are abstractions of the process that can be used to explain different approaches to software development.



The models can be thought as process frameworks that may be extended and adapted to create more specific software engineering processes.



The process models are: 1. The Waterfall Model 2. The Spiral Model (Boehm’s Spiral Model) 3. The Iterative Enhancement Model

The Waterfall Model •

This model is known as the waterfall model or software life cycle.



The first published model of the software development process was derived from more general system engineering processes.

5th Semester, BCA, VEIT Degree College

Page 8

Software Engineering| Chapter 1 1. Requirements analysis and definition: i.

The system’s services, constraints, and goals are established by consultation with system users.

ii.

They are then defined in detail and serve as a system specification.

2. System and Software design: i.

The systems design process partitions the requirements to either hardware or software systems.

ii.

It establishes an overall system architecture. Software design involves identifying and describing the fundamental software system abstractions and their relationships.

Figure 1.2: Water Fall Model 3. Implementation and unit testing: i.

During this stage, the software design s realized as a set of programs or program units.

5th Semester, BCA, VEIT Degree College

Page 9

Software Engineering| Chapter 1 ii.

Unit testing involves verifying that each unit meets its specification.

4. Integration and system testing: i.

The individual program units or programs are integrated and tested as a complete system to ensure that the software requirements have been met.

ii.

After testing, the software system is delivered to the customer.

5. Operation and maintenance: i.

This is the longest life-cycle phase. The system is installed and put into practical use.

ii.

Maintenance involves correcting errors which were not discovered earlier stages of the life cycle, improving the implementation of system units and enhancing the system’s services as new requirements are discovered.

Advantages of waterfall model: •

The project requires the fulfillment of one phase, before proceeding to the next. Therefore if there is a fault in this software it will be detected during one of the initial phases and will be sealed off for correction.



The Waterfall model is a straight forward method and lets one know what stage is in progress.



The Waterfall model is also well known among software developers therefore is easy to use.



It is easy to develop software through this method in a short span of time.

Disadvantages: 1) The following phase should not start until the previous phase has finished. These stages overlap and feed information to each other. During design, problems with requirements are identified; during coding design problems are found and so on. 2) Because of the costs of producing and approving documents, iterations are costly and involve significant rework. Therefore, after a small number of iterations, it is normal to freeze parts of the development, such as the specification, and to continue with the later development stages. Problems are left for later resolution, ignored or programmed around.

5th Semester, BCA, VEIT Degree College

Page 10

Software Engineering| Chapter 1 3) Errors and omissions in the original software requirements are discovered. Program and design errors emerge and the need for new functionality is identified. The system must therefore evolve to remain useful. Making these changes (software maintenance) may involve repeating previous process stages.

The Spiral Model •

The Spiral model of the software process was originally proposed by Boehm.



Rather than representing the software process as a sequence of activities, the process is represented as a spiral.



Each loop in the spiral represents a phase of the software process. Thus, the innermost loop might be concerned with system feasibility, the next loop with requirements definition, the next loop with system design and so on



The diagram of the Boehm’s spiral model as shown in figure 1.3,

Figure 1.3: The Spiral Model •

Each loop in the spiral is divided into four sectors: 1. Objective setting 2. Risk assessment and reduction

5th Semester, BCA, VEIT Degree College

Page 11

Software Engineering| Chapter 1 3. Development and validation 4. Planning 1. Objective Setting: a) Specific objectives for that phase of the project are defined. b) Constraints on the process and the product are identified and a detailed management plane is drawn up. c) Project risks are identified. Alternative strategies, depending on these risks, may be planned. 2. Risk assessment and reduction a) For each of the identified project risks, a detailed analysis is carried out. b) Steps are taken to reduce the risk. For example, If there is a risk that the requirements are inappropriate, a prototype system may be developed. 3. Development and Validation a) After risk evaluation, a development model for the system is chosen. For example, If user interface risks are dominant, an appropriate development model might be evolutionary prototyping. If safety risks are the main consideration, development based on formal transformations may be the most appropriate and so on. b) The waterfall model may be the most appropriate development model if the main identified risk is sub-system integration. 4. Planning a) The project is reviewed and a decision made whether to continue with a further loop of the spiral. b) If it is decided to continue, plans are drawn up for the next phase of the project. •

A cycle of the spiral begins by elaborating objectives such as performance and functionality.

5th Semester, BCA, VEIT Degree College

Page 12

Software Engineering| Chapter 1 •

Alternative ways of achieving the objectives and constraints imposed on each of the objectives are mentioned one by one (enumerated).



Each alternative is assessed against each objective sources of project risk are identified.



The next step is to resolves these risks by information – gathering activities such as more detailed analysis, prototyping and simulation.



Once risks have been assessed, some development is carried out, followed by a planning activity for the next phase of the process.

Advantages: 1. The project risks are identified and a analysis is carried out for each identified risks. 2. The project risks are resolved by information gathering activities such as more detailed analysis, prototyping and simulation. 3. Prototyping may be used to resolve requirements uncertainties and hence reduce risk. Limitations: •

It demands considerable risk assessment expertise and relies on this expertise for success.

Incremental Model / Iterative Enhancement Model •

Incremental delivery is an in-between approach that combines the advantages of these models.



In an incremental development process, customers identify, in outline, the services to be provided by the system. They identify which of the services are most important and which are least important to them.



A number of delivery increments are then defined, with each increment providing a subset of the system functionality.



The allocation of services to increments depends on the service priority with the highest priority services delivered first.



Once the system increments have been identified, the requirements for the services to be delivered in the first increment are defined in detail, and that increment is developed.



During development, further requirements analysis for later increments can take place, but requirements changes for the current increment are not accepted.

5th Semester, BCA, VEIT Degree College

Page 13

Software Engineering| Chapter 1 •

Once an increment is completed and delivered, customers can put it into service. This means that they take early delivery of part of the system functionality. They can experiment with the system that helps them clarify their requirements for later increments and for later versions of the current increment.



As new increments are completed, they are integrated with existing increments so that the system functionality improves with each delivered increment.


Similar Free PDFs