Software Engineering Unit - 1
Software Engineering Unit - 1
Computer s/w is the product that s/w professional build and support over the long time. it Encompasses Programs and architecture and documents in both hard copy and all forms of electronic media. Who does it? Software Engineers build and support it. The Evolving role of software: Dual role of Software A Product - Information transformer-(either in cellular Or main frame computer) producing, managing and acquiring , modifying and displaying or transmitting information A Vehicle for delivering a product - s/w acts as the basis for the Control of the computer(operating system),the communication of information(networks) and the creation of other programs Intro to SE SOFTWARE: Software is defined as 1. Instructions - Programs that when executed provide desired features, function and performance 2. Data structures -Enable the programs to adequately manipulate information 3. Documents -Describe the operation and use of the programs. Characteristics of software: To gain understanding of s/w ,it is important to examine the characteristics of s/w
- some similarities exist between s/w development and H/W manufacturing , the two activities are fundamentally different . In both activities, high quality is achieved through Good Design but the manufacturing phase for H/W can introduce quality problems that are non existent for S/w . Software does not wear out, However it deteriorates (go down) due to change. Software is custom built rather than assembling existing components.
-Although the industry is moving towards component based construction, most software continues to be custom built CHARACTERISTICS OF HARDWARE
Infa
nt mort ality
Wea rout
Time
Another aspect of wear illustrate the difference between H/W & S/W . when the H/W components wears out, it is replaced by spare part. There are no software spare parts. Every software failure indicates an error in design or in the process through which design was translated into machine-executable code. Therefore, s/w maintenance involves considerably more complexity than H/W maintenance.
SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY: Software Engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machine - SE is a layered technology. Refereeing to following fig
A LAYERED TECHNOLOGY:
- Foundation for software Engineering - Process defines a framework -- The software process forms the basis for management control of software projects -- and establishes which technical methods are applied, -- which work products( models, documents, data, reports, forms, etc) are produced, quality ensured, milestones are established Method
- SE methods provide the technical how to building software - Methods encompasses Communication
Requirement analysis design Modeling Program construction Testing & support Tools
- Provide automated and semi automated support for the process and methods called as CASE Tools The Software Process- PROCESS FRAMEWORK:? Establishes the foundation for a complete software process Identifies a number of framework activities applicable to all software projects Also include a set of umbrella activities that are applicable across the entire software process.
A PROCESS FRAMEWORK:
Each framework activities is populated by set of SE actions collection of related tasks Each action is populated with individual work task The following generic Process framework is applicable to the vast majority of software projects
Generic process activities: Communication Heavy communication and collaboration with the customer Planning plan for the SE work that follows
it describes technical task to be conducted, resource required, work schedule Modeling- creation of models that allow the developer and the customer better understand software requirements construction Deployment- s/w delivered product customer who evaluates the delivered product
Ex enhancement of existing system Also called classic life cycle A systematic, sequential approach to Software development Begins with customer specification of Requirements and progresses through planning, modeling, construction and deployment
The Waterfall Model: This Model suggests a systematic, sequential approach to SW development that begins at the system level and progresses through analysis, design, code and testing
PROBLEMS IN WATERFALL MODEL: Real projects rarely follow the sequential flow since they are always iterative The model requires requirements to be explicitly spelled out in the beginning, which is often difficult A working model is not available until late in the project time plan so the customer must have patience. Waterfall model leads to Blocking States some project team members must wait for other members of the team to complete dependent task Useful when requirements are fixed, work flow in a linear fashion
THE INCREMENTAL PROCESS MODEL: Linear sequential model is not suited for projects which are iterative in nature Incremental model suits such projects Used when initial requirements are reasonably well-defined and compelling need to provide limited set of software functionality to user quickly Then Refine and expand on that functionality in later software release Software is developed in increments
The increment model combines the elements of waterfall model applied in a iterative fashion Incremental model applies linear sequence in a staged fashion Each linear sequence produce deliverable increments of the software Ex. Word processing software 1, basic file management,2 sophisticated editing, 3 spelling and grammar checking,
4 advanced page layout The increment model The first increment is a core product that is Basic requirements are addressed, but many features remain undelivered The core product is used by the customer and undergoes detailed evaluation by the customer As a result, plan is developed for the next increment Plan addresses the modification of core product to better meet the needs of customer and delivery the additional features and functionality Process is repeated until the complete product is produced
The incremental model is useful when staffing is unavailable for a complete implementation by the business deadline .
RAD requires sufficient Human resource to create the right number of RAD teams(For large s/w) Requires commitment from both developer and customer for rapid-fire completion of activities If high performance is an issue, the RAD approach is not work Not suited when technical risks are high 3) EVOLUTIONARY PROCESS MODEL: Software evolves over period of time Business and product requirements often change as development proceeds, A set of requirements is well understood, but the details of a product or system extensions have yet to be defined. In these and similar situation, Software Engineers need a process model to accommodate a product that evolves over time Evolutionary models are iterative Enables the software Engineers to develop increasingly more complete version of the s/w Types of evolutionary models Prototyping Spiral model Concurrent development model
Customer defines a set of general objectives for s/w, but does not identify detailed input, processing, or output requirements In other case, the developer may be unsure of the efficiency of an algorithm, adaptability of OS, form of Human machine interaction should take place For these - Prototyping is the best approach - it is applied to any s/w process model
The prototyping paradigm assist the s/w engineer and customer to better understand what is to be built when requirements are fuzzy
Prototyping Begins with communication- software engineer and customer meet and define the overall objectives for the software Identify whatever requirements are known Outline areas where further definition is mandatory A quick design and modeling occur Quick design focus (those aspect of the s/w that is visible to the customer) human interface layout or output display formats Quick design leads to the construction of prototype Prototype is evaluated by the customer Requirements are refined Prototype is turned to satisfy the needs of customer and enable the developer to better understand what need to be done Prototype serves as a mechanism for identifying software requirements
If a working prototype is built, the developer attempt to make use of existing program fragment or applies tools(ex. report generators, window managers ect) That enables working programs to be generated quickly
LIMITATION OF PROTOTYPING: In a rush to get it working, overall software quality or long term maintainability are generally overlooked Use of inappropriate OS or PL Use of inefficient algorithm
THE SPIRAL MODEL: Using the spiral model, Software is developed in a series of evolutionary releases. During the early iteration , the release might be a paper model or prototype During the Later iteration, increasingly more complete version of the engineered system are produced. Spiral model is divided into set of framework activities(Generic framework ) Each framework activities represent one segment of the spiral path. as shown in fig
As the evolutionary process begins, the software team performs activities by a circuit around the spiral in a clock wise direction, beginning at the center An evolutionary model which combines the best feature of the classical life cycle and the iterative nature of prototype model Include new element : Risk element (concerns future happenings) Starts in middle and continually visits the basic tasks of communication, planning, modeling, construction and deployment Realistic approach to the development of large scale system and software Software evolves as process progresses Better understanding between developer and customer and react to risks at each level The first circuit might result in the development of a product specification Subsequent circuits develop a prototype
And then progressively more sophisticated version of software THE CONCURRENT DEVELOPMENT MODEL: Also called concurrent engineering Constitutes a series of framework activities, software engineering action, tasks and their associated states All activities exist concurrently but reside in different states Applicable to all types of software development Event generated at one point in the process trigger transitions among the states
component based development Formal methods model COMPONENT BASED DEVELOPMENT Commercial off-the-shelf software components, developed by vendors who offer them as products, can be use when software is build These components provide targeted functionality with well-defined interfaces that enable the component to be integrated into the software CBD model incorporates many of the characteristics of the spiral model it is evolutionary in nature & demanding an iterative approach Modeling and construction activities begins with the identification of candidate components These components can be designed as either conventional software models or object-oriented classes or packages of classes
CBD model incorporates the following steps Available component-based products are researched and evaluated for the application domain Component integration issue are considered A software architecture is designed to accommodate the components component are integrated to architecture Testing is conducted to ensure proper functionality The Formal Methods Model: Its encompasses set of activities that leads to formal mathematical specification of computer software Formal methods enable the software engineer to specify, develop , and verify computer based system by applying mathematical notation Called clean room software engineering Formal Methods used during Development Its provide mechanism for eliminating many of the problems that are difficult to overcome using other s/w engineering paradigms. Ambiguity, incompleteness, and inconsistency and be discovered and corrected more easily by applying mathematical analysis. Formal methods are used during Design Its serve as a basis for program verification by discover and correct errors
Characteristics of formal methods: The development of formal models is currently quite time consuming and expensive Bcz few s/w developers have the necessary background to apply formal methods, extensive training required It is difficult to use models as a communication mechanism for technically unsophisticated customers Advantage build safety- critical software (aircraft avionics and medical devices)