Software Engineering - Unit 1

अब Quizwiz के साथ अपने होमवर्क और परीक्षाओं को एस करें!

Software is intangible

Hard to analyze the development efforts

SOFTWARE DEVELOPMENT LIFECYCLE • Implementation

• Quality assurance -Reviews and inspections -Testing • Deployment - Should be compatible with hardware - User Training - Upgrade • Maintenance and Enhancement

Software industry is labor-intensive

Automation is difficult

Greenfield Project

'From scratch' project, new development • Lacks any constraints imposed by prior work • Analogy is to construction on greenfield land where there is no need to remodel or demolish an existing structure • Minority of projects

THE ROLE OF SOFTWARE ENGINEERING

1. Customer (Hospital) - business/functional goals 2. User (Nurses, Doctors) - user/functional goals 3. Software engineer - Understands how the system will interact with the environment and design a software for the customer's requirement 4. Programmer: Implements the software

•Projects that involve building on a framework or a set of existing components.

A framework is an application that is missing some important details. • E.g. Specific rules of this organization. - Such projects: • Involve plugging together components that are: - Already developed. - Provide significant functionality. • Benefit from reusing reliable software. • Provide much of the same freedom to innovate found in "from scratch" development

WHAT IS SOFTWARE ENGINEERING? •Systematic development and evolution

An engineering process involves applying well-understood techniques in an organized and disciplined way • Use of standardized development methodology • Iterative development

Quality

Availability: Concerned with system failure and its associated consequences Modifiability: The cost of change Performance: How long it takes the system to respond when an event occurs Scalability: Can the software handle larger volumes of data? Security: Ability to resist unauthorized usage while still providing its services to legitimate users Testability: Ease with which software can be made to demonstrate its faults through testing Usability: How easy it is for the user to accomplish a desired task and the kind of user support system provides Efficiency: It doesn't waste resources such as CPU time and memory Reliability: It does what it is required to do without failing Maintainability: It can be easily maintained Reusability: Its parts can be used in other projects

TYPES OF SOFTWARE embedded

Built into hardware so hard to modify

TYPES OF SOFTWARE real time software

Control and monitoring systems • Must react immediately • Performance and Safety are major concerns

•Most projects are evolutionary or maintenance projects, involving work on legacy systems

Corrective projects: fixing defects - Adaptive projects: changing the system in response to changes in • Operating system • Database • Organizational operations - Enhancement projects: adding new features for users - Reengineering or perfective projects: changing the system internally so that it is more maintainable

TYPES OF SOFTWARE

Custom, generic, embedded, real time software, data processing software

SOFTWARE DEVELOPMENT LIFECYCLE •Design

Deciding how the requirements should be implemented using the available technology - Includes: • Systems engineering: Deciding what should be in hardware and what in software • Software architecture: Includes dividing the system into subsystems and deciding how the subsystems will interact • Detailed design of the internals of a subsystem • User interface design • Design of databases

SOFTWARE DEVELOPMENT LIFECYCLE Requirements

Defining the problem • Domain analysis • Requirements gathering - Obtaining input from as many sources as possible • Survey • Interviews • Questionnaires • Requirements analysis - Organizing the information • Requirements specification - Writing detailed instructions about how the software should behave

SOFTWARE DEVELOPMENT METHODS Iterative + Incremental

Develop increment of functionality, repeat in a feedback loop

•Brownfield Project

Development and deployment of a software system that must work with existing software systems • New system must take into account and coexist with already-existing software

Software is easy to reproduce and modify

Development cost, cost and effects of modifying

TYPES OF SOFTWARE custom

For a specific customer

Long term:

Maintainability • Customer's future needs • Scalability

TRADITIONAL SOFTWARE DEVELOPMENT LIFECYCLE: WATERFALL METHOD

Requirements, design, implementation, testing, deployment & maintenance

First law of software engineering

Software engineer is willing to learn the problem domain (problem cannot be solved without understanding it first)

WHAT IS SOFTWARE ENGINEERING? •Large, high-quality software systems

Software engineering techniques are needed because large systems cannot be completely understood and developed by one person (within time constraints) • Teamwork and coordination are required • Division of work among team members and integration of the implemented parts

SECOND LAW OF SOFTWARE ENGINEERING

Software should be written for people first Computers run software, but hardware quickly becomes outdated • Usefulness • To nurture software, people must be able to understand it • Quality

TYPES OF SOFTWARE generic

Sold on open market, Often called COTS (Commercial Off The Shelf) or Shrink-wrapped

SOFTWARE MEASUREMENT

Step 1: Divide the problem into small & similar parts Step 2: Estimate relative sizes of all parts\ • Step 3: Estimate the size of the total work (LOC - lines of code) • Step 4: Estimate speed of work (Ex. LOC/day) • Step 5: Estimate the work duration

SOFTWARE DEVELOPMENT METHODS Method = work strategy

The Feynman Problem-Solving Algorithm: (i) Write down the problem (ii) think very hard, and (iii) write down the answer.

WHAT IS SOFTWARE ENGINEERING?

The process of solving customers' problems by the systematic development and evolution of large, high-quality software systems within cost, time, and other constraints • Sometimes the solution is to assemble from existing components, not build from scratch • Sometimes the solution is to buy, not assemble or build • Adding unnecessary features does not help solve problems • Software engineers must communicate effectively to identify and understand problems

SOFTWARE DEVELOPMENT METHODS Waterfall

Unidirectional, finish this step before moving to the next

Software quality is difficult to determine

Untrained personnel

TYPES OF SOFTWARE Data processing software

Used to run businesses • Correctness and Security of data are major concerns

SOFTWARE DEVELOPMENT METHODS Agile

User feedback essential; feedback loops on several levels of granularity

SOFTWARE QUALITY AND THE STAKEHOLDERS

User: easy to learn; efficient to use; helps get work done Customer: solves problems at an acceptable cost in terms of money paid and resources used Developer: easy to design; easy to maintain; easy to reuse its parts Development manager: sells more and pleases customers while costing less to develop and maintain

Setting objectives for quality is a key engineering activity

You then design to meet the objectives

software is

complex not complicated

Complex

composed of many simple parts related to one another

Software deteriorates by having its design changed

erroneously, or unintentionally

•Optimizing is always necessary

for example, obtain the highest possible reliability using a fixed budget

Complicated

not well understood, or explained

DIFFICULTIES AND RISKS IN SOFTWARE ENGINEERING

• Complexity and large numbers of details • Uncertainty about technology • Uncertainty about requirements • Uncertainty about software engineering skills • Constant change • Deterioration of software design • Political risks

Short term:

• Does the software meet the customer's immediate needs? • Is it sufficiently efficient for the volume of data we have today? • Usability

Cost, time, and other constraints

• Finite resources • Usually a deadline • The benefits must outweigh the cost • Inaccurate estimates of cost and time have caused many project failures

•Some software qualities can conflict

• Increasing efficiency can affect maintainability and/or reusability • Increasing usability can affect efficiency • Increasing security can affect performance


संबंधित स्टडी सेट्स

HESI Review Question Combined Pt. 2

View Set

Within the "number" tab, how many categories are available for displaying numbers?

View Set

MED SURG FINAL - Cardiac, Respiratory, Endocrine, Fluids and Electrolytes, Integumentary, Surgical, and IV

View Set

OK History Online Final Review (benchmark tests)

View Set

Fever 1793 Vocabulary Chapters 23-25

View Set