You are on page 1of 14

SUBJECT: SOFTWARE ENGINEERING CLASS: III-B.COM (IT) TEACHER: SARANYA.

Unit 1: Software Product and process: software characteristics and application, Software process, software process Models: linear sequential model, prototype model, RAD model, evolutionary software process model, software development process. Software Product and process Computer software has become a driving force. It is the engine that drives business decision making. It serves as the basis for modern scientific investigation and engineering problem solving. It is embedded in systems of all kinds: transportation, medical, telecommunications, military, industrial process, entertainment, etc. Software:
Instructions (computer programs) that when executed provide desired function and

performance. Data structures that enable the program to adequately manipulate information. Documents that describe the operation and use of the programs. Software characteristics: Software is a logical rather than a physical system element.software has characteristics as follows: 1. software is developed or engineered it is not manufactured in the classical sense: Software costs are concentrated in engineering.some similarities exit between software development and hardware manufacture,the two activities are fundamentally different.In both activities,high quality is achieved through good design,but the manufacturing phase for hardware introduce quality problems.Both activities depend on people,but the relationship between people applied and work accomplished is entirely different. 2.software doesnt wear out:

The relationship often called the bathtub curve,indicates that hardware exhibits relatively high failure rates,defects are corrected and the failure rate drops to a steady state level for some period of time. Another aspect of wear illustrates the difference between hardware and software.When the hardware componentwears out.Every software failure indicates an error in design or in the process through which design was translated in to machine executable code.finally software maintenance involves more complexity then hardware maintenance. 3.Most software is custom-built,rather than being assembled from existing components: Consider the mannerin which the control hardware for microprocessor based product is designed and built.The design engineer draws a simple schematic of the digital circuitry then refers to a catalog of digital components.There are no catalogs of software components.It is possible to order off the shelf software,but only as a complete unit. Software application: Software may be applied in any situation for which a prespecified set of procedural steps has been defined.Information content and determinacy are important factors.software that controls an automated machine accepts discrete data items with limited structure and produces individual machine commands in rapid succession. Information determinancy refers to the predictability of the order and timing of information.An engineering analysis program accepts data that have a predefined order,executes the analysis algorithm without interruption and produces resultant data in report or graphical format.The following software areas indicate the breadth of potential applications: System Software: System software is collection of programs written to service other programs.Some system software(e.g.,compilers,editors and file management utilities)process complex,but determinate,information structures. Other systems applications(e.g.,operating system components,drivers,telecommunications processors)process largely indeterminate data. Heavy usage by multiple users,concurrent operation that requires scheduling,resource sharing and sophisticated process management,complex data structures and multiple external interfaces. Real-Time software: Programs that monitor/analyse/control real world events as they occur are called real-time software.Elements of real time software include a data gathering components that collects and formats information from external environment,an analysis component that transforms information

as required by the application,a control/output component that responds to the external environment.

Business software: Business information processing is the largest single software application area.Discrete systems(e.g.,Payroll,accounts receivable,payable,inventory,etc)have evolved into management information system.MIS software that accesses one or more large databases containing business information.Applications in this area restructure existing data in a way that facilitates business operations or management decision making. Engineering and Scientific Software: Engineering and Scientific Software has been characterized by number crunchingalgorithms.Computer-aided design,system simulation and other interactive applications have begun to take on real-time and even system software characteristics. Embedded Software: Intelligent products have been common place in nearly every consumer and industrial market.Embedded software resides in read only memory and is used to control products and systems for the consumer and industrial markets.Embedded software can perform very limited and esoteric functions (e.g.,key pad,control for a microwave oven)or provide significant function and control capability(eg.digital functions In an automobile such as fuel control,dashboard displays,etc) Personal Computer Software: The personal computer software market has burgeoned over the past decade.Word processing,spreadsheets,computer graphics,multimedia,entertainment,database management,personal and business financial applications and external network or database access are only a few of hundreds of applications. Artificial Intelligence Software: Artificial intelligence software makes use of non numerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis.In recent years, a new branch of AI software called artificial neural networks has evolved.A neural network simulates the structure of brain processes and may ultimately lead to a new class of software that can recognize complex patterns and learn from past experience.

