ASSIGNMENT -2 1.) Based on your own knowledge of some of the application types discussed in class(lecture 1), explain, with examples, why different application types require specialized software engineering techniques to support their design and development. Different application types require the use of various development techniques for a number of reasons. The below are a few such reasons: • Costs and frequency of change: Few systems for example: an embedded system is safety critical when installed in a vehicle. Such systems are extremely expensive to change; others must change frequently in response to varying requirements (e.g. business systems). Systems which are very expensive to change need extensive in advance analysis to ensure …show more content…
that the requirements are consistent. This is not cost effective for systems that change very rapidly. • Non-functional requirements: Different systems have different priorities for non-functional requirements.
For example, gaming should be developed using a series of prototypes whereas a real-time control system in an aircraft has safety as its principal priority; an interactive game has responsiveness and usability as its priority. The techniques used to achieve safety are not required for interactive gaming; the extensive UI design required for games is not needed in safety-critical control systems. • Software lifetime and delivery schedule: Some software systems have a relatively short lifetime (many web-based systems), others have a lifetime of tens of years (large command and control systems). Some systems have to be delivered quickly if they are to be useful. The techniques used to develop short-lifetime, rapid delivery systems (e.g. use of scripting languages, prototyping, etc.) are inappropriate for long-lifetime systems which require techniques that allow for long-term support such as design modelling. 2.) Discuss whether professional engineers should be certified in the same way as doctors or lawyers. Certification of professional engineers has both advantages and disadvantages. Both pros and cons are listed …show more content…
below. Advantages of getting certified: a) Certification conveys employer’s minimum level of competence of an individual. b) Certification improves the positive public image of the profession. c) Certification generally means establishing and checking educational standards and is therefore a mechanism for ensuring course quality. d) Certification implies responsibility during disputes. Certifying body is likely to be accepted at a national and international level as „speaking for the profession. e) Certification may increase the status of software engineers and attract particularly able people into the profession. Disadvantages of certification: a) Certification tends to lead to protectionism where certified members tend not to protect others from criticism. b) Certification does not guarantee competence merely that a minimum standard was reached at the time of certification. c) Certification is expensive and will increase costs to individuals and organizations. d) Certification tends to stultify change.
This is a particular problem in an area where technology developments are very rapid. From the above listed pros and cons of having certifications, pros have a slight edge over cons by which we can conclude that a certified engineer will be more valued than uncertified one. 3.) Explain why incremental development is the most effective approach for developing business software systems. Why is this model less appropriate for real-time systems? This model is most effective for developing business software systems because it is easier to change the process to reflect the updated customer requirements. The basic idea behind incremental method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), thereby allowing software developers to take advantage of what was learned during development of earlier parts or versions of the system. Learning comes from both the development and use of the system, where possible key steps in the process start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are
added. But this model is less appropriate for real-time systems which usually involve many hardware components which are not easy to change and cannot be incremental. Also real-time systems usually safety critical which needed be built based on well planned process. Source: http://en.wikipedia.org/wiki/Iterative_and_incremental_development http://www.perlmonks.org/?node_id=136842 http://www.csee.umbc.edu/~mgrass2/cmsc345/Chap1-Introduction.pdf
The Software Development Life Cycle is seldom used at my place of work. Unfortunately, recent developments in its use are deemed confidential. Due to this fact, this paper will examine in general terms one of the projects we are undertaking right now while at the same time attempting to maintain our confidentiality.
The Systems Development Life Cycle (SDLC) consists of phases used in developing a piece of software. It is the plan of how to develop and maintain software, and when necessary, replace that software. In 2007 during my hospital’s transition to a new software system, I was fortunate enough to be included in the process. I did not get involved until the implementation phase, but from then on, until now, I remain very active in the process. I decided to highlight the Waterfall Model of SDLC. The Waterfall Model is a “sequential development process” with each phase continuing in a line (McGonigle and Mastrian, 2012, p. 205).
1.0 IntroductionIn this report I will be concentrating on the failure of software systems. To understand why software systems fail we need to understand what are software systems. Software systems are a type of information system. This is because a software system is basically a means for hardware to process information. Flynn’s definition of an information system is:"An information system provides procedures to record and make available information, concerning part of an organization, to assist organization-related activities."Humans have been processing information manually for thousands of years, but with the vast increase of demand for knowledge this century has meant that a new method of information processing has been needed. Software systems have provided a new means that is much faster and efficient.
A software development methodology is a standard proven process which helps programmers, architects, system analysts and others to make a well controlled and an efficient progress in the high quality software development.
Describe the traditional waterfall model. Identify and explain each of development phases. State the advantages and disadvantages of implementing this model.
The system development life cycle, also know as the SDLC, is the process of designing and developing a system or software to meet certain requirements. (“System development life,”). This cycle involves many different phases, in which the system is planned, analyzed, designed, implemented, and tested. There are five major phases in the system development life cycle: systems planning, systems analysis, systems design, systems implementation, and systems security and support. Each of these phases has a particular responsibility and certain tasks are perfumed in each phase.
Most of the software development projects change just during the development is in process. This is the reason that agile methodology is best for these projects. There is a room for change in them. Software developers follow these methods and this is the reason that they have further modified these methods according to the different types of projects they confront in their development time.
Given the time, it takes to develop large sophisticated software systems it not possible to define the problem and build the solution in a single step. Requirements will often change throughout a projects development, due to architectural constraints, customer’s needs or a greater understanding of the original problem. Iteration allows greater understanding of a project through successive refinements and addresses a projects highest risk items at every stage of its lifecycle. Ideally each iteration ends up with an executable release – this helps reduce a projects risk profile, allows greater customer feedback and help developers stay focused.
Encouraging software reuse improves the dependability of a product, as a reusable software unit is tried and tested. It reduces the risk of developing a large component from scratch, as it is easy to estimate the cost of using a large reusable software unit. Apart from ensuring quick product delivery, it enables the architects to reuse patterns and architectures suitable for particular situation, and the developers to use a set of program libraries, which eventually reduce the time for development.
Engineering is an essential and learned profession. As members of this profession, engineers are likely to show the highest standards of honesty and integrity. Engineering has a straight and vital impact on the quality of life for all people. Consequently, the services offered by engineers need honesty, impartiality, equality, and must be dedicated to the protection of the public safety, welfare, and health. Engineers must act under a standard of professional performance that requires adherence to the maximum principles of ethical conduct.
Many systems have been developed with the aim of improving the efficiency and quality of software development. This paper will examine the ComputerAided Software Engineering (CASE) system and the Agile software development system for the purpose of examining similarities and differences in achieving improvements in productivity. The Computer-Aided Software Engineering (CASE) system provides development tools designed to automate the design and implementation of system projects. The goal of CASE system is to use technology in order to improve quality and efficiency and increase productivity in software development and maintenance. In contrast, Agile software development does not normally consist of a set of organized tools assembled to facilitate
When you want to advance in your field you must be able to obtain certifications in many different programs. When you have a certification it says something about what you know as an engineer, “Certifications provide status to those who have proven their knowledge and give employers a benchmark standard for measuring employee candidates” (Ricci, 2012). Before you apply for a mechanical engineering job you should get a bachelor but now in the workplace you will need a master’s degree to have a chance of moving up in the workplace. Bureau of Labor Statistics (2015) says, “Some colleges and universities offer 5-year programs that allow students to obtain both a bachelor’s and a master’s degree”. Having this choice will allow you to save money on college and then be able to have time for internships and possible a job while you complete your
An engineer cannot just simply conclude his or her opinions without any facts. An engineer have to be responsible in preparing their reports, thesis, statements and research. They should collect and analysis all relevant data and information in reports, statements and thesis to make sure that the research that carried out is accurate as they written in their reports and presentation. They can express their technical ideas and opinion publicly once they founded the theory or the concept with the knowledge of
The ultimate aim of the engineering curricula is to produce engineering professionals who can provide technical solutions to the societal needs (Hassan B, 2007). The study shows that there is a strong need for receptiveness among the Indian graduates to know the employability skills crucial by the global talent market. It is crucial to revise the curriculum at regular intervals to cater to the needs of the industry. It is important to increase the industry-academia contact. Enhancing the skills and application of knowledge through explicit training will facilitate the recruits to execute their jobs in a paramount manner and that is the need of the hour.(pg
Engineering ethics are more about ethical issues in engineering practices, which are tightly related to ethical responsibilities of the persons, working as engineers. May some ask “Why should engineering ethics be a part of engineering principles?”. Because the engineers apply science-based technology in generating and developing new things that must have the positive influence on the society. Therefore, the engineering ethics is a standout amongst the most essential crossing points between science, technology, and morals. Furthermore, engineers are needed to make their own ethical decisions, but engineers as members of a profession should be aware of the results of their professional decisions, responsibilities, and obligations on different aspects.