Programming language Central tools used in software development Having influenced how well we can...

48

Transcript of Programming language Central tools used in software development Having influenced how well we can...

Programming language Central tools used in software

development Having influenced how well we can

achieve our software engineering goals

Operating systems Software should usually run on a

specific operating system Need to consider if the software

can work well with a specific operating system

Database Databases allow applications to be

written that use data without worrying about the underlying representation of the data

Allow database systems to be used as components of large software systems

Artificial intelligence Some researchers have been

trying to apply artificial-intelligence techniques to improve software engineering

Software is said to have a life cycle composed of several phases.

waterfall model - the process structures the activities as a linear cascade of phases, in which the output of one phase flows as the input to the next one. Each phase has well-defined starting and ending points, with clearly identifiable deliverables to the next phase

Requirements analysis and specification Usually the first phase of a large-scale software development project Purpose of this phase is to identify and document the exact requirements of the system

System design and specification Software engineers design a

software system to meet requirements.

Coding and module testing The engineer produces the actual

code that will be delivered to the customer as the running system

Individual modules developed in the coding phase are tested before being delivered to the next phase

Integration and system testing All the modules having been

developed before and tested individually are put together-integrated-in this phase and are tested as a whole system

Delivery and maintenance Once the system passes all the

tests, it is delivered to the customer and enters the maintenance phase. All modifications made to the system after the initial delivery are usually attributed to this phase

Software production process: The process we follow to build,

deliver, deploy and evolve the software product, from the inception of an idea all the way to the delivery and final retirement of the system.

Satisfy customer’s expectations by delivering quality products on time.

Software can be decomposed into a number of specific activities:

• Feasibility study Performed before the production process actually

starts, to support the decision of weather a new development should be started.

Its goal is to provide a feasibility study document, which represents different scenarios and alternative solutions.

The feasibility study document should contain A definition of problem Alternative solutions and their expected benefits Required resources, costs, and delivery dates in each

proposed alternative solution

• DesigningDesign is the activity through which

software engineer structure the application at different levels of detail.

The result is a design specification document, which contains a description of the software architecture, including: The system in terms of its components Their interfaces, Their interconnections

• Delivery, deployment, and maintenance

Delivery Distributed among a selected group of customers prior to its official release, also called beta testing

Deployment It defines the physical run-time architecture

Maintenance A set of activities performed to modify the system after it is delivered to the customer

CATEGORY NUMBER OF PROGRAMMERS DURATION PRODUCT SIZE

Trivial 1 1-4 weeks 500

Small 1 1-6 months 1K to 2K

Medium 2 to 5 1-2 years 5k to 50k

Large 5 to 20 2-3 years 50k to 100k

Very Large 100 to 1000 4-5 years 1 M

Extremely Large 2000 - 5000 5 - 10 years 1M to 10M

1 programmer working perhaps, part time.

Packaged in 10 to 20 sub routines. Doesn’t need a formal analysis.

Conflict If personal software intended for personal

use became a software product.

1 programmer packaged perhaps in 25 to 50 routines Small programs have no interaction at

all. Client interaction. Do have standards.

Development Notation Documentation Reviews

2 to 5 programmers 250 to 1000 subroutines Have interactions with other programs! Do also have client and developer

interaction.Advantage:

has a vastly improved product quality

5 to 20 programmers Has massive number of subroutines Applies several subsystem

Example:1. Compiler2. Database Package3. Graphics Program4. Real-time control system

Requires 100 to 1000 programmers 1,000,000 source instructions HAS MASSIVE NUMBER OF SUBROUTINES and

SUBSYSTEMS which forms a LARGE SYSTEM! Involves real-time processing,

telecommunication and multitasking!Example:LARGE SCALE OS, LARGE DB SYSTEM, AND MILITARY COMMAND CONTROL SYSTEM.

According to Brooks…

IBM and OS/360 was developed by 5000 programmers over a period of 5 years and contained more that 1,000,000 codes!

Employs 2000 to 5000 programmers for a period of up to 10 years and results in 1 to 10 million lines of codes.

It involves LIFE-and-DEATH processesExample:

air traffic controlballistic missile defensemilitary command and control system

The phases of WATERFALL life cycle model

A. Requirement analysis and specifications B. System design and specifications C. Coding and module testing D. Integration and system testing E. Delivery and maintenance

_______1. They are the activities through which we actually write programs using a programming language.

_______ 2. In this phase, all system modules will be integrated together and tested as a whole.

 _______ 3. In this phase, software engineers produced the actual code