Software process Models: To solve actual problems in an industry setting, a software engineer or a team of engineers must incorporate a development strategy that encompasses the process,methods and tools layers.All software development can be characterized as a problem solving in which four distinct stages are encountered:status quo,problem definition,technical development and solution integration. Linear sequential Model: The linear sequential model for software engineering called the Classic life cycleor the waterfall Model.software development begins with customer requirmentss and progress through modeling,planning,construction and deployment. Waterfall model is applied are: 1.real projects rarely follow the sequential flow that the model proposes.Although the linear model can accomadate iteration,it does indirectly. 2.It is often difficult for the customer to state all requirements explicitly. The customer must have patience.A working version of the program will not be available until late in the project time span. Evolutionary Software Process Models: Evolutionary models are iterative.They are characterized in a manner that enables software engineers to develop increasingly more complete versions of the software. The Incremental Model: The incremental model combines element of the linear sequential model with the iterative philosophy of prototyping.Each linear sequence produces a deliverableincrementof the software. for e.g word processing software developed using the incremental paradigm might deliver basic file management,editing,and document production functions in the first increment, more sophisticated editing and document production capabilities in the second increment, spelling and grammar checking in the fourth increment. When an incremental model is used ,the first increment is often a core product.Basic requirements are addressed,but many supplementary features remain undelivered.This process is repeated following the delivery of each increment ,until the complete product is produced.

Analysi s

Desi gn Analys is

cod e Desig n Analy sis

tes t

Delivery of 1st increment

cod e Desig n Analy sis

test

cod e Desig n

test

code

test

The Spiral Model: In spiral model,software is developed in a series of incremental releases.During iterations,the incremental release might be a paaer model or prototype.The spiral model is divided into a number of framework activities,also called task regions.There are six task regions. Customer Communication-Task required to establish effectective communication between developer and customer. Planning-tasks required to define resources,timelines and other project related information. Risk Analysis-tasks required to asses both technical and management risks. Engineering-task requird tobuild one or more representation of the application. Construction & release-task required to construct ,test,install and provide user support(eg.documentation and training) Customer Evaluation-tasks required to obtain customer feedback based on evaluation of the software representations created during the engineering stage and implemented during the installation stage. For small projects,the number of work tasks and the formality is low,for larger more critical projects each task region contains more work tasks that are defined to achieve higher level of formality.A concept development project starts at the core of the spiral and will continue .

The spial model is a realistic approach to the development of large scale systems and software,because software evolves as the process progresses,the and customer better understand and react to risk each evaluationary level.

The Component Assembly Model: Object technologies provide technical framework for a component based process model for software engineering.The object oriented paradigm emphasizes the creation of classes that encapsulate both data and the algorithm is used to manipulate the data.If properly designed and implemented. The engineering activity begins with the identification of candidate classes.This is accomplished by examining the data that are to be manipulated by the application and the algorithms that will be applied. The component assembly model leads to software to reuse and reusability provide software engineers with number of measurable benefits. The concurrent development Model: The concurrent development model sometimes called concurrent engineering.The concurrent development model can be represented schematically as a series of major technical activities,tasks and their associated states.for eg. The engineering activity defined for the spiral model is accomplished by invoking the following tasks:prototyping and analysis modeling,reqirement specification and design. The activity analysis may be in anyone of the states noted at any given time.Similarly,other activities(eg.design or customer communication)can be represented in an analogous manner all the activities exit concurrently but reside in different tasks. The analysis activity noe makes a transition into the under development state.The concurrent model defines a series of events that will trigger transitions from state to state for each of the software engineering activities. When applied to client/server,the concurrent process model defines the activities in two dimension:System dimension,and component dimension. System level issues addressed using three activities:Design,assenmbly and use.The Component dimension is addressed with two activities Design and realization.Concurrency is achieved in two ways: 1.System and component activities occur simulataneously and can be modeling.

2.Typical client/server application is implemented with many components each of which can be designed and realized concurrently.

Unit II:

