Software is • Instructions(computer programs) that when executed provide desired function and performance, • Data structures that enable the programs to adequately manipulate information and • Documents that describe the operation and use of the programs. • Software is a set of utility programs which are input and stored permanently in the computer system .
Evolving role of software : • The early years : • Batch orientation • Limited distribution • Custom software • The second era • Multi user • Real-time • Database • Product software
The third era : • Distributed systems • Embedded “intelligence” • Low cost hardware • Customer impact
The fourth era : • Powerful desktop systems • Object-oriented technologies • Expert systems • Artificial neural networks • Parallel computing • Network computers
Software Characteristics : • Software is developed or engineered, it is not manufactured in the classical sense. • Software doesn't “ware out” • Most software is custom-built, rather than being assembled from existing components
Software Applications : • System Software • Real-time Software • Business Software (Payroll,sales order processing,inventory etc.) • Engineering and Scientific Software • Embedded Software • Personal Computer Software • Artificial Intelligence Software
(IEEE) Software Engineering is • The application of a systematic ,disciplined , quantifiable approach to the development, operation , and maintenance of software ; that is the application of engineering to software ; • The study of approaches as in 1. • Or • It is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works effectively on real machines.
A generic view of software engineering : • Engineering is the analysis , design, construction , verification , and management of technical(or social) entities . Regardless of the entity that is to be engineered , the following questions must be asked and answered : • What is the problem to be solved ? • What are the characteristics of the entity that is used to solve the problem ? • How will the entity ( and the solution) be realized? • How 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 .
The work associated with software engineering can be categorized into three generic phases , regardless of application area, project size , or complexity .Each phase addresses one or more of the above questions . The definition phase focuses on what . During definition phase the software developer attempts to identify what information is to be processed , what function and performance are desired , what system behavior can be expected , what interfaces are to be established , what design constraints exist , and what validation criteria are required to define a successful system.The key requirements of the system and software are identified.
The development phase focuses on how .During development a software engineer attempts to define how data are to be structured , how function is to be implemented as a software architecture, how procedural details are to be implemented , how interfaces are to be characterized , how the design will be translated into a programming language , and how testing will be performed . The maintenance phase focuses on change that is associated with error correction , adaptations required as the software’s environment evolves , and changes due to enhancement brought about by changing customer requirements
Software Process Model : To solve the 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 and generic phases . This strategy is often referred as a process model or a software engineering paradigm. A process model for software engineering is chosen based on nature of the project and application , the tools to be used , and the controls and deliverables that are required.
Classical System Development Life Cycle : • The System development life cycle method consists of the following activities : • Preliminary investigation • Determination of system requirements • Design of system • Development of software • System testing • Implementation and evaluation
Preliminary Investigation : • A request to receive assistance from information systems can be made for many reasons , but in each case someone – a manager , an employee , or a system specialist – initiates the request . • When the request is made , the first system activity, the preliminary investigation , begins .This activity has three parts : • Request classification • Feasibility study • Request approval
Request Clarification : Many requests from employees and users in organization are not clearly stated . Therefore, before any systems investigation can be considered , the project request must be examined to determine precisely what the originator wants . • Feasibility Study : An important outcome of the preliminary investigation is the determination that the system requested is feasible . There are three aspects in the feasibility study portion of the preliminary investigation : • Technical Feasibility • Economic Feasibility • Operating Feasibility
Technical Feasibility : Can the work of the project be done with current equipment , existing software technology , and available personnel ? If new technology is required , what is the likelihood that it can be developed? Economic Feasibility : Are there sufficient benefits in creating the system to make the cost acceptable ? Or , are the costs of not creating the system so great that the project must be undertaken ? Operational Feasibility : Will the system be used if it is developed and implemented ? Will there be resistance from users that will undermine the possible application benefits.
Request Approval :Not all requested projects are desirable or feasible .Some organizations receive so many project requests from employees that only a few of them can be pursued.However, those projects that are both feasible and desirable should be put into a schedule.
Determination of System Requirements :Analysts, working closely with employees and managers , must study the business process to answer the key questions : • What is being done ? • How is it being done ? • How frequently does it occur ? • How great is the volume of transactions or decisions ? • How well is the task being performed? • Does the problem exist? • If the problem exists , how serious it is ? • If the problem exists , what is the underlying cause?
Design of system : The design of information system produces the details that state how a system will meet the requirements identified during systems analysis . Systems specialists often refer this stage as logical design, in contrast to the process of developing program software is referred as physical design. The design process will begin by identifying reports and other outputs the system will produce . Then the specific data on each are pinpointed. The detailed design information is passed on to the programming staff so that software development can begin.
Development of Software : Software developers may install (or modify and then install) purchased software or they may write new, custom-designed programs. The choice depends on the cost of each option, the time available to write software, and the availability of programmers. Programmers are also responsible for documenting the program, providing an explanation of how and why certain procedures are coded in specific ways. Documentation is essential to test the program and carry on maintenance once the application has been installed.
Systems Testing :During systems testing, the system is used experimentally to ensure that the software does not fail, I.e., it will run according to its specifications and in the way users expect . Special test data are input for processing , and the results examined. A limited number of users may be allowed to use the system so analyst can see whether they try to use it in unforeseen ways.It is preferable to discover any surprises before the organization implements the system and depends on it. In many organizations, testing is performed by persons other than those who wrote the original programs to ensure more complete and unbiased testing and more reliable software.
Implementation and evaluation : Implementation is the process of having systems personnel check out and put new equipment into use , train users , install new application , and construct any files of data needed to use it. • Evaluation of the system is performed to identify its strengths and weaknesses . The actual evaluation can occur along any of the following dimensions : • Operational Evaluation • Organizational Impact • User Manager Assessment • Development Performance. • ***
Systems Prototype Method : This method involves the user more directly in the analysis and design experience than SDLC method. Prototyping is very effective under the correct circumstances . A prototype is a working system that is developed to test ideas and assumptions about the new system. Like any computer-based system . It consists of working software that accepts input, perform calculations, produces printed or displayed information , or performs meaningful activities.It is the first version or iteration of an information system - an original model.
The design and the information produced by the system are evaluated by users. This can be effectively done only if the data are real and the situations live. Changes are expected as the system is used. The prototype is actually a pilot test model; the design evolves through use. The prototype is designed to be easily changed.Information gained through its use is applied to a modified design that may again be used as a prototype to reveal still more valuable design information. The process is repeated as many times as necessary to reveal essential design requirements.
The prototype is most useful under following conditions : • No system with the characteristics of the one proposed has yet been constructed by the developers. • The essential features of the system are only partially known; others are not identifiable even though careful analysis of requirements. • Experience in using the system will significantly add to the list of requirements the system should meet . • Alternative versions of the system will evolve through experience and additional development and refinement of its features. • The system user(s) will participate in the development process.
Underlying principle of prototyping : Users can point to features that like or dislike and so indicate shortcomings in an exiting and working system more easily than they can describe them in a theoretical or proposed system.Experience and use produce more meaningful comment than analysis of charts and narrative proposals .
Steps in prototyping : • Identify the user’s known information requirements and features needed in the system. • Develop a working prototype. • Use the prototype , noting needed enhancements and changes.These expand the list of known system requirements. • Revise the prototype based in information gained through user experience. • Repeat these steps as needed to achieve a satisfactory system.
When both user and analyst decide that sufficient information has been collected from the prototyping process, they determine how to meet the requirements they have identified. Usually one of the following four alternatives is selected : • The prototype is redeveloped . This alternative may mean complete reprogramming from scratch. • The prototype is implemented as the complete system. Performance efficiency and methods for user interaction may be sufficient to allow the system to be used as is. • The project is abandoned . In this case the prototype has provided enough information to show that a system cannot be developed to meet the desired objectives within existing technology or economic or operational guidelines. • Another prototyping series begun.The information gained through the current experience may suggest an entirely different approach to contrasting features. • Each alternative is viewed as a successful result of prototyping.
The RAD Model : • Rapid Action Development is a linear sequential software development process model that emphasizes an extremely short development cycle. If requirements are well understood and project scope is constrained the RAD process enables a development team to create a “fully functional system” within very short time periods . The RAD approach encompasses the following phases : • Business Modeling : The information flow among business functions is modeled in a way that answers the following questions . • What drives the business process ? What information is generated ? Where does the information go ? Who processes it ?
Data modeling :The information flow defined as part of business modeling phase is refined into a set of data objects that are needed to support the business . The characteristics (called attributes) of each object are identified and the relationships between these objects are defined . • Process modeling : The data object defined in the data modeling phase are transformed to achieve the information flow necessary to implement a business function. • Application generation :The RAD process works to reuse existing program components(when possible) to create reusable components (when necessary). Automated tools are used to facilitate construction of software.
Testing and turnover : Since the RAD process emphasizes reuse , many of the program components have already been tested . This reduces overall testing time.However , new components must be tested and all interfaces must be fully exercised. • RAD is not appropriate when technical risk is high .This occurs when a new application makes heavy use of technology or when the new software requires high degree of interoperability with existing computer programs.
Evolutionary Software Process Models : • The Incremental Model • The Spiral Model • The Component assembly model • The concurrent development model
The Incremental Model : It combines elements of the linear sequential model with the iterative philosophy of prototyping Each linear sequence produces a deliverable “increment” of a software . When an incremental model is used , the first increment is often a core product . That is, basic requirements are addressed , but many supplementary features (some known,others unknown) remain undelivered.The core product is used by the customer (or undergoes detailed review).As a result of use and/or evaluation , a plan is developed for next increment .The plan addresses the modification of the core product to better meet the needs of the customer and the delivery of additional features and functionality .This process is repeated following the delivery of each increment , until the complete product is produced.
The Spiral Model : The spiral model is a software process model that couples the iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model .It provides the potential for rapid development of incremental versions of the software .In the spiral model , software is developed in a series of incremental releases .During early iterations , the incremental release might be a paper model or prototype. During later iterations , increasingly more complete versions of the engineered versions are produced.
The spiral model is divided into a number of framework activities , also called task regions . • Customer communications – tasks required to establish effective communications between developer and customer. • Planning –tasks required to define resources , timeliness and other project related information. • Risk analysis –tasks required to access both technical and management risks. • Engineering – tasks required to build one or more representations of the application. • Construction and release – tasks required to construct , test , install and provide use support. • 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.
The component assembly model : The component object model incorporates many of the characteristics of the spiral model .It is evolutionary in nature , demanding an iterative approach to the creation of software .The component assembly model composes applications from prepackaged software components (sometimes called “classes”).
The Concurrent Development Model : The concurrent process model can be represented schematically as a series of major technical activities , tasks , and their associated states . The concurrent process model defines a series of events that will trigger transitions from state to state for each of the software engineering activities .
Software engineering occurs as a consequence of a process ,called system engineering .Instead of concentrating solely on software , system engineering focuses on a variety of elements , analyzing ,designing , and organizing those elements into a system that can be a product , a service or a technology for the transformation of information or control . The system engineering process is called information engineering when the context of the engineering work focuses on a business enterprise . When a product is to be built , the process is called product engineering .
Computer-Based Systems : A set or arrangement of elements that are organized to accomplish some predefined goal by processing information. The goal may be to support some business function or to develop a product that can be sold to generate business revenue .
To accomplish the goal , a computer based system makes use of variety of system elements : Software : Computer programs ,data structures , and related documentation that serve to effect the logical method , procedure , or control that is required. Hardware : Electronic devices that provide computing capability , and electromechanical devices(e.g. sensors, motors ,pumps) that provide external world function. People : Users and operators of hardware and software . Database : A large , organized collection of information that is accessed via software .
Documentation : Manuals , forms and other descriptive information that portrays the use and/or operation of the system. Procedures : The steps that define the specific use of each system element or the procedural context in which the system resides.
System Modeling is an important element of the system engineering process . Whether the focus is on the real world view or the detailed view , the engineer creates models that : • Define the process that serve the needs of the view under consideration . • Represent the behavior of the process and assumptions on which the behavior is based . • Explicitly define both exogenous and endogenous input to the model. • Represent all linkages (including output) that will enable the engineer to better understand the view.
To construct a system model , the engineer should consider a number of restraining factors : • Assumptions • Simplifications • Limitations • Constraints • Preferences
System Simulation : Many computer based systems interact with the real world in a reactive fashion . That is, real-world events are monitored by the hardware and software that form the computer-based system, and based on these events , the system imposes control on the machines , processes , and even people who cause the events to occur . Real time and embedded systems often fall into the reactive system category.
Business Process Engineering : • The goal of business process engineering(BPE) id to define architectures that will enable a business to use information effectively.It specifies the required computer architecture , and the architecture that populates the organizations unique configuration of computing resources ,to be developed. BPE is one approach for creating an overall plan for implementing the computer architecture. • Three different architectures must be analyzed and designed within the context of business objectives and goals. • Data Architecture • Application architecture • Technology architecture
The data architecture : It provides a framework for the information needs of a business or business function .The individual building blocks of the architecture are the data objects that are used by the business . A data object contains a set of attributes that define some aspect , quality , characteristic , or descriptor of the data that are being described. The application architecture : It encompasses those elements of a system that transform objects within the data architecture for some business purpose . The technology architecture : It provides the foundation for the data and application architects .The infrastructure encompasses the hardware and software that are used to support the applications and data .This includes computers , operating systems , networks , telecommunication links , storage technologies , and the architecture (e.g., client/server) that has been designed to implement these technologies.
Product Engineering : The goal of product engineering is to translate the customer’s desire for a set of defined capabilities into a working product .To achieve this goal, product engineering like business process engineering – must derive architecture and infrastructure .The architecture encompasses four distinct system components : software , hardware , data (and databases) , and people. A support infrastructure is established and includes the technology required to tie the components together and the information (e.g., documents, CD-ROM,video) that is used to support the components.