(Chapter 1 Introduction) : The Evolving Role of Software
The document discusses the evolving role of software and software engineering. It provides three key points:
1) Software evolution is the process of developing software initially and then updating it over time for reasons like adding new features or removing obsolete functionality. This involves activities like change analysis, release planning, and implementation.
2) Software needs to evolve due to changing requirements, environments, bugs/errors, security risks, and to add new functionality. Laws of software evolution also govern this process.
3) Software engineering involves layers including quality focus, processes, methods, and tools to develop software according to requirements and deliver it on time.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
6K views16 pages
(Chapter 1 Introduction) : The Evolving Role of Software
The document discusses the evolving role of software and software engineering. It provides three key points:
1) Software evolution is the process of developing software initially and then updating it over time for reasons like adding new features or removing obsolete functionality. This involves activities like change analysis, release planning, and implementation.
2) Software needs to evolve due to changing requirements, environments, bugs/errors, security risks, and to add new functionality. Laws of software evolution also govern this process.
3) Software engineering involves layers including quality focus, processes, methods, and tools to develop software according to requirements and deliver it on time.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16
{Chapter 1 Introduction}
The Evolving Role Of Software
Software Evolution is a term which refers to the process of developing software initially, then timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities etc. The evolution process includes fundamental activities of change analysis, release planning, system implementation and releasing a system to customers. The cost and impact of these changes are accessed to see how much system is affected by the change and how much it might cost to implement the change. If the proposed changes are accepted, a new release of the software system is planned. During release planning, all the proposed changes (fault repair, adaptation, and new functionality) are considered. A design is then made on which changes to implement in the next version of the system. The process of change implementation is an iteration of the development process where the revisions to the system are designed, implemented and tested. The necessity of Software evolution: Software evaluation is necessary just because of the following reasons: a) Change in requirement with time: With the passes of time, the organization’s needs and modus Operandi of working could substantially be changed so in this frequently changing time the tools(software) that they are using need to change for maximizing the performance. b) Environment change: As the working environment changes the things(tools) that enable us to work in that environment also changes proportionally same happens in the software world as the working environment changes then, the organizations need reintroduction of old software with updated features and functionality to adapt the new environment. c) Errors and bugs: As the age of the deployed software within an organization increases their preciseness or impeccability decrease and the efficiency to bear the increasing complexity workload also continually degrades. So, in that case, it becomes necessary to avoid use of obsolete and aged software. All such obsolete Softwares need to undergo the evolution process in order to become robust as per the workload complexity of the current environment. d) Security risks: Using outdated software within an organization may lead you to at the verge of various software-based cyberattacks and could expose your confidential data illegally associated with the software that is in use. So, it becomes necessary to avoid such security breaches through regular assessment of the security patches/modules are used within the software. If the software isn’t robust enough to bear the current occurring Cyber attacks so it must be changed (updated). e) For having new functionality and features: In order to increase the performance and fast data processing and other functionalities, an organization need to continuously evolute the software throughout its life cycle so that stakeholders & clients of the product could work efficiently.
Laws used for Software Evolution:
Law of continuing change:
This law states that any software system that represents some real- world reality undergoes continuous change or become progressively less useful in that environment. Law of increasing complexity: As an evolving program changes its structure becomes more complex unless effective efforts are made to avoid this phenomenon. Law of conservation of organization stability: Over the lifetime of a program, the rate of development of that program is approximately constant and independent of the resource devoted to system development. Law of conservation of familiarity: This law states that during the active lifetime of the program, changes made in the successive release are almost constant. Software Characteristics Different individuals judge software on different basis. This is because they are involved with the software in different ways. For example, users want the software to perform according to their requirements. Similarly, developers involved in designing, coding, and maintenance of the software evaluate the software by looking at its internal characteristics, before delivering it to the user. Software characteristics are classified into six major components. • Functionality: Refers to the degree of performance of the software against its intended purpose. • Reliability: Refers to the ability of the software to provide desired functionality under the given conditions. • Usability: Refers to the extent to which the software can be used with ease. • Efficiency: Refers to the ability of the software to use system resources in the most effective and efficient manner. • Maintainability: Refers to the ease with which the modifications can be made in a software system to extend its functionality, improve its performance, or correct errors. • Portability: Refers to the ease with which software developers can transfer software from one platform to another, without (or with minimum) changes. In simple terms, it refers to the ability of software to function properly on different hardware and software platforms without making any changes in it. In addition to the above-mentioned characteristics, robustness and integrity are also important. Robustness refers to the degree to which the software can keep on functioning in spite of being provided with invalid data while integrity refers to the degree to which unauthorized access to the software or data can be prevented.
Changing Nature Of Software
Nowadays, seven broad categories of computer software present continuing challenges for software engineers. which is given below: System Software: System software is a collection of programs which are written to service other programs. Some system software processes complex but determinate, information structures. Other system application process largely indeterminate data. Sometimes when, the system software area is characterized by the heavy interaction with computer hardware that requires scheduling, resource sharing, and sophisticated process management.
Application Software: Application software is defined as programs that solve a specific business need. Application in this area process business or technical data in a way that facilitates business operation or management technical decision making. In addition to convention data processing application, application software is used to control business function in real time.
Engineering and Scientific Software:
This software is used to facilitate the engineering function and task. however modern application within the engineering and scientific area are moving away from the conventional numerical algorithms. Computer-aided design, system simulation, and other interactive applications have begun to take a real-time and even system software characteristic.
Embedded Software: Embedded software resides within the system or product and is used to implement and control feature and function for the end-user and for the system itself. Embedded software can perform the limited and esoteric function or provided significant function and control capability. Product-line Software: Designed to provide a specific capability for use by many different customers, product line software can focus on the limited and esoteric marketplace or address the mass consumer market.
Web Application: It is a client-server computer program which the client runs on the web browser. In their simplest form, Web apps can be little more than a set of linked hypertext files that present information using text and limited graphics. However, as e-commerce and B2B application grow in importance. Web apps are evolving into a sophisticate computing environment that not only provides a standalone feature, computing function, and content to the end user.
Artificial Intelligence Software:
Artificial intelligence software makes use of a nonnumerical algorithm to solve a complex problem that is not amenable to computation or straightforward analysis. Application within this area includes robotics, expert system, pattern recognition, artificial neural network, theorem proving and game playing.
Software Engineering As A Layered Technology
Fig: The diagram shows the layers of software development
Layered technology is divided into four parts:
1. A quality focus: It defines the continuous process improvement
principles of software. It provides integrity that means providing security to the software so that data can be accessed by only an authorized person, no outsider can access the data. It also focuses on maintainability and usability. 2. Process: It is the foundation or base layer of software engineering. It is key that binds all the layers together which enables the development of software before the deadline or on time. Process defines a framework that must be established for the effective delivery of software engineering technology. The software process covers all the activities, actions, and tasks required to be carried out for software development.
Process activities are listed below:-
Communication: It is the first and foremost thing for the development of software. Communication is necessary to know the actual demand of the client. Planning: It basically means drawing a map for reduced the complication of development. Modeling: In this process, a model is created according to the client for better understanding. Construction: It includes the coding and testing of the problem. Deployment: It includes the delivery of software to the client for evaluation and feedback. 3. Method: During the process of software development the answers to all “how-to-do” questions are given by method. It has the information of all the tasks which includes communication, requirement analysis, design modeling, program construction, testing, and support. 4. Tools: Software engineering tools provide a self-operating system for processes and methods. Tools are integrated which means information created by one tool can be used by another.
Software Process Framework
Framework is a Standard way to build and deploy applications. Software Process Framework is the foundation of complete software engineering process. Software process framework includes set of all umbrella activities. It also includes number of framework activities that are applicable to all software projects.
A generic process framework encompasses five activities which are
given below one by one: Communication: In this activity, heavy communication with customers and other stakeholders, as well as requirement gathering is done. Planning: In this activity, we discuss the technical related tasks, work schedule, risks, required resources, etc. Modeling: Modeling is about building representations of things in the ‘real world’. In modeling activity, a product’s model is created in order to better understand the requirements. Construction: In software engineering, construction is the application of set of procedures that are needed to assemble the product. In this activity, we generate the code and test the product in order to make better product. Deployment: In this activity, a complete or non-complete product or software is represented to the customers to evaluate and give feedback. On the basis of their feedback, we modify the product for supply of better product.
Umbrella Activities
Any standard software process model would primarily consist of two
types of activities: A set of framework activities, which are always applicable, regardless of the project type, and a set of umbrella activities, which are the non SDLC activities that span across the entire software development life cycle.
Typical activities in this category include:
01. Software project tracking and control : Tracking and Control is the dual process of detecting when a project is drifting off-plan, and taking corrective action to bring the project back on track. But a successful project manager will also be able to tell when the plan itself is faulty, and even re-plan the project and its goals if necessary. 02. Formal technical reviews : This includes reviewing the techniques that has been used in the project.
03. Software quality assurance :
This is very important to ensure the quality measurement of each part to ensure them. 04. Software configuration management : In software engineering, software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software, part of the larger cross-disciplinary field of configuration management. SCM practices include revision control and the establishment of baselines. 05. Document preparation and production : All the project planning and other activities should be hardly copied and the production get started here. 06. Reusability management : This includes the backing up of each part of the software project they can be corrected or any kind of support can be given to them later to update or upgrade the software at user/time demand. 07. Measurement : This will include all the measurement of every aspects of the software project. 08. Risk management : Risk management is a series of steps that help a software team to understand and manage uncertainty. It’s a really good idea to identify it, assess its probability of occurrence, estimate its impact, and establish a contingency plan that─ ‘should the problem actually occur’.
What is a software process model?
A software process model is an abstraction of the software development process. The models specify the stages and order of a process. So, think of this as a representation of the order of activities of the process and the sequence in which they are performed.
A model will define the following:
• The tasks to be performed
• The input and output of each task • The pre and post conditions for each task • The flow and sequence of each task
The goal of a software process model is to provide guidance for
controlling and coordinating the tasks to achieve the end product and objectives as effectively as possible. There are many kinds of process models for meeting different requirements. We refer to these as SDLC models (Software Development Life Cycle models). The most popular and important SDLC models are as follows:
• Waterfall model • V model • Iterative model • Spiral model • Big Bang Model • Agile model
1. Waterfall Model Waterfall is the oldest and most straightforward of the structured SDLC methodologies — finish one phase, then move on to the next. No going back. Each stage relies on information from the previous stage and has its own project plan. Waterfall is easy to understand and simple to manage.
But early delays can throw off the entire project timeline. And since there is little room for revisions once a stage is completed, problems can’t be fixed until you get to the maintenance stage. This model doesn’t work well if flexibility is needed or if the project is long term and ongoing.
2. V-Shaped Model Also known as the Verification and Validation model, the V-shaped model grew out of Waterfall and is characterised by a corresponding testing phase for each development stage. Like Waterfall, each stage begins only after the previous one has ended.
This model is useful when there are no unknown requirements, as it’s
still difficult to go back and make changes.
3. Iterative Model The Iterative model is repetition incarnate. Instead of starting with fully known requirements, you implement a set of software requirements, then test, evaluate and pinpoint further requirements. A new version of the software is produced with each phase, or iteration. Rinse and repeat until the complete system is ready.
One advantage over other SDLC methodologies: This model gives you a working version early in the process and makes it less expensive to implement changes. One disadvantage: Resources can quickly be eaten up by repeating the process again and again.
4. Spiral Model One of the most flexible SDLC methodologies, the Spiral model takes a cue from the Iterative model and its repetition; the project passes through four phases over and over in a “spiral” until completed, allowing for multiple rounds of refinement. This model allows for the building of a highly customised product, and user feedback can be incorporated from early on in the project. But the risk you run is creating a never-ending spiral for a project that goes on and on.
5. Big Bang Model
A bit of an anomaly among SDLC methodologies, the Big Bang model follows no specific process, and very little time is spent on planning. The majority of resources are thrown toward development, and even the client may not have a solid grasp of the requirements. This is one of the SDLC methodologies typically used for small projects with only one or two software engineers.
Big Bang is not recommended for large or complex projects, as it’s a
high-risk model; if the requirements are misunderstood in the beginning, you could get to the end and realise the project may have to be started all over again.
6. Agile Model By breaking the product into cycles, the Agile model quickly delivers a working product and is considered a very realistic development approach. The model produces ongoing releases, each with small, incremental changes from the previous release. At each iteration, the product is tested.
This model emphasises interaction, as the customers, developers and
testers work together throughout the project. But since this model depends heavily on customer interaction, the project can head the wrong way if the customer is not clear on the direction he or she wants to go.
Capability Maturity Model Integration (CMMI)
Capability Maturity Model Integration (CMMI) is a successor of CMM and is a more evolved model that incorporates best components of individual disciplines of CMM like Software CMM, Systems Engineering CMM, People CMM, etc. Since CMM is a reference model of matured practices in a specific discipline, so it becomes difficult to integrate these disciplines as per the requirements. This is why CMMI is used as it allows the integration of multiple disciplines as and when needed. Objectives of CMMI: • Fulfilling customer needs and expectations. • Value creation for investors/stockholders. • Market growth is increased. • Improved quality of products and services. • Enhanced reputation in Industry. • CMMI Representation – Staged and Continuous : A representation allows an organization to pursue a different set of improvement objectives. There are two representations for CMMI : Staged Representation : uses a pre-defined set of process areas to define improvement path. provides a sequence of improvements, where each part in the sequence serves as a foundation for the next. an improved path is defined by maturity level. maturity level describes the maturity of processes in organization. Staged CMMI representation allows comparison between different organizations for multiple maturity levels. Continuous Representation : allows selection of specific process areas. uses capability levels that measures improvement of an individual process area. Continuous CMMI representation allows comparison between different organizations on a process-area-by-process-area basis. allows organizations to select processes which require more improvement. In this representation, order of improvement of various processes can be selected which allows the organizations to meet their objectives and eliminate risks. CMMI Model – Maturity Levels : In CMMI with staged representation, there are five maturity levels described as follows :
Maturity level 1 : Initial
• processes are poorly managed or controlled. • unpredictable outcomes of processes involved. • ad hoc and chaotic approach used. • No KPAs (Key Process Areas) defined. • Lowest quality and highest risk. Maturity level 2 : Managed • requirements are managed. • processes are planned and controlled. • projects are managed and implemented according to their documented plans. • This risk involved is lower than Initial level, but still exists. • Quality is better than Initial level. Maturity level 3 : Defined • processes are well characterized and described using standards, proper procedures, and methods, tools, etc. • Medium quality and medium risk involved. • Focus is process standardization. Maturity level 4 : Quantitatively managed • quantitative objectives for process performance and quality are set. • quantitative objectives are based on customer requirements, organization needs, etc. • process performance measures are analyzed quantitatively. • higher quality of processes is achieved. • lower risk Maturity level 5 : Optimizing • continuous improvement in processes and their performance. • improvement has to be both incremental and innovative. • highest quality of processes. • lowest risk in processes and their performance.
2010-08-18 Zernik, J: Data Mining of Online Judicial Records of The Networked US Federal Courts, International Journal On Social Media: Monitoring, Measurement, Mining, 1:69-83 (2010)