Software project planning and scheduling: software requirements specification, requirement validation, software design principles, software project: Estimation, size oriented, software metrix, and software cost estimation. Software project planning: Software project planning process begins with set of activities,they are estimation,resources,Human resources,reusable software resource. Observation on Estimating:
Estimation of resources,cost and schedule for a software development effort requires

experience,access to good historical information.


Project complexity has a strong effect on uncertainity that is inherent in planning. Project size is another important factor that can be affect the accuracy of estimates.The

size increases,the interdependency among various elements of software grows high. Degree of structured uncertainity also has an effect on estimation risk. Availability of historical information also determines estimation risk.Risk is measured through resources,cost and schedule. Project planning objectives: Objective of software project planning is to provide a framework that enables the manager to make reasonable estimates of resources,cost and schedule. Planning objective is achieved through a process of information that leads to reasonable estimates. Software Scope: Software scope describes function,performance,constraints,interfaces and relationship.

Functions described in the statement of scope evaluates. Performance considerations encompass,processing and response time requirements. Constraints identify limits placed on the software by external hardware,aavaailable

memory or other exisiting system.

Resources: It is the second task of software planning is estimation of resources required to accomplish the software development effort. Each resource is specified with four categories: Human resource: Planner begins by evaluating scope and selecting the skills required to complete development.
Both organization position and speciality are specified.Here organization position indicates

Chronological time resource will be required Description of the resource Statement of availability, Duration of time.

manager, senior software engineer, etc, and speciality indicates telecommunication database, client/server. Reusable Software Resources: In reusable software resources have four software resource categories: Off-The-self components Full-Experience Components Partial-Experience Components New Components

Off-The-self components-Existing software has been developed internally for past project. The components are ready for use on the current project and fully validated. Full-Experience Components-Existing specifications, design, code or test data. Fully experience in the application area represented by these components. Modifications required for full-experience components will be relatively low risk. Partial-Experience Components-Require substantial components modification. Members of the current software system team have only limited experience in the application. It is the fair degree of risk. New components-Software components that must be built by software team specifically. Environmental Resource: Environmental that supports the software project, often called software engineering(SEE),incorporates hardware and software components.

Software Requirement Specification: Software requirement specification in a text narrative, supported by graphical models, system charts and high level pseudo programs in natural English language. Software requirement specification should be written for all requirements, small, large, simple and complex. Framework for the specification as follows: I. Introduction A. System Reference B.Overall Description. C.Software project Constraints II. Information Description A. Information Content Representation B.Information Flow representation 1. Data Flow

2. Control Flow III. Functional Description A. Functional partitioning B.Functional Description 1. Processing Narrative 2. Restriction/Limitations 3. Performance requirements 4. Design Constraints 5. Supporting Diagram C.Control Description 1. Control Specification 2. Design Constraints
IV. Behavioral Description

A. System States B.Events and actions V. Validation Criteria A. Performance Bounds B.Classes of Tests C.Expected software response D.Special Considerations VI. Bibliography VII. Appendix

Introduction-States the goals and objectives of the software.

Information Description-Provides a detailed description of the problem that the software must solve. Information Content-relationships, flow and structure are documented.Hardware, software and human interfaces are described for external system and internal system. Description of each function requirement to solve the problem is presented in the Functional Description Design Constraints are stated and justified, performance characteristics are stated. Behavioral Description section of the specification examines the operation of software. Validation Criteria-Completing it demand a thorough understanding of software requirements. Bibliography Contains references to all documents that relate to the software. It includes software engineering documentation, technical references, vendor literature and standards. Appendix-Contains information that supplements the specification, tabular data, detailed description of algorithm, charts, graphs and etc. The Software requirement specification characteristics : Clarity-Single interpretation for the author (analysis), the user, the end user, the stake-holder, the developer, the tester and customer. It can be enhanced if software requirement specification includes diagrams, models and charts. Completeness-Software requirement specification is complete when it is documented after, the involvement of all types of concerned personnel. Focusing on all problems,goals,and objectives and not only on functions and features. Correct definition of scope and boundaries of the software and the system. Traceability-Characteristic facilitates on understanding of the effect on various functions and features, if modification is the requirement. If an error occurs in testing, its a cause analysis is possible through traceability.Navigating through test plan, test case, test results, design architecture and source code is easily possible. Feasibility-It is assumed that sources of data, user capability, system culture, work culture and such other aspects satisfy the expectations of the developer.