that will be delivered to the customer as running system. _______ 4. Once the system has passed all the tests conducted, it will be

delivered to the clients and then proceeds to the maintenance phase.

_______ 5. It usually the first phase of a large-scale software development project.

_______6. In this phase, individual modules developed in the coding phase are tested before being delivered to the next phase.

 _______7. All modifications made to the system after the initial delivery is usually

attributed to this phase.

_______8. In this phase, software engineers design the system to meet the requirements and specifications of the clients.

_______ 9. This phase includes the architectural and detailed design of software development.

_______ 10. The purpose of this phase is to identify and document the exact requirements of the system.

  

A Component is a tested, special purpose software unit which is reusable, adaptable and portable. In software terms, components are also called component ware (CM).

Framework is the combination of components that can be plugged into an application.

A Software interface is the program that makes it possible for components to interact and interoperate with each other.

Eg. JAVA BEANS

Software Entities are the processes, requirements, products and resources of a software engineering landscape.

Software Requirement Specification (SRS) : This is a blueprint for the complete design of a software product.

Portability Reliability Efficiency Accuracy Robustness Correctness

Portability : means transfer of software from one system to other.

Platform Independence means it can execute on any type of platform.

A genotype provides information about a member of a population.

A phenotype characterizes the behavior of a population member.

Evolution pattern = where || why || what || when || how || by-whom.

This is the period of time beginning with a concept for a software product and ending whenever the software is no longer available for use.

The Software life-cycle typically includes the following:

Requirements, Analysis, Design, construction, testing (Validation), installation, operation, maintenance, and retirement.

The application of a systematic, disciplined, quantifiable approach to development, operation, and maintenance of software; that is, the application of engineering to software.

The specification, development, management, and evolution of software systems.

A discipline whose aim is the production of quality software, delivered on time, within budget, and satisfying users' needs.

Designing and developing high-quality software. Application of computer science techniques to a variety of problems.

CASE stands for Computer Aided Software Engineering; it can be used to mean any computer-based tool for software planning, development, and evolution.

Function points and feature points are methods of estimating the "amount of functionality" required for a program, and are thus used to estimate project completion time. The basic idea involves counting inputs, outputs, and other features of a description of functionality.

A Fault, Failure, Mistake.

'Clean room' is a software process based on mathematical verification of components and system-level testing.

The following are the two major groups of testing

i) Black Box testingii) White Box testing.

Functional or black box testing is an approach to testing where the tests are derived from the program or component specification.

The system is a black box whose behavior can only be determined by studying its inputs and the related outputs.

Another name for this is the functional testing because the tester is only concentrated with the functionality and not the implementation of the software.

Using white box testing methods, the software engineer can derive test cases that do the following: Guarantee that all independent paths with in

a module have been executive once at least. Exercise all logical decisions on their true

and false sides Exercise all loops, data flow, conditional

testing are working

Checkpoints enable you to compare the current behavior of your application to its expected behavior.

GUI checkpoints check information about GUI objects. For example, you can check that a button is enabled or see which item is selected in a list.

Database checkpoints check the data content in a database.

Text checkpoints read text in GUI objects and in bitmaps, and enable you to check their contents.

Bitmap checkpoints compare a "snapshot" of a window or an area in your application to an image captured in an earlier version.

Unit testing: Generally the code which is generated is compiled. The unit

test is white box oriented and the steps can be conducted in parallel for multiple components.

1. The module Interface is tested to ensure that information properly flows into and out of the program unit under test.

2. The local data structure is examined to ensure that data stored temporarily maintains its integrity during all steps in an algorithm’s execution.

3. Boundary conditions are tested to ensure that the module operates properly at boundaries established to limit and restrict processing

4. All the statements are executed at least once and error handling paths are tested

Integration testing:- Integration testing is a systematic technique for

constructing the program structure .In integration test you have like: Top down Bottom up Regressive Performance testing Recovery testing Security Testing Acceptance Testing

Democratic – team members participates in decision making.

Chief programmer – assisted and supported by the team members.

Chief programmer

Back-up program consultant

Junior Programmer

Librarian

Hierarchical Team Structure

Junior Programmers

Junior Programmers

Senior Programmers

Project Leader

CLEAN ROOM PORTABILITYBLACK BOX BUGFUNCTION POINT ROBUSTNESSEFFICIENCY SOFTWARE ENTITIESSOFTWARE REQUIREMENT SPECS.FRAMEWORK

Normalization All normal forms How to normalize many to many

relation What is a procedure Give one example?