W2 - Software Engineering Principles.pdf
Document Details
Uploaded by CharmingBongos245
Ama International University
Tags
Related
- Simplified Guide for AEs: Software Engineering, DevOps, and Cybersecurity PDF
- original_1489125567_Chapter_1_Introduction_to_software_product_engineering.pdf
- Chapter 2: Software Engineering Lifecycle PDF
- Software Engineering.pdf
- Software Engineering 9th Edition PDF
- COSC75 Module 1 - Software Engineering Overview PDF
Full Transcript
CS-6209 Software Engineering 1 1 Week 2: Software Engineering Principles Module 002: Software Engineering Principles Course Learning Out...
CS-6209 Software Engineering 1 1 Week 2: Software Engineering Principles Module 002: Software Engineering Principles Course Learning Outcomes: 1. Ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics 2. Understand the importance of the stages in the software life cycle, including a range of software development methodologies. 3. Understand the principles of Software Engineering Introduction Software engineering is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has been used. As a discipline, software engineering has progressed very far in a very short period of time, particularly when compared to classical engineering field (like civil or electrical engineering). In the early days of computing, not more than 50 years ago, computerized systems were quite small. Most of the programming was done by scientists trying to solve specific, relatively small mathematical problems. Errors in those systems generally had only “annoying” consequences to the mathematician who was trying to find “the answer.” Today we often build monstrous systems, in terms of size and complexity. Principles of Software Engineering The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working. Separation of Concerns When specifying the behavior of a data structure component, there are often two concerns that need to be dealt with: basic functionality and support for data integrity. A data structure component is often easier to use if these two concerns are divided as much as possible into separate sets of client functions. It is certainly helpful to clients if the client documentation treats the two concerns separately. Modularity The principle of modularity is a specialization of the principle of separation of concerns. Following the principle of modularity implies separating software into components according to functionality and responsibility. It describes a responsibility-driven methodology for modularization in an object-oriented context. Course Module CS-6209 Software Engineering 1 2 Week 2: Software Engineering Principles Abstraction The principle of abstraction is another specialization of the principle of separation of concerns. Following the principle of abstraction implies separating the behavior of software components from their implementation. It requires learning to look at software and software components from two points of view: what it does, and how it does it. Failure to separate behavior from implementation is a common cause of unnecessary coupling. For example, it is common in recursive algorithms to introduce extra parameters to make the recursion work. When this is done, the recursion should be called through a non-recursive shell that provides the proper initial values for the extra parameters. Otherwise, the caller must deal with a more complex behavior that requires specifying the extra parameters. If the implementation is later converted to a non-recursive algorithm, then the client code will also need to be changed. Anticipation of Change Computer software is an automated solution to a problem. The problem arises in some context or domain that is familiar to the users of the software. The domain defines the types of data that the users need to work with and relationships between the types of data. Software developers, on the other hand, are familiar with a technology that deals with data in an abstract way. They deal with structures and algorithms without regard for the meaning or importance of the data that is involved. A software developer can think in terms of graphs and graph algorithms without attaching concrete meaning to vertices and edges. Working out an automated solution to a problem is a learning experience for both the software developers and their clients. Software developers are learning the domain that the clients work in. They are also learning the values of the client: what form of data presentation is most useful to the client, what kinds of data are crucial and require special protective measures. The clients are learning to see the range of possible solutions that software technology can provide. They are also learning to evaluate the possible solutions with regard to their effectiveness in meeting the client’s needs. Cohesiveness has a positive effect on ease of change. Cohesive components are easier to reuse when requirements change. If a component has several tasks rolled up into one package, it is likely that it needs to be split up when changes are made. CS-6209 Software Engineering 1 3 Week 2: Software Engineering Principles Generality The principle of generality is closely related to the principle of anticipation of change. It is important in designing software that is free from unnatural restrictions and limitations. One excellent example of an unnatural restriction or limitation is the use of two digit year numbers, which has led to the "year 2000" problem: software that will garble record keeping at the turn of the century. Although the two-digit limitation appeared reasonable at the time, good software frequently survives beyond its expected lifetime. Incremental Development An incremental software development process simplifies verification. If you develop software by adding small increments of functionality, then, for verification, you only need to deal with the added portion. If there are any errors detected, they are already partly isolated so they are much easier to correct. A carefully planned incremental development process can also ease the handling of changes in requirements. To do this, the planning must identify use cases that are most likely to be changed and put them towards the end of the development process. Consistency The principle of consistency is a recognition of the fact that it is easier to do things in a familiar context. For example, coding style is a consistent manner of laying out code text. This serves two purposes. First, it makes reading the code easier. Second, it allows programmers to automate part of the skills required in code entry, freeing the programmer's mind to deal with more important issues. Consistency serves two purposes in designing graphical user interfaces. First, a consistent look and feel makes it easier for users to learn to use software. Once the basic elements of dealing with an interface are learned, they do not have to be relearned for a different software application. Second, a consistent user interface promotes reuse of the interface components. Graphical user interface systems have a collection of frames, panes, and other view components that support the common look. They also have a collection of controllers for responding to user input, supporting the common feel. Often, both look and feel are combined, as in pop-up menus. Is Software Development an Engineering Discipline? Engineering involves the systematic application of scientific knowledge to the solution of problems. The complexity of problems that are tackled today are not Course Module CS-6209 Software Engineering 1 4 Week 2: Software Engineering Principles that different from those tackled by an electric engineer in creating a circuit or a chemical engineer in devising a manufacturing process or a mechanical engineer in the creation of a device. The fact that there is also a hands-on approach of applying existing plans (development in this case) is simply similar to the fact that in other fields, somebody else executes those plans (e.g., the construction worker). It is true that most developers also carry software engineering tasks, and that our education is often not in programming but rather in software engineering. So we get our hands dirty whereas a civil engineer would not. Information System An Information System (IS) is a system composed of people and computers that processes or interprets information. The term is also sometimes used in more restricted senses, referring only to the software used to run a computerized database or a computer system only. Information systems is an academic study of systems with a specific reference to information and the complementary networks of hardware and software that people and organizations use to collect, filter, process, create and also distribute data. An emphasis is placed on an Information System having a definitive Boundary, Users, Processors, Stores, Inputs, Outputs and the aforementioned communication networks. Any specific information system aims to support operations, management and decision making. An information system is the information and communication technology (ICT) that an organization uses, and also the way in which people interact with this technology in support of business processes. The 6 components that must come together to produce an information system are: Hardware The term hardware refers to machinery. This category includes the computer itself, which is often referred to as the central processing unit (CPU), and all of its support equipment. Among the support equipment are input and output devices, storage devices and communication devices. Software CS-6209 Software Engineering 1 5 Week 2: Software Engineering Principles The term software refers to computer programs and the manuals (if any) that support them. Computer programs are machine-readable instructions that direct the circuitry within the hardware parts of the system to function in ways that produce useful information from data. Data Data are facts that are used by programs to produce useful information. Like programs, data are generally stored in machine-readable form on disk or tape until the computer needs them. Procedures Procedures are the policies that govern the operation of a computer system. "Procedures are to people what software is to hardware" is a common analogy that is used to illustrate the role of procedures in a system. People Every system needs people if it is to be useful. Often, the most over-looked element of the system is the people when in fact it is probably the component that influences the success or failure of information systems the most. This includes not only the users, but those who operate and service the computers, those who maintain the data, and those who support the network of computers. Feedback It is another component of the IS, that defines that an IS may be provided with a feedback. Data is the bridge between Hardware and People. This means that the data we collect is only data, until we involve people. At that point, data will be information. Course Module CS-6209 Software Engineering 1 6 Week 2: Software Engineering Principles Types of information system The image above is a four level pyramid model of different types of information systems based on the different levels of hierarchy in an organization. The "classic" view of Information systems found in the textbooks in the 1980s was of a pyramid of systems that reflected the hierarchy of the organization. Usually, transaction processing systems is at the bottom of the pyramid, followed by management information systems, decision support systems, and ending with executive information systems at the top. Although the pyramid model remains useful, since it was first formulated a number of new technologies have been developed and new categories of information systems have emerged, some of which no longer fit easily into the original pyramid model. Some examples of such systems are: data warehouses enterprise resource planning enterprise systems expert systems search engines geographic information system global information system office automation A computer (-based) information system is essentially an IS using computer technology to carry out some or all of its planned tasks. The basic components of computer based information system are: CS-6209 Software Engineering 1 7 Week 2: Software Engineering Principles Hardware- these are the devices like the monitor, processor, printer and keyboard, all of which work together to accept, process, show data and information. Software- are the programs that allow the hardware to process the data. Databases- are the gathering of associated files or tables containing related data. Networks- are a connecting system that allows diverse computers to distribute resources. Procedures- are the commands for combining the components above to process information and produce the preferred output. The first four components (hardware, software, database, and network) make up what is known as the information technology platform. Information technology workers could use these components to create information systems that watch over safety measures, risk and the management of data. These actions are known as information technology services. Information System Development Information technology departments in larger organizations tend to strongly influence the development, use, and application of information technology in the organizations. A series of methodologies and processes can be used to develop and use an information system. Many developers now use an engineering approach such as the system development life cycle (SDLC), which is a systematic procedure of developing an information system through stages that occur in sequence. An information system can be developed in house (within the organization) or outsourced. This can be accomplished by outsourcing certain components or the entire system. A specific case is the geographical distribution of the development team (offshoring, global information system). Geographic information systems, land information systems, and disaster information systems are examples of emerging information systems, but they can be broadly considered as spatial information systems. System development is done in stages which include: Problem recognition and specification Course Module CS-6209 Software Engineering 1 8 Week 2: Software Engineering Principles Information gathering Requirements specification for the new system System design System construction System implementation Review and maintenance The academic discipline The field of study called information systems encompasses a variety of topics including systems analysis and design, computer networking, information security, database management and decision support systems. Information management deals with the practical and theoretical problems of collecting and analyzing information in a business function area including business productivity tools, applications programming and implementation, electronic commerce, digital media production, data mining, and decision support. Communications and networking deal with the telecommunication technologies. Information system bridges business and computer science using the theoretical foundations of information and computation to study various business models and related algorithmic processes within a computer science discipline. Computer information system(s) (CIS) is a field studying computers and algorithmic processes, including their principles, their software and hardware designs, their applications, and their impact on society, whereas IS emphasizes functionality over design. Several IS scholars have debated the nature and foundations of Information Systems which has its roots in other reference disciplines such as Computer Science, Engineering, Mathematics, Management Science, Cybernetics, and others. Information systems can also be defined as a collection of hardware, software, data, people and procedures that work together to produce quality information. Information Systems have a number of different areas of work: IS strategy IS management IS development IS iteration IS organization There is a wide variety of career paths in the information systems discipline. "Workers with specialized technical knowledge and strong communications skills will have the best prospects. Workers with management skills and an understanding of business practices and principles will have excellent CS-6209 Software Engineering 1 9 Week 2: Software Engineering Principles opportunities, as companies are increasingly looking to technology to drive their revenue." Information technology is important in the operation of contemporary businesses for it offers many employment opportunities. The information systems field includes the people in organizations who design and build information systems, the people who use those systems, and the people responsible for managing those systems. The demand for traditional IT staff such as programmers, business analysts, systems analysts, and designer is significant. Many well-paid jobs exist in areas of Information technology. At the top of the list is the chief information officer (CIO). The CIO is the executive who is in charge of the IS function. In most organizations, the CIO works with the chief executive officer (CEO), the chief financial officer (CFO), and other senior executives. Therefore, he or she actively participates in the organization's strategic planning process. Information systems research Information systems research is generally interdisciplinary, concerned with the study of the effects of information systems on the behavior of individuals, groups, and organizations. Salvatore March and Gerald Smith proposed a framework for researching different aspects of Information Technology including outputs of the research (research outputs) and activities to carry out this research (research activities). They identified research outputs as follows: 1. Constructs are concepts that form the vocabulary of a domain. They constitute a conceptualization used to describe problems within the domain and to specify their solutions. 2. A model is a set of propositions or statements expressing relationships among constructs. 3. A method is a set of steps (an algorithm or guideline) used to perform a task. Methods are based on a set of underlying constructs and a representation (model) of the solution space. 4. An instantiation is the realization of an artifact in its environment. Course Module CS-6209 Software Engineering 1 10 Week 2: Software Engineering Principles Furthermore, research activities include: 1. Building an artifact to perform a specific task. 2. Evaluating the artifact to determine if any progress has been achieved. 3. Given an artifact whose performance has been evaluated, it is important to determine why and how the artifact worked or did not work within its environment. Therefore, another research activity is the theorizing and justifying of theories about IT artifacts. References and Supplementary Materials Books and Journals Online Supplementary Reading Materials 1. Principles of Software Engineering; https://www.d.umn.edu/~gshute/softeng/principles.html; October 15, 2019 2. Seven Basic Principles of Software Engineering; 3. https://csse.usc.edu/TECHRPTS/1983/usccse83-500/usccse83-500.pdf; October 15, 2019 Online Instructional Videos