Testability-To create a test plan to confirm met and reqirements can be delivered.

Considering functional and non-functional requirements. Determining features and facilities required for each requirements. Ensuring that users and stake holders freeze the requirement.

Correctness-The requirement and its specification through the software system should achieve the business goals and solve managerial and operational problems.A requirement and its functions,features are considered correct,when it is most effective and efficient. Consistency-To achieve correct results across the system.This is achieved by Use of standard terms and definition. Consistent application of business rules in all functionality. Use of data dictionary.

Modifiability-To facilitate the modifications and the keep track of them software requirement specification are documented in structure manner.Helps to trace any detail easily and modification is done at all places where necessary. Design Principles: Software design is both a process and model.The design process is set of iterative steps that enable the designer to describe all aspects of software to be built.Creative skill, past experience; overall commitments to quality are critical success factors for a competent design. The design model is the equivalent of an architects plans for a house. For eg.Three Dimensional rendering of the house. The design process as follows:The Design Process should not suffer from tunnel Vision-Good designer should consider alternative approaches, judging each based on the requirements of the problem resources available.. The Design should be traceable to the analysis Model-Traces to multiple requirements, tracking how requirements have been satisfied by design model. The Design should not reinvent the wheel-systems are constructed using a set of design patterns .These patterns called reusable design components. Time is short and resources are limited. The Design should minimize intellectual Distance-Between the software and problem as it exists in the real world.

The Design should exhibit uniformity and integration-Rules of style and format should be defined for design team before design work begins. The Design should be structured to accommodate change-many of the design concepts to achieve this principle. The Design should be structured to degrade gently-well designed computer program should never degrade. The Design is not coding, coding is not design-Detailed procedural designs are created; level of abstraction oof the design model is higher than source code. The Design should be assessed for quality-Variety of design concepts and design measures are available. The Design should be reviewed to minimize conceptual errors-design is reviewed, missing the forest trees.A designer should ensure that major conceptual elements of the design (Omissions, ambiguity, inconsistency). Software Cost Estimation: Once the size of the software (FP-Function point and LOC Line of Code) is estimated the next important parameter is the cost of development. The costs to be considered are as under: Personnel costs Hardware/software costs Communication ,Travel and stay costs Training Costs Outsourcing Costs Marketing Costs Administrative Costs

Personnel costs: This cost includes the salary component and all other costs associated with the employee. The cost of the employee is termed as cost to the companywhen the employee is in service. The cost to the company varies by position and experience. To assume three classes of employees, namely

manager, analyst and the programmer. Then we have a measure of allocating total effort in percentage to various phases in development life cycle. Using this measure man, month, effort (MME) is then multiplied by cost to the company(c) to arrive the total cost. In life cycle phase, analysis and design is techno-managerial requirement. Coding and design, testing is the programmers role and integration, system testing and implementation is a project management analyst role.

Hardware/software costs: Proposed software solution requires purchase of specific hardware and software. The total cost of hardware and software will be added to the software cost. Communication, travel and stay costs: Costs are incurred during the life cycle phases through vists,telephones,or video-conferencing, hotel stay and so on. The best estimate is possible by forecasting, number of visits, number of days of hotel stay, number of telephone calls,etc.,. Training Costs: Changes in tools and technologies very often manpower may have to be trained on new technology developments or to upgrade their knowledge to the latest version. Outsourcing Costs: Organization will prefer to sub contract or outsource some part of development as the costs benefits of outsourcing the development is favorable. Marketing Costs: Marketing costs have two components one direct and the other is indirect. The direct portion includes all actual costs identifiable to the customer incurred for obtaining the business. Administrative costs: Costs include the cost of finance, HR conveyance, rent, miscellaneous, purchases, entertainment and so on. Software and project specific to be allocated entirely or be organization the specific to be allocated to the project on a percentage basis.

You might also like