Вы находитесь на странице: 1из 68

Software Engineering

Defined by IEEE as:

(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 in (1).

tools
methods process model A quality focus

- provide support for methods and processes - technical how-tos -glue that holds layers together - bedrock

Process, Methods, and Tools


The key process areas form the basis for management control of software projects and establish the context in which technical methods are applied, work products (models, documents, data, reports, forms, etc.) are produced, milestones are established, quality is ensured, and change is properly managed. Software engineering methods rely on a set of basic principles that govern each area of the technology and include modeling activities CAD or CAM

Engineering is the analysis, design, construction, verification, and management of technical (or social) entities. What is the problem to be solved? What characteristics of the entity are used to solve the problem? How will the entity (and the solution) be realized? How will the entity be constructed? What approach will be used to uncover errors that were made in the design and construction of the entity? How will the entity be supported over the long term, when corrections, adaptations, and enhancements are requested by users of the entity.

Definition Phase
Focus on What software is.

Development Phase
Focus on How software works.

Support Phase
Focus on Change to the software.

Identify information to be processed Identify system behavior - functions and performance Determine constraints, interfaces, validation criteria Major tasks:
System engineering Software project planning Requirements analysis

Define data structures, function implementation, procedural details, interfaces Translate design to programming language How testing is performed Major tasks:
Software design Code generation Software testing

Reapplies definition and development phases to existing software Types of changes: Correction Change the software to correct defects. Adaptation Enhancement Prevention
Modification to software to accommodate changes to its external environment. Extends the software beyond its original functional requirements. Software Reengineering.

Activities in software projects Characterized by a common process framework


Framework activities - task sets Umbrella activities

Process maturity enables development of quality software products

Common Process Framework Framework Activities Task Sets Tasks Milestones, deliverables SQA Points

Umbrella Activities

1.

Communication:-

2.

Planning

Important role in SE b/w customer & Stakeholder Required in SW development(team, individual) Help to Integrate & collaboration SW process. Data gathering & requirement analysis

3. 4. 5.

Modeling Construction Deployment

Major work/project has to planned properly Schedule Identifies types of risk involves throughout projects How to do work or How SE activities will takes place. How technical task going to takes place What type of resources(people, machine, Infra.) are required & how to utilized

Modeling Create diff models of SW Useful to customer & Developer to understand requiremnets Its part of design Construction Coding or programmed Tested manually or automated Actually SW computerized and tested Deployment When partially or fully developed Delivered to customer Customer evaluates and gives feedback

Software project management (tracking and control) Formal technical reviews Software quality assurance Software configuration management Document preparation and production Reusability management Measurement Risk management

Q Explain the approach used by SEI (Software Engineering Institute) to determine the current state of process maturity of an organization. Q Explain CMMI in details

Software Engineering Institute (SEI) developed capabilities that should be present as organizations reach different levels of process maturity.

Level 1: Initial Software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined and success depends on individual effort. Level 2 : Repeatable Basic project management processes are established to track cost, schedule and functionality.

Level 3 : Defined Software process for both management and engineering activities are documented, standardized and integrated into organization wide software process.

Level 4 : Managed Detailed measures of the software process and product quality are collected. Level 5 : Optimizing Process improvement is enabled by quantitative feedback from the process and from testing innovative ideas and technologies.

Goalsthe overall objectives that the KPA must achieve. Commitmentsrequirements (imposed on the organization) that must be met to achieve the goals or provide proof of intent to comply with the goals. Abilitiesthose things that must be in place (organizationally and technically) to enable the organization to meet the commitments. Activitiesthe specific tasks required to achieve the KPA function. Methods for monitoring implementationthe manner in which the activities are monitored as they are put into place. Methods for verifying implementationthe manner in which proper practice for the KPA can be verified.

Process Maturity Level 2


Software Configuration Management. Software Quality Assurance. Software Subcontract Management. Software Project Tracking and oversight. Software Project Planning Requirement Management.

Process Maturity Level 3


Peer Reviews Intergroup Engineering Software Product Engineering Integrated Software Management Training Program Organization Process Definition Organization Process Focus.

Process Maturity Level 4


Software Quality Management Quantitative Process Management

Process Maturity Level 5


Process Change Management Technology Change Management Defect Prevention

The key practices are policies, procedures, and activities that must occur before a key process area has been fully instituted.

Waterfall Model Prototyping Model Rapid Application Development Model Evolutionary Models
Incremental Model Spiral Model WINWIN Spiral Model Concurrent Development model

Component-Based Development Model Other Models

Status quo represents the current state of affairs Problem definition identifies the specific problem to be solved; Technical Development solves the problem through the application of some technology, and solution integration delivers the results (e.g., documents, programs, data, new business function, new product)

The framework activities will always be applied on every project ... BUT the tasks (and degree of rigor) for each activity will vary based on:
the type of project (an entry point to the model) characteristics of the project common sense judgment; concurrence of the project team

Or classic life cycle Or waterfall model The LSM suggests a systematic, sequential approach to software development that begins at the system level and progresses through analysis, design, coding, testing, and support.

System/information Engineering and Modeling : Encompasses requirement gathering at system level with a small amount of top level design and analysis. Information engineering encompasses requirement gathering at the strategic business level and at the business area level. Software Requirement Analysis : Requirement gathering process is intensified and focused on software. Analyst must understand the information domain for the software as well as required function, behavior, performance and interface. Requirements must be documented and reviewed with the customer.

Design
Multistep process focuses on four distinct attributes of a program:
Data structure Software architecture Interface representation Procedural(algorithmic) detail

Design process translates requirements into representation of the software

Code Generation
Design is translated into machine readable form.

Testing Focuses on the logical internals of the software ensuring that all the statements have been tested. Focuses on functional externals, that is conducting test to uncover errors and to ensure that defined input will produce actual agreed result. Support Accommodate changes. Change is encountered because: Error Encountered Accommodate external environment(New OS or Peripheral devices) Enhance performance/functional enhancements.

Also called as Classic Life Cycle or Waterfall Model. oldest and most widely used paradigm Activities flow from one phase to another. Major advantages: Good for planning and welldefined/repeated projects. Being oldest, this is one of the time tested methods.

Real projects rarely follow the sequence All requirements may not be stated explicitly by customer Customer only sees the results after some time Developers are often delayed at certain phases

Most helpful when developer is not sure of the efficiency of an algorithm and the adaptability of of an operating system. Customer is unaware of detailed input, processing or output requirement.

Start
Requirements gathering and refinement

Quick design Refining prototype

Building prototype Customer evaluation

Engineer product

Developer and customer determine objectives and draft requirements Prototype quickly produced and evaluated by customer Prototype then refined, and re-evaluated Process iterated, before final product development Advantages: Customer participation and better requirements

Problem 1: Customer may see prototype as working model and expects fast results Problem 2: Developer compromised when producing prototype quickly, e.g. different operating system or programming language Software quality is not considered.

RAD is a linear sequential software development process model that emphasis an extremely short development cycle using a component based construction approach.

High-speed version of waterfall model Requirements well-understood, fully functional system produced in short time The application modularized - major functions can be completed in 3 months Separate teams complete the functions, then integrated as a whole Requires human resource and commitment

Business Modeling:
Information flow among business functions is modeled answering following questions
What information drives the business process? What information is generated? Who generated it? Where does the information goes? Who processes it?

Data Modeling:
The information collected from business modeling is refined into a set of data objects (entities) that are needed to support the business. The attributes (character of each entity) are identified and the relation between these data objects (entities) is defined.

Process Modeling:

Application Generation:

The data object defined in the data modeling phase are transformed to achieve the information flow necessary to implement a business function. Processing descriptions are created for adding, modifying, deleting or retrieving a data object.

Automated tools are used to facilitate construction of the software; even they use the 4th GL techniques

Testing and Turn over:


Many of the programming components have already been tested since RAD emphasis reuse. This reduces overall testing time. But new components must be tested and all interfaces must be fully exercised.

Advantages:

Disadvantages:

RAD reduces the development time and reusability of components help to speed up development. All functions are modularized so it is easy to work with.

For large projects RAD require highly skilled engineers in the team. Both end customer and developer should be committed to complete the system in a much abbreviated time frame. If commitment is lacking RAD will fail. RAD is based on Object Oriented approach and if it is difficult to modularize the project the RAD may not work well.

A system that evolves over time is called a complex system. The key factor in these types of models is that they are iterative. Evolutionary software process models are well suited for the development of object oriented systems.

This model combines the concepts of the linear model with the concept of iteration. It delivers the software in small parts called "increments." The first increment is called the "core product." It is the basic product meeting the requirements without any added frills.

The successive increments then add to the functionality of the product.

Useful when insufficient staff available. Increments can be planned to manage technical risks.

An evolutionary process model that couples iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model. Software is developed in series of incremental releases. Spiral model is divided in number of framework activities also called task regions.

Customer Communication:
Task required to establish effective communication between developer and customer.

Planning:
Tasks required to define resources, timelines and other project related information.

Risk Analysis:
Tasks required to assess both technical and management risks.

Engineering:
Tasks required to build one or more representations of the application.

Construction and Release:


Task required to construct, test, install and provide user support (e.g. documentation and training.

Customer Evaluation:
Task required to obtain customer feedback based on evaluation of the software representation created during engineering phase and implemented during the installation phase.

May be difficult to convince customers that evolution is controllable

Demands risk assessment expertise - major risk will cause problems if not identified
Relatively new and not widely used - cannot determine performance

Eliciting software requirements defined through negotiation between customer and developer, where each party attempts to balance technical and business constraints

A variation of the standard Spiral Model Identify key stakeholders Determine stakeholder win conditions Reconcile win conditions into a set of win-win conditions for the whole project

Similar to spiral model often used in development of client/server applications State charts for each activity Events trigger state transitions Useful for inter organizational development Useful where there is a high degree of interdependence between different modules (e.g., client-server apps)

Spiral model variation in which applications are built from prepackaged software components called classes. Spiral Model, plus object-oriented reusability Challenges:
Reusability requires careful planning Most existing programs are not reusable More suitable for particular application domains (with significant patterns of reuse)

Formal Methods
Rigorous mathematical notation used to specify, design, and verify computer-based systems Rigorous mathematical (logical) specification of software Formal models are time-consuming Requires developer, customer skill

Fourth Generation Techniques:


Software tool is used to generate the source code for a software system from a high level specification representation High-level definition language E.g., UML -> Java code generation Benefits small/midsize projects most

Вам также может понравиться