29
Software Development Software development (also known as application development, software design, designing software, software application development, enterprise application development, or platform development) is the development of a software product. The term "software development" may be used to refer to the activity of computer programming, which is the process of writing and maintaining the source code, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.

Software Development Software development (also known as application development, software design, designing software, software application development,

Embed Size (px)

Citation preview

Page 1: Software Development Software development (also known as application development, software design, designing software, software application development,

Software DevelopmentSoftware development (also known as application development, software design, designing software, software application development, enterprise application development, or platform development) is the development of a software product. The term "software development" may be used to refer to the activity of computer programming, which is the process of writing and maintaining the source code, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.

Page 2: Software Development Software development (also known as application development, software design, designing software, software application development,

Strategies for Engineering Quality Software

High-quality software system are easy to learn and use because they perform quickly and efficiently they meet their users’ needs; and they operate safety and reliably so that system downtime is kept to a minimum. Such software has long been required to support the fields of air traffic control, nuclear power, automobile safety, health care, military and defense, and space exploration. Now that computers and software have become integral parts of almost every business, the demand for high-quality software is increasing.

Page 3: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Defect

A software defect is assny error that, if not removed, could cause a software system to fail to meet its users, needs. The impact of these defects can be trivial; for example, a computerized sensor in a refrigerator’s ice cube maker might fail to recognize that the tray is full and continue to make ice.

Page 4: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Quality Software quality is the degree to which a

software product meets the needs of its users. Quality management focuses on defining, measuring, and refining the quality of the development process and the product development during its various stages. These product including statements of requirements, flow charts, and user documentation are known as deliverables. The objectives of quality management is to help developers deliver high-quality system that meet the needs of their users

Page 5: Software Development Software development (also known as application development, software design, designing software, software application development,

Importance of Software quality A business information system is a set of

interrelated components including hardware, software, database, networks, people, and procedures that collects and process data and disseminates the output. A common type of business system is one that captures and records business transactions. For example, a manufacturer’s order-processing system captures order information, processes it to update inventory and accounts receivable, and ensures that the order is filled and shipped on time to the customer

Page 6: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Product Liability Software product litigation is certainly not new. One

lawsuit in the early 1990s involved a financial institution that became insolvent because defects in purchased software application caused errors in its integrated general ledger system, customers’ passbooks, and loan statements. Dissatisfied depositors responded by withdrawing more than $5 million. In another case from 1992, a Ford truck stalled because of a software defect in the truck’s fuel injector. In the ensuing accident, a young child was killed. A state supreme court later affirmed an award of $7.5 million in punitive damages against the manufacturer.

Page 7: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process A Software development process, also known

as Software Development Life Cycle (SDLC), is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development cycle. There are several models for such processes, each describing approaches to a variety of task or activities that take place during the process. Some people consider a lifecycle model a more general term and a software development process a more specific term.

Page 8: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process Development information system software is not a

simple process; it requires completing many complex activities, with many dependencies among the various activities. System analysts, programmers, architects database specialists, project managers documentation specialists, trainers, and testers are all involved in large software projects. Each of these groups has a role to play, and has specific responsibilities and tasks. In addition, each group makes decisions that can affect the software’s quality and the ability of an organization or an individual to use if effectively.

Page 9: Software Development Software development (also known as application development, software design, designing software, software application development,

The waterfall model- is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to the systems development life cycle, the waterfall model describes a development method that is linear and sequential. Waterfall development has distinct goals for each phase of development. Imagine a waterfall on the cliff of a steep mountain. Once the water has flowed over the edge of the cliff and has begun its journey down the side of the mountain, it cannot turn back. It is the same with waterfall development. Once a phase of development is completed, the development proceeds to the next phase and there is no turning back. 

Software Development Process

Model: Waterfall

Page 10: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: WaterfallRequirements

definition

System andsoftware design

Implementationand unit testing

Integration andsystem testing

Operation andmaintenance

Page 11: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: WaterfallAdvantages:

Needless to mention, it is a linear model and of course, linear models are the most simple to be implemented.

The amount of resources required to implement this model is minimal.

One great advantage of the waterfall model is that documentation is produced at every stage of the waterfall model development. This makes the understanding of the product designing procedure simpler.

After every major stage of software coding, testing is done to check the correct running of the code.

Page 12: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: WaterfallDisadvantages:

Ironically, the biggest disadvantage of the waterfall model is one of its greatest advantage. You cannot go back, if the design phase has gone wrong, things can get very complicated in the implementation phase.

Many times, it happens that the client is not very clear of what he exactly wants from the software. Any changes that he mentions in between may cause a lot of confusion.

Small changes or errors that arise in the completed software may cause a lot of problem.

The greatest disadvantage of the waterfall model is that until the final stage of the development cycle is complete, a working model of the software does not lie in the hands of the client.

Page 13: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: Spiral The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down, bottom-up concepts. Also known as the spiral lifecycle model (or spiral development), it is a systems development method (SDM) used in information technology(IT). This model of development combines the features of the prototyping and the waterfall model. The spiral model is intended for large, expensive and complicated projects.

Page 14: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: Spiral

Page 15: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: Spiral Advantages:

•This model improves avoidance of risk

•This model is very useful to choose a methodology for a software iteration

•This model can associate other methodologies like Waterfall, Prototyping, and Incremental methodologies. Suppose a project having a low risk of not meeting the user requirement and on other side having high risk of missing budget would follow waterfall approach

•In this model more functionality can be added in later versions.

Page 16: Software Development Software development (also known as application development, software design, designing software, software application development,

Software Development Process

Model: Spiral Disadvantages:

•This model limiting reusability

•This model is quite complex

•Spiral model is very customized for every project

•To use this model an experienced and skilled team required

•There is no proper control to move from one cycle to another cycle

Page 17: Software Development Software development (also known as application development, software design, designing software, software application development,

Dynamic Software Testing Software is developed in units called

subroutines or programs. These unit in turn are combined to form large systems. One approach to QA is to test the code for a completed unit of software by actually entering test data and comparing the results to the expected results. This is called dynamic testing. There are two forms of dynamic testing.

Page 18: Software Development Software development (also known as application development, software design, designing software, software application development,

Black-box testing

Black-box testing involves viewing the software unit as a device that has expected input and output behaviors but whose internal workings are unknown (a black box). If the unit demonstrates the expected behaviors for all the input data in the test suite, it passes the test.

Page 19: Software Development Software development (also known as application development, software design, designing software, software application development,

Whit-box testing White-box testing treats the software unit

as a device that has expected input and output behaviors but whose internal workings, unlike the unit in black-box testing, are known. White –box testing involves testing all possible logic paths through the software unit with thorough knowledge of its logic. The test data must be carefully constructed so that each program statement executes at least once.

Page 20: Software Development Software development (also known as application development, software design, designing software, software application development,

Other Types of Software Testing Static testing – Special software

programs called static analyzers are run against the new code. Rather than reviewing input and output , the static analyzers looks for suspicious patterns in programs that might indicate a defect.

Page 21: Software Development Software development (also known as application development, software design, designing software, software application development,

Integration testing – After successful unit testing, the software units are combined into an integrated subsystem that undergoes rigorous testing to ensure that the linkages among the various subsystems work successful.

System testing – After successful integration testing, the various subsystems are combined to test the entire system as a complete entity.

User acceptance testing – Independent testing performed by trained end users to ensure that the system operates as they exepect.

Page 22: Software Development Software development (also known as application development, software design, designing software, software application development,

Capability Maturity Model Integration Capability Maturity Model Integration

(CMMI) developed by the Software Engineering Institute at Carnegie Mellon is a process improvement approach that defines the essential elements of effectives processes. The model is general enough to be used to evaluate and improve almost any process, and a specific application of CMMI CMMI-Development (CMMI-DEV) is frequently used to assess and improve software development practices.

Page 23: Software Development Software development (also known as application development, software design, designing software, software application development,

KEY ISSUES IN SOFTWARE DEVELOPMENT

Although defects in any system can cause serious problems, the consequences of software defects in certain systems can be deadly. In these kinds of systems, the stakes involved in creating quality software are raised to the highest possible level. The ethical decisions involving a trade-off-if one must be considered between quality and such factors as cost, ease of use, and time to market requires extremely serious examination.

Page 24: Software Development Software development (also known as application development, software design, designing software, software application development,

Quality Management Standards The International Organization for

Standardization (ISO), Founded in 1947, is a worldwide federation of national standards bodies from 161 countries. The ISO issued its 9000 series of business management standards in 1988. These standards require organizations to develop formal quality management systems that focus on identifying and meeting the needs, desires, and expectations of their customers.

Page 25: Software Development Software development (also known as application development, software design, designing software, software application development,

The ISO 900 standard serves as a guide to quality products, services, and management. Approximately 350,000 organizations in more than 150 countries have ISO 9000 certification. Although companies can use the standard as a management guide for their own purposes in achieving effective control, the priority for many companies is having a qualified external agency certify that the have achieved ISO 9000 certified to win a contract from them.

Page 26: Software Development Software development (also known as application development, software design, designing software, software application development,

To obtain this coveted certificate, an organization must submit to an examination by an external assessor and fulfill the following requirements: Have written procedures for all

processes. Follow those procedures. Prove to an auditor that it has fulfilled

the first two requirements; this proof can require observation of actual work practices and interviews with customers, suppliers, and employees.

Page 27: Software Development Software development (also known as application development, software design, designing software, software application development,

Prove to an auditor that it has fulfilled the first two requirements; this proof can require observation of actual work practices and interviews with customers, suppliers, and employees.

Page 28: Software Development Software development (also known as application development, software design, designing software, software application development,

The various ISO 9000 series of standards address the following software-related activities: ISO 9001: Design, development,

production, installation, servicing ISO 9002: Production, installation,

servicing ISO 9003: Inspection and testing ISO 9000-3: Development, supply, and

maintenance of software ISO 9004: Quality management and quality

systems elements

Page 29: Software Development Software development (also known as application development, software design, designing software, software application development,

Failure mode and effects analysis(FMEA) Failure mode and effects analysis

(FMEA) is an important technique used to develop ISO 9000-compliant quality systems by both evaluating reliability and determining the effects of system and equipment failures. Failures are classified according to their impact on a project’s success.